course settings: MDL-17501 check for moodle/course:visibility in the course settings form.

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.
This commit is contained in:
tjhunt
2008-12-08 02:31:05 +00:00
parent ca63c5fb14
commit 9136a60c46
4 changed files with 25 additions and 2 deletions
+4
View File
@@ -315,6 +315,10 @@ class course_edit_form extends moodleform {
$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);
+1
View File
@@ -498,6 +498,7 @@ $moodle_capabilities = array(
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
)
),
+19 -1
View File
@@ -1123,7 +1123,25 @@ function xmldb_main_upgrade($oldversion) {
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;
}
+1 -1
View File
@@ -6,7 +6,7 @@
// 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