Fix session course redirection

Checking the visibility and visibility priority:

SESSION_AVAILABLE,
SESSION_VISIBLE
SESSION_VISIBLE_READ_ONLY

If the user is subscribed in different sessions with the same course

See BT#12083 BT#15106
pull/2757/head
Julio Montoya 7 years ago
parent e662194654
commit c34e481871
  1. 35
      main/inc/local.inc.php

@ -1358,10 +1358,40 @@ if ((isset($uidReset) && $uidReset) || $cidReset) {
$_course['real_id']
);
if (!empty($courseSession) && isset($courseSession[0])) {
$courseSessionItem = $courseSession[0];
$priorityList = [];
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;
}
switch ($visibility) {
case SESSION_AVAILABLE:
$priorityList[1][] = $customSessionId;
break;
case SESSION_VISIBLE:
$priorityList[2][] = $customSessionId;
break;
case SESSION_VISIBLE_READ_ONLY:
$priorityList[3][] = $customSessionId;
break;
}
}
}
}
if (!empty($priorityList)) {
ksort($priorityList);
foreach ($priorityList as $sessionList) {
if (empty($sessionList)) {
continue;
}
foreach ($sessionList as $customSessionId) {
$currentUrl = htmlentities($_SERVER['REQUEST_URI']);
$currentUrl = str_replace('id_session=0', '', $currentUrl);
$currentUrl = str_replace('&', '&', $currentUrl);
@ -1385,6 +1415,7 @@ if ((isset($uidReset) && $uidReset) || $cidReset) {
}
}
}
}
} else { // keys missing => not anymore in the course - user relation
// course
$is_courseMember = false;

Loading…
Cancel
Save