コード例 #1
0
ファイル: lib.php プロジェクト: rushi963/moodle
/**
 * Adds a specified user to a group
 *
 * @param mixed $grouporid  The group id or group object
 * @param mixed $userorid   The user id or user object
 * @param string $component Optional component name e.g. 'enrol_imsenterprise'
 * @param int $itemid Optional itemid associated with component
 * @return bool True if user added successfully or the user is already a
 * member of the group, false otherwise.
 */
function groups_add_member($grouporid, $userorid, $component = null, $itemid = 0)
{
    global $DB;
    if (is_object($userorid)) {
        $userid = $userorid->id;
        $user = $userorid;
        if (!isset($user->deleted)) {
            $user = $DB->get_record('user', array('id' => $userid), '*', MUST_EXIST);
        }
    } else {
        $userid = $userorid;
        $user = $DB->get_record('user', array('id' => $userid), '*', MUST_EXIST);
    }
    if ($user->deleted) {
        return false;
    }
    if (is_object($grouporid)) {
        $groupid = $grouporid->id;
        $group = $grouporid;
    } else {
        $groupid = $grouporid;
        $group = $DB->get_record('groups', array('id' => $groupid), '*', MUST_EXIST);
    }
    // Check if the user a participant of the group course.
    $context = context_course::instance($group->courseid);
    if (!is_enrolled($context, $userid)) {
        return false;
    }
    if (groups_is_member($groupid, $userid)) {
        return true;
    }
    $member = new stdClass();
    $member->groupid = $groupid;
    $member->userid = $userid;
    $member->timeadded = time();
    $member->component = '';
    $member->itemid = 0;
    // Check the component exists if specified
    if (!empty($component)) {
        $dir = core_component::get_component_directory($component);
        if ($dir && is_dir($dir)) {
            // Component exists and can be used
            $member->component = $component;
            $member->itemid = $itemid;
        } else {
            throw new coding_exception('Invalid call to groups_add_member(). An invalid component was specified');
        }
    }
    if ($itemid !== 0 && empty($member->component)) {
        // An itemid can only be specified if a valid component was found
        throw new coding_exception('Invalid call to groups_add_member(). A component must be specified if an itemid is given');
    }
    $DB->insert_record('groups_members', $member);
    // Update group info, and group object.
    $DB->set_field('groups', 'timemodified', $member->timeadded, array('id' => $groupid));
    $group->timemodified = $member->timeadded;
    // Trigger group event.
    $params = array('context' => $context, 'objectid' => $groupid, 'relateduserid' => $userid, 'other' => array('component' => $member->component, 'itemid' => $member->itemid));
    $event = \core\event\group_member_added::create($params);
    $event->add_record_snapshot('groups', $group);
    $event->trigger();
    return true;
}
コード例 #2
0
 /**
  * Group member added
  *
  * @param \core\event\group_member_added $event
  * @return void
  */
 public static function group_member_added(\core\event\group_member_added $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_add_member($metagroup, $user, 'local_metagroups', $group->id);
         }
     }
 }