This commit is contained in:
moodler 2006-08-09 14:16:13 +00:00
parent 2ad25548c6
commit 41811960a1

View file

@ -105,9 +105,6 @@ function has_capability($capability, $contextid, $kill=false, $userid=NULL) {
$capabilities = $USER->capabilities; $capabilities = $USER->capabilities;
} }
//echo ("capablity is ".$capability);
//print_object($contextid);
$context = get_record('context','id',$contextid); $context = get_record('context','id',$contextid);
// Check site // Check site
@ -354,7 +351,7 @@ function load_user_capability($capability='', $contextid ='', $userid='') {
$siteinstance = get_context_instance(CONTEXT_SYSTEM, SITEID); $siteinstance = get_context_instance(CONTEXT_SYSTEM, SITEID);
$SQL = " SELECT rc.capability, c1.id, (c1.level * 100) AS level, $SQL = " SELECT rc.capability, c1.id, (c1.level * 100) AS aggregatelevel,
SUM(rc.permission) AS sum SUM(rc.permission) AS sum
FROM FROM
{$CFG->prefix}role_assignments AS ra {$CFG->prefix}role_assignments AS ra
@ -366,12 +363,12 @@ function load_user_capability($capability='', $contextid ='', $userid='') {
rc.contextid=$siteinstance->id rc.contextid=$siteinstance->id
$capsearch $capsearch
GROUP BY GROUP BY
rc.capability,level,c1.id rc.capability,aggregatelevel,c1.id
HAVING HAVING
sum != 0 SUM(rc.permission) != 0
UNION UNION
SELECT rc.capability, c1.id, (c1.level * 100 + c2.level) AS level, SELECT rc.capability, c1.id, (c1.level * 100 + c2.level) AS aggregatelevel,
SUM(rc.permission) AS sum SUM(rc.permission) AS sum
FROM FROM
{$CFG->prefix}role_assignments AS ra {$CFG->prefix}role_assignments AS ra
@ -385,14 +382,13 @@ function load_user_capability($capability='', $contextid ='', $userid='') {
$capsearch $capsearch
GROUP BY GROUP BY
rc.capability, level, c1.id rc.capability, aggregatelevel, c1.id
HAVING HAVING
sum != 0 SUM(rc.permission) != 0
ORDER BY ORDER BY
level ASC aggregatelevel ASC
"; ";
// echo "$SQL"; // debug
$capabilities = array(); // Reinitialize. $capabilities = array(); // Reinitialize.
$rs = get_recordset_sql($SQL); $rs = get_recordset_sql($SQL);
@ -411,31 +407,31 @@ function load_user_capability($capability='', $contextid ='', $userid='') {
} }
/* so up to this point we should have somethign like this /* so up to this point we should have somethign like this
* $capabilities[1] ->level = 1000 * $capabilities[1] ->aggregatelevel = 1000
->module = SITEID ->module = SITEID
->capability = do_anything ->capability = do_anything
->id = 1 (id is the context id) ->id = 1 (id is the context id)
->sum = 0 ->sum = 0
* $capabilities[2] ->level = 1000 * $capabilities[2] ->aggregatelevel = 1000
->module = SITEID ->module = SITEID
->capability = post_messages ->capability = post_messages
->id = 1 ->id = 1
->sum = -9000 ->sum = -9000
* $capabilittes[3] ->level = 3000 * $capabilittes[3] ->aggregatelevel = 3000
->module = course ->module = course
->capability = view_course_activities ->capability = view_course_activities
->id = 25 ->id = 25
->sum = 1 ->sum = 1
* $capabilittes[4] ->level = 3000 * $capabilittes[4] ->aggregatelevel = 3000
->module = course ->module = course
->capability = view_course_activities ->capability = view_course_activities
->id = 26 ->id = 26
->sum = 0 (this is another course) ->sum = 0 (this is another course)
* $capabilities[5] ->level = 3050 * $capabilities[5] ->aggregatelevel = 3050
->module = course ->module = course
->capability = view_course_activities ->capability = view_course_activities
->id = 25 (override in course 25) ->id = 25 (override in course 25)
@ -459,7 +455,7 @@ function load_user_capability($capability='', $contextid ='', $userid='') {
$usercap = array(); // for other user's capabilities $usercap = array(); // for other user's capabilities
foreach ($capabilities as $capability) { foreach ($capabilities as $capability) {
if ($otheruserid) { // we are pulling out other user's capabilities, do not write to session if (!empty($otheruserid)) { // we are pulling out other user's capabilities, do not write to session
if (capability_prohibits($capability->capability, $capability->id, $capability->sum, $usercap)) { if (capability_prohibits($capability->capability, $capability->id, $capability->sum, $usercap)) {
$usercap[$capability->id][$capability->capability] = -9000; $usercap[$capability->id][$capability->capability] = -9000;
@ -489,7 +485,7 @@ function load_user_capability($capability='', $contextid ='', $userid='') {
// now we don't care about the huge array anymore, we can dispose it. // now we don't care about the huge array anymore, we can dispose it.
unset($capabilities); unset($capabilities);
if ($otheruseid) { if (!empty($otheruseid)) {
return $usercap; // return the array return $usercap; // return the array
} }
// see array in session to see what it looks like // see array in session to see what it looks like
@ -550,7 +546,7 @@ function capability_prohibits($capability, $contextid, $sum='', $array='') {
case CONTEXT_COURSECAT: case CONTEXT_COURSECAT:
// Coursecat -> coursecat or site. // Coursecat -> coursecat or site.
$coursecat = get_record('course_categories','id',$context->instanceid); $coursecat = get_record('course_categories','id',$context->instanceid);
if ($coursecat->parent) { if (!empty($coursecat->parent)) {
// return parent value if exist. // return parent value if exist.
$parent = get_context_instance(CONTEXT_COURSECAT, $coursecat->parent); $parent = get_context_instance(CONTEXT_COURSECAT, $coursecat->parent);
} else { } else {