Permalink
Browse files

MDL-31127 init USER->access when switching roles

Only admins were affected by this problem because has_capability() does not init USER->access for them.
  • Loading branch information...
skodak committed Jan 14, 2012
1 parent f70f6e9 commit a5a993abc28d38d035fe6e042d230fd6f407a84a
Showing with 6 additions and 7 deletions.
  1. +6 −7 lib/accesslib.php
View
@@ -1002,6 +1002,7 @@ function get_empty_accessdata() {
$accessdata['rdef_lcc'] = 0; // rdef_count during the last compression
$accessdata['loaded'] = array(); // loaded course contexts
$accessdata['time'] = time();
+ $accessdata['rsw'] = array();
return $accessdata;
}
@@ -1149,7 +1150,7 @@ function reload_all_capabilities() {
// copy switchroles
$sw = array();
- if (isset($USER->access['rsw'])) {
+ if (!empty($USER->access['rsw'])) {
$sw = $USER->access['rsw'];
}
@@ -3941,16 +3942,14 @@ function role_switch($roleid, context $context) {
//
// Note: it is not possible to switch to roles that do not have course:view
- // Add the switch RA
- if (!isset($USER->access['rsw'])) {
- $USER->access['rsw'] = array();
+ if (!isset($USER->access)) {
+ load_all_capabilities();
}
+
+ // Add the switch RA
if ($roleid == 0) {
unset($USER->access['rsw'][$context->path]);
- if (empty($USER->access['rsw'])) {
- unset($USER->access['rsw']);
- }
return true;
}

0 comments on commit a5a993a

Please sign in to comment.