// 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");
// "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;
$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'),
$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));
}
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;
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;
}
function mark_context_dirty($path) {
global $CFG, $ACCESSLIB_PRIVATE;
- if (empty($CFG->rolesactive)) {
+ if (during_initial_install()) {
return;
}
// 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;
*/
public function load_choices() {
global $CFG, $DB;
- if (empty($CFG->rolesactive)) {
+ if (during_initial_install()) {
return false;
}
if (is_array($this->choices)) {
public function get_defaultsetting() {
global $CFG;
- if (empty($CFG->rolesactive)) {
+ if (during_initial_install()) {
return null;
}
$result = array();
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();
}
}
+/**
+ * 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
// 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);
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)) {
// 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;