| [ Index ] |
PHP Cross Reference of MyBB 1.8.41 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * MyBB 1.8 4 * Copyright 2014 MyBB Group, All Rights Reserved 5 * 6 * Website: http://www.mybb.com 7 * License: http://www.mybb.com/about/license 8 * 9 */ 10 11 define("IN_MYBB", 1); 12 define('THIS_SCRIPT', 'managegroup.php'); 13 14 $templatelist = "managegroup_leaders_bit,managegroup_leaders,postbit_pm,postbit_email,managegroup_user_checkbox,managegroup_user,managegroup_adduser,managegroup_removeusers,managegroup,managegroup_joinrequests_request,managegroup_joinrequests"; 15 $templatelist .= ",managegroup_requestnote,managegroup_no_users,multipage,multipage_end,multipage_jump_page,multipage_nextpage,multipage_page,multipage_page_current,multipage_page_link_current,multipage_prevpage,multipage_start"; 16 17 require_once "./global.php"; 18 19 // Load language files 20 $lang->load("managegroup"); 21 22 $gid = $mybb->get_input('gid', MyBB::INPUT_INT); 23 if(!isset($groupscache[$gid])) 24 { 25 error($lang->invalid_group); 26 } 27 $usergroup = $groupscache[$gid]; 28 $lang->nav_group_management = $lang->sprintf($lang->nav_group_management, htmlspecialchars_uni($usergroup['title'])); 29 add_breadcrumb($lang->nav_group_memberships, "usercp.php?action=usergroups"); 30 add_breadcrumb($lang->nav_group_management, "managegroup.php?gid=$gid"); 31 32 $mybb->input['action'] = $mybb->get_input('action'); 33 34 if($mybb->input['action'] == "joinrequests") 35 { 36 add_breadcrumb($lang->nav_join_requests); 37 } 38 39 // Check that this user is actually a leader of this group 40 $query = $db->simple_select("groupleaders", "*", "uid='{$mybb->user['uid']}' AND gid='{$gid}'"); 41 $groupleader = $db->fetch_array($query); 42 43 if(!$groupleader && $mybb->usergroup['cancp'] != 1) 44 { 45 error($lang->not_leader_of_this_group); 46 } 47 48 if($mybb->input['action'] == "do_add" && $mybb->request_method == "post") 49 { 50 // Verify incoming POST request 51 verify_post_check($mybb->get_input('my_post_key')); 52 53 if($groupleader['canmanagemembers'] == 0) 54 { 55 error_no_permission(); 56 } 57 58 $plugins->run_hooks("managegroup_do_add_start"); 59 60 $options = array( 61 'fields' => array('additionalgroups', 'usergroup') 62 ); 63 64 $user = get_user_by_username($mybb->get_input('username'), $options); 65 66 if($user) 67 { 68 $additionalgroups = explode(',', $user['additionalgroups']); 69 if($user['usergroup'] != $gid && !in_array($gid, $additionalgroups)) 70 { 71 join_usergroup($user['uid'], $gid); 72 $db->delete_query("joinrequests", "uid='{$user['uid']}' AND gid='{$gid}'"); 73 $plugins->run_hooks("managegroup_do_add_end"); 74 redirect("managegroup.php?gid=".$gid, $lang->user_added); 75 } 76 else 77 { 78 error($lang->error_alreadyingroup); 79 } 80 } 81 else 82 { 83 error($lang->error_invalidusername); 84 } 85 } 86 elseif($mybb->input['action'] == "do_invite" && $mybb->request_method == "post") 87 { 88 // Verify incoming POST request 89 verify_post_check($mybb->get_input('my_post_key')); 90 91 if($groupleader['caninvitemembers'] == 0) 92 { 93 error_no_permission(); 94 } 95 96 $plugins->run_hooks("managegroup_do_invite_start"); 97 98 $options = array( 99 'fields' => array('additionalgroups', 'usergroup', 'language') 100 ); 101 102 $user = get_user_by_username($mybb->get_input('inviteusername'), $options); 103 104 if($user) 105 { 106 $additionalgroups = explode(',', $user['additionalgroups']); 107 if($user['usergroup'] != $gid && !in_array($gid, $additionalgroups)) 108 { 109 $query = $db->simple_select("joinrequests", "rid", "uid = '".(int)$user['uid']."' AND gid = '".(int)$gid."'", array("limit" => 1)); 110 $pendinginvite = $db->fetch_array($query); 111 if($pendinginvite) 112 { 113 error($lang->error_alreadyinvited); 114 } 115 else 116 { 117 $usergroups_cache = $cache->read('usergroups'); 118 $usergroup = $usergroups_cache[$gid]; 119 120 $joinrequest = array( 121 "uid" => $user['uid'], 122 "gid" => $usergroup['gid'], 123 "dateline" => TIME_NOW, 124 "invite" => 1 125 ); 126 $db->insert_query("joinrequests", $joinrequest); 127 128 $lang_var = 'invite_pm_message'; 129 if($mybb->settings['deleteinvites'] != 0) 130 { 131 $lang_var .= '_expires'; 132 } 133 134 $pm = array( 135 'subject' => array('invite_pm_subject', $usergroup['title']), 136 'message' => array($lang_var, $usergroup['title'], $mybb->settings['bburl'], $mybb->settings['deleteinvites']), 137 'touid' => $user['uid'], 138 'language' => $user['language'], 139 'language_file' => 'managegroup' 140 ); 141 142 send_pm($pm, $mybb->user['uid'], true); 143 144 $plugins->run_hooks("managegroup_do_invite_end"); 145 146 redirect("managegroup.php?gid=".$gid, $lang->user_invited); 147 } 148 } 149 else 150 { 151 error($lang->error_alreadyingroup); 152 } 153 } 154 else 155 { 156 error($lang->error_invalidusername); 157 } 158 } 159 elseif($mybb->input['action'] == "do_joinrequests" && $mybb->request_method == "post") 160 { 161 // Verify incoming POST request 162 verify_post_check($mybb->get_input('my_post_key')); 163 164 if($groupleader['canmanagerequests'] == 0) 165 { 166 error_no_permission(); 167 } 168 if($usergroup['type'] != 4) 169 { 170 error_no_permission(); 171 } 172 173 $plugins->run_hooks("managegroup_do_joinrequests_start"); 174 175 $uidin = array(); 176 $requests = $mybb->get_input('request', MyBB::INPUT_ARRAY); 177 if(is_array($requests) && !empty($requests)) 178 { 179 $requested_uids = array(); 180 foreach($requests as $uid => $what) 181 { 182 $uid = (int)$uid; 183 if($uid > 0) 184 { 185 $requested_uids[$uid] = $uid; 186 } 187 } 188 189 $pending_uids = array(); 190 if(!empty($requested_uids)) 191 { 192 $query = $db->simple_select("joinrequests", "uid", "uid IN (".implode(',', $requested_uids).") AND gid='{$gid}' AND invite='0'"); 193 while($request = $db->fetch_array($query)) 194 { 195 $pending_uids[(int)$request['uid']] = true; 196 } 197 } 198 199 foreach($requests as $uid => $what) 200 { 201 $uid = (int)$uid; 202 if(!isset($pending_uids[$uid])) 203 { 204 continue; 205 } 206 if($what == "accept") 207 { 208 join_usergroup($uid, $gid); 209 $uidin[] = (int)$uid; 210 } 211 elseif($what == "decline") 212 { 213 $uidin[] = (int)$uid; 214 } 215 } 216 } 217 if(is_array($uidin) && !empty($uidin)) 218 { 219 $uids = implode(",", $uidin); 220 $db->delete_query("joinrequests", "uid IN ({$uids}) AND gid='{$gid}' AND invite='0'"); 221 } 222 223 $plugins->run_hooks("managegroup_do_joinrequests_end"); 224 225 redirect("managegroup.php?gid={$gid}", $lang->join_requests_moderated); 226 } 227 elseif($mybb->input['action'] == "joinrequests") 228 { 229 if($mybb->usergroup['cancp'] != 1 && ($groupleader['canmanagerequests'] == 0 || $usergroup['type'] != 4)) 230 { 231 error_no_permission(); 232 } 233 234 $users = $joinrequests = ''; 235 $plugins->run_hooks("managegroup_joinrequests_start"); 236 237 $query = $db->query(" 238 SELECT j.*, u.uid, u.username, u.postnum, u.regdate 239 FROM ".TABLE_PREFIX."joinrequests j 240 LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=j.uid) 241 WHERE j.gid='{$gid}' AND j.uid != 0 AND j.invite='0' 242 ORDER BY u.username ASC 243 "); 244 while($user = $db->fetch_array($query)) 245 { 246 $user['reason'] = htmlspecialchars_uni($user['reason']); 247 $altbg = alt_trow(); 248 $regdate = my_date($mybb->settings['dateformat'], $user['regdate']); 249 $user['username'] = htmlspecialchars_uni($user['username']); 250 $user['profilelink'] = build_profile_link($user['username'], $user['uid']); 251 eval("\$users .= \"".$templates->get("managegroup_joinrequests_request")."\";"); 252 } 253 if(!$users) 254 { 255 error($lang->no_requests); 256 } 257 $lang->join_requests = $lang->sprintf($lang->join_requests_title, htmlspecialchars_uni($usergroup['title'])); 258 259 $plugins->run_hooks("managegroup_joinrequests_end"); 260 261 eval("\$joinrequests = \"".$templates->get("managegroup_joinrequests")."\";"); 262 output_page($joinrequests); 263 } 264 elseif($mybb->input['action'] == "do_manageusers" && $mybb->request_method == "post") 265 { 266 // Verify incoming POST request 267 verify_post_check($mybb->get_input('my_post_key')); 268 269 if($groupleader['canmanagemembers'] == 0) 270 { 271 error_no_permission(); 272 } 273 274 $users = $mybb->get_input('removeuser', MyBB::INPUT_ARRAY); 275 276 $plugins->run_hooks("managegroup_do_manageusers_start"); 277 278 if(!empty($users)) 279 { 280 foreach($users as $uid) 281 { 282 leave_usergroup($uid, $gid); 283 } 284 } 285 else 286 { 287 error($lang->no_users_selected); 288 } 289 290 $plugins->run_hooks("managegroup_do_manageusers_end"); 291 292 redirect("managegroup.php?gid={$gid}", $lang->users_removed); 293 } 294 else 295 { 296 $plugins->run_hooks("managegroup_start"); 297 298 $lang->members_of = $lang->sprintf($lang->members_of, htmlspecialchars_uni($usergroup['title'])); 299 $lang->add_member = $lang->sprintf($lang->add_member, htmlspecialchars_uni($usergroup['title'])); 300 $lang->invite_member = $lang->sprintf($lang->invite_member, htmlspecialchars_uni($usergroup['title'])); 301 $joinrequests = ''; 302 if($usergroup['type'] == 5) 303 { 304 $usergrouptype = $lang->group_public_invite; 305 } 306 elseif($usergroup['type'] == 4) 307 { 308 $query = $db->simple_select("joinrequests", "COUNT(*) AS req", "gid='{$gid}' AND invite='0'"); 309 $numrequests = $db->fetch_array($query); 310 if($numrequests['req'] && ($mybb->usergroup['cancp'] == 1 || $groupleader['canmanagerequests'] == 1)) 311 { 312 $lang->num_requests_pending = $lang->sprintf($lang->num_requests_pending, $numrequests['req']); 313 eval("\$joinrequests = \"".$templates->get("managegroup_requestnote")."\";"); 314 } 315 $usergrouptype = $lang->group_public_moderated; 316 } 317 elseif($usergroup['type'] == 3) 318 { 319 $usergrouptype = $lang->group_public_not_moderated; 320 } 321 elseif($usergroup['type'] == 2) 322 { 323 $usergrouptype = $lang->group_private; 324 } 325 else 326 { 327 $usergrouptype = $lang->group_default; 328 } 329 330 $group_leaders = ''; 331 332 // Display group leaders (if there is any) 333 $query = $db->query(" 334 SELECT g.*, u.username, u.usergroup, u.displaygroup 335 FROM ".TABLE_PREFIX."groupleaders g 336 LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=g.uid) 337 WHERE g.gid = '{$gid}' 338 "); 339 340 $leaders_array = array(); 341 342 if($db->num_rows($query)) 343 { 344 $loop = 1; 345 $leaders = ''; 346 $leader_count = $db->num_rows($query); 347 while($leader = $db->fetch_array($query)) 348 { 349 $leader['username'] = htmlspecialchars_uni($leader['username']); 350 $leader_name = format_name($leader['username'], $leader['usergroup'], $leader['displaygroup']); 351 $leader_profile_link = build_profile_link($leader_name, $leader['uid']); 352 353 $leaders_array[] = $leader['uid']; 354 355 // Get commas... 356 if($loop != $leader_count) 357 { 358 $comma = $lang->comma; 359 } 360 else 361 { 362 $comma = ''; 363 } 364 365 ++$loop; 366 eval("\$leaders .= \"".$templates->get("managegroup_leaders_bit")."\";"); 367 } 368 369 eval("\$group_leaders = \"".$templates->get("managegroup_leaders")."\";"); 370 } 371 372 switch($db->type) 373 { 374 case "pgsql": 375 case "sqlite": 376 $query = $db->simple_select("users", "*", "','||additionalgroups||',' LIKE '%,{$gid},%' OR usergroup='{$gid}'", array('order_by' => 'username')); 377 break; 378 default: 379 $query = $db->simple_select("users", "*", "CONCAT(',',additionalgroups,',') LIKE '%,{$gid},%' OR usergroup='{$gid}'", array('order_by' => 'username')); 380 } 381 382 $numusers = $db->num_rows($query); 383 384 $perpage = (int)$mybb->settings['membersperpage']; 385 if($perpage < 1) 386 { 387 $perpage = 20; 388 } 389 390 $page = $mybb->get_input('page', MyBB::INPUT_INT); 391 if($page && $page > 0) 392 { 393 $start = ($page-1) * $perpage; 394 $pages = ceil($numusers / $perpage); 395 if($page > $pages) 396 { 397 $start = 0; 398 $page = 1; 399 } 400 } 401 else 402 { 403 $start = 0; 404 $page = 1; 405 } 406 $multipage = multipage($numusers, $perpage, $page, "managegroup.php?gid=".$gid); 407 408 switch($db->type) 409 { 410 case "pgsql": 411 case "sqlite": 412 $query = $db->simple_select("users", "*", "','||additionalgroups||',' LIKE '%,{$gid},%' OR usergroup='{$gid}'", array('order_by' => 'username', 'limit' => $perpage, 'limit_start' => $start)); 413 break; 414 default: 415 $query = $db->simple_select("users", "*", "CONCAT(',',additionalgroups,',') LIKE '%,{$gid},%' OR usergroup='{$gid}'", array('order_by' => 'username', 'limit' => $perpage, 'limit_start' => $start)); 416 } 417 418 $removeable_count = 0; 419 $users = ""; 420 while($user = $db->fetch_array($query)) 421 { 422 $altbg = alt_trow(); 423 $regdate = my_date('relative', $user['regdate']); 424 $post = $user; 425 $sendpm = $email = ''; 426 if($mybb->settings['enablepms'] == 1 && $post['receivepms'] != 0 && $mybb->usergroup['cansendpms'] == 1 && my_strpos(",".$post['ignorelist'].",", ",".$mybb->user['uid'].",") === false) 427 { 428 eval("\$sendpm = \"".$templates->get("postbit_pm")."\";"); 429 } 430 431 if($user['hideemail'] != 1) 432 { 433 eval("\$email = \"".$templates->get("postbit_email")."\";"); 434 } 435 else 436 { 437 $email = ''; 438 } 439 440 $user['username'] = htmlspecialchars_uni($user['username']); 441 $user['username'] = format_name($user['username'], $user['usergroup'], $user['displaygroup']); 442 $user['profilelink'] = build_profile_link($user['username'], $user['uid']); 443 if(in_array($user['uid'], $leaders_array)) 444 { 445 $leader = $lang->leader; 446 } 447 else 448 { 449 $leader = ''; 450 } 451 452 // Checkbox for user management - only if current user is allowed 453 $checkbox = $disabled = ''; 454 if($user['usergroup'] == $gid) 455 { 456 $disabled = 'disabled="disabled"'; 457 } 458 else 459 { 460 ++$removeable_count; 461 } 462 463 if($groupleader['canmanagemembers'] == 1) 464 { 465 eval("\$checkbox = \"".$templates->get("managegroup_user_checkbox")."\";"); 466 } 467 468 eval("\$users .= \"".$templates->get("managegroup_user")."\";"); 469 } 470 471 if(!$users) 472 { 473 eval("\$users = \"".$templates->get("managegroup_no_users")."\";"); 474 } 475 476 $add_user = $remove_users = $invite_user = ''; 477 478 if($groupleader['canmanagemembers'] == 1) 479 { 480 eval("\$add_user = \"".$templates->get("managegroup_adduser")."\";"); 481 if($removeable_count) 482 { 483 eval("\$remove_users = \"".$templates->get("managegroup_removeusers")."\";"); 484 } 485 } 486 487 if($usergroup['type'] == 5 && $groupleader['caninvitemembers'] == 1) 488 { 489 eval("\$invite_user = \"".$templates->get("managegroup_inviteuser")."\";"); 490 } 491 492 $plugins->run_hooks("managegroup_end"); 493 494 eval("\$manageusers = \"".$templates->get("managegroup")."\";"); 495 output_page($manageusers); 496 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| 2005 - 2021 © MyBB.de | Alle Rechte vorbehalten! | Sponsor: netcup | Cross-referenced by PHPXref |