From 73fabadadd5beeaf411401d8815314e31fe3ac8e Mon Sep 17 00:00:00 2001 From: Simey Lameze Date: Tue, 26 Mar 2019 09:46:23 +0800 Subject: [PATCH] MDL-65138 course: add a setting for course publishing --- admin/settings/subsystems.php | 3 +++ course/lib.php | 2 +- course/publish/backup.php | 5 +++-- course/publish/index.php | 5 ++++- course/publish/metadata.php | 5 ++++- course/tests/courselib_test.php | 2 +- lang/en/hub.php | 2 ++ 7 files changed, 18 insertions(+), 6 deletions(-) diff --git a/admin/settings/subsystems.php b/admin/settings/subsystems.php index de5f75be9939a..e5c660b570a5f 100644 --- a/admin/settings/subsystems.php +++ b/admin/settings/subsystems.php @@ -48,4 +48,7 @@ $optionalsubsystems->add(new admin_setting_configcheckbox('allowstealth', new lang_string('allowstealthmodules'), new lang_string('allowstealthmodules_help'), 0, 1, 0)); + + $optionalsubsystems->add(new admin_setting_configcheckbox('enablecoursepublishing', + new lang_string('enablecoursepublishing', 'hub'), new lang_string('enablecoursepublishing_help', 'hub'), 0)); } diff --git a/course/lib.php b/course/lib.php index 36e7bd0002796..6903e0d4b708d 100644 --- a/course/lib.php +++ b/course/lib.php @@ -3994,7 +3994,7 @@ function course_get_user_administration_options($course, $context) { $options->outcomes = !empty($CFG->enableoutcomes) && has_capability('moodle/course:update', $context); $options->badges = !empty($CFG->enablebadges); $options->import = has_capability('moodle/restore:restoretargetimport', $context); - $options->publish = has_capability('moodle/course:publish', $context); + $options->publish = !empty($CFG->enablecoursepublishing) && has_capability('moodle/course:publish', $context); $options->reset = has_capability('moodle/course:reset', $context); $options->roles = has_capability('moodle/role:switchroles', $context); } else { diff --git a/course/publish/backup.php b/course/publish/backup.php index c50951fa1ea0d..5194773ab8435 100644 --- a/course/publish/backup.php +++ b/course/publish/backup.php @@ -45,8 +45,9 @@ //some permissions and parameters checking $course = $DB->get_record('course', array('id'=>$id), '*', MUST_EXIST); require_login($course); -if (!has_capability('moodle/course:publish', context_course::instance($id)) - or !confirm_sesskey()) { + +$context = context_course::instance($courseid); +if (empty($CFG->enablecoursepublishing) || !has_capability('moodle/course:publish', $context) || !confirm_sesskey()) { throw new moodle_exception('nopermission'); } diff --git a/course/publish/index.php b/course/publish/index.php index 1ce7fee9cebf0..7bff4732681ff 100644 --- a/course/publish/index.php +++ b/course/publish/index.php @@ -39,7 +39,10 @@ $PAGE->set_title(get_string('publish', 'core_hub') . ': ' . $COURSE->fullname); $PAGE->set_heading($COURSE->fullname); -require_capability('moodle/course:publish', context_course::instance($courseid)); +$context = context_course::instance($courseid); +if (empty($CFG->enablecoursepublishing) || !has_capability('moodle/course:publish', $context)) { + throw new moodle_exception('nopermission'); +} // If the site is not registered display an error page. if (!\core\hub\registration::is_registered()) { diff --git a/course/publish/metadata.php b/course/publish/metadata.php index 21ffb34880376..dbe7ce2ff98fe 100644 --- a/course/publish/metadata.php +++ b/course/publish/metadata.php @@ -46,7 +46,10 @@ $PAGE->set_title(get_string('course') . ': ' . $course->fullname); $PAGE->set_heading($course->fullname); -require_capability('moodle/course:publish', context_course::instance($id)); +$context = context_course::instance($courseid); +if (empty($CFG->enablecoursepublishing) || !has_capability('moodle/course:publish', $context)) { + throw new moodle_exception('nopermission'); +} // Retrieve hub name and hub url. require_sesskey(); diff --git a/course/tests/courselib_test.php b/course/tests/courselib_test.php index d82830b53a59f..26197f01b8e0c 100644 --- a/course/tests/courselib_test.php +++ b/course/tests/courselib_test.php @@ -3193,7 +3193,7 @@ public function test_course_get_user_administration_options_for_managers() { $this->assertFalse($adminoptions->outcomes); $this->assertTrue($adminoptions->badges); $this->assertTrue($adminoptions->import); - $this->assertTrue($adminoptions->publish); + $this->assertFalse($adminoptions->publish); $this->assertTrue($adminoptions->reset); $this->assertTrue($adminoptions->roles); } diff --git a/lang/en/hub.php b/lang/en/hub.php index 92af304eecbce..e607eeed85325 100644 --- a/lang/en/hub.php +++ b/lang/en/hub.php @@ -75,6 +75,8 @@ $string['eduleveltertiary'] = 'Tertiary'; $string['emailalert'] = 'Email notifications'; $string['emailalert_help'] = 'If this is enabled the hub administrator will send you emails about security issues and other important news.'; +$string['enablecoursepublishing'] = "Course sharing on Moodle.net"; +$string['enablecoursepublishing_help'] = "Moodle.net is our community site for sharing courses and content with other Moodle users worldwide. A course may be shared for others to enrol in (requires email-based self-registration on the site and self enrolment in the course) or as a backup file for others to download."; $string['enrollable'] = 'Enrollable'; $string['errorbadimageheightwidth'] = 'The image should have a maximum size of {$a->width} X {$a->height}'; $string['errorcourseinfo'] = 'An error occurred when retrieving course metadata from {$a}. Please try again to retrieve the course metadata by reloading this page later. Otherwise you can decide to continue the registration process with the following default metadata. ';