diff --git a/course/lib.php b/course/lib.php index 2fa417f9968..bcae51901c3 100644 --- a/course/lib.php +++ b/course/lib.php @@ -1654,6 +1654,10 @@ function course_allowed_module($course, $modname, ?\stdClass $user = null) { supports numeric module ids. Please update your code to pass the module name.'); } + if (!\core\plugininfo\mod::get_enabled_plugin($modname)) { + return false; + } + $capability = 'mod/' . $modname . ':addinstance'; if (!get_capability_info($capability)) { // Debug warning that the capability does not exist, but no more than once per page. diff --git a/course/tests/courselib_test.php b/course/tests/courselib_test.php index 7fcedd13544..ab642eb523e 100644 --- a/course/tests/courselib_test.php +++ b/course/tests/courselib_test.php @@ -7404,6 +7404,12 @@ final class courselib_test extends advanced_testcase { // Manager has permissions. $this->assertTrue(course_allowed_module($course, 'assign', $manager)); + + // Disable the assign module. + $DB->set_field('modules', 'visible', 0, ['name' => 'assign']); + + // Verify that disabled modules are not allowed. + $this->assertFalse(course_allowed_module($course, 'assign', $manager)); } /**