From 110351a2a68ac8c490a727d68ebd2cbfcee595f4 Mon Sep 17 00:00:00 2001 From: toyomoyo Date: Wed, 28 Mar 2007 07:50:35 +0000 Subject: [PATCH] fix for MDL-7764, site role definitions not passed down --- lib/accesslib.php | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/accesslib.php b/lib/accesslib.php index 0c9807e6b09..0018a3e6722 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -143,16 +143,24 @@ function load_defaultuser_role() { "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 + + // fix for MDL-7764 + // if user has guest set as logged in role in 1.7, his course:view at site level will + // get wiped. + + // 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 ($capability->capability == 'moodle/legacy:guest' || + $capability->capability == 'moodle/course:view') { + if ($USER->username != 'guest') { + continue; + } + } + $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 - } has_capability('clearcache'); }