]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-13921 Incorrect access given to members of group included in 2 groupings; merged...
authorskodak <skodak>
Tue, 18 Mar 2008 16:38:25 +0000 (16:38 +0000)
committerskodak <skodak>
Tue, 18 Mar 2008 16:38:25 +0000 (16:38 +0000)
lib/grouplib.php

index fa75173ac90198ca8f64056aa4ade1796fe3dee8..99773ff187cdf216154d6ccdb0f4f355478baf07 100644 (file)
@@ -147,17 +147,18 @@ function groups_get_user_groups($courseid, $userid=0) {
         $userid = $USER->id;
     }
 
-    if (!$groups = get_records_sql("SELECT g.id, gg.groupingid
-                                      FROM {$CFG->prefix}groups g
-                                           JOIN {$CFG->prefix}groups_members gm        ON gm.groupid = g.id
-                                           LEFT JOIN {$CFG->prefix}groupings_groups gg ON gg.groupid = g.id
-                                     WHERE gm.userid = $userid AND g.courseid = $courseid")) {
+    if (!$rs = get_recordset_sql("SELECT g.id, gg.groupingid
+                                    FROM {$CFG->prefix}groups g
+                                         JOIN {$CFG->prefix}groups_members gm        ON gm.groupid = g.id
+                                         LEFT JOIN {$CFG->prefix}groupings_groups gg ON gg.groupid = g.id
+                                   WHERE gm.userid = $userid AND g.courseid = $courseid")) {
         return array('0' => array());
     }
 
-    $result = array('0' => array_keys($groups)); // all groups
-
-    foreach ($groups as $group) {
+    $result    = array();
+    $allgroups = array();
+    
+    while ($group = rs_fetch_next_record($rs)) {
         if (is_null($group->groupingid)) {
             continue;
         }
@@ -165,7 +166,11 @@ function groups_get_user_groups($courseid, $userid=0) {
             $result[$group->groupingid] = array();
         }
         $result[$group->groupingid][$group->id] = $group->id;
+        $allgroups[$group->id] = $group->id;
     }
+    rs_close($rs);
+
+    $result['0'] = array_keys($allgroups); // all groups
 
     return $result;
 }