Show sessions calendar for session admin - refs BT#15394 #2801

pull/2858/head
Angel Fernando Quiroz Campos 7 years ago
parent e15802e575
commit 72652d8248
  1. 138
      main/inc/lib/usermanager.lib.php

@ -6583,97 +6583,105 @@ SQL;
{
$timezone = new DateTimeZone(api_get_timezone());
$sessions = [];
if (DRH == $userInfo['status']) {
$sessions = SessionManager::get_sessions_followed_by_drh($userInfo['id']);
$sessions = array_map(
function ($sessionInfo) {
$sessionInfo['session_id'] = $sessionInfo['id'];
$sessionInfo['session_name'] = $sessionInfo['name'];
return $sessionInfo;
},
$sessions
);
$sessionsByCategory = ['' => $sessions];
} elseif (SESSIONADMIN == $userInfo['status']) {
$sessions = SessionManager::getSessionsAdmin($userInfo['id']);
} else {
$sessionsByCategory = self::get_sessions_by_category($userInfo['id'], false, true, true);
$sessionsByCategory = array_column($sessionsByCategory, 'sessions');
}
$sessionsList = [];
foreach ($sessionsByCategory as $categorySessions) {
foreach ($categorySessions as $sessionInfo) {
if (!empty($sessionInfo['duration'])) {
$courseAccess = CourseManager::getFirstCourseAccessPerSessionAndUser(
$sessionInfo['session_id'],
$userInfo['id']
);
foreach ($sessionsByCategory as $sessionsInCategory) {
$sessions = array_merge($sessions, $sessionsInCategory);
}
}
if (empty($courseAccess)) {
continue;
}
$sessions = array_map(
function ($sessionInfo) {
if (!isset($sessionInfo['session_id'])) {
$sessionInfo['session_id'] = $sessionInfo['id'];
}
if (!isset($sessionInfo['session_name'])) {
$sessionInfo['session_name'] = $sessionInfo['name'];
}
$firstAcessDate = new DateTime(api_get_local_time($courseAccess['login_course_date']), $timezone);
$lastAccessDate = clone $firstAcessDate;
$lastAccessDate->modify("+{$sessionInfo['duration']} days");
return $sessionInfo;
},
$sessions
);
$firstAccessYear = (int) $firstAcessDate->format('Y');
$lastAccessYear = (int) $lastAccessDate->format('Y');
$calendarSessions = [];
if ($firstAccessYear <= $searchYear && $lastAccessYear >= $searchYear) {
$sessionsList[$sessionInfo['session_id']] = [
'name' => $sessionInfo['session_name'],
'access_start_date' => $firstAcessDate->format('Y-m-d h:i:s'),
'access_end_date' => $lastAccessDate->format('Y-m-d h:i:s'),
];
}
foreach ($sessions as $sessionInfo) {
if (!empty($sessionInfo['duration'])) {
$courseAccess = CourseManager::getFirstCourseAccessPerSessionAndUser(
$sessionInfo['session_id'],
$userInfo['id']
);
if (empty($courseAccess)) {
continue;
}
$accessStartDate = !empty($sessionInfo['access_start_date'])
? new DateTime(api_get_local_time($sessionInfo['access_start_date']), $timezone)
: null;
$accessEndDate = !empty($sessionInfo['access_end_date'])
? new DateTime(api_get_local_time($sessionInfo['access_end_date']), $timezone)
: null;
$accessStartYear = $accessStartDate ? (int) $accessStartDate->format('Y') : 0;
$accessEndYear = $accessEndDate ? (int) $accessEndDate->format('Y') : 0;
$firstAcessDate = new DateTime(api_get_local_time($courseAccess['login_course_date']), $timezone);
$lastAccessDate = clone $firstAcessDate;
$lastAccessDate->modify("+{$sessionInfo['duration']} days");
$isValid = false;
$firstAccessYear = (int) $firstAcessDate->format('Y');
$lastAccessYear = (int) $lastAccessDate->format('Y');
if ($accessStartYear && $accessEndYear) {
if ($accessStartYear <= $searchYear && $accessEndYear >= $searchYear) {
$isValid = true;
}
if ($firstAccessYear <= $searchYear && $lastAccessYear >= $searchYear) {
$calendarSessions[$sessionInfo['session_id']] = [
'name' => $sessionInfo['session_name'],
'access_start_date' => $firstAcessDate->format('Y-m-d h:i:s'),
'access_end_date' => $lastAccessDate->format('Y-m-d h:i:s'),
];
}
if ($accessStartYear && !$accessEndYear) {
if ($accessStartYear == $searchYear) {
$isValid = true;
}
continue;
}
$accessStartDate = !empty($sessionInfo['access_start_date'])
? new DateTime(api_get_local_time($sessionInfo['access_start_date']), $timezone)
: null;
$accessEndDate = !empty($sessionInfo['access_end_date'])
? new DateTime(api_get_local_time($sessionInfo['access_end_date']), $timezone)
: null;
$accessStartYear = $accessStartDate ? (int) $accessStartDate->format('Y') : 0;
$accessEndYear = $accessEndDate ? (int) $accessEndDate->format('Y') : 0;
$isValid = false;
if ($accessStartYear && $accessEndYear) {
if ($accessStartYear <= $searchYear && $accessEndYear >= $searchYear) {
$isValid = true;
}
}
if (!$accessStartYear && $accessEndYear) {
if ($accessEndYear == $searchYear) {
$isValid = true;
}
if ($accessStartYear && !$accessEndYear) {
if ($accessStartYear == $searchYear) {
$isValid = true;
}
}
if ($isValid) {
$sessionsList[$sessionInfo['session_id']] = [
'name' => $sessionInfo['session_name'],
'access_start_date' => $accessStartDate ? $accessStartDate->format('Y-m-d h:i:s') : null,
'access_end_date' => $accessEndDate ? $accessEndDate->format('Y-m-d h:i:s') : null,
];
if (!$accessStartYear && $accessEndYear) {
if ($accessEndYear == $searchYear) {
$isValid = true;
}
}
if ($isValid) {
$calendarSessions[$sessionInfo['session_id']] = [
'name' => $sessionInfo['session_name'],
'access_start_date' => $accessStartDate ? $accessStartDate->format('Y-m-d h:i:s') : null,
'access_end_date' => $accessEndDate ? $accessEndDate->format('Y-m-d h:i:s') : null,
];
}
}
return $sessionsList;
return $calendarSessions;
}
/**

Loading…
Cancel
Save