本文整理汇总了PHP中Agenda::add_event方法的典型用法代码示例。如果您正苦于以下问题:PHP Agenda::add_event方法的具体用法?PHP Agenda::add_event怎么用?PHP Agenda::add_event使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Agenda
的用法示例。
在下文中一共展示了Agenda::add_event方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: importCalendarStatic
//.........这里部分代码省略.........
$startDateDay = substr($date, 6, 8);
$startDate = $startDateYear . '-' . $startDateMonth . '-' . $startDateDay . ' ' . $startTime . ":00";
$endDate = $startDateYear . '-' . $startDateMonth . '-' . $startDateDay . ' ' . $endTime . ":00";
if (!api_is_valid_date($startDate) || !api_is_valid_date($endDate)) {
$this->logger->addInfo("Verify your dates: '{$startDate}' : '{$endDate}' ");
$errorFound = true;
}
// If old events do nothing.
/*if (api_strtotime($startDate) < time()) {
continue;
}*/
if ($errorFound == false) {
$eventsToCreate[] = array('start' => $startDate, 'end' => $endDate, 'title' => $title, 'sender_id' => $teacherId, 'course_id' => $courseInfo['real_id'], 'session_id' => $sessionId, 'comment' => $comment, 'color' => $color, $this->extraFieldIdNameList['calendar_event'] => $row['external_calendar_itemID']);
}
}
if (empty($eventsToCreate)) {
$this->logger->addInfo("No events to add");
return 0;
}
$this->logger->addInfo("Ready to insert events");
$agenda = new Agenda();
$extraFieldValue = new ExtraFieldValue('calendar_event');
$extraFieldName = $this->extraFieldIdNameList['calendar_event'];
$externalEventId = null;
$extraField = new ExtraField('calendar_event');
$extraFieldInfo = $extraField->get_handler_field_info_by_field_variable($extraFieldName);
if (empty($extraFieldInfo)) {
$this->logger->addInfo("No calendar event extra field created: {$extraFieldName}");
return 0;
}
foreach ($eventsToCreate as $event) {
$update = false;
$item = null;
if (!isset($event[$extraFieldName])) {
$this->logger->addInfo("No external_calendar_itemID found. Skipping ...");
continue;
} else {
$externalEventId = $event[$extraFieldName];
if (empty($externalEventId)) {
$this->logger->addInfo("external_calendar_itemID was set but empty. Skipping ...");
continue;
}
$items = $extraFieldValue->get_item_id_from_field_variable_and_field_value($extraFieldName, $externalEventId, false, false, true);
$item = null;
foreach ($items as $tempItem) {
if ($tempItem['c_id'] == $event['course_id']) {
$item = $tempItem;
}
}
if (!empty($item)) {
$this->logger->addInfo("Event #{$externalEventId} was already added. Updating ...");
$update = true;
//continue;
}
}
$courseInfo = api_get_course_info_by_id($event['course_id']);
$agenda->set_course($courseInfo);
$agenda->setType('course');
$agenda->setSessionId($event['session_id']);
$agenda->setSenderId($event['sender_id']);
$agenda->setIsAllowedToEdit(true);
$eventComment = $event['comment'];
$color = $event['color'];
// To use the event comment you need
// ALTER TABLE c_calendar_event ADD COLUMN comment TEXT;
// add in configuration.php allow_agenda_event_comment = true
if (empty($courseInfo)) {
$this->logger->addInfo("No course found for added: #" . $event['course_id'] . " Skipping ...");
continue;
}
if (empty($event['sender_id'])) {
$this->logger->addInfo("No sender found: #" . $event['sender_id'] . " Skipping ...");
continue;
}
$content = '';
if ($update && isset($item['calendar_event_id'])) {
//the event already exists, just update
$eventId = $agenda->edit_event($item['calendar_event_id'], $event['start'], $event['end'], false, $event['title'], $content, array('everyone'), array(), null, $eventComment, $color);
if ($eventId !== false) {
$this->logger->addInfo("Event updated: #{$eventId}");
} else {
$this->logger->addInfo("Error while updating event.");
}
} else {
// New event. Create it.
$eventId = $agenda->add_event($event['start'], $event['end'], false, $event['title'], $content, array('everyone'), false, null, array(), null, $eventComment, $color);
if (!empty($eventId)) {
$extraFieldValue->is_course_model = true;
$extraFieldValue->save(array('field_value' => $externalEventId, 'field_id' => $extraFieldInfo['id'], 'calendar_event_id' => $eventId, 'c_id' => $event['course_id']));
$this->logger->addInfo("Event added: #{$eventId}");
} else {
$this->logger->addInfo("Error while creating event.");
}
}
}
}
if ($moveFile) {
$this->moveFile($file);
}
}
示例2: updatePublicationAssignment
/**
* @param int $workId
* @param array $params
* @param array $courseInfo
* @param int $groupId
*/
function updatePublicationAssignment($workId, $params, $courseInfo, $groupId)
{
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION_ASSIGNMENT);
$workTable = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$workId = intval($workId);
$time = time();
$course_id = $courseInfo['real_id'];
// Insert into agenda
$agendaId = 0;
if (isset($params['add_to_calendar']) && $params['add_to_calendar'] == 1) {
require_once api_get_path(SYS_CODE_PATH).'calendar/agenda.inc.php';
require_once api_get_path(SYS_CODE_PATH).'resourcelinker/resourcelinker.inc.php';
// Setting today date
$date = $end_date = $time;
if (!empty($params['enableExpiryDate'])) {
$end_date = $params['expires_on'];
$date = $end_date;
}
$title = sprintf(get_lang('HandingOverOfTaskX'), $params['new_dir']);
$description = isset($params['description']) ? $params['description'] : '';
$content = '<a href="'.api_get_path(WEB_CODE_PATH).'work/work_list.php?'.api_get_cidreq().'&id='.$workId.'">'
.$params['new_dir'].'</a>'.$description;
$agendaId = agendaExistsForWork($workId, $courseInfo);
// Add/edit agenda
$agenda = new Agenda();
$agenda->set_course($courseInfo);
$agenda->type = 'course';
if (empty($agendaId)) {
$agendaId = $agenda->add_event(
$date,
$end_date,
'false',
$title,
$content,
array('GROUP:'.$groupId)
);
} else {
$agenda->edit_event(
$agendaId,
$end_date,
$end_date,
'false',
$title,
$content
);
}
}
$qualification = isset($params['qualification']) && !empty($params['qualification']) ? 1 : 0;
$expiryDate = (isset($params['enableExpiryDate']) && $params['enableExpiryDate'] == 1) ? api_get_utc_datetime($params['expires_on']) : '0000-00-00 00:00:00';
$endDate = ((isset($params['enableEndDate']) && $params['enableEndDate']==1) ? api_get_utc_datetime($params['ends_on']) : '0000-00-00 00:00:00');
$data = get_work_assignment_by_id($workId, $course_id);
if (empty($data)) {
$sql = "INSERT INTO $table SET
c_id = $course_id ,
expires_on = '".Database::escape_string($expiryDate)."',
ends_on = '".Database::escape_string($endDate)."',
add_to_calendar = $agendaId,
enable_qualification = '$qualification',
publication_id = '$workId'";
Database::query($sql);
$my_last_id = Database::insert_id();
$sql = "UPDATE $workTable SET
has_properties = $my_last_id ,
view_properties = 1
WHERE c_id = $course_id AND id = $workId";
Database::query($sql);
} else {
$sql = "UPDATE $table SET
expires_on = '".$expiryDate."',
ends_on = '".$endDate."',
add_to_calendar = $agendaId,
enable_qualification = '".$qualification."'
WHERE
publication_id = $workId AND
c_id = $course_id AND
id = ".$data['id'];
Database::query($sql);
}
if (!empty($params['category_id'])) {
//.........这里部分代码省略.........
示例3: add_announcement
/**
* Adds an announcement to the database
* @param string Title of the announcement
* @param string Content of the announcement
* @param string Start date (YYYY-MM-DD HH:II: SS)
* @param string End date (YYYY-MM-DD HH:II: SS)
* @param int Whether the announcement should be visible to teachers (1) or not (0)
* @param int Whether the announcement should be visible to students (1) or not (0)
* @param int Whether the announcement should be visible to anonymous users (1) or not (0)
* @param string The language for which the announvement should be shown. Leave null for all langages
* @param int Whether to send an e-mail to all users (1) or not (0)
* @return mixed insert_id on success, false on failure
*/
public static function add_announcement($title, $content, $date_start, $date_end, $visible_teacher = 0, $visible_student = 0, $visible_guest = 0, $lang = null, $send_mail = 0, $add_to_calendar = false)
{
$original_content = $content;
$a_dateS = explode(' ', $date_start);
$a_arraySD = explode('-', $a_dateS[0]);
$a_arraySH = explode(':', $a_dateS[1]);
$date_start_to_compare = array_merge($a_arraySD, $a_arraySH);
$a_dateE = explode(' ', $date_end);
$a_arrayED = explode('-', $a_dateE[0]);
$a_arrayEH = explode(':', $a_dateE[1]);
$date_end_to_compare = array_merge($a_arrayED, $a_arrayEH);
$db_table = Database::get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS);
if (!checkdate($date_start_to_compare[1], $date_start_to_compare[2], $date_start_to_compare[0])) {
Display::display_normal_message(get_lang('InvalidStartDate'));
return false;
}
if (($date_end_to_compare[1] || $date_end_to_compare[2] || $date_end_to_compare[0]) && !checkdate($date_end_to_compare[1], $date_end_to_compare[2], $date_end_to_compare[0])) {
Display::display_normal_message(get_lang('InvalidEndDate'));
return false;
}
if (strlen(trim($title)) == 0) {
Display::display_normal_message(get_lang('InvalidTitle'));
return false;
}
$start = api_get_utc_datetime($date_start);
$end = api_get_utc_datetime($date_end);
$title = Database::escape_string($title);
$content = Database::escape_string($content);
//Fixing urls that are sent by email
$content = str_replace('src=\\"/home/', 'src=\\"' . api_get_path(WEB_PATH) . 'home/', $content);
$content = str_replace('file=/home/', 'file=' . api_get_path(WEB_PATH) . 'home/', $content);
$langsql = is_null($lang) ? 'NULL' : "'" . Database::escape_string($lang) . "'";
global $_configuration;
$current_access_url_id = 1;
if ($_configuration['multiple_access_urls']) {
$current_access_url_id = api_get_current_access_url_id();
}
$sql = "INSERT INTO " . $db_table . " (title,content,date_start,date_end,visible_teacher,visible_student,visible_guest, lang, access_url_id)\n\t\t\t\tVALUES ('" . $title . "','" . $content . "','" . $start . "','" . $end . "','" . $visible_teacher . "','" . $visible_student . "','" . $visible_guest . "'," . $langsql . ", " . $current_access_url_id . ")";
if ($send_mail == 1) {
SystemAnnouncementManager::send_system_announcement_by_email($title, $content, $visible_teacher, $visible_student, $lang);
}
$res = Database::query($sql);
if ($res === false) {
Debug::log_s(mysql_error());
return false;
}
if ($add_to_calendar) {
$agenda = new Agenda();
$agenda->setType('admin');
$agenda->add_event($date_start, $date_end, false, null, $title, $original_content);
}
return Database::insert_id();
}
示例4: Agenda
$agenda = new Agenda();
$agenda->setType('course');
$repeatSettings = array();
if (!empty($_POST['repeat'])) {
$repeatSettings = array('repeat_type' => $_POST['repeat_type'], 'repeat_end' => $repeatEndDay);
/*
$res = agenda_add_repeat_item(
$course_info,
$id,
$_POST['repeat_type'],
$repeatEndDay,
$_POST['users'],
$safe_file_comment
);*/
}
$id = $agenda->add_event($startDate, $endDate, null, null, $_POST['title'], $_POST['content'], $_POST['users'], false, null, array('comment' => $fileComment, 'file' => $fileAttachment), $repeatSettings);
Display::display_confirmation_message(get_lang('AddSuccess'));
} else {
show_add_form();
}
break;
case "announce":
//copying the agenda item into an announcement
if (!(api_is_course_coach() && !api_is_element_in_the_session(TOOL_AGENDA, $event_id))) {
// a coach can only delete an element belonging to his session
$ann_id = store_agenda_item_as_announcement($event_id);
$tool_group_link = isset($_SESSION['toolgroup']) ? '&toolgroup=' . $_SESSION['toolgroup'] : '';
Display::display_normal_message(get_lang('CopiedAsAnnouncement') . ' <a href="../announcements/announcements.php?id=' . $ann_id . $tool_group_link . '">' . get_lang('NewAnnouncement') . '</a>', false);
}
break;
case 'importical':
示例5: switch
if ($teacher) {
switch ($action) {
case 'add_to_calendar':
$course_info = api_get_course_info();
$agenda = new Agenda();
$agenda->type = 'course';
$id = intval($_GET['id']);
$title = sprintf(get_lang('VideoConferenceXCourseX'), $id, $course_info['name']);
$content = Display::url(get_lang('GoToTheVideoConference'), $_GET['url']);
$event_id = $agenda->add_event(
$_REQUEST['start'],
null,
'true',
$title,
$content,
array('everyone')
);
if (!empty($event_id)) {
$message = Display::return_message(get_lang('VideoConferenceAddedToTheCalendar'), 'success');
} else {
$message = Display::return_message(get_lang('Error'), 'error');
}
break;
case 'copy_record_to_link_tool':
$result = $bbb->copyRecordToLinkTool($_GET['id']);
if ($result) {
$message = Display::return_message(get_lang('VideoConferenceAddedToTheLinkTool'), 'success');
} else {
$message = Display::return_message(get_lang('Error'), 'error');
示例6: switch
if (api_is_allowed_to_edit(false, true) or api_get_course_setting('allow_user_edit_agenda') && !api_is_anonymous() && api_is_allowed_to_session_edit(false, true) or GroupManager::user_has_access(api_get_user_id(), $group_id, GroupManager::GROUP_TOOL_CALENDAR) && GroupManager::is_tutor_of_group(api_get_user_id(), $group_id)) {
switch ($action) {
case 'add':
$actionName = get_lang('Add');
$form = $agenda->getForm(array('action' => 'add'));
if ($form->validate()) {
$values = $form->getSubmitValues();
$sendEmail = isset($values['add_announcement']) ? true : false;
$allDay = isset($values['all_day']) ? 'true' : 'false';
$sendAttachment = isset($_FILES['user_upload']) ? true : false;
$attachment = $sendAttachment ? $_FILES['user_upload'] : null;
$attachmentComment = isset($values['file_comment']) ? $values['file_comment'] : null;
$comment = isset($values['comment']) ? $values['comment'] : null;
$startDate = $values['date_range_start'];
$endDate = $values['date_range_end'];
$eventId = $agenda->add_event($startDate, $endDate, $allDay, $values['title'], $values['content'], $values['users_to_send'], $sendEmail, null, $attachment, $attachmentComment, $comment);
if (!empty($values['repeat']) && !empty($eventId)) {
// End date is always set as 23:59:59
$endDate = substr($values['repeat_end_day'], 0, 10) . ' 23:59:59';
$agenda->addRepeatedItem($eventId, $values['repeat_type'], $endDate, $values['users_to_send']);
}
$message = Display::return_message(get_lang('AddSuccess'), 'confirmation');
if ($sendEmail) {
$message .= Display::return_message(get_lang('AdditionalMailWasSentToSelectedUsers'), 'confirmation');
}
Session::write('message', $message);
header("Location: {$agendaUrl}");
exit;
} else {
$content = $form->return_form();
}
示例7: Agenda
api_protect_course_script(true);
}
$group_id = api_get_group_id();
$user_id = api_get_user_id();
$is_group_tutor = GroupManager::is_tutor_of_group($user_id, $group_id);
$agenda = new Agenda();
$agenda->setType($type);
//course,admin or personal
switch ($action) {
case 'add_event':
if (!api_is_allowed_to_edit(null, true) && !$is_group_tutor && $type == 'course') {
break;
}
$add_as_announcement = isset($_REQUEST['add_as_annonuncement']) ? $_REQUEST['add_as_annonuncement'] : null;
$usersToSend = isset($_REQUEST['users_to_send']) ? $_REQUEST['users_to_send'] : null;
echo $agenda->add_event($_REQUEST['start'], $_REQUEST['end'], $_REQUEST['all_day'], $_REQUEST['view'], $_REQUEST['title'], $_REQUEST['content'], $usersToSend, $add_as_announcement);
break;
case 'edit_event':
if (!api_is_allowed_to_edit(null, true) && $type == 'course') {
break;
}
$id_list = explode('_', $_REQUEST['id']);
$id = $id_list[1];
$agenda->edit_event($id, $_REQUEST['start'], $_REQUEST['end'], $_REQUEST['all_day'], $_REQUEST['view'], $_REQUEST['title'], $_REQUEST['content']);
break;
case 'delete_event':
if (!api_is_allowed_to_edit(null, true) && $type == 'course') {
break;
}
$id_list = explode('_', $_REQUEST['id']);
$id = $id_list[1];
示例8: agenda_import_ical
//.........这里部分代码省略.........
$repeat = $ve->getProperty('rrule');
if(is_array($repeat) && !empty($repeat['FREQ'])) {
$trans = array('DAILY'=>'daily','WEEKLY'=>'weekly','MONTHLY'=>'monthlyByDate','YEARLY'=>'yearly');
$freq = $trans[$repeat['FREQ']];
$interval = $repeat['INTERVAL'];
if(isset($repeat['UNTIL']) && is_array($repeat['UNTIL'])) {
$until = mktime(23,59,59,$repeat['UNTIL']['month'],$repeat['UNTIL']['day'],$repeat['UNTIL']['year']);
$res = agenda_add_repeat_item($course_info,$id,$freq,$until,$_POST['selectedform']);
} */
$eventcount = 0;
$message = array();
$agenda_obj = new Agenda();
while (true) {
//we need to recover: summary, description, dtstart, dtend, organizer, attendee, location (=course name)
$ve = $ical->getComponent('VEVENT', $eventcount);
if (!$ve) {
break;
}
$ttitle = $ve->getProperty('summary');
$title = api_convert_encoding($ttitle, $charset, 'UTF-8');
$tdesc = $ve->getProperty('description');
$desc = api_convert_encoding($tdesc, $charset, 'UTF-8');
$start_date = $ve->getProperty('dtstart', false, true);
if (isset($start_date['params']['VALUE'])) {
$start_date_value = $start_date['value'];
if ($start_date['params']['VALUE'] == 'DATE') {
$start_date_string = $start_date_value['year'] . '-' . $start_date_value['month'] . '-' . $start_date_value['day'] . '';
} else {
$start_date_string = $start_date_value['year'] . '-' . $start_date_value['month'] . '-' . $start_date_value['day'] . ' ' . $start_date_value['hour'] . ':' . $start_date_value['min'] . ':' . $start_date_value['sec'];
}
} else {
continue;
}
$ts = $ve->getProperty('dtend');
if ($ts) {
$end_date = $ve->getProperty('dtend', false, true);
if (isset($end_date['params']['VALUE'])) {
$end_date_value = $end_date['value'];
if ($end_date['params']['VALUE'] == 'DATE') {
$end_date_string = $end_date_value['year'] . '-' . $end_date_value['month'] . '-' . $end_date_value['day'] . '';
} else {
$end_date_string = $end_date_value['year'] . '-' . $end_date_value['month'] . '-' . $end_date_value['day'] . ' ' . $end_date_value['hour'] . ':' . $end_date_value['min'] . ':' . $end_date_value['sec'];
}
} else {
//Default behaviour
$end_date_string = $ts['year'] . '-' . $ts['month'] . '-' . $ts['day'] . ' ' . $ts['hour'] . ':' . $ts['min'] . ':' . $ts['sec'];
}
} else {
//Check duration if dtend does not exist
$duration = $ve->getProperty('duration');
if ($duration) {
$duration = $ve->getProperty('duration');
$duration_string = $duration['year'] . '-' . $duration['month'] . '-' . $duration['day'] . ' ' . $duration['hour'] . ':' . $duration['min'] . ':' . $duration['sec'];
$start_date_tms = mktime(intval($start_date['hour']), intval($start_date['min']), intval($start_date['sec']), intval($start_date['month']), intval($start_date['day']), intval($start_date['year']));
//$start_date_tms = mktime(($start_date['hour']), ($start_date['min']), ($start_date['sec']), ($start_date['month']), ($start_date['day']), ($start_date['year']));
//echo date('d-m-Y - h:i:s', $start_date_tms);
$end_date_string = mktime(intval($start_date['hour']) + $duration['hour'], intval($start_date['min']) + $duration['min'], intval($start_date['sec']) + $duration['sec'], intval($start_date['month']) + $duration['month'], intval($start_date['day']) + $duration['day'], intval($start_date['year']) + $duration['year']);
$end_date_string = api_get_utc_datetime($end_date_string);
//echo date('d-m-Y - h:i:s', $end_date_string);
}
}
//echo $start_date.' - '.$end_date;
$organizer = $ve->getProperty('organizer');
$attendee = $ve->getProperty('attendee');
$course_name = $ve->getProperty('location');
//insert the event in our database
$agenda_obj->type = 'course';
$all_day = 'false';
if ($start_date_string == $end_date_string) {
$all_day = 'true';
}
$date = new DateTime($start_date_string);
$date->add(new DateInterval('P1D'));
if ($start_date_string == $date->format('Y-m-d h:i:s')) {
$all_day = 'true';
}
$id = $agenda_obj->add_event($start_date_string, $end_date_string, $all_day, $title, $desc, array('everyone'));
$message[] = " {$title} - " . $start_date_string . " - " . $end_date_string;
$repeat = $ve->getProperty('rrule');
if (is_array($repeat) && !empty($repeat['FREQ'])) {
$trans = array('DAILY' => 'daily', 'WEEKLY' => 'weekly', 'MONTHLY' => 'monthlyByDate', 'YEARLY' => 'yearly');
$freq = $trans[$repeat['FREQ']];
$interval = $repeat['INTERVAL'];
if (isset($repeat['UNTIL']) && is_array($repeat['UNTIL'])) {
$until = mktime(23, 59, 59, $repeat['UNTIL']['month'], $repeat['UNTIL']['day'], $repeat['UNTIL']['year']);
$res = agenda_add_repeat_item($course_info, $id, $freq, $until, $attendee);
}
//TODO: deal with count
if (!empty($repeat['COUNT'])) {
$count = $repeat['COUNT'];
$res = agenda_add_repeat_item($course_info, $id, $freq, $count, $attendee);
}
}
$eventcount++;
}
if (!empty($message)) {
$message = implode('<br /> ', $message);
}
return $message;
}
示例9: Agenda
$group_id = api_get_group_id();
if ($type == 'course') {
api_protect_course_script(true);
}
$group_id = api_get_group_id();
$is_group_tutor = GroupManager::is_tutor_of_group(api_get_user_id(), $group_id);
$agenda = new Agenda();
$agenda->type = $type;
switch ($action) {
case 'add_event':
if (!api_is_allowed_to_edit(null, true) && !$is_group_tutor && $type == 'course') {
break;
}
$add_as_announcement = isset($_REQUEST['add_as_annonuncement']) ? $_REQUEST['add_as_annonuncement'] : null;
$comment = isset($_REQUEST['comment']) ? $_REQUEST['comment'] : null;
echo $agenda->add_event($_REQUEST['start'], $_REQUEST['end'], $_REQUEST['all_day'], $_REQUEST['title'], $_REQUEST['content'], $_REQUEST['users_to_send'], $add_as_announcement, null, array(), null, $comment);
break;
case 'edit_event':
if (!api_is_allowed_to_edit(null, true) && $type == 'course') {
break;
}
$id_list = explode('_', $_REQUEST['id']);
$id = $id_list[1];
$agenda->edit_event($id, $_REQUEST['start'], $_REQUEST['end'], $_REQUEST['all_day'], $_REQUEST['title'], $_REQUEST['content']);
break;
case 'delete_event':
if (!api_is_allowed_to_edit(null, true) && $type == 'course') {
break;
}
$id_list = explode('_', $_REQUEST['id']);
$id = $id_list[1];
示例10: importCalendarStatic
//.........这里部分代码省略.........
}
$teacherId = null;
if (!empty($sessionId) && !empty($courseInfo)) {
$courseIncluded = SessionManager::relation_session_course_exist($sessionId, $courseInfo['code']);
if ($courseIncluded == false) {
$this->logger->addInfo("Course '{$courseCode}' is not included in session: {$sessionId}");
$errorFound = true;
} else {
$teachers = CourseManager::get_coach_list_from_course_code($courseInfo['code'], $sessionId);
// Getting first teacher.
if (!empty($teachers)) {
$teacher = current($teachers);
$teacherId = $teacher['user_id'];
} else {
$sessionInfo = api_get_session_info($sessionId);
$teacherId = $sessionInfo['id_coach'];
}
}
} else {
$errorFound = true;
}
if (empty($teacherId)) {
$errorFound = true;
$this->logger->addInfo("No teacher found in course code : '{$courseCode}' and session: '{$sessionId}'");
}
$date = $row['date'];
$startTime = $row['time_start'];
$endTime = $row['time_end'];
$title = $row['title'];
$startDateYear = substr($date, 0, 4);
$startDateMonth = substr($date, 4, 2);
$startDateDay = substr($date, 6, 8);
$startDate = $startDateYear . '-' . $startDateMonth . '-' . $startDateDay . ' ' . $startTime . ":00";
$endDate = $startDateYear . '-' . $startDateMonth . '-' . $startDateDay . ' ' . $endTime . ":00";
if (!api_is_valid_date($startDate) or !api_is_valid_date($endDate)) {
$this->logger->addInfo("Verify your dates: '{$startDate}' : '{$endDate}' ");
$errorFound = true;
}
if ($errorFound == false) {
$eventsToCreate[] = array('start' => $startDate, 'end' => $endDate, 'title' => $title, 'sender_id' => $teacherId, 'course_id' => $courseInfo['real_id'], 'session_id' => $sessionId, $this->extraFieldIdNameList['calendar_event'] => $row['external_calendar_itemID']);
}
}
if (empty($eventsToCreate)) {
$this->logger->addInfo("No events to add");
return 0;
}
$this->logger->addInfo("Ready to insert events");
$content = null;
$agenda = new Agenda();
$extraFieldValue = new ExtraFieldValue('calendar_event');
$extraFieldName = $this->extraFieldIdNameList['calendar_event'];
$externalEventId = null;
$extraField = new ExtraField('calendar_event');
$extraFieldInfo = $extraField->get_handler_field_info_by_field_variable($extraFieldName);
if (empty($extraFieldInfo)) {
$this->logger->addInfo("No calendar event extra field created: {$extraFieldName}");
return 0;
}
foreach ($eventsToCreate as $event) {
if (!isset($event[$extraFieldName])) {
$this->logger->addInfo("No external_calendar_itemID found. Skipping ...");
continue;
} else {
$externalEventId = $event[$extraFieldName];
$item = $extraFieldValue->get_item_id_from_field_variable_and_field_value($extraFieldName, $externalEventId);
if (!empty($item) || empty($externalEventId)) {
$this->logger->addInfo("Event #{$externalEventId} was already added . Skipping ...");
continue;
}
}
$courseInfo = api_get_course_info_by_id($event['course_id']);
$agenda->set_course($courseInfo);
$agenda->setType('course');
$agenda->setSessionId($event['session_id']);
$agenda->setSenderId($event['sender_id']);
$eventComment = $event['comment'];
// To use the event comment you need
// ALTER TABLE c_calendar_event ADD COLUMN comment TEXT;
// add in configuration.php allow_agenda_event_comment = true
if (empty($courseInfo)) {
$this->logger->addInfo("No course found for added: #" . $event['course_id'] . " Skipping ...");
continue;
}
if (empty($event['sender_id'])) {
$this->logger->addInfo("No sender found: #" . $event['sender_id'] . " Skipping ...");
continue;
}
$eventId = $agenda->add_event($event['start'], $event['end'], false, $event['title'], $content, array('everyone'), false, null, array(), null, $eventComment);
if (!empty($eventId)) {
$extraFieldValue->save(array('field_value' => $externalEventId, 'field_id' => $extraFieldInfo['id'], 'calendar_event_id' => $eventId));
$this->logger->addInfo("Event added: #{$eventId}");
} else {
$this->logger->addInfo("Error while creating event.");
}
}
}
if ($moveFile) {
$this->moveFile($file);
}
}