]> git.mjollnir.org Git - moodle.git/commitdiff
Fixes Bug MDL-8200, "Group admin interface shows all groups sitewide!"
authornfreear <nfreear>
Wed, 17 Jan 2007 16:13:21 +0000 (16:13 +0000)
committernfreear <nfreear>
Wed, 17 Jan 2007 16:13:21 +0000 (16:13 +0000)
group/db/upgrade.php
group/lib/groupinglib.php

index 45e3b60fcbdc34a68cc971f166b1632e6ea1e04f..f1508ffb9db8a8eff5b260558c3933402eac0699 100644 (file)
@@ -167,14 +167,15 @@ function transfer_group_db() {
             ///unset($group->password);
             ///unset($group->courseid);
             $status = (bool)$newgroupid = groups_create_group($group->courseid, $group);
+            debugging('Create group status: '.$status); //TODO: ?
             if ($members_r) {
                 foreach ($members_r as $member) {
                     if ($member->groupid == $group->id) {
-                        $status = groups_add_member($newgroupid, $member->userid);
+                        $status = (bool)$memberid = groups_add_member($newgroupid, $member->userid);
                     }
                 }
             }
-            echo 'Status: '.$status;
+            debugging('Add member status: '.$status);
         }
         ///$status = drop_table($t_groups);
         ///$status = drop_table(new XMLDBTable('groups_members_temp'));
@@ -222,4 +223,4 @@ function xmldb_group_upgrade($oldversion=0) {
     return $result;
 }
 
-?>
+?>
\ No newline at end of file
index e089222ebb31be538154ce6e49ff635b054aab18..a386404223a325653f75aafa2e71439bfa9b0b81 100644 (file)
@@ -90,29 +90,40 @@ function groups_get_groups_not_in_grouping($groupingid, $courseid) {
 }
 
 /**
+ * Gets a list of the groups not in any grouping, but in this course.
  * TODO: move to dbgroupinglib.php
+ * @param $courseid If null or false, returns groupids 'not in a grouping sitewide'.
+ * @return array An array of group IDs.
  */
 function groups_get_groups_not_in_any_grouping($courseid) {
     global $CFG;
-/* SELECT g.id
-     FROM headmdl_groups AS g
-     WHERE g.id NOT IN 
-       (SELECT groupid FROM headmdl_groups_groupings_groups);
+/*Was: $sql = "SELECT g.id FROM {$CFG->prefix}groups AS g
+        WHERE g.id NOT IN 
+        (SELECT groupid FROM {$CFG->prefix}groups_groupings_groups)";
 */
+    $join = '';
+    $where= '';
+    if ($courseid) {
+        $join = "INNER JOIN {$CFG->prefix}groups_courses_groups AS cg ON g.id = cg.groupid";
+        $where= "AND cg.courseid = '$courseid'";
+    }
     $sql = "SELECT g.id
         FROM {$CFG->prefix}groups AS g
+        $join
         WHERE g.id NOT IN 
-        (SELECT groupid FROM {$CFG->prefix}groups_groupings_groups)";
+        (SELECT groupid FROM {$CFG->prefix}groups_groupings_groups)
+        $where";
 
     $records = get_records_sql($sql);
-    $groupids = array();
+    $groupids = groups_groups_to_groupids($records, $courseid);
+    /*$groupids = array();
     if ($records) {
         foreach ($records as $r) {
             $groupids[] = $r->id;
         }
     } else {
         return false;
-    }
+    }*/
     return $groupids;
 }