From 2d645be2a54f7512a84e2a4c92231db625bbcc2f Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Mon, 21 Dec 2015 17:05:50 +0800 Subject: [PATCH] MDL-50357 core_group: tidy up the function groups_delete_group_members --- group/lib.php | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/group/lib.php b/group/lib.php index 27ee1c3c48d..8853d428b57 100644 --- a/group/lib.php +++ b/group/lib.php @@ -571,22 +571,22 @@ function groups_delete_grouping($groupingorid) { function groups_delete_group_members($courseid, $userid=0, $showfeedback=false) { global $DB, $OUTPUT; - if (is_bool($userid)) { - debugging('Incorrect userid function parameter'); - return false; + // Get the users in the course which are in a group. + $sql = "SELECT gm.id as gmid, gm.userid, g.* + FROM {groups_members} gm + INNER JOIN {groups} g + ON gm.groupid = g.id + WHERE g.courseid = :courseid"; + $params = array(); + $params['courseid'] = $courseid; + // Check if we want to delete a specific user. + if ($userid) { + $sql .= " AND gm.userid = :userid"; + $params['userid'] = $userid; } - - // Select * so that the function groups_remove_member() gets the whole record. - $groups = $DB->get_recordset('groups', array('courseid' => $courseid)); - foreach ($groups as $group) { - if ($userid) { - $userids = array($userid); - } else { - $userids = $DB->get_fieldset_select('groups_members', 'userid', 'groupid = :groupid', array('groupid' => $group->id)); - } - - foreach ($userids as $id) { - groups_remove_member($group, $id); + if ($groupmembers = $DB->get_records_sql($sql, $params)) { + foreach ($groupmembers as $group) { + groups_remove_member($group, $group->userid); } }