diff --git a/lib/db/access.php b/lib/db/access.php index 1652534349e..1040cadd124 100644 --- a/lib/db/access.php +++ b/lib/db/access.php @@ -412,7 +412,7 @@ $capabilities = array( 'moodle/site:accessallgroups' => array( 'captype' => 'read', - 'contextlevel' => CONTEXT_COURSE, + 'contextlevel' => CONTEXT_MODULE, 'archetypes' => array( 'editingteacher' => CAP_ALLOW, 'manager' => CAP_ALLOW @@ -422,7 +422,7 @@ $capabilities = array( 'moodle/site:viewfullnames' => array( 'captype' => 'read', - 'contextlevel' => CONTEXT_COURSE, + 'contextlevel' => CONTEXT_MODULE, 'archetypes' => array( 'teacher' => CAP_ALLOW, 'editingteacher' => CAP_ALLOW, @@ -436,7 +436,7 @@ $capabilities = array( 'moodle/site:viewuseridentity' => array( 'captype' => 'read', - 'contextlevel' => CONTEXT_COURSE, + 'contextlevel' => CONTEXT_MODULE, 'archetypes' => array( 'teacher' => CAP_ALLOW, 'editingteacher' => CAP_ALLOW, @@ -462,7 +462,7 @@ $capabilities = array( 'riskbitmask' => RISK_XSS, 'captype' => 'write', - 'contextlevel' => CONTEXT_COURSE, + 'contextlevel' => CONTEXT_MODULE, 'archetypes' => array( 'editingteacher' => CAP_ALLOW, 'manager' => CAP_ALLOW diff --git a/lib/tests/accesslib_test.php b/lib/tests/accesslib_test.php index 3ff61927e08..3963b7a3d73 100644 --- a/lib/tests/accesslib_test.php +++ b/lib/tests/accesslib_test.php @@ -3351,6 +3351,84 @@ class core_accesslib_testcase extends advanced_testcase { $this->assertDebuggingCalled('get_system_context() is deprecated, please use context_system::instance() instead.', DEBUG_DEVELOPER); } + /** + * Helper that verifies a list of capabilities, as returned by + * $context->get_capabilities() contains certain capabilities. + * + * @param array $expected a list of capability names + * @param array $actual a list of capability info from $context->get_capabilities(). + */ + protected function assert_capability_list_contains($expected, $actual) { + $actualnames = []; + foreach ($actual as $cap) { + $actualnames[$cap->name] = $cap->name; + } + $this->assertArraySubset(array_combine($expected, $expected), $actualnames); + } + + /** + * Test that context_system::get_capabilities returns capabilities relevant to all modules. + */ + public function test_context_module_caps_returned_by_get_capabilities_in_sys_context() { + $actual = context_system::instance()->get_capabilities(); + + // Just test a few representative capabilities. + $expectedcapabilities = ['moodle/site:accessallgroups', 'moodle/site:viewfullnames']; + + $this->assert_capability_list_contains($expectedcapabilities, $actual); + } + + /** + * Test that context_coursecat::get_capabilities returns capabilities relevant to all modules. + */ + public function test_context_module_caps_returned_by_get_capabilities_in_course_cat_context() { + $this->resetAfterTest(true); + $generator = $this->getDataGenerator(); + $cat = $generator->create_category(); + + $actual = context_coursecat::instance($cat->id)->get_capabilities(); + + // Just test a few representative capabilities. + $expectedcapabilities = ['moodle/site:accessallgroups', 'moodle/site:viewfullnames']; + + $this->assert_capability_list_contains($expectedcapabilities, $actual); + } + + /** + * Test that context_course::get_capabilities returns capabilities relevant to all modules. + */ + public function test_context_module_caps_returned_by_get_capabilities_in_course_context() { + $this->resetAfterTest(true); + $generator = $this->getDataGenerator(); + $cat = $generator->create_category(); + $course = $generator->create_course(['category' => $cat->id]); + + $actual = context_course::instance($course->id)->get_capabilities(); + + // Just test a few representative capabilities. + $expectedcapabilities = ['moodle/site:accessallgroups', 'moodle/site:viewfullnames']; + + $this->assert_capability_list_contains($expectedcapabilities, $actual); + } + + /** + * Test that context_module::get_capabilities returns capabilities relevant to all modules. + */ + public function test_context_module_caps_returned_by_get_capabilities_mod_context() { + $this->resetAfterTest(true); + $generator = $this->getDataGenerator(); + $cat = $generator->create_category(); + $course = $generator->create_course(['category' => $cat->id]); + $page = $generator->create_module('page', ['course' => $course->id]); + + $actual = context_module::instance($page->cmid)->get_capabilities(); + + // Just test a few representative capabilities. + $expectedcapabilities = ['moodle/site:accessallgroups', 'moodle/site:viewfullnames']; + + $this->assert_capability_list_contains($expectedcapabilities, $actual); + } + /** * Test updating of role capabilities during upgrade */ diff --git a/mod/assign/lib.php b/mod/assign/lib.php index edc5c50a323..817ebfafafa 100644 --- a/mod/assign/lib.php +++ b/mod/assign/lib.php @@ -1296,10 +1296,7 @@ function assign_cron() { * @return array Array of capability strings */ function assign_get_extra_capabilities() { - return array('gradereport/grader:view', - 'moodle/grade:viewall', - 'moodle/site:viewfullnames', - 'moodle/site:config'); + return ['gradereport/grader:view', 'moodle/grade:viewall']; } /** diff --git a/mod/book/lib.php b/mod/book/lib.php index 5652f495b41..f5bd20fd586 100644 --- a/mod/book/lib.php +++ b/mod/book/lib.php @@ -63,15 +63,6 @@ function book_get_nav_classes() { return array ('navtoc', 'navimages', 'navtext'); } -/** - * Returns all other caps used in module - * @return array - */ -function book_get_extra_capabilities() { - // used for group-members-only - return array('moodle/site:accessallgroups'); -} - /** * Add book instance. * @@ -794,4 +785,4 @@ function mod_book_core_calendar_provide_event_action(calendar_event $event, 1, true ); -} \ No newline at end of file +} diff --git a/mod/chat/lib.php b/mod/chat/lib.php index 774ebeee42a..fdecbcd24f8 100644 --- a/mod/chat/lib.php +++ b/mod/chat/lib.php @@ -1271,16 +1271,6 @@ function chat_reset_userdata($data) { return $status; } -/** - * Returns all other caps used in module - * - * @return array - */ -function chat_get_extra_capabilities() { - return array('moodle/site:accessallgroups', 'moodle/site:viewfullnames'); -} - - /** * @param string $feature FEATURE_xx constant for requested feature * @return mixed True if module supports feature, null if doesn't know diff --git a/mod/choice/lib.php b/mod/choice/lib.php index 3256a8c1f97..4cf9424db32 100644 --- a/mod/choice/lib.php +++ b/mod/choice/lib.php @@ -822,15 +822,6 @@ function choice_get_response_data($choice, $cm, $groupmode, $onlyactive) { return $allresponses; } -/** - * Returns all other caps used in module - * - * @return array - */ -function choice_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - /** * @uses FEATURE_GROUPS * @uses FEATURE_GROUPINGS diff --git a/mod/data/lib.php b/mod/data/lib.php index 7bb1310ee04..8509dd785b2 100644 --- a/mod/data/lib.php +++ b/mod/data/lib.php @@ -3003,7 +3003,8 @@ function data_reset_userdata($data) { * @return array */ function data_get_extra_capabilities() { - return array('moodle/site:accessallgroups', 'moodle/site:viewfullnames', 'moodle/rating:view', 'moodle/rating:viewany', 'moodle/rating:viewall', 'moodle/rating:rate', 'moodle/comment:view', 'moodle/comment:post', 'moodle/comment:delete'); + return ['moodle/rating:view', 'moodle/rating:viewany', 'moodle/rating:viewall', 'moodle/rating:rate', + 'moodle/comment:view', 'moodle/comment:post', 'moodle/comment:delete']; } /** diff --git a/mod/feedback/lib.php b/mod/feedback/lib.php index d3302e05f4c..28ad191882e 100644 --- a/mod/feedback/lib.php +++ b/mod/feedback/lib.php @@ -44,15 +44,6 @@ define('FEEDBACK_DEFAULT_PAGE_COUNT', 20); define('FEEDBACK_EVENT_TYPE_OPEN', 'open'); define('FEEDBACK_EVENT_TYPE_CLOSE', 'close'); -/** - * Returns all other caps used in module. - * - * @return array - */ -function feedback_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - /** * @uses FEATURE_GROUPS * @uses FEATURE_GROUPINGS diff --git a/mod/folder/lib.php b/mod/folder/lib.php index 13d878ffc1e..3a54f1986a7 100644 --- a/mod/folder/lib.php +++ b/mod/folder/lib.php @@ -51,14 +51,6 @@ function folder_supports($feature) { } } -/** - * Returns all other caps used in module - * @return array - */ -function folder_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - /** * This function is used by the reset_course_userdata function in moodlelib. * @param $data the data submitted from the reset course. diff --git a/mod/forum/lib.php b/mod/forum/lib.php index eefd789a7cf..83a83869347 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -7324,7 +7324,7 @@ function forum_get_forum_types_all() { * @return array */ function forum_get_extra_capabilities() { - return array('moodle/site:accessallgroups', 'moodle/site:viewfullnames', 'moodle/site:trustcontent', 'moodle/rating:view', 'moodle/rating:viewany', 'moodle/rating:viewall', 'moodle/rating:rate'); + return ['moodle/rating:view', 'moodle/rating:viewany', 'moodle/rating:viewall', 'moodle/rating:rate']; } /** diff --git a/mod/glossary/lib.php b/mod/glossary/lib.php index 53e2ba4620a..4cc4f1dbf4e 100644 --- a/mod/glossary/lib.php +++ b/mod/glossary/lib.php @@ -3073,7 +3073,8 @@ function glossary_reset_userdata($data) { * @return array */ function glossary_get_extra_capabilities() { - return array('moodle/site:accessallgroups', 'moodle/site:viewfullnames', 'moodle/site:trustcontent', 'moodle/rating:view', 'moodle/rating:viewany', 'moodle/rating:viewall', 'moodle/rating:rate', 'moodle/comment:view', 'moodle/comment:post', 'moodle/comment:delete'); + return ['moodle/rating:view', 'moodle/rating:viewany', 'moodle/rating:viewall', 'moodle/rating:rate', + 'moodle/comment:view', 'moodle/comment:post', 'moodle/comment:delete']; } /** diff --git a/mod/imscp/lib.php b/mod/imscp/lib.php index b6378623a04..0599ae6635f 100644 --- a/mod/imscp/lib.php +++ b/mod/imscp/lib.php @@ -45,14 +45,6 @@ function imscp_supports($feature) { } } -/** - * Returns all other caps used in module - * @return array - */ -function imscp_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - /** * This function is used by the reset_course_userdata function in moodlelib. * diff --git a/mod/label/lib.php b/mod/label/lib.php index 2bd7c9d1436..be051fc2f8b 100644 --- a/mod/label/lib.php +++ b/mod/label/lib.php @@ -163,15 +163,6 @@ function label_reset_userdata($data) { return array(); } -/** - * Returns all other caps used in module - * - * @return array - */ -function label_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - /** * @uses FEATURE_IDNUMBER * @uses FEATURE_GROUPS diff --git a/mod/lesson/lib.php b/mod/lesson/lib.php index 2963827e642..a66de01d3e0 100644 --- a/mod/lesson/lib.php +++ b/mod/lesson/lib.php @@ -1133,14 +1133,6 @@ function lesson_reset_userdata($data) { return $status; } -/** - * Returns all other caps used in module - * @return array - */ -function lesson_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - /** * @uses FEATURE_GROUPS * @uses FEATURE_GROUPINGS diff --git a/mod/lti/lib.php b/mod/lti/lib.php index ab9df0ed60c..357cafb5795 100644 --- a/mod/lti/lib.php +++ b/mod/lti/lib.php @@ -48,15 +48,6 @@ defined('MOODLE_INTERNAL') || die; -/** - * Returns all other caps used in module. - * - * @return array - */ -function lti_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - /** * List of features supported in URL module * @param string $feature FEATURE_xx constant for requested feature @@ -681,4 +672,4 @@ function mod_lti_core_calendar_provide_event_action(calendar_event $event, 1, true ); -} \ No newline at end of file +} diff --git a/mod/page/lib.php b/mod/page/lib.php index 67135ad02c0..bfda3241c9f 100644 --- a/mod/page/lib.php +++ b/mod/page/lib.php @@ -44,14 +44,6 @@ function page_supports($feature) { } } -/** - * Returns all other caps used in module - * @return array - */ -function page_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - /** * This function is used by the reset_course_userdata function in moodlelib. * @param $data the data submitted from the reset course. diff --git a/mod/quiz/lib.php b/mod/quiz/lib.php index b83afcbba92..18d44a76d39 100644 --- a/mod/quiz/lib.php +++ b/mod/quiz/lib.php @@ -1800,9 +1800,7 @@ function quiz_supports($feature) { function quiz_get_extra_capabilities() { global $CFG; require_once($CFG->libdir . '/questionlib.php'); - $caps = question_get_all_capabilities(); - $caps[] = 'moodle/site:accessallgroups'; - return $caps; + return question_get_all_capabilities(); } /** diff --git a/mod/resource/lib.php b/mod/resource/lib.php index dd5537522ff..a87bbe5c66d 100644 --- a/mod/resource/lib.php +++ b/mod/resource/lib.php @@ -44,14 +44,6 @@ function resource_supports($feature) { } } -/** - * Returns all other caps used in module - * @return array - */ -function resource_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - /** * This function is used by the reset_course_userdata function in moodlelib. * @param $data the data submitted from the reset course. diff --git a/mod/scorm/lib.php b/mod/scorm/lib.php index ad07348d740..93137d602cc 100644 --- a/mod/scorm/lib.php +++ b/mod/scorm/lib.php @@ -842,15 +842,6 @@ function scorm_reset_userdata($data) { return $status; } -/** - * Returns all other caps used in module - * - * @return array - */ -function scorm_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - /** * Lists all file areas current user may browse * diff --git a/mod/survey/lib.php b/mod/survey/lib.php index 1f630ecabf9..4ca4e96cb13 100644 --- a/mod/survey/lib.php +++ b/mod/survey/lib.php @@ -770,15 +770,6 @@ function survey_reset_userdata($data) { return $status; } -/** - * Returns all other caps used in module - * - * @return array - */ -function survey_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - /** * @uses FEATURE_GROUPS * @uses FEATURE_GROUPINGS diff --git a/mod/url/lib.php b/mod/url/lib.php index 5aed89da0fb..6a342f3c258 100644 --- a/mod/url/lib.php +++ b/mod/url/lib.php @@ -46,14 +46,6 @@ function url_supports($feature) { } } -/** - * Returns all other caps used in module - * @return array - */ -function url_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - /** * This function is used by the reset_course_userdata function in moodlelib. * @param $data the data submitted from the reset course. diff --git a/mod/workshop/lib.php b/mod/workshop/lib.php index 3ef96128885..76bc87239a6 100644 --- a/mod/workshop/lib.php +++ b/mod/workshop/lib.php @@ -1151,15 +1151,6 @@ function workshop_scale_used_anywhere($scaleid) { return false; } -/** - * Returns all other caps used in the module - * - * @return array - */ -function workshop_get_extra_capabilities() { - return array('moodle/site:accessallgroups'); -} - //////////////////////////////////////////////////////////////////////////////// // Gradebook API // //////////////////////////////////////////////////////////////////////////////// diff --git a/version.php b/version.php index 0b9a9a2f5b6..47d6bff0fb0 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2018051703.07; // 20180517 = branching date YYYYMMDD - do not modify! +$version = 2018051703.08; // 20180517 = branching date YYYYMMDD - do not modify! // RR = release increments - 00 in DEV branches. // .XX = incremental changes.