You've probably figured out your problem by now, but for anyone else that might be trying to do this, I finally got it working. The biggest problem I had was getting the date and time formats correct, and also figuring out that choosing a type of 'single' meant that you couldn't set the time (single is apparently just for all-day events).
Here's the code I have for inserting a calendar entry:
Code:
function addEvent($date, $title, $info, $userid) {
global $vbulletin;
$eventdata = new vB_DataManager_Event($vbulletin, ERRTYPE_STANDARD);
$timeStamp = strtotime($date);
// I think I should use vbdate here, but until I figure that out, I'm
// doing it myself
$fromTime = array(
'defined' => date('g_i_A', $timeStamp)
);
$toTime = $fromTime;
$fromDate = array(
'month' => date('m', $timeStamp),
'day' => date('d', $timeStamp),
'year' => date('Y', $timeStamp)
);
$toDate = $fromDate;
// note you don't want 'single' unless it's an all-day event
$eventdata->set_info('type', '');
$eventdata->set_info('recur', 0);
$eventdata->setr_info('fromtime', $fromTime);
$eventdata->setr_info('totime', $toTime);
$eventdata->setr_info('fromdate', $fromDate);
$eventdata->setr_info('todate', $toDate);
$eventdata->set('title', $title);
$eventdata->set('event', $info);
$eventdata->set('allowsmilies', false);
$eventdata->set('utc', -8);
$eventdata->set('recurring', 0);
$eventdata->set('calendarid', BAUE_CALENDAR_ID);
$eventdata->set('dst', 1);
$eventdata->set('visible', 1);
$eventdata->set('userid', $userid);
$userfields = array();
$eventdata->set_userfields($userfields);
// error checks
$eventdata->pre_save();
if (!empty($eventdata->errors)) {
echo $eventdata->errors;
} else {
echo "Success <br>\n";
}
$eventid = $eventdata->save();
}