MDL-50357 core_group: tidy up the function groups_delete_group_members

This commit is contained in:
Mark Nelson
2015-12-21 17:41:18 +08:00
parent 747f4468fb
commit 2d645be2a5
+15 -15
View File
@@ -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);
}
}