aboutsummaryrefslogtreecommitdiff
path: root/app/controllers/course/courseware.php
diff options
context:
space:
mode:
authorRon Lucke <lucke@elan-ev.de>2024-02-02 07:38:43 +0000
committerRon Lucke <lucke@elan-ev.de>2024-02-02 07:38:43 +0000
commitfeb28852d82475ebcd0573807e5d68481d0fe5b8 (patch)
tree72561a794f9d3c9d8969f3dbec6791884803d7ae /app/controllers/course/courseware.php
parent1c2d4c6adf9088c116e2d209ffe97fdfbb6d2511 (diff)
fix #3437
Closes #3437 Merge request studip/studip!2464
Diffstat (limited to 'app/controllers/course/courseware.php')
-rw-r--r--app/controllers/course/courseware.php15
1 files changed, 12 insertions, 3 deletions
diff --git a/app/controllers/course/courseware.php b/app/controllers/course/courseware.php
index c1421f4..6297d50 100644
--- a/app/controllers/course/courseware.php
+++ b/app/controllers/course/courseware.php
@@ -64,10 +64,14 @@ class Course_CoursewareController extends CoursewareController
$this->user_id = $user->id;
/** @var array<mixed> $last */
$last = UserConfig::get($this->user_id)->getValue('COURSEWARE_LAST_ELEMENT');
+ $lastStructuralElement = \Courseware\StructuralElement::findOneById($last);
if ($unit_id === null) {
- $this->redirectToFirstUnit('course', Context::getId(), $last);
-
+ if ($lastStructuralElement->canVisit($user)) {
+ $this->redirectToFirstUnit('course', Context::getId(), $last);
+ } else {
+ $this->redirectToFirstUnit('course', Context::getId(), []);
+ }
return;
}
@@ -75,7 +79,12 @@ class Course_CoursewareController extends CoursewareController
$this->unit_id = null;
$unit = Unit::find($unit_id);
if (isset($unit)) {
- $this->setEntryElement('course', $unit, $last, Context::getId());
+ if ($lastStructuralElement->canVisit($user)) {
+ $this->setEntryElement('course', $unit, $last, Context::getId());
+ } else {
+ $rootElement = [Context::getId() => $unit->structural_element->id];
+ $this->setEntryElement('course', $unit, $rootElement, Context::getId());
+ }
}
}