/** * Deletes the link between the specified user and group. * * @param mixed $grouporid The group id or group object * @param mixed $userorid The user id or user object * @return bool True if deletion was successful, false otherwise */ function groups_remove_member($grouporid, $userorid) { global $DB; if (is_object($userorid)) { $userid = $userorid->id; } else { $userid = $userorid; } if (is_object($grouporid)) { $groupid = $grouporid->id; $group = $grouporid; } else { $groupid = $grouporid; $group = $DB->get_record('groups', array('id' => $groupid), '*', MUST_EXIST); } if (!groups_is_member($groupid, $userid)) { return true; } $DB->delete_records('groups_members', array('groupid' => $groupid, 'userid' => $userid)); // Update group info. $time = time(); $DB->set_field('groups', 'timemodified', $time, array('id' => $groupid)); $group->timemodified = $time; // Trigger group event. $params = array('context' => context_course::instance($group->courseid), 'objectid' => $groupid, 'relateduserid' => $userid); $event = \core\event\group_member_removed::create($params); $event->add_record_snapshot('groups', $group); $event->trigger(); return true; }
/** * Group member removed * * @param \core\event\group_member_removed $event * @return void */ public static function group_member_removed(\core\event\group_member_removed $event) { global $DB; $group = $event->get_record_snapshot('groups', $event->objectid); $user = \core_user::get_user($event->relateduserid, '*', MUST_EXIST); $courseids = local_metagroups_parent_courses($group->courseid); foreach ($courseids as $courseid) { $course = get_course($courseid); if ($metagroup = $DB->get_record('groups', array('courseid' => $course->id, 'idnumber' => $group->id))) { groups_remove_member($metagroup, $user); } } }