Browse Source

Check session visibility before redirect see BT#12083 BT#15106

Julio Montoya 6 years ago
parent
commit
8fe4455334
1 changed files with 26 additions and 21 deletions
  1. 26 21
      main/inc/local.inc.php

+ 26 - 21
main/inc/local.inc.php

@@ -1358,29 +1358,34 @@ if ((isset($uidReset) && $uidReset) || $cidReset) {
                     $_course['real_id']
                 );
 
-                if (!empty($courseSession) && isset($courseSession[0])) {
-                    $courseSessionItem = $courseSession[0];
-                    if (isset($courseSessionItem['session_id'])) {
-                        $customSessionId = $courseSessionItem['session_id'];
-                        $currentUrl = htmlentities($_SERVER['REQUEST_URI']);
-                        $currentUrl = str_replace('id_session=0', '', $currentUrl);
-                        $currentUrl = str_replace('&', '&', $currentUrl);
-
-                        if (strpos($currentUrl, '?') !== false) {
-                            $currentUrl = rtrim($currentUrl, '&');
-                            $url = $currentUrl.'&id_session='.$customSessionId;
-                        } else {
-                            $url = $currentUrl.'?id_session='.$customSessionId;
-                        }
-                        $url = str_replace('&&', '&', $url);
-                        //$url = $_course['course_public_url'].'?id_session='.$customSessionId;
+                if (!empty($courseSession)) {
+                    foreach ($courseSession as $courseSessionItem) {
+                        if (isset($courseSessionItem['session_id'])) {
+                            $customSessionId = $courseSessionItem['session_id'];
+                            $visibility = api_get_session_visibility($customSessionId, $_course['real_id']);
+                            if ($visibility == SESSION_INVISIBLE) {
+                                continue;
+                            }
+                            $currentUrl = htmlentities($_SERVER['REQUEST_URI']);
+                            $currentUrl = str_replace('id_session=0', '', $currentUrl);
+                            $currentUrl = str_replace('&', '&', $currentUrl);
+
+                            if (strpos($currentUrl, '?') !== false) {
+                                $currentUrl = rtrim($currentUrl, '&');
+                                $url = $currentUrl.'&id_session='.$customSessionId;
+                            } else {
+                                $url = $currentUrl.'?id_session='.$customSessionId;
+                            }
+                            $url = str_replace('&&', '&', $url);
+                            //$url = $_course['course_public_url'].'?id_session='.$customSessionId;
 
-                        Session::erase('_real_cid');
-                        Session::erase('_cid');
-                        Session::erase('_course');
+                            Session::erase('_real_cid');
+                            Session::erase('_cid');
+                            Session::erase('_course');
 
-                        header('Location: '.$url);
-                        exit;
+                            header('Location: '.$url);
+                            exit;
+                        }
                     }
                 }
             }