MDL-57411 groups: Fix tests for MSSQL

This commit is contained in:
Juan Leyva 2017-04-05 10:10:58 +02:00
parent 0a34838725
commit 8c60d198c2
2 changed files with 15 additions and 7 deletions

View file

@ -426,7 +426,10 @@ function groups_has_membership($cm, $userid=null) {
function groups_get_members($groupid, $fields='u.*', $sort='lastname ASC') {
global $DB;
return groups_get_groups_members([$groupid], $fields, $sort);
return $DB->get_records_sql("SELECT $fields
FROM {user} u, {groups_members} gm
WHERE u.id = gm.userid AND gm.groupid = ?
ORDER BY $sort", array($groupid));
}
@ -1134,21 +1137,24 @@ function groups_user_groups_visible($course, $userid, $cm = null) {
/**
* Returns the users in the specified groups.
*
* This function does not return complete user objects by default. It returns the user_picture basic fields.
*
* @param array $groupsids The list of groups ids to check
* @param int $fields The fields to return
* @param array $extrafields extra fields to be included in result
* @param int $sort optional sorting of returned users
* @return array|bool Returns an array of the users for the specified group or false if no users or an error returned.
* @since Moodle 3.3
*/
function groups_get_groups_members($groupsids, $fields='u.*', $sort='lastname ASC') {
function groups_get_groups_members($groupsids, $extrafields=null, $sort='lastname ASC') {
global $DB;
$userfields = user_picture::fields('u', $extrafields);
list($insql, $params) = $DB->get_in_or_equal($groupsids);
return $DB->get_records_sql("SELECT $fields
return $DB->get_records_sql("SELECT $userfields
FROM {user} u, {groups_members} gm
WHERE u.id = gm.userid AND gm.groupid $insql
GROUP BY u.id
GROUP BY $userfields
ORDER BY $sort", $params);
}

View file

@ -1421,10 +1421,12 @@ class core_grouplib_testcase extends advanced_testcase {
$this->assertTrue($generator->create_group_member(array('groupid' => $group2->id, 'userid' => $user1->id)));
$this->assertTrue($generator->create_group_member(array('groupid' => $group2->id, 'userid' => $user2->id)));
// Test get_groups_members.
$members = groups_get_groups_members([$group1->id, $group2->id], 'u.*', 'id ASC');
// Test get_groups_members (with extra field and ordering).
$members = groups_get_groups_members([$group1->id, $group2->id], ['lastaccess'], 'u.id ASC');
$this->assertCount(2, $members);
$this->assertEquals([$user1->id, $user2->id], array_keys($members));
$this->assertTrue(isset($members[$user1->id]->lastaccess));
$this->assertTrue(isset($members[$user2->id]->lastaccess));
// Group with just one.
$members = groups_get_groups_members([$group1->id]);