Roles without moodle/course:view capability are now ignored in participant lists MDL-7943 MDL-8093

This commit is contained in:
moodler
2007-03-30 15:10:37 +00:00
parent ce9d5ce529
commit 8b33bf0124
+19 -9
View File
@@ -49,18 +49,31 @@
}
$rolenames = array();
$avoidroles = array();
if ($roles = get_roles_used_in_context($context, true)) {
// We should exclude "admin" users (those with "doanything" at site level) because
// We should ONLY allow roles with moodle/course:view because otherwise we get little niggly issues
// like MDL-8093
// We should further exclude "admin" users (those with "doanything" at site level) because
// Otherwise they appear in every participant list
$canviewroles = get_roles_with_capability('moodle/course:view', CAP_ALLOW, $context);
$doanythingroles = get_roles_with_capability('moodle/site:doanything', CAP_ALLOW, $sitecontext);
foreach ($roles as $role) {
if (isset($doanythingroles[$role->id])) { // Avoid this role (ie admin)
if (!isset($canviewroles[$role->id])) { // Avoid this role (eg course creator)
$avoidroles[] = $role->id;
unset($roles[$role->id]);
continue;
}
if (isset($doanythingroles[$role->id])) { // Avoid this role (ie admin)
$avoidroles[] = $role->id;
unset($roles[$role->id]);
continue;
}
}
foreach ($roles as $role) {
$rolenames[$role->id] = strip_tags(format_string($role->name)); // Used in menus etc later on
}
}
@@ -138,6 +151,7 @@
}
/// setting up tags
if ($course->id == SITEID) {
$filtertype = 'site';
@@ -327,14 +341,10 @@
$hiddensql = has_capability('moodle/role:viewhiddenassigns', $context)? '':' AND r.hidden = 0 ';
// excluse users with these admin role assignments
if ($doanythingroles) {
// exclude users with roles we are avoiding
if ($avoidroles) {
$adminroles = 'AND r.roleid NOT IN (';
foreach ($doanythingroles as $aroleid=>$role) {
$adminroles .= "$aroleid,";
}
$adminroles = rtrim($adminroles,",");
$adminroles .= implode(',', $avoidroles);
$adminroles .= ')';
} else {
$adminroles = '';