diff --git a/public/main/exercise/exercise.class.php b/public/main/exercise/exercise.class.php
index 2c869ee8ac..00f24d659b 100644
--- a/public/main/exercise/exercise.class.php
+++ b/public/main/exercise/exercise.class.php
@@ -1618,7 +1618,7 @@ class Exercise
->setType($type)
->setRandom((int) $random)
->setRandomAnswers((bool) $random_answers)
- ->setActive((bool) $active)
+ ->setActive((int) $active)
->setResultsDisabled($results_disabled)
->setMaxAttempt($attempts)
->setFeedbackType($feedback_type)
@@ -8734,6 +8734,11 @@ class Exercise
$myActions = null,
$returnTable = false
) {
+ $is_allowedToEdit = api_is_allowed_to_edit(null, true);
+ $courseId = $courseId ? (int) $courseId : api_get_course_int_id();
+ $courseInfo = api_get_course_info_by_id($courseId);
+ $sessionId = $sessionId ? (int) $sessionId : api_get_session_id();
+
$course = api_get_course_entity($courseId);
$session = api_get_session_entity($sessionId);
@@ -8770,9 +8775,6 @@ class Exercise
$autoLaunchAvailable = true;
}
- $is_allowedToEdit = api_is_allowed_to_edit(null, true);
- $courseInfo = $courseId ? api_get_course_info_by_id($courseId) : api_get_course_info();
- $sessionId = $sessionId ? (int) $sessionId : api_get_session_id();
$courseId = $courseInfo['real_id'];
$tableRows = [];
$origin = api_get_origin();
@@ -8920,7 +8922,7 @@ class Exercise
$alt_title = ' title = "'.$exercise->getUnformattedTitle().'" ';
}
- // Teacher only
+ // Teacher only.
if ($is_allowedToEdit) {
$lp_blocked = null;
if (true == $exercise->exercise_was_added_in_lp) {
@@ -8932,7 +8934,8 @@ class Exercise
);
}
- $visibility = $exerciseEntity->isVisible($course, null);
+ $visibility = $exerciseEntity->isVisible($course, $session);
+
// Get visibility in base course
/*$visibility = api_get_item_visibility(
$courseInfo,
@@ -8958,7 +8961,7 @@ class Exercise
}
$style = '';
- if (0 == $exerciseEntity->getActive() || false === $visibility) {
+ if (0 === $exerciseEntity->getActive() || false === $visibility) {
$style = 'color:grey';
//$title = Display::tag('font', $cut_title, ['style' => 'color:grey']);
}
@@ -9108,7 +9111,7 @@ class Exercise
ICON_SIZE_SMALL
);
} else {
- if (0 == $exerciseEntity->getActive() || 0 == $visibility) {
+ if (0 === $exerciseEntity->getActive()) {
$visibility = Display::url(
Display::return_icon(
'invisible.png',
@@ -9172,7 +9175,7 @@ class Exercise
ICON_SIZE_SMALL
);
} else {
- if (0 == $exerciseEntity->getActive() || 0 == $visibility) {
+ if (0 === $exerciseEntity->getActive() || 0 == $visibility) {
$visibility = Display::url(
Display::return_icon(
'invisible.png',
@@ -9299,13 +9302,16 @@ class Exercise
} else {
// Student only.
$visibility = $exerciseEntity->isVisible($course, null);
+ if (false === $visibility && !empty($sessionId)) {
+ $visibility = $exerciseEntity->isVisible($course, $session);
+ }
if (false === $visibility) {
continue;
}
- $url = ''.
+ $url = ''.
$cut_title.'';
// Link of the exercise.