MDL-7513 - made it so a hack for Guest role only applies to that role and doesn't remove the course:view capability from other roles at site level when specifically assigned

This commit is contained in:
sam_marshall
2006-11-15 13:36:57 +00:00
parent 1492a48f3c
commit 39dee8f200
+8 -8
View File
@@ -130,17 +130,17 @@ function load_defaultuser_role() {
if ($capabilities = get_records_select('role_capabilities',
"roleid = $CFG->defaultuserroleid AND contextid = $sitecontext->id AND permission <> 0")) {
foreach ($capabilities as $capability) {
if (!isset($USER->capabilities[$sitecontext->id][$capability->capability])) { // Don't overwrite
// Don't overwrite capabilities from real role...
if (!isset($USER->capabilities[$sitecontext->id][$capability->capability])
// ...and if the default role is a guest role, then don't copy legacy:guest,
// otherwise this user could get confused with a REAL guest. Also don't copy
// course:view, which is a hack that's necessary because guest roles are
// not really handled properly (see MDL-7513)
&& (($capability->capability!='moodle/legacy:guest'
&& $capability->capability!='moodle/course:view') || $USER->username=='guest')) {
$USER->capabilities[$sitecontext->id][$capability->capability] = $capability->permission;
}
}
// SPECIAL EXCEPTION: If the default user role is actually a guest role, then
// remove some capabilities so this user doesn't get confused with a REAL guest
if (isset($USER->capabilities[$sitecontext->id]['moodle/legacy:guest']) and $USER->username != 'guest') {
unset($USER->capabilities[$sitecontext->id]['moodle/legacy:guest']);
unset($USER->capabilities[$sitecontext->id]['moodle/course:view']); // No access to courses by default
}
}
return true;