From 31a9987770dc1033b521823a83db2d384c6cd683 Mon Sep 17 00:00:00 2001 From: tjhunt Date: Wed, 24 Jun 2009 09:17:56 +0000 Subject: [PATCH] install: MDL-19610 encapsulate empty($CFG->rolesactive) checks in a during_initial_install() function. --- admin/index.php | 7 ++++--- admin/settings/users.php | 6 +++--- lib/accesslib.php | 6 +++--- lib/adminlib.php | 6 +++--- lib/pagelib.php | 2 +- lib/setuplib.php | 15 +++++++++++++++ lib/weblib.php | 6 +++--- mnet/environment.php | 2 +- 8 files changed, 33 insertions(+), 17 deletions(-) diff --git a/admin/index.php b/admin/index.php index 3719835f0f..e833f1842b 100644 --- a/admin/index.php +++ b/admin/index.php @@ -244,9 +244,10 @@ if ($release <> $CFG->release) { // Update the release version // upgrade all plugins and other parts upgrade_noncore(true); -// indicate that this site is fully configured except the admin password -if (empty($CFG->rolesactive)) { - set_config('rolesactive', 1); +// If this is the first install, indicate that this site is fully configured +// except the admin password +if (during_initial_install()) { + set_config('rolesactive', 1); // after this, during_initial_install will return false. set_config('adminsetuppending', 1); // we neeed this redirect to setup proper session upgrade_finished("index.php?sessionstarted=1&lang=$CFG->lang"); diff --git a/admin/settings/users.php b/admin/settings/users.php index 9d61028e83..080be841d8 100644 --- a/admin/settings/users.php +++ b/admin/settings/users.php @@ -82,7 +82,7 @@ if ($hassiteconfig // "userpolicies" settingpage $temp = new admin_settingpage('userpolicies', get_string('userpolicies', 'admin')); if ($ADMIN->fulltree) { - if (!empty($CFG->rolesactive)) { + if (!during_initial_install()) { $context = get_context_instance(CONTEXT_SYSTEM); if (!$guestrole = get_guest_role()) { $guestrole->id = 0; @@ -138,7 +138,7 @@ if ($hassiteconfig $temp->add(new admin_setting_configcheckbox('nodefaultuserrolelists', get_string('nodefaultuserrolelists', 'admin'), get_string('confignodefaultuserrolelists', 'admin'), 0)); - if (!empty($CFG->rolesactive)) { + if (!during_initial_install()) { $temp->add(new admin_setting_configselect('defaultcourseroleid', get_string('defaultcourseroleid', 'admin'), get_string('configdefaultcourseroleid', 'admin'), $studentrole->id, $allroles)); $temp->add(new admin_setting_configselect('creatornewroleid', get_string('creatornewroleid', 'admin'), @@ -147,7 +147,7 @@ if ($hassiteconfig $temp->add(new admin_setting_configcheckbox('autologinguests', get_string('autologinguests', 'admin'), get_string('configautologinguests', 'admin'), 0)); - if (!empty($CFG->rolesactive)) { + if (!during_initial_install()) { $temp->add(new admin_setting_configmultiselect('nonmetacoursesyncroleids', get_string('nonmetacoursesyncroleids', 'admin'), get_string('confignonmetacoursesyncroleids', 'admin'), array(), $allroles)); } diff --git a/lib/accesslib.php b/lib/accesslib.php index b55a65cd1b..761e5adbef 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -453,7 +453,7 @@ function get_guest_role() { function has_capability($capability, $context, $userid=NULL, $doanything=true) { global $USER, $CFG, $DB, $SCRIPT, $ACCESSLIB_PRIVATE; - if (empty($CFG->rolesactive)) { + if (during_initial_install()) { if ($SCRIPT === "/$CFG->admin/index.php" or $SCRIPT === "/$CFG->admin/cliupgrade.php") { // we are in an installer - roles can not work yet return true; @@ -1768,7 +1768,7 @@ function load_all_capabilities() { global $USER, $CFG, $ACCESSLIB_PRIVATE; // roles not installed yet - we are in the middle of installation - if (empty($CFG->rolesactive)) { + if (during_initial_install()) { return; } @@ -6207,7 +6207,7 @@ function get_dirty_contexts($time) { function mark_context_dirty($path) { global $CFG, $ACCESSLIB_PRIVATE; - if (empty($CFG->rolesactive)) { + if (during_initial_install()) { return; } diff --git a/lib/adminlib.php b/lib/adminlib.php index 66715c581d..09ccc5b740 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -1260,7 +1260,7 @@ abstract class admin_setting { // log change $log = new object(); - $log->userid = empty($CFG->rolesactive) ? 0 :$USER->id; // 0 as user id during install + $log->userid = during_initial_install() ? 0 :$USER->id; // 0 as user id during install $log->timemodified = time(); $log->plugin = $this->plugin; $log->name = $name; @@ -3713,7 +3713,7 @@ class admin_setting_pickroles extends admin_setting_configmulticheckbox { */ public function load_choices() { global $CFG, $DB; - if (empty($CFG->rolesactive)) { + if (during_initial_install()) { return false; } if (is_array($this->choices)) { @@ -3738,7 +3738,7 @@ class admin_setting_pickroles extends admin_setting_configmulticheckbox { public function get_defaultsetting() { global $CFG; - if (empty($CFG->rolesactive)) { + if (during_initial_install()) { return null; } $result = array(); diff --git a/lib/pagelib.php b/lib/pagelib.php index b1518da268..13d128d2d9 100644 --- a/lib/pagelib.php +++ b/lib/pagelib.php @@ -608,7 +608,7 @@ class moodle_page { protected function starting_output() { global $SITE, $CFG; - if (empty($CFG->rolesactive)) { + if (during_initial_install()) { $this->_course = new stdClass; $this->_course->id = 1; moodle_setlocale(); diff --git a/lib/setuplib.php b/lib/setuplib.php index eb8e893529..66cc0f40c1 100644 --- a/lib/setuplib.php +++ b/lib/setuplib.php @@ -352,6 +352,21 @@ function init_performance_info() { } } +/** + * Indicates whether we are in the middle of the initial Moodle install. + * + * Very occasionally it is necessary avoid running certain bits of code before the + * Moodle installation has completed. The installed flag is set in admin/index.php + * after Moodle core and all the plugins have been installed, but just before + * the person doing the initial install is asked to choose the admin password. + * + * @return boolean true if the initial install is not complete. + */ +function during_initial_install() { + global $CFG; + return empty($CFG->rolesactive); +} + /** * Function to raise the memory limit to a new value. * Will respect the memory limit if it is higher, thus allowing diff --git a/lib/weblib.php b/lib/weblib.php index d0074b7bf2..79139a9e1a 100644 --- a/lib/weblib.php +++ b/lib/weblib.php @@ -3688,13 +3688,13 @@ function build_navigation($extranavlinks, $cm = null) { // Work out whether we should be showing the activity (e.g. Forums) link. // Note: build_navigation() is called from many places -- // install & upgrade for example -- where we cannot count on the - // roles infrastructure to be defined. Hence the $CFG->rolesactive check. + // roles infrastructure to be defined. Hence the during_initial_install() check. if (!isset($CFG->hideactivitytypenavlink)) { $CFG->hideactivitytypenavlink = 0; } if ($CFG->hideactivitytypenavlink == 2) { $hideactivitylink = true; - } else if ($CFG->hideactivitytypenavlink == 1 && $CFG->rolesactive && + } else if ($CFG->hideactivitytypenavlink == 1 && !during_initial_install() && !empty($COURSE->id) && $COURSE->id != SITEID) { if (!isset($COURSE->context)) { $COURSE->context = get_context_instance(CONTEXT_COURSE, $COURSE->id); @@ -6931,7 +6931,7 @@ function convert_tabrows_to_tree($tabrows, $selected, $inactive, $activated) { function page_doc_link($text='', $iconpath='') { global $CFG, $PAGE; - if (empty($CFG->docroot) || empty($CFG->rolesactive)) { + if (empty($CFG->docroot) || during_initial_install()) { return ''; } if (!has_capability('moodle/site:doclinks', $PAGE->context)) { diff --git a/mnet/environment.php b/mnet/environment.php index a4792717ae..2af14ed2c3 100644 --- a/mnet/environment.php +++ b/mnet/environment.php @@ -64,7 +64,7 @@ class mnet_environment { // We don't generate keys on install/upgrade because we want the USER // record to have an email address, city and country already. - if (empty($CFG->rolesactive)) return true; + if (during_initial_install()) return true; if ($CFG->mnet_dispatcher_mode == 'off') return true; if (!extension_loaded("openssl")) return true; if (!empty($this->keypair)) return true; -- 2.39.5