/** Add a new member to the group */ public function add_member($uid) { // Set display group $member = new GroupMember($this->mybb, $this->db, $this->cache); if ($member->initialize($uid)) { $user = $member->get_info(); // If they are a pm of their old group, they won't be now! $this->demote_member($uid); // If they are in a group currently, remove it from additional leave_usergroup($user['uid'], $user['displaygroup']); // add new to additional groups join_usergroup($user['uid'], $this->info['gid']); $updatearray = array('displaygroup' => $this->info['gid'], 'group_dateline' => time()); $member->update_member($updatearray); $member->update_rank($this->info['defaultrank']); } }
error($lang->no_requests); } $lang->join_requests = $lang->sprintf($lang->join_requests_title, htmlspecialchars_uni($usergroup['title'])); $plugins->run_hooks("managegroup_joinrequests_end"); eval("\$joinrequests = \"" . $templates->get("managegroup_joinrequests") . "\";"); output_page($joinrequests); } elseif ($mybb->input['action'] == "do_manageusers" && $mybb->request_method == "post") { // Verify incoming POST request verify_post_check($mybb->get_input('my_post_key')); if ($groupleader['canmanagemembers'] == 0) { error_no_permission(); } $plugins->run_hooks("managegroup_do_manageusers_start"); if (is_array($mybb->get_input('removeuser', MyBB::INPUT_ARRAY))) { foreach ($mybb->get_input('removeuser', MyBB::INPUT_ARRAY) as $uid) { leave_usergroup($uid, $gid); } } else { error($lang->no_users_selected); } $plugins->run_hooks("managegroup_do_manageusers_end"); redirect("managegroup.php?gid={$gid}", $lang->users_removed); } else { $plugins->run_hooks("managegroup_start"); $lang->members_of = $lang->sprintf($lang->members_of, htmlspecialchars_uni($usergroup['title'])); $lang->add_member = $lang->sprintf($lang->add_member, htmlspecialchars_uni($usergroup['title'])); $lang->invite_member = $lang->sprintf($lang->invite_member, htmlspecialchars_uni($usergroup['title'])); $joinrequests = ''; if ($usergroup['type'] == 5) { $usergrouptype = $lang->group_public_invite; } elseif ($usergroup['type'] == 4) {
} $db->update_query("users", $updated_users, "usergroup='{$usergroup['gid']}'"); $updated_users = array("displaygroup" => "usergroup"); $plugins->run_hooks("admin_user_groups_delete_commit"); $db->update_query("users", $updated_users, "displaygroup='{$usergroup['gid']}'", "", true); // No quotes = displaygroup=usergroup switch ($db->type) { case "pgsql": case "sqlite": $query = $db->simple_select("users", "uid", "','||additionalgroups||',' LIKE '%,{$usergroup['gid']},%'"); break; default: $query = $db->simple_select("users", "uid", "CONCAT(',',additionalgroups,',') LIKE '%,{$usergroup['gid']},%'"); } while ($user = $db->fetch_array($query)) { leave_usergroup($user['uid'], $usergroup['gid']); } $db->update_query("banned", array("gid" => 7), "gid='{$usergroup['gid']}'"); $db->update_query("banned", array("oldgroup" => 2), "oldgroup='{$usergroup['gid']}'"); $db->update_query("banned", array("olddisplaygroup" => "oldgroup"), "olddisplaygroup='{$usergroup['gid']}'", "", true); // No quotes = displaygroup=usergroup $db->delete_query("forumpermissions", "gid='{$usergroup['gid']}'"); $db->delete_query("calendarpermissions", "gid='{$usergroup['gid']}'"); $db->delete_query("joinrequests", "gid='{$usergroup['gid']}'"); $db->delete_query("moderators", "id='{$usergroup['gid']}' AND isgroup='1'"); $db->delete_query("groupleaders", "gid='{$usergroup['gid']}'"); $db->delete_query("usergroups", "gid='{$usergroup['gid']}'"); $plugins->run_hooks("admin_user_groups_delete_commit_end"); $cache->update_groupleaders(); $cache->update_moderators(); $cache->update_usergroups();
} // Leaving a group if ($mybb->get_input('leavegroup', MyBB::INPUT_INT)) { // Verify incoming POST request verify_post_check($mybb->input['my_post_key']); if (my_strpos($ingroups, "," . $mybb->get_input('leavegroup', MyBB::INPUT_INT) . ",") === false) { error($lang->not_member_of_group); } if ($mybb->user['usergroup'] == $mybb->get_input('leavegroup', MyBB::INPUT_INT)) { error($lang->cannot_leave_primary_group); } $usergroup = $usergroups[$mybb->get_input('leavegroup', MyBB::INPUT_INT)]; if ($usergroup['type'] != 4 && $usergroup['type'] != 3 && $usergroup['type'] != 5) { error($lang->cannot_leave_group); } leave_usergroup($mybb->user['uid'], $mybb->get_input('leavegroup', MyBB::INPUT_INT)); $plugins->run_hooks("usercp_usergroups_leave_group"); redirect("usercp.php?action=usergroups", $lang->left_group); exit; } $groupleaders = array(); // List of usergroup leaders $query = $db->query("\n\t\tSELECT g.*, u.username, u.displaygroup, u.usergroup, u.email, u.language\n\t\tFROM " . TABLE_PREFIX . "groupleaders g\n\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON (u.uid=g.uid)\n\t\tORDER BY u.username ASC\n\t"); while ($leader = $db->fetch_array($query)) { $groupleaders[$leader['gid']][$leader['uid']] = $leader; } // Joining a group if ($mybb->get_input('joingroup', MyBB::INPUT_INT)) { // Verify incoming POST request verify_post_check($mybb->get_input('my_post_key')); $usergroup = $usergroups[$mybb->get_input('joingroup', MyBB::INPUT_INT)];
// Leaving a group if ($mybb->input['leavegroup']) { // Verify incoming POST request verify_post_check($mybb->input['my_post_key']); if (my_strpos($ingroups, "," . $mybb->input['leavegroup'] . ",") === false) { error($lang->not_member_of_group); } if ($mybb->user['usergroup'] == $mybb->input['leavegroup']) { error($lang->cannot_leave_primary_group); } $query = $db->simple_select("usergroups", "*", "gid='" . intval($mybb->input['leavegroup']) . "'"); $usergroup = $db->fetch_array($query); if ($usergroup['type'] != 4 && $usergroup['type'] != 3) { error($lang->cannot_leave_group); } leave_usergroup($mybb->user['uid'], $mybb->input['leavegroup']); $plugins->run_hooks("usercp_usergroups_leave_group"); redirect("usercp.php?action=usergroups", $lang->left_group); exit; } // Joining a group if ($mybb->input['joingroup']) { // Verify incoming POST request verify_post_check($mybb->input['my_post_key']); $mybb->input['joingroup'] = intval($mybb->input['joingroup']); $query = $db->simple_select("usergroups", "*", "gid='" . intval($mybb->input['joingroup']) . "'"); $usergroup = $db->fetch_array($query); if ($usergroup['type'] != 4 && $usergroup['type'] != 3 || !$usergroup['gid']) { error($lang->cannot_join_group); } if (my_strpos($ingroups, "," . intval($mybb->input['joingroup']) . ",") !== false) {
error($lang->no_requests); } $lang->join_requests = $lang->sprintf($lang->join_requests_title, htmlspecialchars_uni($usergroup['title'])); $plugins->run_hooks("managegroup_joinrequests_end"); eval("\$joinrequests = \"" . $templates->get("managegroup_joinrequests") . "\";"); output_page($joinrequests); } elseif ($mybb->input['action'] == "do_manageusers" && $mybb->request_method == "post") { // Verify incoming POST request verify_post_check($mybb->input['my_post_key']); if ($groupleader['canmanagemembers'] == 0) { error_no_permission(); } $plugins->run_hooks("managegroup_do_manageusers_start"); if (is_array($mybb->input['removeuser'])) { foreach ($mybb->input['removeuser'] as $uid) { leave_usergroup($uid, $mybb->input['gid']); } } $plugins->run_hooks("managegroup_do_manageusers_end"); redirect("usercp.php?action=usergroups", $lang->users_removed); } else { $plugins->run_hooks("managegroup_start"); $lang->members_of = $lang->sprintf($lang->members_of, $usergroup['title']); $lang->add_member = $lang->sprintf($lang->add_member, $usergroup['title']); if ($usergroup['type'] == 4) { $query = $db->simple_select("joinrequests", "COUNT(*) AS req", "gid='" . $mybb->input['gid'] . "'"); $numrequests = $db->fetch_array($query); if ($numrequests['req']) { $lang->num_requests_pending = $lang->sprintf($lang->num_requests_pending, $numrequests['req']); eval("\$joinrequests = \"" . $templates->get("managegroup_requestnote") . "\";"); }