MDL-24245 groups now respected if capability not specified in enrolment sql - thanks Sam for discovering this + fixed typos in variable names that were causing other bugs

This commit is contained in:
Petr Skoda
2010-09-17 07:37:51 +00:00
parent 07f05a04b1
commit fafa57e972
+13 -10
View File
@@ -2976,14 +2976,12 @@ function get_enrolled_sql($context, $withcapability = '', $groupid = 0, $onlyact
// make lists of roles that are needed and prohibited
$needed = array(); // one of these is enough
$prohibited = array(); // must not have any of these
if ($withcapability) {
foreach ($access as $roleid => $perm) {
if ($perm == CAP_PROHIBIT) {
unset($needed[$roleid]);
$prohibited[$roleid] = true;
} else if ($perm == CAP_ALLOW and empty($prohibited[$roleid])) {
$needed[$roleid] = true;
}
foreach ($access as $roleid => $perm) {
if ($perm == CAP_PROHIBIT) {
unset($needed[$roleid]);
$prohibited[$roleid] = true;
} else if ($perm == CAP_ALLOW and empty($prohibited[$roleid])) {
$needed[$roleid] = true;
}
}
@@ -2995,7 +2993,7 @@ function get_enrolled_sql($context, $withcapability = '', $groupid = 0, $onlyact
if ($isfrontpage) {
if (!empty($prohibited[$defaultuserroleid]) or !empty($prohibited[$defaultfrontpageroleid])) {
$nobody = true;
} else if (!empty($neded[$defaultuserroleid]) or !empty($neded[$defaultfrontpageroleid])) {
} else if (!empty($needed[$defaultuserroleid]) or !empty($needed[$defaultfrontpageroleid])) {
// everybody not having prohibit has the capability
$needed = array();
} else if (empty($needed)) {
@@ -3004,7 +3002,7 @@ function get_enrolled_sql($context, $withcapability = '', $groupid = 0, $onlyact
} else {
if (!empty($prohibited[$defaultuserroleid])) {
$nobody = true;
} else if (!empty($neded[$defaultuserroleid])) {
} else if (!empty($needed[$defaultuserroleid])) {
// everybody not having prohibit has the capability
$needed = array();
} else if (empty($needed)) {
@@ -3037,6 +3035,11 @@ function get_enrolled_sql($context, $withcapability = '', $groupid = 0, $onlyact
}
}
} else {
if ($groupid) {
$joins[] = "JOIN {groups_members} {$prefix}gm ON ({$prefix}gm.userid = {$prefix}u.id AND {$prefix}gm.groupid = :{$prefix}gmid)";
$params["{$prefix}gmid"] = $groupid;
}
}
$wheres[] = "{$prefix}u.deleted = 0 AND {$prefix}u.id <> :{$prefix}guestid";