]> git.mjollnir.org Git - moodle.git/commitdiff
Merged fix for MDL-8093 from 1.8
authormoodler <moodler>
Fri, 30 Mar 2007 16:01:44 +0000 (16:01 +0000)
committermoodler <moodler>
Fri, 30 Mar 2007 16:01:44 +0000 (16:01 +0000)
user/index.php

index 853a22a49df4459466208b625481047fe4cd3221..eaa014de3cb6a308ee08440ad4be27660057b5be 100644 (file)
     }
 
     $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($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;
             }
     }
 
 
+
 /// setting up tags
     if ($course->id == SITEID) {
         $filtertype = 'site';
     
     $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 = '';