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