From: toyomoyo Date: Thu, 21 Sep 2006 03:21:33 +0000 (+0000) Subject: fix for MDL-6571, added get_roles_on_exact_context() for backup X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=e38f38c326c373e112f9ffac4851236ee135f07b;p=moodle.git fix for MDL-6571, added get_roles_on_exact_context() for backup --- diff --git a/lib/accesslib.php b/lib/accesslib.php index e7c825a38d..e2ad705f70 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -556,6 +556,10 @@ function load_user_capability($capability='', $context ='', $userid='') { $capsearch =""; } +/// Set up SQL fragments for timestart, timeend etc + $now = time(); + $timesql = "AND ((ra.timestart = 0 || ra.timestart < $now) && (ra.timeend = 0 || ra.timeend > $now))"; + /// Then we use 1 giant SQL to bring out all relevant capabilities. /// The first part gets the capabilities of orginal role. /// The second part gets the capabilities of overriden roles. @@ -575,6 +579,7 @@ function load_user_capability($capability='', $context ='', $userid='') { $searchcontexts1 rc.contextid=$siteinstance->id $capsearch + $timesql GROUP BY rc.capability, (c1.aggregatelevel * 100), c1.id HAVING @@ -597,6 +602,7 @@ function load_user_capability($capability='', $context ='', $userid='') { $searchcontexts2 rc.contextid != $siteinstance->id $capsearch + $timesql GROUP BY rc.capability, (c1.aggregatelevel * 100 + c2.aggregatelevel), c1.id @@ -2608,4 +2614,21 @@ function get_user_capability_course($capability, $userid='') { } } return $usercourses; +} + + +/** This function finds the roles assigned directly to this context only + * i.e. no parents role + * @param object $context + * @return array + */ +function get_roles_on_exact_context($context) { + + global $CFG; + return get_records_sql("SELECT DISTINCT r.* + FROM {$CFG->prefix}role_assignments ra, + {$CFG->prefix}role r + WHERE ra.roleid = r.id + AND ra.contextid = $context->id"); + } \ No newline at end of file