Browse Source

Fix session catalog pagination see #15629

Julio Montoya 5 years ago
parent
commit
0d4c6a8d42
2 changed files with 9 additions and 6 deletions
  1. 2 2
      main/auth/courses_controller.php
  2. 7 4
      main/inc/lib/sessionmanager.lib.php

+ 2 - 2
main/auth/courses_controller.php

@@ -645,12 +645,12 @@ class CoursesController
     public function sessionList($action, $nameTools, $limit = [])
     {
         $date = isset($_POST['date']) ? $_POST['date'] : date('Y-m-d');
-        $hiddenLinks = isset($_GET['hidden_links']) ? intval($_GET['hidden_links']) == 1 : false;
+        $hiddenLinks = isset($_GET['hidden_links']) ? $_GET['hidden_links'] == 1 : false;
         $limit = isset($limit) ? $limit : self::getLimitArray();
         $countSessions = SessionManager::countSessionsByEndDate($date);
         $sessions = CoursesAndSessionsCatalog::browseSessions($date, $limit);
 
-        $pageTotal = intval(intval($countSessions) / $limit['length']);
+        $pageTotal = round($countSessions / $limit['length']);
         // Do NOT show pagination if only one page or less
         $cataloguePagination = $pageTotal > 1 ? CourseCategory::getCatalogPagination($limit['current'], $limit['length'], $pageTotal) : '';
         $sessionsBlocks = $this->getFormattedSessionsBlock($sessions);

+ 7 - 4
main/inc/lib/sessionmanager.lib.php

@@ -4586,7 +4586,6 @@ class SessionManager
      */
     public static function countSessionsByEndDate($date = null)
     {
-        $count = 0;
         $sessionTable = Database::get_main_table(TABLE_MAIN_SESSION);
         $url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
         $date = Database::escape_string($date);
@@ -4596,8 +4595,10 @@ class SessionManager
             $dateFilter = <<<SQL
                 AND ('$date' BETWEEN s.access_start_date AND s.access_end_date)
                 OR (s.access_end_date IS NULL)
-                OR (s.access_start_date IS NULL AND
-                s.access_end_date IS NOT NULL AND s.access_end_date > '$date')
+                OR (
+                    s.access_start_date IS NULL AND 
+                    s.access_end_date IS NOT NULL AND s.access_end_date > '$date'
+                )
 SQL;
         }
         $sql = "SELECT COUNT(*) 
@@ -4606,8 +4607,10 @@ SQL;
                 ON (s.id = u.session_id)
                 WHERE u.access_url_id = $urlId $dateFilter";
         $res = Database::query($sql);
+
+        $count = 0;
         if ($res !== false && Database::num_rows($res) > 0) {
-            $count = current(Database::fetch_row($res));
+            $count = (int) current(Database::fetch_row($res));
         }
 
         return $count;