Example #1
0
/**
 * 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);
         }
     }
 }