]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-7513 Further tweak to the way defaultuser role works to unbreak one possible...
authorsam_marshall <sam_marshall>
Wed, 15 Nov 2006 14:23:43 +0000 (14:23 +0000)
committersam_marshall <sam_marshall>
Wed, 15 Nov 2006 14:23:43 +0000 (14:23 +0000)
lib/accesslib.php

index cae0f38135fd673ff3d27bdfb2bacea777615c09..5a519ad7ea4e7fb2d0e9eb2fd9856dbf41757185 100755 (executable)
@@ -129,15 +129,26 @@ function load_defaultuser_role() {
 
     if ($capabilities = get_records_select('role_capabilities',
                                      "roleid = $CFG->defaultuserroleid AND contextid = $sitecontext->id AND permission <> 0")) {
+        // Find out if this default role is a guest role, for the hack below                                        
+        $defaultisguestrole=false;
         foreach ($capabilities as $capability) {
+            if($capability->capability=='moodle/legacy:guest') {
+                $defaultisguestrole=true;
+            }
+        }                                        
+        foreach ($capabilities as $capability) {
+            // 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)
+            if($defaultisguestrole && $USER->username!='guest' &&
+                ($capability->capability=='moodle/legacy:guest' || 
+                    $capability->capability=='moodle/course:view')) {
+                continue;
+            }
+            
             // 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')) {
+            if (!isset($USER->capabilities[$sitecontext->id][$capability->capability])) {
                 $USER->capabilities[$sitecontext->id][$capability->capability] = $capability->permission;
             }
         }