From 9136a60c4693ed046cf1c231d5af8ec8a92a9c76 Mon Sep 17 00:00:00 2001 From: tjhunt Date: Mon, 8 Dec 2008 02:31:05 +0000 Subject: [PATCH] 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. --- course/edit_form.php | 4 ++++ lib/db/access.php | 1 + lib/db/upgrade.php | 20 +++++++++++++++++++- version.php | 2 +- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/course/edit_form.php b/course/edit_form.php index f79a878795..89497a2995 100644 --- a/course/edit_form.php +++ b/course/edit_form.php @@ -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); diff --git a/lib/db/access.php b/lib/db/access.php index fafd9632e0..de14be2cc4 100644 --- a/lib/db/access.php +++ b/lib/db/access.php @@ -498,6 +498,7 @@ $moodle_capabilities = array( 'captype' => 'write', 'contextlevel' => CONTEXT_COURSE, 'legacy' => array( + 'editingteacher' => CAP_ALLOW, 'admin' => CAP_ALLOW ) ), diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index 1463351fbf..2d95363497 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -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; } diff --git a/version.php b/version.php index 34ba7fb2be..aad31f858e 100644 --- a/version.php +++ b/version.php @@ -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 -- 2.39.5