set_config('creatornewroleid', 0);
}
}
+ if (!$guestroles = get_roles_with_capability('moodle/legacy:guest', CAP_ALLOW)) {
+ $guestroles = array();
+ }
// we must not use assignable roles here:
// 1/ unsetting roles as assignable for admin might bork the settings!
// 2/ default user role should not be assignable anyway
$allroles = array();
+ $nonguestroles = array();
if ($roles = get_all_roles()) {
foreach ($roles as $role) {
- $allroles[$role->id] = strip_tags(format_string($role->name, true));
+ $rolename = strip_tags(format_string($role->name, true));
+ $allroles[$role->id] = $rolename;
+ if (!isset($guestroles[$role->id])) {
+ $nonguestroles[$role->id] = $rolename;
+ }
}
}
$temp->add(new admin_setting_configselect('guestroleid', get_string('guestroleid', 'admin'),
get_string('configguestroleid', 'admin'), $guestrole->id, $allroles));
$temp->add(new admin_setting_configselect('defaultuserroleid', get_string('defaultuserroleid', 'admin'),
- get_string('configdefaultuserroleid', 'admin'), $userrole->id, $allroles));
+ get_string('configdefaultuserroleid', 'admin'), $userrole->id, $nonguestroles)); // guest role here breaks a lot of stuff
}
$temp->add(new admin_setting_configcheckbox('nodefaultuserrolelists', get_string('nodefaultuserrolelists', 'admin'), get_string('confignodefaultuserrolelists', 'admin'), 0));
upgrade_main_savepoint($result, 2008050700);
}
+ if ($result && $oldversion < 2008051200) {
+ // if guest role used as default user role unset it and force admin to choose new setting
+ if (!empty($CFG->defaultuserroleid)) {
+ if ($role = get_record('role', 'id', $CFG->defaultuserroleid)) {
+ if ($guestroles = get_roles_with_capability('moodle/legacy:guest', CAP_ALLOW)) {
+ if (isset($guestroles[$role->id])) {
+ set_config('defaultuserroleid', null);
+ notify('Guest role removed from "Default role for all users" setting, please select another role.', 'notifysuccess');
+ }
+ }
+ } else {
+ set_config('defaultuserroleid', null);
+ }
+ }
+ }
+
return $result;
}
// This is compared against the values stored in the database to determine
// whether upgrades should be performed (see lib/db/*.php)
- $version = 2008050700; // YYYYMMDD = date of the last version bump
+ $version = 2008051200; // YYYYMMDD = date of the last version bump
// XX = daily increments
$release = '2.0 dev (Build: 20080512)'; // Human-friendly version name