Fixes bug MDL-8234, "New groups code & AS keyword"

This commit is contained in:
nfreear 2007-01-23 19:08:22 +00:00
parent 150b5fb0e0
commit e5902150b5
4 changed files with 44 additions and 32 deletions

View File

@ -99,13 +99,13 @@ function groups_db_get_groups_for_user($userid, $courseid) {
$groupids = false;
} else {
global $CFG;
$sql = "SELECT g.id, userid
FROM {$CFG->prefix}groups_members AS gm
INNER JOIN {$CFG->prefix}groups AS g
$sql = "SELECT g.id, gm.userid
FROM {$CFG->prefix}groups_members gm
INNER JOIN {$CFG->prefix}groups g
ON gm.groupid = g.id
INNER JOIN {$CFG->prefix}groups_courses_groups AS cg
INNER JOIN {$CFG->prefix}groups_courses_groups cg
ON g.id = cg.groupid
WHERE cg.courseid = $courseid AND gm.userid=$userid";
WHERE cg.courseid = '$courseid' AND gm.userid = '$userid'";
$groups = get_records_sql($sql);
$groupids = groups_groups_to_groupids($groups);
@ -152,10 +152,10 @@ function groups_db_get_group_settings($groupid, $courseid=false, $alldata=false)
function groups_db_users_in_common_group($userid1, $userid2) {
global $CFG;
$havecommongroup = false;
$sql = "SELECT gm1.groupid, 1 FROM {$CFG->prefix}groups_members AS gm1 " .
"INNER JOIN {$CFG->prefix}groups_members AS gm2 " .
"ON gm1.groupid =gm2.groupid" .
"WHERE gm1.userid = $userid1 AND gm2.userid = $userid2";
$sql = "SELECT gm1.groupid, 1 FROM {$CFG->prefix}groups_membersgm1 " .
"INNER JOIN {$CFG->prefix}groups_members gm2 " .
"ON gm1.groupid = gm2.groupid" .
"WHERE gm1.userid = '$userid1' AND gm2.userid = '$userid2'";
$commongroups = get_record_sql($sql);
if ($commongroups) {
$havecommongroup = true;
@ -188,6 +188,29 @@ function groups_db_group_exists($groupid) {
}
/**
* Determine if a course ID, group name and description match a group in the database.
* For backup/restorelib.php
* @return mixed A group-like object with $group->id, or false.
*/
function groups_db_group_matches($courseid, $grp_name, $grp_description) {
//$gro_db->id; $gro_db = get_record("groups","courseid",$restore->course_id,"name",$gro->name,"description",$gro->description);
global $CFG;
$sql = "SELECT g.id, g.name, g.description
FROM {$CFG->prefix}groups g
INNER JOIN {$CFG->prefix}groups_courses_groups cg ON g.id = cg.groupid
WHERE g.name = '$grp_name'
AND g.description = '$grp_description'
AND cg.courseid = '$courseid'";
$records = get_records_sql($sql);
$group = false;
if ($records) {
$group = $records[0];
}
return $group;
}
/**
* Determines if a specified user is a member of a specified group
* @param int $groupid The group about which the request has been made

View File

@ -214,10 +214,10 @@ function groups_db_grouping_exists($groupingid) {
} else {
global $CFG;
$sql = "SELECT gm.id
FROM {$CFG->prefix}groups_groupings_groups AS gg
INNER JOIN {$CFG->prefix}groups_members AS gm
FROM {$CFG->prefix}groups_groupings_groups gg
INNER JOIN {$CFG->prefix}groups_members gm
ON gg.groupid = gm.groupid
WHERE gm.userid = $userid AND gg.groupingid = $groupingid";
WHERE gm.userid = '$userid' AND gg.groupingid = '$groupingid'";
$belongstogroup = record_exists_sql($sql);
}
return $belongstogroup;

View File

@ -196,28 +196,17 @@ function groups_group_exists($groupid) {
return groups_db_group_exists($groupid);
}
/**
* Determine if a course ID, group name and description match a group in the database.
* For backup/restorelib.php
* @return mixed A group-like object with $group->id, or false.
*/
function groups_group_matches($courseid, $grp_name, $grp_description) {
//$gro_db->id; $gro_db = get_record("groups","courseid",$restore->course_id,"name",$gro->name,"description",$gro->description);
global $CFG;
$sql = "SELECT g.id, g.name, g.description
FROM {$CFG->prefix}groups AS g
INNER JOIN {$CFG->prefix}groups_courses_groups AS cg ON g.id = cg.groupid
WHERE g.name = '$grp_name'
AND g.description = '$grp_description'
AND cg.courseid = '$courseid'";
$records = get_records_sql($sql);
$group = false;
if ($records) {
$group = $records[0];
}
return $group;
return groups_db_group_matches($courseid, $grp_name, $grp_description);
}
/**
* Determines if a specified user is a member of a specified group
* @param int $groupid The group about which the request has been made

View File

@ -36,8 +36,8 @@ function groups_get_grouping_records($courseid) {
return false;
}
$sql = "SELECT gg.*
FROM {$CFG->prefix}groups_groupings AS gg
INNER JOIN {$CFG->prefix}groups_courses_groupings AS cg ON gg.id = cg.groupingid
FROM {$CFG->prefix}groups_groupings gg
INNER JOIN {$CFG->prefix}groups_courses_groupings cg ON gg.id = cg.groupingid
WHERE cg.courseid = '$courseid'";
$groupings = get_records_sql($sql);
return $groupings;
@ -130,11 +130,11 @@ function groups_get_groups_not_in_any_grouping($courseid) {
$join = '';
$where= '';
if ($courseid) {
$join = "INNER JOIN {$CFG->prefix}groups_courses_groups AS cg ON g.id = cg.groupid";
$join = "INNER JOIN {$CFG->prefix}groups_courses_groups cg ON g.id = cg.groupid";
$where= "AND cg.courseid = '$courseid'";
}
$sql = "SELECT g.id
FROM {$CFG->prefix}groups AS g
FROM {$CFG->prefix}groups g
$join
WHERE g.id NOT IN
(SELECT groupid FROM {$CFG->prefix}groups_groupings_groups)
@ -280,8 +280,8 @@ function groups_grouping_exists($groupingid) {
function groups_grouping_matches($courseid, $gg_name, $gg_description) {
global $CFG;
$sql = "SELECT gg.id, gg.name, gg.description
FROM {$CFG->prefix}groups_groupings AS gg
INNER JOIN {$CFG->prefix}groups_courses_groupings AS cg ON gg.id = cg.groupingid
FROM {$CFG->prefix}groups_groupings gg
INNER JOIN {$CFG->prefix}groups_courses_groupings cg ON gg.id = cg.groupingid
WHERE gg.name = '$gg_name'
AND gg.description = '$gg_description'
AND cg.courseid = '$courseid'";