Browse Source

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

Angel Fernando Quiroz Campos 6 years ago
parent
commit
72652d8248
1 changed files with 73 additions and 65 deletions
  1. 73 65
      main/inc/lib/usermanager.lib.php

+ 73 - 65
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;
     }
 
     /**