/** * Generates the HTML to view the users groups and available group actions * * @param int $userid * @param array $groups * @param array $allgroups * @param bool $canmanagegroups * @param moodle_url $pageurl * @return string */ public function user_groups_and_actions($userid, $groups, $allgroups, $canmanagegroups, $pageurl) { $iconenrolremove = $this->output->pix_url('t/delete'); $groupicon = $this->output->pix_icon('i/group', get_string('addgroup', 'group')); $groupoutput = ''; foreach ($groups as $groupid => $name) { if ($canmanagegroups and groups_remove_member_allowed($groupid, $userid)) { $icon = html_writer::empty_tag('img', array('alt' => get_string('removefromgroup', 'group', $name), 'src' => $iconenrolremove)); $url = new moodle_url($pageurl, array('action' => 'removemember', 'group' => $groupid, 'user' => $userid)); $groupoutput .= html_writer::tag('div', $name . html_writer::link($url, $icon), array('class' => 'group', 'rel' => $groupid)); } else { $groupoutput .= html_writer::tag('div', $name, array('class' => 'group', 'rel' => $groupid)); } } $output = ''; if ($canmanagegroups && count($groups) < count($allgroups)) { $url = new moodle_url($pageurl, array('action' => 'addmember', 'user' => $userid)); $output .= html_writer::tag('div', html_writer::link($url, $groupicon), array('class' => 'addgroup')); } $output = $output . html_writer::tag('div', $groupoutput, array('class' => 'groups')); return $output; }
/** * Removes a user from a group * * @global moodle_database $DB * @param StdClass $user * @param int $groupid * @return bool */ public function remove_user_from_group($user, $groupid) { global $DB; require_capability('moodle/course:managegroups', $this->context); $group = $this->get_group($groupid); if (!groups_remove_member_allowed($group, $user)) { return false; } if (!$group) { return false; } return groups_remove_member($group, $user); }
/** * Delete group members * * @param array $members of arrays with keys userid, groupid * @since Moodle 2.2 */ public static function delete_group_members($members) { global $CFG, $DB; require_once "{$CFG->dirroot}/group/lib.php"; $params = self::validate_parameters(self::delete_group_members_parameters(), array('members' => $members)); $transaction = $DB->start_delegated_transaction(); foreach ($params['members'] as $member) { // validate params $groupid = $member['groupid']; $userid = $member['userid']; $group = groups_get_group($groupid, 'id, courseid', MUST_EXIST); $user = $DB->get_record('user', array('id' => $userid, 'deleted' => 0, 'mnethostid' => $CFG->mnet_localhost_id), '*', MUST_EXIST); // now security checks $context = context_course::instance($group->courseid, IGNORE_MISSING); try { self::validate_context($context); } catch (Exception $e) { $exceptionparam = new stdClass(); $exceptionparam->message = $e->getMessage(); $exceptionparam->courseid = $group->courseid; throw new moodle_exception('errorcoursecontextnotvalid', 'webservice', '', $exceptionparam); } require_capability('moodle/course:managegroups', $context); if (!groups_remove_member_allowed($group, $user)) { throw new moodle_exception('errorremovenotpermitted', 'group', '', fullname($user)); } groups_remove_member($group, $user); } $transaction->allow_commit(); }
$userstoadd = $potentialmembersselector->get_selected_users(); if (!empty($userstoadd)) { foreach ($userstoadd as $user) { if (!groups_add_member($groupid, $user->id)) { print_error('erroraddremoveuser', 'group', $returnurl); } $groupmembersselector->invalidate_selected_users(); $potentialmembersselector->invalidate_selected_users(); } } } if (optional_param('remove', false, PARAM_BOOL) && confirm_sesskey()) { $userstoremove = $groupmembersselector->get_selected_users(); if (!empty($userstoremove)) { foreach ($userstoremove as $user) { if (!groups_remove_member_allowed($groupid, $user->id)) { print_error('errorremovenotpermitted', 'group', $returnurl, $user->fullname); } if (!groups_remove_member($groupid, $user->id)) { print_error('erroraddremoveuser', 'group', $returnurl); } $groupmembersselector->invalidate_selected_users(); $potentialmembersselector->invalidate_selected_users(); } } } // Print the page and form $strgroups = get_string('groups'); $strparticipants = get_string('participants'); $stradduserstogroup = get_string('adduserstogroup', 'group'); $strusergroupmembership = get_string('usergroupmembership', 'group');