MDL-87882 course: Fix the restricted activity routing

This commit is contained in:
Amaia Anabitarte
2026-02-11 22:26:54 +01:00
parent 746815af49
commit 667e9d772a
3 changed files with 10 additions and 7 deletions
@@ -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');
+1 -1
View File
@@ -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);
}
@@ -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);