From 667e9d772ac5278e76dddfeb9162724aba79aeab Mon Sep 17 00:00:00 2001 From: Amaia Anabitarte Date: Wed, 11 Feb 2026 16:19:47 +0100 Subject: [PATCH] MDL-87882 course: Fix the restricted activity routing --- .../classes/route/controller/restricted_module.php | 11 +++++++---- public/lib/moodlelib.php | 2 +- .../lib/tests/router/parameters/path_module_test.php | 4 ++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/public/course/classes/route/controller/restricted_module.php b/public/course/classes/route/controller/restricted_module.php index 2cc841a0ee1..02673903f4d 100644 --- a/public/course/classes/route/controller/restricted_module.php +++ b/public/course/classes/route/controller/restricted_module.php @@ -40,9 +40,8 @@ class restricted_module { * @return ResponseInterface */ #[route( - path: '/{course}/restricted/{cm}', + path: '/cms/{cm}/restricted', pathtypes: [ - new \core\router\parameters\path_course(), new \core\router\parameters\path_module(), ], requirelogin: new require_login( @@ -53,13 +52,13 @@ class restricted_module { public function restricted_module_page( ServerRequestInterface $request, ResponseInterface $response, - \stdClass $course, \stdClass $cm, ): ResponseInterface { global $OUTPUT, $PAGE; $context = \context_module::instance($cm->id); + $course = get_course($cm->course); $modinfo = get_fast_modinfo($course); $cminfo = $modinfo->get_cm($cm->id); $sectioninfo = $modinfo->get_section_info_by_id($cm->section); @@ -67,7 +66,11 @@ class restricted_module { $format = course_get_format($course); $course->format = $format->get_format(); - $PAGE->set_url('/restricted.php', ['id' => $cm->id]); + $url = \core\router\util::get_path_for_callable( + [self::class, 'restricted_module_page'], + ['cm' => $cm->id], + ); + $PAGE->set_url($url, ['cm' => $cm->id]); $PAGE->add_body_class('limitedwidth'); $PAGE->set_context($context); $PAGE->set_pagetype('mod-' . $cm->modname . '-restricted'); diff --git a/public/lib/moodlelib.php b/public/lib/moodlelib.php index dbc73f6ad51..a6116c3a2c8 100644 --- a/public/lib/moodlelib.php +++ b/public/lib/moodlelib.php @@ -2660,7 +2660,7 @@ function require_login($courseorid = null, $autologinguest = true, $cm = null, $ if ($cm->is_visible_on_course_page()) { $url = \core\router\util::get_path_for_callable( [\core_course\route\controller\restricted_module::class, 'restricted_module_page'], - ['course' => $course->id, 'cm' => $cm->id], + ['cm' => $cm->id], ); redirect($url, '', null); } diff --git a/public/lib/tests/router/parameters/path_module_test.php b/public/lib/tests/router/parameters/path_module_test.php index a86165d7abc..95b8f3b4d53 100644 --- a/public/lib/tests/router/parameters/path_module_test.php +++ b/public/lib/tests/router/parameters/path_module_test.php @@ -39,7 +39,7 @@ final class path_module_test extends route_testcase { $modcontext = \context_module::instance($mod->cmid); $param = new path_module(); - $request = new ServerRequest('GET', '/course/' . $course->id . '/restricted/' . $mod->cmid); + $request = new ServerRequest('GET', '/course/cms/' . $mod->cmid . '/restricted'); $newrequest = $param->add_attributes_for_parameter_value($request, $mod->cmid); $this->assertInstanceOf(stdClass::class, $newrequest->getAttribute('cm')); @@ -60,7 +60,7 @@ final class path_module_test extends route_testcase { $course = $this->getDataGenerator()->create_course(); $modid = 9999; - $request = new ServerRequest('GET', '/course/' . $course->id . '/restricted/' . $modid); + $request = new ServerRequest('GET', '/course/cms/' . $modid . '/restricted'); $this->expectException(not_found_exception::class); $param->add_attributes_for_parameter_value($request, $modid);