Merge remote-tracking branch 'upstream/preprodparkur' into ofaj

ofaj
NicoDucou 4 years ago
commit 359791b67e
  1. 168
      main/inc/lib/agenda.lib.php

@ -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']),
];
} }
} }
} }

Loading…
Cancel
Save