Fixes Bug MDL-8200, "Group admin interface shows all groups sitewide!"

This commit is contained in:
nfreear 2007-01-17 16:13:21 +00:00
parent 456f5e6e43
commit 163fab1a96
2 changed files with 24 additions and 12 deletions

View 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;
}
?>
?>

View 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);
*/
$sql = "SELECT g.id
FROM {$CFG->prefix}groups AS g
/*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)
$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;
}