1. If a user does not have that capability, don't let them change whether the course is visible.
2. Give teachers that capability by default.
3. To avoid regressions, on upgrade, give moodle/course:visibility to any role that has moodle/course:update.
$mform->addElement('select', 'visible', get_string('availability'), $choices);
$mform->setHelpButton('visible', array('courseavailability', get_string('availability')), true);
$mform->setDefault('visible', $courseconfig->visible);
+ if ($course and !has_capability('moodle/course:visibility', $coursecontext)) {
+ $mform->hardFreeze('visible');
+ $mform->setConstant('visible', $course->visible);
+ }
$mform->addElement('passwordunmask', 'enrolpassword', get_string('enrolmentkey'), 'size="25"');
$mform->setHelpButton('enrolpassword', array('enrolmentkey', get_string('enrolmentkey')), true);
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
+ 'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
)
),
upgrade_main_savepoint($result, 2008120700);
}
-
+ /// For MDL-17501. Ensure that any role that has moodle/course:update also
+ /// has moodle/course:visibility.
+ if ($result && $oldversion < 2008120800) {
+ /// Get the roles with 'moodle/course:update'.
+ $systemcontext = get_context_instance(CONTEXT_SYSTEM);
+ $roles = get_roles_with_capability('moodle/course:update', CAP_ALLOW, $systemcontext);
+
+ /// Give those roles 'moodle/course:visibility'.
+ foreach ($roles as $role) {
+ assign_capability('moodle/course:visibility', CAP_ALLOW, $role->id, $systemcontext->id);
+ }
+
+ /// Force all sessions to refresh access data.
+ mark_context_dirty($systemcontext->path);
+
+ /// Main savepoint reached
+ upgrade_main_savepoint($result, 2008120800);
+ }
+
return $result;
}
// This is compared against the values stored in the database to determine
// whether upgrades should be performed (see lib/db/*.php)
- $version = 2008120700; // YYYYMMDD = date of the last version bump
+ $version = 2008120800; // YYYYMMDD = date of the last version bump
// XX = daily increments
$release = '2.0 dev (Build: 20081208)'; // Human-friendly version name