|
|
|
@ -4657,6 +4657,95 @@ class Agenda |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @throws Exception |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private function convertSessionWithDuration(int $userId, array $sessionInfo, DateTime $start, DateTime $end): array |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$courseAccess = CourseManager::getFirstCourseAccessPerSessionAndUser( |
|
|
|
|
|
|
|
$sessionInfo['session_id'], |
|
|
|
|
|
|
|
$userId |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (empty($courseAccess)) { |
|
|
|
|
|
|
|
throw new Exception(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$firstAccessDate = new DateTime($courseAccess['login_course_date'], new DateTimeZone('UTC')); |
|
|
|
|
|
|
|
$lastAccessDate = clone $firstAccessDate; |
|
|
|
|
|
|
|
$lastAccessDate->modify('+'.$sessionInfo['duration'].' days'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($firstAccessDate->format('Y-m-d H:i:s') > $start |
|
|
|
|
|
|
|
&& $lastAccessDate->format('Y-m-d H:i:s') < $end |
|
|
|
|
|
|
|
) { |
|
|
|
|
|
|
|
throw new Exception(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$courseList = SessionManager::get_course_list_by_session_id($sessionInfo['id']); |
|
|
|
|
|
|
|
$firstCourse = current($courseList); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
|
|
|
|
'id' => 'session_'.$sessionInfo['id'], |
|
|
|
|
|
|
|
'session_id' => $sessionInfo['id'], |
|
|
|
|
|
|
|
'title' => $sessionInfo['name'], |
|
|
|
|
|
|
|
'description' => $sessionInfo['show_description'] ? $sessionInfo['description'] : '', |
|
|
|
|
|
|
|
'className' => 'personal', |
|
|
|
|
|
|
|
'borderColor' => $this->event_personal_color, |
|
|
|
|
|
|
|
'backgroundColor' => $this->event_personal_color, |
|
|
|
|
|
|
|
'editable' => false, |
|
|
|
|
|
|
|
'sent_to' => get_lang('Me'), |
|
|
|
|
|
|
|
'type' => 'session', |
|
|
|
|
|
|
|
'start' => $firstAccessDate->format(DateTime::ISO8601), |
|
|
|
|
|
|
|
'start_date_localtime' => api_get_local_time($firstAccessDate), |
|
|
|
|
|
|
|
'end' => $lastAccessDate->format(DateTime::ISO8601), |
|
|
|
|
|
|
|
'end_date_localtime' => api_get_local_time($lastAccessDate), |
|
|
|
|
|
|
|
'allDay' => 0, |
|
|
|
|
|
|
|
'parent_event_id' => 0, |
|
|
|
|
|
|
|
'has_children' => 0, |
|
|
|
|
|
|
|
'course_url' => api_get_course_url($firstCourse['code'], $sessionInfo['id']), |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @throws Exception |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private function convertSessionWithDates(array $sessionInfo, DateTime $start, DateTime $end): array |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if ($sessionInfo['display_start_date'] < $start |
|
|
|
|
|
|
|
&& $sessionInfo['display_end_date'] > $end |
|
|
|
|
|
|
|
) { |
|
|
|
|
|
|
|
throw new Exception(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$courseList = SessionManager::get_course_list_by_session_id($sessionInfo['id']); |
|
|
|
|
|
|
|
$firstCourse = current($courseList); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
|
|
|
|
'id' => 'session_'.$sessionInfo['id'], |
|
|
|
|
|
|
|
'session_id' => $sessionInfo['id'], |
|
|
|
|
|
|
|
'title' => $sessionInfo['name'], |
|
|
|
|
|
|
|
'description' => $sessionInfo['show_description'] ? $sessionInfo['description'] : '', |
|
|
|
|
|
|
|
'className' => 'personal', |
|
|
|
|
|
|
|
'borderColor' => $this->event_personal_color, |
|
|
|
|
|
|
|
'backgroundColor' => $this->event_personal_color, |
|
|
|
|
|
|
|
'editable' => false, |
|
|
|
|
|
|
|
'sent_to' => get_lang('Me'), |
|
|
|
|
|
|
|
'type' => 'session_subscription', |
|
|
|
|
|
|
|
'start' => $sessionInfo['display_start_date'], |
|
|
|
|
|
|
|
'start_date_localtime' => $sessionInfo['display_start_date'] |
|
|
|
|
|
|
|
? $this->formatEventDate($sessionInfo['display_start_date']) |
|
|
|
|
|
|
|
: '', |
|
|
|
|
|
|
|
'end' => $sessionInfo['display_end_date'], |
|
|
|
|
|
|
|
'end_date_localtime' => $sessionInfo['display_end_date'] |
|
|
|
|
|
|
|
? $this->formatEventDate($sessionInfo['display_end_date']) |
|
|
|
|
|
|
|
: '', |
|
|
|
|
|
|
|
'allDay' => 0, |
|
|
|
|
|
|
|
'parent_event_id' => 0, |
|
|
|
|
|
|
|
'has_children' => 0, |
|
|
|
|
|
|
|
'course_url' => api_get_course_url($firstCourse['code'], $sessionInfo['id']), |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private function loadSessionsAsEvents(int $start, int $end) |
|
|
|
private function loadSessionsAsEvents(int $start, int $end) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (false === api_get_configuration_value('personal_calendar_show_sessions_occupation')) { |
|
|
|
if (false === api_get_configuration_value('personal_calendar_show_sessions_occupation')) { |
|
|
|
@ -4670,85 +4759,24 @@ class Agenda |
|
|
|
|
|
|
|
|
|
|
|
foreach ($sessionList as $sessionInfo) { |
|
|
|
foreach ($sessionList as $sessionInfo) { |
|
|
|
if (!empty($sessionInfo['duration'])) { |
|
|
|
if (!empty($sessionInfo['duration'])) { |
|
|
|
$courseAccess = CourseManager::getFirstCourseAccessPerSessionAndUser( |
|
|
|
try { |
|
|
|
$sessionInfo['session_id'], |
|
|
|
$this->events[] = $this->convertSessionWithDuration($userInfo['id'], $sessionInfo, $start, $end); |
|
|
|
$userInfo['id'] |
|
|
|
} catch (Exception $e) { |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (empty($courseAccess)) { |
|
|
|
|
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$firstAccessDate = new DateTime($courseAccess['login_course_date'], new DateTimeZone('UTC')); |
|
|
|
|
|
|
|
$lastAccessDate = clone $firstAccessDate; |
|
|
|
|
|
|
|
$lastAccessDate->modify('+'.$sessionInfo['duration'].' days'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($firstAccessDate->format('Y-m-d H:i:s') > $start |
|
|
|
|
|
|
|
&& $lastAccessDate->format('Y-m-d H:i:s') < $end |
|
|
|
|
|
|
|
) { |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$courseList = SessionManager::get_course_list_by_session_id($sessionInfo['id']); |
|
|
|
|
|
|
|
$firstCourse = current($courseList); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$this->events[] = [ |
|
|
|
|
|
|
|
'id' => 'session_'.$sessionInfo['id'], |
|
|
|
|
|
|
|
'session_id' => $sessionInfo['id'], |
|
|
|
|
|
|
|
'title' => $sessionInfo['name'], |
|
|
|
|
|
|
|
'description' => $sessionInfo['show_description'] ? $sessionInfo['description'] : '', |
|
|
|
|
|
|
|
'className' => 'personal', |
|
|
|
|
|
|
|
'borderColor' => $this->event_personal_color, |
|
|
|
|
|
|
|
'backgroundColor' => $this->event_personal_color, |
|
|
|
|
|
|
|
'editable' => false, |
|
|
|
|
|
|
|
'sent_to' => get_lang('Me'), |
|
|
|
|
|
|
|
'type' => 'session', |
|
|
|
|
|
|
|
'start' => $firstAccessDate->format(DateTime::ISO8601), |
|
|
|
|
|
|
|
'start_date_localtime' => api_get_local_time($firstAccessDate), |
|
|
|
|
|
|
|
'end' => $lastAccessDate->format(DateTime::ISO8601), |
|
|
|
|
|
|
|
'end_date_localtime' => api_get_local_time($lastAccessDate), |
|
|
|
|
|
|
|
'allDay' => 0, |
|
|
|
|
|
|
|
'parent_event_id' => 0, |
|
|
|
|
|
|
|
'has_children' => 0, |
|
|
|
|
|
|
|
'course_url' => api_get_course_url($firstCourse['code'], $sessionInfo['id']), |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($sessionInfo['display_start_date'] < $start |
|
|
|
if (empty($sessionInfo['display_start_date']) || empty($sessionInfo['display_end_date'])) { |
|
|
|
&& $sessionInfo['display_end_date'] > $end |
|
|
|
|
|
|
|
) { |
|
|
|
|
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$courseList = SessionManager::get_course_list_by_session_id($sessionInfo['id']); |
|
|
|
try { |
|
|
|
$firstCourse = current($courseList); |
|
|
|
$this->events[] = $this->convertSessionWithDates($sessionInfo, $start, $end); |
|
|
|
|
|
|
|
} catch (Exception $e) { |
|
|
|
$this->events[] = [ |
|
|
|
continue; |
|
|
|
'id' => 'session_'.$sessionInfo['id'], |
|
|
|
} |
|
|
|
'session_id' => $sessionInfo['id'], |
|
|
|
|
|
|
|
'title' => $sessionInfo['name'], |
|
|
|
|
|
|
|
'description' => $sessionInfo['show_description'] ? $sessionInfo['description'] : '', |
|
|
|
|
|
|
|
'className' => 'personal', |
|
|
|
|
|
|
|
'borderColor' => $this->event_personal_color, |
|
|
|
|
|
|
|
'backgroundColor' => $this->event_personal_color, |
|
|
|
|
|
|
|
'editable' => false, |
|
|
|
|
|
|
|
'sent_to' => get_lang('Me'), |
|
|
|
|
|
|
|
'type' => 'session_subscription', |
|
|
|
|
|
|
|
'start' => $sessionInfo['display_start_date'], |
|
|
|
|
|
|
|
'start_date_localtime' => $sessionInfo['display_start_date'] |
|
|
|
|
|
|
|
? $this->formatEventDate($sessionInfo['display_start_date']) |
|
|
|
|
|
|
|
: '', |
|
|
|
|
|
|
|
'end' => $sessionInfo['display_end_date'], |
|
|
|
|
|
|
|
'end_date_localtime' => $sessionInfo['display_end_date'] |
|
|
|
|
|
|
|
? $this->formatEventDate($sessionInfo['display_end_date']) |
|
|
|
|
|
|
|
: '', |
|
|
|
|
|
|
|
'allDay' => 0, |
|
|
|
|
|
|
|
'parent_event_id' => 0, |
|
|
|
|
|
|
|
'has_children' => 0, |
|
|
|
|
|
|
|
'course_url' => api_get_course_url($firstCourse['code'], $sessionInfo['id']), |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|