Merge branch 'MDL-82502' of https://github.com/paulholden/moodle
This commit is contained in:
@@ -521,7 +521,7 @@ class stateactions {
|
||||
$course,
|
||||
$ids,
|
||||
__FUNCTION__,
|
||||
['moodle/course:manageactivities', 'moodle/course:activityvisibility']
|
||||
['moodle/course:activityvisibility']
|
||||
);
|
||||
|
||||
$format = course_get_format($course->id);
|
||||
@@ -577,7 +577,8 @@ class stateactions {
|
||||
$course,
|
||||
$ids,
|
||||
__FUNCTION__,
|
||||
['moodle/course:manageactivities', 'moodle/backup:backuptargetimport', 'moodle/restore:restoretargetimport']
|
||||
['moodle/backup:backuptargetimport', 'moodle/restore:restoretargetimport'],
|
||||
false
|
||||
);
|
||||
|
||||
$modinfo = get_fast_modinfo($course);
|
||||
@@ -1141,10 +1142,17 @@ class stateactions {
|
||||
* @param stdClass $course The course where given $cmids belong.
|
||||
* @param array $cmids List of course module ids to validate.
|
||||
* @param string $info additional information in case of error.
|
||||
* @param array $capabilities optional capabilities checks per each cm context.
|
||||
* @param array $capabilities optional capabilities checks to require.
|
||||
* @param bool $usemodcontext whether to use each module context, or the course context
|
||||
* @throws moodle_exception if any id is not valid
|
||||
*/
|
||||
protected function validate_cms(stdClass $course, array $cmids, ?string $info = null, array $capabilities = []): void {
|
||||
protected function validate_cms(
|
||||
stdClass $course,
|
||||
array $cmids,
|
||||
?string $info = null,
|
||||
array $capabilities = [],
|
||||
bool $usemodcontext = true,
|
||||
): void {
|
||||
|
||||
if (empty($cmids)) {
|
||||
throw new moodle_exception('emptycmids', 'core', null, $info);
|
||||
@@ -1155,10 +1163,16 @@ class stateactions {
|
||||
if (count($cmids) != count($intersect)) {
|
||||
throw new moodle_exception('unexistingcmid', 'core', null, $info);
|
||||
}
|
||||
|
||||
if (!empty($capabilities)) {
|
||||
foreach ($cmids as $cmid) {
|
||||
$modcontext = context_module::instance($cmid);
|
||||
require_all_capabilities($capabilities, $modcontext);
|
||||
if ($usemodcontext) {
|
||||
foreach ($cmids as $cmid) {
|
||||
$modcontext = context_module::instance($cmid);
|
||||
require_all_capabilities($capabilities, $modcontext);
|
||||
}
|
||||
} else {
|
||||
$coursecontext = context_course::instance($course->id);
|
||||
require_all_capabilities($capabilities, $coursecontext);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -122,8 +122,8 @@ if (!empty($add)) {
|
||||
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
|
||||
|
||||
require_login($course, false, $cm);
|
||||
$modcontext = context_module::instance($cm->id);
|
||||
require_capability('moodle/course:manageactivities', $modcontext);
|
||||
$coursecontext = context_course::instance($course->id);
|
||||
require_all_capabilities(['moodle/backup:backuptargetimport', 'moodle/restore:restoretargetimport'], $coursecontext);
|
||||
|
||||
// Duplicate the module.
|
||||
$newcm = duplicate_module($course, $cm);
|
||||
|
||||
Reference in New Issue
Block a user