Calendar add date programmatically
Since the event is a content type. You could use hook_cron to find expired events and add new event node. 

Add node programmatically. 

  $body_text = 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.';

  $node = new stdClass();
  $node-&gt;type = 'article';
  node_object_prepare($node);

  $node-&gt;title    = 'Node Created Programmatically on ' . date('c');
  $node-&gt;language = LANGUAGE_NONE;

  $node-&gt;body[$node-&gt;language][0]['value']   = $body_text;
  $node-&gt;body[$node-&gt;language][0]['summary'] = text_summary($body_text);
  $node-&gt;body[$node-&gt;language][0]['format']  = 'filtered_html';

  $path = 'content/my-lipsum-' . date('YmdHis');
  $node-&gt;path = array('alias' =&gt; $path);

  node_save($node);


How to programmatically create node in drupal 7