From 163fab1a967316bf95ba49cc20b7c122b57f307d Mon Sep 17 00:00:00 2001 From: nfreear Date: Wed, 17 Jan 2007 16:13:21 +0000 Subject: [PATCH] Fixes Bug MDL-8200, "Group admin interface shows all groups sitewide!" --- group/db/upgrade.php | 7 ++++--- group/lib/groupinglib.php | 25 ++++++++++++++++++------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/group/db/upgrade.php b/group/db/upgrade.php index 45e3b60fcb..f1508ffb9d 100644 --- a/group/db/upgrade.php +++ b/group/db/upgrade.php @@ -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 diff --git a/group/lib/groupinglib.php b/group/lib/groupinglib.php index e089222ebb..a386404223 100644 --- a/group/lib/groupinglib.php +++ b/group/lib/groupinglib.php @@ -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; } -- 2.39.5