| [ Index ] |
PHP Cross Reference of MyBB 1.6.5 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * MyBB 1.6 4 * Copyright 2010 MyBB Group, All Rights Reserved 5 * 6 * Website: http://mybb.com 7 * License: http://mybb.com/about/license 8 * 9 * $Id: groups.php 5648 2011-11-09 08:48:00Z Tomm $ 10 */ 11 12 // Array of usergroup permission fields and their default values. 13 $usergroup_permissions = array( 14 "isbannedgroup" => 0, 15 "canview" => 1, 16 "canviewthreads" => 1, 17 "canviewprofiles" => 1, 18 "candlattachments" => 1, 19 "canpostthreads" => 1, 20 "canpostreplys" => 1, 21 "canpostattachments" => 1, 22 "canratethreads" => 1, 23 "caneditposts" => 1, 24 "candeleteposts" => 1, 25 "candeletethreads" => 1, 26 "caneditattachments" => 1, 27 "canpostpolls" => 1, 28 "canvotepolls" => 1, 29 "canundovotes" => 0, 30 "canusepms" => 1, 31 "cansendpms" => 1, 32 "cantrackpms" => 1, 33 "candenypmreceipts" => 1, 34 "pmquota" => 100, 35 "maxpmrecipients" => 5, 36 "cansendemail" => 1, 37 "maxemails" => 4, 38 "canviewmemberlist" => 1, 39 "canviewcalendar" => 1, 40 "canaddevents" => 1, 41 "canbypasseventmod" => 0, 42 "canmoderateevents" => 0, 43 "canviewonline" => 1, 44 "canviewwolinvis" => 0, 45 "canviewonlineips" => 0, 46 "cancp" => 0, 47 "issupermod" => 0, 48 "cansearch" => 1, 49 "canusercp" => 1, 50 "canuploadavatars" => 1, 51 "canratemembers" => 1, 52 "canchangename" => 0, 53 "showforumteam" => 0, 54 "usereputationsystem" => 1, 55 "cangivereputations" => 1, 56 "reputationpower" => 1, 57 "maxreputationsday" => 5, 58 "maxreputationsperuser" => 5, 59 "maxreputationsperthread" => 5, 60 "candisplaygroup" => 0, 61 "attachquota" => 5000, 62 "cancustomtitle" => 0, 63 "canwarnusers" => 0, 64 "canreceivewarnings" => 1, 65 "maxwarningsday" => 0, 66 "canmodcp" => 0, 67 "showinbirthdaylist" => 0, 68 "canoverridepm" => 0, 69 "canusesig" => 0, 70 "canusesigxposts" => 0, 71 "signofollow" => 0 72 ); 73 74 // Disallow direct access to this file for security reasons 75 if(!defined("IN_MYBB")) 76 { 77 die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined."); 78 } 79 80 $page->add_breadcrumb_item($lang->user_groups, "index.php?module=user-groups"); 81 82 if($mybb->input['action'] == "add" || !$mybb->input['action']) 83 { 84 $sub_tabs['manage_groups'] = array( 85 'title' => $lang->manage_user_groups, 86 'link' => "index.php?module=user-groups", 87 'description' => $lang->manage_user_groups_desc 88 ); 89 $sub_tabs['add_group'] = array( 90 'title' => $lang->add_user_group, 91 'link' => "index.php?module=user-groups&action=add", 92 'description' => $lang->add_user_group_desc 93 ); 94 } 95 96 $plugins->run_hooks("admin_user_groups_begin"); 97 98 if($mybb->input['action'] == "export") 99 { 100 $plugins->run_hooks("admin_user_groups_export_start"); 101 102 // Log admin action 103 log_admin_action(); 104 105 $gidwhere = ""; 106 if($mybb->input['gid']) 107 { 108 $gidwhere = "gid='".intval($mybb->input['gid'])."'"; 109 } 110 $xml = "<?xml version=\"1.0\" encoding=\"{$lang->settings['charset']}\"?".">\n"; 111 $xml = "<usergroups version=\"{$mybb->version_code}\" exported=\"".TIME_NOW."\">\n"; 112 113 $query = $db->simple_select("usergroups", "*", $gidwhere, array('order_by' => 'gid', 'order_dir' => 'ASC')); 114 while($usergroup = $db->fetch_array($query)) 115 { 116 $xml .= "\t\t<usergroup>\n"; 117 foreach($usergroup as $key => $value) 118 { 119 $xml .= "\t\t\t<{$key}><![CDATA[{$value}]]></{$key}>\n"; 120 } 121 $xml .= "\t\t</usergroup>\n"; 122 } 123 124 $xml .= "</usergroups>"; 125 $mybb->settings['bbname'] = urlencode($mybb->settings['bbname']); 126 127 header("Content-disposition: filename=".$mybb->settings['bbname']."-usergroups.xml"); 128 header("Content-Length: ".my_strlen($xml)); 129 header("Content-type: unknown/unknown"); 130 header("Pragma: no-cache"); 131 header("Expires: 0"); 132 133 $plugins->run_hooks("admin_user_groups_export_end"); 134 135 echo $xml; 136 exit; 137 } 138 139 if($mybb->input['action'] == "approve_join_request") 140 { 141 $plugins->run_hooks("admin_user_groups_approve_join_request"); 142 143 $query = $db->simple_select("joinrequests", "*", "rid='".$mybb->input['rid']."'"); 144 $request = $db->fetch_array($query); 145 146 if(!$request['rid']) 147 { 148 flash_message($lang->error_invalid_join_request, 'error'); 149 admin_redirect("index.php?module=user-groups"); 150 } 151 152 // Add the user to the group 153 join_usergroup($request['uid'], $request['gid']); 154 155 // Delete the join request 156 $db->delete_query("joinrequests", "rid='{$request['rid']}'"); 157 158 flash_message($lang->success_join_request_approved, "success"); 159 admin_redirect("index.php?module=user-groups&action=join_requests&gid={$request['gid']}"); 160 } 161 162 if($mybb->input['action'] == "deny_join_request") 163 { 164 $plugins->run_hooks("admin_user_groups_deny_join_request"); 165 166 $query = $db->simple_select("joinrequests", "*", "rid='".$mybb->input['rid']."'"); 167 $request = $db->fetch_array($query); 168 169 if(!$request['rid']) 170 { 171 flash_message($lang->error_invalid_join_request, 'error'); 172 admin_redirect("index.php?module=user-groups"); 173 } 174 175 // Delete the join request 176 $db->delete_query("joinrequests", "rid='{$request['rid']}'"); 177 178 flash_message($lang->success_join_request_denied, "success"); 179 admin_redirect("index.php?module=user-groups&action=join_requests&gid={$request['gid']}"); 180 } 181 182 if($mybb->input['action'] == "join_requests") 183 { 184 $plugins->run_hooks("admin_user_groups_join_requests_start"); 185 186 $query = $db->simple_select("usergroups", "*", "gid='".intval($mybb->input['gid'])."'"); 187 $group = $db->fetch_array($query); 188 189 if(!$group['gid'] || $group['type'] != 4) 190 { 191 flash_message($lang->error_invalid_user_group, 'error'); 192 admin_redirect("index.php?module=user-groups"); 193 } 194 195 if($mybb->request_method == "post" && is_array($mybb->input['users'])) 196 { 197 $uid_in = implode(",", array_map('intval', $mybb->input['users'])); 198 199 if(isset($mybb->input['approve'])) 200 { 201 foreach($mybb->input['users'] as $uid) 202 { 203 $uid = intval($uid); 204 join_usergroup($uid, $group['gid']); 205 } 206 // Log admin action 207 log_admin_action("approve", $group['title'], $group['gid']); 208 $message = $lang->success_selected_requests_approved; 209 } 210 else 211 { 212 // Log admin action 213 log_admin_action("deny", $group['title'], $group['gid']); 214 $message = $lang->success_selected_requests_denied; 215 } 216 217 $plugins->run_hooks("admin_user_groups_join_requests_commit"); 218 219 // Go through and delete the join requests from the database 220 $db->delete_query("joinrequests", "uid IN ({$uid_in}) AND gid='{$group['gid']}'"); 221 222 flash_message($message, 'success'); 223 admin_redirect("index.php?module=user-groups&action=join_requests&gid={$group['gid']}"); 224 } 225 226 $page->add_breadcrumb_item($lang->join_requests_for." {$group['title']}"); 227 $page->output_header($lang->join_requests_for." {$group['title']}"); 228 229 $sub_tabs = array(); 230 $sub_tabs['join_requests'] = array( 231 'title' => $lang->group_join_requests, 232 'link' => "index.php?module=user-groups&action=join_requests&gid={$group['gid']}", 233 'description' => $lang->group_join_requests_desc 234 ); 235 236 $page->output_nav_tabs($sub_tabs, 'join_requests'); 237 238 $query = $db->simple_select("joinrequests", "COUNT(*) AS num_requests", "gid='{$group['gid']}'"); 239 $num_requests = $db->fetch_field($query, "num_requests"); 240 241 $per_page = 20; 242 243 if($mybb->input['page'] > 0) 244 { 245 $current_page = intval($mybb->input['page']); 246 $start = ($current_page-1)*$per_page; 247 $pages = $num_requests / $per_page; 248 $pages = ceil($pages); 249 if($current_page > $pages) 250 { 251 $start = 0; 252 $current_page = 1; 253 } 254 } 255 else 256 { 257 $start = 0; 258 $current_page = 1; 259 } 260 261 // Do we need to construct the pagination? 262 $pagination = ''; 263 if($num_requests > $per_page) 264 { 265 $pagination = draw_admin_pagination($page, $per_page, $num_requests, "index.php?module=user-groups&action=join_requests&gid={$group['gid']}"); 266 echo $pagination; 267 } 268 269 $form = new Form("index.php?module=user-groups&action=join_requests&gid={$group['gid']}", "post"); 270 $table = new Table; 271 $table->construct_header($form->generate_check_box("checkall", 1, "", array('class' => 'checkall')), array('width' => 1)); 272 $table->construct_header($lang->users); 273 $table->construct_header($lang->reason); 274 $table->construct_header($lang->date_requested, array("class" => 'align_center', "width" => 200)); 275 $table->construct_header($lang->controls, array("class" => "align_center", "colspan" => 2, "width" => 200)); 276 277 $query = $db->query(" 278 SELECT j.*, u.username 279 FROM ".TABLE_PREFIX."joinrequests j 280 INNER JOIN ".TABLE_PREFIX."users u ON (u.uid=j.uid) 281 WHERE j.gid='{$group['gid']}' 282 ORDER BY dateline ASC 283 LIMIT {$start}, {$per_page} 284 "); 285 while($request = $db->fetch_array($query)) 286 { 287 $table->construct_cell($form->generate_check_box("users[]", $request['uid'], "")); 288 $table->construct_cell("<strong>".build_profile_link($request['username'], $request['uid'], "_blank")."</strong>"); 289 $table->construct_cell(htmlspecialchars_uni($request['reason'])); 290 $table->construct_cell(my_date($mybb->settings['dateformat'].", ".$mybb->settings['timeformat'], $request['dateline']), array('class' => 'align_center')); 291 $table->construct_cell("<a href=\"index.php?module=user-groups&action=approve_join_request&rid={$request['rid']}\">{$lang->approve}</a>", array("class" => "align_center")); 292 $table->construct_cell("<a href=\"index.php?module=user-groups&action=deny_join_request&rid={$request['rid']}\">{$lang->deny}</a>", array("class" => "align_center")); 293 $table->construct_row(); 294 } 295 296 if($table->num_rows() == 0) 297 { 298 $table->construct_cell($lang->no_join_requests, array("colspan" => 6)); 299 $table->construct_row(); 300 } 301 302 $table->output($lang->join_requests_for." {$group['title']}"); 303 echo $pagination; 304 305 $buttons[] = $form->generate_submit_button($lang->approve_selected_requests, array('name' => 'approve')); 306 $buttons[] = $form->generate_submit_button($lang->deny_selected_requests, array('name' => 'deny')); 307 $form->output_submit_wrapper($buttons); 308 $form->end(); 309 310 $page->output_footer(); 311 } 312 if($mybb->input['action'] == "add_leader" && $mybb->request_method == "post") 313 { 314 $plugins->run_hooks("admin_user_groups_add_leader"); 315 316 $query = $db->simple_select("usergroups", "*", "gid='".intval($mybb->input['gid'])."'"); 317 $group = $db->fetch_array($query); 318 319 if(!$group['gid']) 320 { 321 flash_message($lang->error_invalid_user_group, 'error'); 322 admin_redirect("index.php?module=user-group"); 323 } 324 325 $query = $db->simple_select("users", "uid, username", "LOWER(username)='".$db->escape_string(my_strtolower($mybb->input['username']))."'"); 326 $user = $db->fetch_array($query); 327 if(!$user['uid']) 328 { 329 $errors[] = $lang->error_invalid_username; 330 } 331 else 332 { 333 // Is this user already a leader of this group? 334 $query = $db->simple_select("groupleaders", "uid", "uid='{$user['uid']}' AND gid='{$group['gid']}'"); 335 $existing_leader = $db->fetch_field($query, "uid"); 336 if($existing_leader) 337 { 338 $errors[] = $lang->error_already_leader; 339 } 340 } 341 342 // No errors, insert 343 if(!$errors) 344 { 345 $new_leader = array( 346 "gid" => $group['gid'], 347 "uid" => $user['uid'], 348 "canmanagemembers" => intval($mybb->input['canmanagemembers']), 349 "canmanagerequests" => intval($mybb->input['canmanagerequests']) 350 ); 351 352 $plugins->run_hooks("admin_user_groups_add_leader_commit"); 353 354 $db->insert_query("groupleaders", $new_leader); 355 356 $cache->update_groupleaders(); 357 358 // Log admin action 359 log_admin_action($user['uid'], $mybb->input['username'], $group['gid'], $group['title']); 360 361 flash_message("{$user['username']} ".$lang->success_user_made_leader, 'success'); 362 admin_redirect("index.php?module=user-groups&action=leaders&gid={$group['gid']}"); 363 } 364 else 365 { 366 // Errors, show leaders page 367 $mybb->input['action'] = "leaders"; 368 } 369 } 370 371 // Show a listing of group leaders 372 if($mybb->input['action'] == "leaders") 373 { 374 $plugins->run_hooks("admin_user_groups_leaders"); 375 376 $query = $db->simple_select("usergroups", "*", "gid='".intval($mybb->input['gid'])."'"); 377 $group = $db->fetch_array($query); 378 379 if(!$group['gid']) 380 { 381 flash_message($lang->error_invalid_user_group, 'error'); 382 admin_redirect("index.php?module=user-groups"); 383 } 384 385 $page->add_breadcrumb_item($lang->group_leaders_for." {$group['title']}"); 386 $page->output_header($lang->group_leaders_for." {$group['title']}"); 387 388 $sub_tabs = array(); 389 $sub_tabs['group_leaders'] = array( 390 'title' => $lang->manage_group_leaders, 391 'link' => "index.php?module=user-groups&action=leaders&gid={$group['gid']}", 392 'description' => $lang->manage_group_leaders_desc 393 ); 394 395 $page->output_nav_tabs($sub_tabs, 'group_leaders'); 396 397 $table = new Table; 398 $table->construct_header($lang->user); 399 $table->construct_header($lang->can_manage_members, array("class" => 'align_center', "width" => 200)); 400 $table->construct_header($lang->can_manage_join_requests, array("class" => 'align_center', "width" => 200)); 401 $table->construct_header($lang->controls, array("class" => "align_center", "colspan" => 2, "width" => 200)); 402 403 $query = $db->query(" 404 SELECT g.*, u.username 405 FROM ".TABLE_PREFIX."groupleaders g 406 INNER JOIN ".TABLE_PREFIX."users u ON (u.uid=g.uid) 407 WHERE g.gid='{$group['gid']}' 408 ORDER BY u.username ASC 409 "); 410 while($leader = $db->fetch_array($query)) 411 { 412 $leader['username'] = htmlspecialchars_uni($leader['username']); 413 if($leader['canmanagemembers']) 414 { 415 $canmanagemembers = $lang->yes; 416 } 417 else 418 { 419 $canmanagemembers = $lang->no; 420 } 421 422 if($leader['canmanagerequests']) 423 { 424 $canmanagerequests = $lang->yes; 425 } 426 else 427 { 428 $canmanagerequests = $lang->no; 429 } 430 431 $table->construct_cell("<strong>".build_profile_link($leader['username'], $leader['uid'], "_blank")."</strong>"); 432 $table->construct_cell($canmanagemembers, array("class" => "align_center")); 433 $table->construct_cell($canmanagerequests, array("class" => "align_center")); 434 $table->construct_cell("<a href=\"index.php?module=user-groups&action=edit_leader&lid={$leader['lid']}\">{$lang->edit}</a>", array("class" => "align_center")); 435 $table->construct_cell("<a href=\"index.php?module=user-groups&action=delete_leader&lid={$leader['lid']}&my_post_key={$mybb->post_code}\" onclick=\"return AdminCP.deleteConfirmation(this, '{$lang->confirm_group_leader_deletion}')\">{$lang->delete}</a>", array("width" => 100, "class" => "align_center")); 436 $table->construct_row(); 437 } 438 439 if($table->num_rows() == 0) 440 { 441 $table->construct_cell($lang->no_assigned_leaders, array("colspan" => 5)); 442 $table->construct_row(); 443 } 444 445 $table->output($lang->group_leaders_for." {$group['title']}"); 446 447 $form = new Form("index.php?module=user-groups&action=add_leader&gid={$group['gid']}", "post"); 448 449 if($errors) 450 { 451 $page->output_inline_error($errors); 452 } 453 else 454 { 455 $mybb->input = array( 456 "canmanagemembers" => 1, 457 "canmanagerequests" => 1 458 ); 459 } 460 461 $form_container = new FormContainer($lang->add_group_leader." {$group['title']}"); 462 $form_container->output_row($lang->username." <em>*</em>", "", $form->generate_text_box('username', $mybb->input['username'], array('id' => 'username')), 'username'); 463 $form_container->output_row($lang->can_manage_group_members, $lang->can_manage_group_members_desc, $form->generate_yes_no_radio('canmanagemembers', $mybb->input['canmanagemembers'])); 464 $form_container->output_row($lang->can_manage_group_join_requests, $lang->can_manage_group_join_requests_desc, $form->generate_yes_no_radio('canmanagerequests', $mybb->input['canmanagerequests'])); 465 $buttons[] = $form->generate_submit_button($lang->save_group_leader); 466 467 $form_container->end(); 468 $form->output_submit_wrapper($buttons); 469 $form->end(); 470 471 $page->output_footer(); 472 } 473 474 475 if($mybb->input['action'] == "delete_leader") 476 { 477 $plugins->run_hooks("admin_user_groups_delete_leader"); 478 479 $query = $db->query(" 480 SELECT l.*, u.username 481 FROM ".TABLE_PREFIX."groupleaders l 482 INNER JOIN ".TABLE_PREFIX."users u ON (u.uid=l.uid) 483 WHERE l.lid='".intval($mybb->input['lid'])."'"); 484 $leader = $db->fetch_array($query); 485 486 if(!$leader['lid']) 487 { 488 flash_message($lang->error_invalid_group_leader, 'error'); 489 admin_redirect("index.php?module=user-groups"); 490 } 491 492 $query = $db->simple_select("usergroups", "*", "gid='{$leader['gid']}'"); 493 $group = $db->fetch_array($query); 494 495 // User clicked no 496 if($mybb->input['no']) 497 { 498 admin_redirect("index.php?module=user-groups"); 499 } 500 501 if($mybb->request_method == "post") 502 { 503 $plugins->run_hooks("admin_user_groups_delete_leader_commit"); 504 505 // Delete the leader 506 $db->delete_query("groupleaders", "lid='{$leader['lid']}'"); 507 508 $cache->update_groupleaders(); 509 510 // Log admin action 511 log_admin_action($leader['lid'], $leader['username'], $group['gid'], $group['title']); 512 513 flash_message($lang->success_group_leader_deleted, 'success'); 514 admin_redirect("index.php?module=user-groups&action=leaders&gid={$group['gid']}"); 515 } 516 else 517 { 518 $page->output_confirm_action("index.php?module=user-groups&action=delete_leader&lid={$leader['lid']}", $lang->confirm_group_leader_deletion); 519 } 520 } 521 522 if($mybb->input['action'] == "edit_leader") 523 { 524 $plugins->run_hooks("admin_user_groups_edit_leader"); 525 526 $query = $db->query(" 527 SELECT l.*, u.username 528 FROM ".TABLE_PREFIX."groupleaders l 529 INNER JOIN ".TABLE_PREFIX."users u ON (u.uid=l.uid) 530 WHERE l.lid='".intval($mybb->input['lid'])."' 531 "); 532 $leader = $db->fetch_array($query); 533 534 if(!$leader['lid']) 535 { 536 flash_message($lang->error_invalid_group_leader, 'error'); 537 admin_redirect("index.php?module=user-groups"); 538 } 539 540 $query = $db->simple_select("usergroups", "*", "gid='{$leader['gid']}'"); 541 $group = $db->fetch_array($query); 542 543 if($mybb->request_method == "post") 544 { 545 $updated_leader = array( 546 "canmanagemembers" => intval($mybb->input['canmanagemembers']), 547 "canmanagerequests" => intval($mybb->input['canmanagerequests']) 548 ); 549 550 $plugins->run_hooks("admin_user_groups_edit_leader_commit"); 551 $db->update_query("groupleaders", $updated_leader, "lid={$leader['lid']}"); 552 553 $cache->update_groupleaders(); 554 555 // Log admin action 556 log_admin_action($leader['lid'], $leader['username'], $group['gid'], $group['title']); 557 558 flash_message($lang->success_group_leader_updated, 'success'); 559 admin_redirect("index.php?module=user-groups&action=leaders&gid={$group['gid']}"); 560 } 561 562 if(!$errors) 563 { 564 $mybb->input = $leader; 565 } 566 567 $page->add_breadcrumb_item($lang->group_leaders_for." {$group['title']}", "index.php?module=user-groups&action=leaders&gid={$group['gid']}"); 568 $page->add_breadcrumb_item($lang->edit_leader." {$leader['username']}"); 569 570 $page->output_header($lang->edit_group_leader); 571 572 $sub_tabs = array(); 573 $sub_tabs['group_leaders'] = array( 574 'title' => $lang->edit_group_leader, 575 'link' => "index.php?module=user-groups&action=edit_leader&lid={$leader['lid']}", 576 'description' => $lang->edit_group_leader_desc 577 ); 578 579 $page->output_nav_tabs($sub_tabs, 'group_leaders'); 580 581 $form = new Form("index.php?module=user-groups&action=edit_leader&lid={$leader['lid']}'", "post"); 582 583 $form_container = new FormContainer($lang->edit_group_leader); 584 $form_container->output_row($lang->username." <em>*</em>", "", $leader['username']); 585 586 $form_container->output_row($lang->can_manage_group_members, $lang->can_manage_group_members_desc, $form->generate_yes_no_radio('canmanagemembers', $mybb->input['canmanagemembers'])); 587 $form_container->output_row($lang->can_manage_group_join_requests, $lang->can_manage_group_join_requests_desc, $form->generate_yes_no_radio('canmanagerequests', $mybb->input['canmanagerequests'])); 588 $buttons[] = $form->generate_submit_button($lang->save_group_leader); 589 590 $form_container->end(); 591 $form->output_submit_wrapper($buttons); 592 $form->end(); 593 594 $page->output_footer(); 595 } 596 597 if($mybb->input['action'] == "add") 598 { 599 $plugins->run_hooks("admin_user_groups_add"); 600 601 if($mybb->request_method == "post") 602 { 603 if(!trim($mybb->input['title'])) 604 { 605 $errors[] = $lang->error_missing_title; 606 } 607 608 if(my_strpos($mybb->input['namestyle'], "{username}") === false) 609 { 610 $errors[] = $lang->error_missing_namestyle_username; 611 } 612 613 if(!$errors) 614 { 615 if($mybb->input['stars'] < 1) 616 { 617 $mybb->input['stars'] = 0; 618 } 619 620 if(!$mybb->input['starimage']) 621 { 622 $mybb->input['starimage'] = "images/star.gif"; 623 } 624 625 $new_usergroup = array( 626 "type" => 2, 627 "title" => $db->escape_string($mybb->input['title']), 628 "description" => $db->escape_string($mybb->input['description']), 629 "namestyle" => $db->escape_string($mybb->input['namestyle']), 630 "usertitle" => $db->escape_string($mybb->input['usertitle']), 631 "stars" => intval($mybb->input['stars']), 632 "starimage" => $db->escape_string($mybb->input['starimage']), 633 "disporder" => 0 634 ); 635 636 // Set default permissions 637 if($mybb->input['copyfrom'] == 0) 638 { 639 $new_usergroup = array_merge($new_usergroup, $usergroup_permissions); 640 } 641 // Copying permissions from another group 642 else 643 { 644 $query = $db->simple_select("usergroups", "*", "gid='".intval($mybb->input['copyfrom'])."'"); 645 $existing_usergroup = $db->fetch_array($query); 646 foreach(array_keys($usergroup_permissions) as $field) 647 { 648 $new_usergroup[$field] = $existing_usergroup[$field]; 649 } 650 } 651 652 $plugins->run_hooks("admin_user_groups_add_commit"); 653 654 $gid = $db->insert_query("usergroups", $new_usergroup); 655 656 // Are we copying permissions? If so, copy all forum permissions too 657 if($mybb->input['copyfrom'] > 0) 658 { 659 $query = $db->simple_select("forumpermissions", "*", "gid='".intval($mybb->input['copyfrom'])."'"); 660 while($forum_permission = $db->fetch_array($query)) 661 { 662 unset($forum_permission['pid']); 663 $forum_permission['gid'] = $gid; 664 $db->insert_query("forumpermissions", $forum_permission); 665 } 666 } 667 668 // Update the caches 669 $cache->update_usergroups(); 670 $cache->update_forumpermissions(); 671 672 // Log admin action 673 log_admin_action($gid, $mybb->input['title']); 674 675 flash_message($lang->success_group_created, 'success'); 676 admin_redirect("index.php?module=user-groups&action=edit&gid={$gid}"); 677 } 678 } 679 680 $page->add_breadcrumb_item($lang->add_user_group); 681 $page->output_header($lang->add_user_group); 682 683 $page->output_nav_tabs($sub_tabs, 'add_group'); 684 $form = new Form("index.php?module=user-groups&action=add", "post"); 685 686 if($errors) 687 { 688 $page->output_inline_error($errors); 689 } 690 else 691 { 692 $mybb->input = array( 693 "namestyle" => "{username}" 694 ); 695 } 696 697 $form_container = new FormContainer($lang->add_user_group); 698 $form_container->output_row($lang->title." <em>*</em>", "", $form->generate_text_box('title', $mybb->input['title'], array('id' => 'title')), 'title'); 699 $form_container->output_row($lang->short_description, "", $form->generate_text_box('description', $mybb->input['description'], array('id' => 'description')), 'description'); 700 $form_container->output_row($lang->username_style, $lang->username_style_desc, $form->generate_text_box('namestyle', $mybb->input['namestyle'], array('id' => 'namestyle')), 'namestyle'); 701 $form_container->output_row($lang->user_title, $lang->user_title_desc, $form->generate_text_box('usertitle', $mybb->input['usertitle'], array('id' => 'usertitle')), 'usertitle'); 702 703 $options[0] = $lang->do_not_copy_permissions; 704 $query = $db->simple_select("usergroups", "gid, title", "gid != '1'", array('order_by' => 'title')); 705 while($usergroup = $db->fetch_array($query)) 706 { 707 $options[$usergroup['gid']] = $usergroup['title']; 708 } 709 $form_container->output_row($lang->copy_permissions_from, $lang->copy_permissions_from_desc, $form->generate_select_box('copyfrom', $options, $mybb->input['copyfrom'], array('id' => 'copyfrom')), 'copyfrom'); 710 711 $form_container->end(); 712 $buttons[] = $form->generate_submit_button($lang->save_user_group); 713 $form->output_submit_wrapper($buttons); 714 715 $form->end(); 716 $page->output_footer(); 717 } 718 719 if($mybb->input['action'] == "edit") 720 { 721 $plugins->run_hooks("admin_user_groups_edit"); 722 723 $query = $db->simple_select("usergroups", "*", "gid='".intval($mybb->input['gid'])."'"); 724 $usergroup = $db->fetch_array($query); 725 726 if(!$usergroup['gid']) 727 { 728 flash_message($lang->error_invalid_user_group, 'error'); 729 admin_redirect("index.php?module=user-group"); 730 } 731 732 if($mybb->request_method == "post") 733 { 734 if(!trim($mybb->input['title'])) 735 { 736 $errors[] = $lang->error_missing_title; 737 } 738 739 if(my_strpos($mybb->input['namestyle'], "{username}") === false) 740 { 741 $errors[] = $lang->error_missing_namestyle_username; 742 } 743 744 if(!$errors) 745 { 746 if($mybb->input['joinable'] == 1) 747 { 748 if($mybb->input['moderate'] == 1) 749 { 750 $mybb->input['type'] = "4"; 751 } 752 else 753 { 754 $mybb->input['type'] = "3"; 755 } 756 } 757 else 758 { 759 $mybb->input['type'] = "2"; 760 } 761 762 if($usergroup['type'] == 1) 763 { 764 $mybb->input['type'] = 1; 765 } 766 767 if($mybb->input['stars'] < 1) 768 { 769 $mybb->input['stars'] = 0; 770 } 771 772 $updated_group = array( 773 "type" => intval($mybb->input['type']), 774 "title" => $db->escape_string($mybb->input['title']), 775 "description" => $db->escape_string($mybb->input['description']), 776 "namestyle" => $db->escape_string($mybb->input['namestyle']), 777 "usertitle" => $db->escape_string($mybb->input['usertitle']), 778 "stars" => intval($mybb->input['stars']), 779 "starimage" => $db->escape_string($mybb->input['starimage']), 780 "image" => $db->escape_string($mybb->input['image']), 781 "isbannedgroup" => intval($mybb->input['isbannedgroup']), 782 "canview" => intval($mybb->input['canview']), 783 "canviewthreads" => intval($mybb->input['canviewthreads']), 784 "canviewprofiles" => intval($mybb->input['canviewprofiles']), 785 "candlattachments" => intval($mybb->input['candlattachments']), 786 "canpostthreads" => intval($mybb->input['canpostthreads']), 787 "canpostreplys" => intval($mybb->input['canpostreplys']), 788 "canpostattachments" => intval($mybb->input['canpostattachments']), 789 "canratethreads" => intval($mybb->input['canratethreads']), 790 "caneditposts" => intval($mybb->input['caneditposts']), 791 "candeleteposts" => intval($mybb->input['candeleteposts']), 792 "candeletethreads" => intval($mybb->input['candeletethreads']), 793 "caneditattachments" => intval($mybb->input['caneditattachments']), 794 "canpostpolls" => intval($mybb->input['canpostpolls']), 795 "canvotepolls" => intval($mybb->input['canvotepolls']), 796 "canundovotes" => intval($mybb->input['canundovotes']), 797 "canusepms" => intval($mybb->input['canusepms']), 798 "cansendpms" => intval($mybb->input['cansendpms']), 799 "cantrackpms" => intval($mybb->input['cantrackpms']), 800 "candenypmreceipts" => intval($mybb->input['candenypmreceipts']), 801 "pmquota" => intval($mybb->input['pmquota']), 802 "maxpmrecipients" => intval($mybb->input['maxpmrecipients']), 803 "cansendemail" => intval($mybb->input['cansendemail']), 804 "maxemails" => intval($mybb->input['maxemails']), 805 "canviewmemberlist" => intval($mybb->input['canviewmemberlist']), 806 "canviewcalendar" => intval($mybb->input['canviewcalendar']), 807 "canaddevents" => intval($mybb->input['canaddevents']), 808 "canbypasseventmod" => intval($mybb->input['canbypasseventmod']), 809 "canmoderateevents" => intval($mybb->input['canmoderateevents']), 810 "canviewonline" => intval($mybb->input['canviewonline']), 811 "canviewwolinvis" => intval($mybb->input['canviewwolinvis']), 812 "canviewonlineips" => intval($mybb->input['canviewonlineips']), 813 "cancp" => intval($mybb->input['cancp']), 814 "issupermod" => intval($mybb->input['issupermod']), 815 "cansearch" => intval($mybb->input['cansearch']), 816 "canusercp" => intval($mybb->input['canusercp']), 817 "canuploadavatars" => intval($mybb->input['canuploadavatars']), 818 "canchangename" => intval($mybb->input['canchangename']), 819 "showforumteam" => intval($mybb->input['showforumteam']), 820 "usereputationsystem" => intval($mybb->input['usereputationsystem']), 821 "cangivereputations" => intval($mybb->input['cangivereputations']), 822 "reputationpower" => intval($mybb->input['reputationpower']), 823 "maxreputationsday" => intval($mybb->input['maxreputationsday']), 824 "maxreputationsperuser" => intval($mybb->input['maxreputationsperuser']), 825 "maxreputationsperthread" => intval($mybb->input['maxreputationsperthread']), 826 "attachquota" => intval($mybb->input['attachquota']), 827 "cancustomtitle" => intval($mybb->input['cancustomtitle']), 828 "canwarnusers" => intval($mybb->input['canwarnusers']), 829 "canreceivewarnings" =>intval($mybb->input['canreceivewarnings']), 830 "maxwarningsday" => intval($mybb->input['maxwarningsday']), 831 "canmodcp" => intval($mybb->input['canmodcp']), 832 "showinbirthdaylist" => intval($mybb->input['showinbirthdaylist']), 833 "canoverridepm" => intval($mybb->input['canoverridepm']), 834 "canusesig" => intval($mybb->input['canusesig']), 835 "canusesigxposts" => intval($mybb->input['canusesigxposts']), 836 "signofollow" => intval($mybb->input['signofollow']) 837 ); 838 839 // Only update the candisplaygroup setting if not a default user group 840 if($usergroup['type'] != 1) 841 { 842 $updated_group['candisplaygroup'] = intval($mybb->input['candisplaygroup']); 843 } 844 845 $plugins->run_hooks("admin_user_groups_edit_commit"); 846 847 $db->update_query("usergroups", $updated_group, "gid='{$usergroup['gid']}'"); 848 849 // Update the caches 850 $cache->update_usergroups(); 851 $cache->update_forumpermissions(); 852 853 854 // Log admin action 855 log_admin_action($usergroup['gid'], $mybb->input['title']); 856 857 flash_message($lang->success_group_updated, 'success'); 858 admin_redirect("index.php?module=user-groups"); 859 } 860 } 861 862 $page->add_breadcrumb_item($lang->edit_user_group); 863 $page->output_header($lang->edit_user_group); 864 865 $sub_tabs = array(); 866 $sub_tabs['edit_group'] = array( 867 'title' => $lang->edit_user_group, 868 'description' => $lang->edit_user_group_desc 869 ); 870 871 $form = new Form("index.php?module=user-groups&action=edit&gid={$usergroup['gid']}", "post"); 872 873 $page->output_nav_tabs($sub_tabs, 'edit_group'); 874 875 // If we have any error messages, show them 876 if($errors) 877 { 878 $page->output_inline_error($errors); 879 } 880 else 881 { 882 if($usergroup['type'] == "3") 883 { 884 $usergroup['joinable'] = 1; 885 $usergroup['moderate'] = 0; 886 } 887 elseif($usergroup['type'] == "4") 888 { 889 $usergroup['joinable'] = 1; 890 $usergroup['moderate'] = 1; 891 } 892 else 893 { 894 $usergroup['joinable'] = 0; 895 $usergroup['moderate'] = 0; 896 } 897 $mybb->input = $usergroup; 898 } 899 $tabs = array( 900 "general" => $lang->general, 901 "forums_posts" => $lang->forums_posts, 902 "users_permissions" => $lang->users_permissions, 903 "misc" => $lang->misc 904 ); 905 $tabs = $plugins->run_hooks("admin_user_groups_edit_graph_tabs", $tabs); 906 $page->output_tab_control($tabs); 907 908 echo "<div id=\"tab_general\">"; 909 $form_container = new FormContainer($lang->general); 910 $form_container->output_row($lang->title." <em>*</em>", "", $form->generate_text_box('title', $mybb->input['title'], array('id' => 'title')), 'title'); 911 $form_container->output_row($lang->short_description, "", $form->generate_text_box('description', $mybb->input['description'], array('id' => 'description')), 'description'); 912 $form_container->output_row($lang->username_style, $lang->username_style_desc, $form->generate_text_box('namestyle', $mybb->input['namestyle'], array('id' => 'namestyle')), 'namestyle'); 913 $form_container->output_row($lang->user_title, $lang->user_title_desc, $form->generate_text_box('usertitle', $mybb->input['usertitle'], array('id' => 'usertitle')), 'usertitle'); 914 915 $stars = "<table cellpadding=\"3\"><tr><td>".$form->generate_text_box('stars', $mybb->input['stars'], array('class' => 'field50', 'id' => 'stars'))."</td><td>".$form->generate_text_box('starimage', $mybb->input['starimage'], array('id' => 'starimage'))."</td></tr>"; 916 $stars .= "<tr><td><small>{$lang->stars}</small></td><td><small>{$lang->star_image}</small></td></tr></table>"; 917 $form_container->output_row($lang->user_stars, $lang->user_stars_desc, $stars, "stars"); 918 919 $form_container->output_row($lang->group_image, $lang->group_image_desc, $form->generate_text_box('image', $mybb->input['image'], array('id' => 'image')), 'image'); 920 921 $general_options = array(); 922 if($usergroup['gid'] != "1" && $usergroup['gid'] != "5") 923 { 924 $general_options[] = $form->generate_check_box("showforumteam", 1, $lang->forum_team, array("checked" => $mybb->input['showforumteam'])); 925 } 926 $general_options[] = $form->generate_check_box("isbannedgroup", 1, $lang->is_banned_group, array("checked" => $mybb->input['isbannedgroup'])); 927 928 $form_container->output_row($lang->general_options, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $general_options)."</div>"); 929 930 if($usergroup['type'] != 1) 931 { 932 $public_options = array( 933 $form->generate_check_box("joinable", 1, $lang->user_joinable, array("checked" => $mybb->input['joinable'])), 934 $form->generate_check_box("moderate", 1, $lang->moderate_join_requests, array("checked" => $mybb->input['moderate'])), 935 $form->generate_check_box("candisplaygroup", 1, $lang->can_set_as_display_group, array("checked" => $mybb->input['candisplaygroup'])), 936 ); 937 $form_container->output_row($lang->publicly_joinable_options, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $public_options)."</div>"); 938 } 939 940 $admin_options = array( 941 $form->generate_check_box("issupermod", 1, $lang->is_super_mod, array("checked" => $mybb->input['issupermod'])), 942 $form->generate_check_box("canmodcp", 1, $lang->can_access_mod_cp, array("checked" => $mybb->input['canmodcp'])), 943 $form->generate_check_box("cancp", 1, $lang->can_access_admin_cp, array("checked" => $mybb->input['cancp'])) 944 ); 945 $form_container->output_row($lang->moderation_administration_options, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $admin_options)."</div>"); 946 947 $form_container->end(); 948 echo "</div>"; 949 950 // 951 // FORUMS AND POSTS 952 // 953 echo "<div id=\"tab_forums_posts\">"; 954 $form_container = new FormContainer($lang->forums_posts); 955 956 $viewing_options = array( 957 $form->generate_check_box("canview", 1, $lang->can_view_board, array("checked" => $mybb->input['canview'])), 958 $form->generate_check_box("canviewthreads", 1, $lang->can_view_threads, array("checked" => $mybb->input['canviewthreads'])), 959 $form->generate_check_box("cansearch", 1, $lang->can_search_forums, array("checked" => $mybb->input['cansearch'])), 960 $form->generate_check_box("canviewprofiles", 1, $lang->can_view_profiles, array("checked" => $mybb->input['canviewprofiles'])), 961 $form->generate_check_box("candlattachments", 1, $lang->can_download_attachments, array("checked" => $mybb->input['candlattachments'])), 962 ); 963 $form_container->output_row($lang->viewing_options, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $viewing_options)."</div>"); 964 965 $posting_options = array( 966 $form->generate_check_box("canpostthreads", 1, $lang->can_post_threads, array("checked" => $mybb->input['canpostthreads'])), 967 $form->generate_check_box("canpostreplys", 1, $lang->can_post_replies, array("checked" => $mybb->input['canpostreplys'])), 968 $form->generate_check_box("canratethreads", 1, $lang->can_rate_threads, array("checked" => $mybb->input['canratethreads'])) 969 ); 970 $form_container->output_row($lang->posting_rating_options, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $posting_options)."</div>"); 971 972 $poll_options = array( 973 $form->generate_check_box("canpostpolls", 1, $lang->can_post_polls, array("checked" => $mybb->input['canpostpolls'])), 974 $form->generate_check_box("canvotepolls", 1, $lang->can_vote_polls, array("checked" => $mybb->input['canvotepolls'])), 975 $form->generate_check_box("canundovotes", 1, $lang->can_undo_votes, array("checked" => $mybb->input['canundovotes'])) 976 ); 977 $form_container->output_row($lang->poll_options, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $poll_options)."</div>"); 978 979 $attachment_options = array( 980 $form->generate_check_box("canpostattachments", 1, $lang->can_post_attachments, array("checked" => $mybb->input['canpostattachments'])), 981 "{$lang->attach_quota}<br /><small class=\"input\">{$lang->attach_quota_desc}</small><br />".$form->generate_text_box('attachquota', $mybb->input['attachquota'], array('id' => 'attachquota', 'class' => 'field50')). "KB" 982 ); 983 $form_container->output_row($lang->attachment_options, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $attachment_options)."</div>"); 984 985 $editing_options = array( 986 $form->generate_check_box("caneditposts", 1, $lang->can_edit_posts, array("checked" => $mybb->input['caneditposts'])), 987 $form->generate_check_box("candeleteposts", 1, $lang->can_delete_posts, array("checked" => $mybb->input['candeleteposts'])), 988 $form->generate_check_box("candeletethreads", 1, $lang->can_delete_threads, array("checked" => $mybb->input['candeletethreads'])), 989 $form->generate_check_box("caneditattachments", 1, $lang->can_edit_attachments, array("checked" => $mybb->input['caneditattachments'])) 990 ); 991 $form_container->output_row($lang->editing_deleting_options, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $editing_options)."</div>"); 992 993 $form_container->end(); 994 echo "</div>"; 995 996 // 997 // USERS AND PERMISSIONS 998 // 999 echo "<div id=\"tab_users_permissions\">"; 1000 $form_container = new FormContainer($lang->users_permissions); 1001 1002 $account_options = array( 1003 $form->generate_check_box("canusercp", 1, $lang->can_access_usercp, array("checked" => $mybb->input['canusercp'])), 1004 $form->generate_check_box("canchangename", 1, $lang->can_change_username, array("checked" => $mybb->input['canchangename'])), 1005 $form->generate_check_box("cancustomtitle", 1, $lang->can_use_usertitles, array("checked" => $mybb->input['cancustomtitle'])), 1006 $form->generate_check_box("canuploadavatars", 1, $lang->can_upload_avatars, array("checked" => $mybb->input['canuploadavatars'])), 1007 $form->generate_check_box("canusesig", 1, $lang->can_use_signature, array("checked" => $mybb->input['canusesig'])), 1008 $form->generate_check_box("signofollow", 1, $lang->uses_no_follow, array("checked" => $mybb->input['signofollow'])), 1009 "{$lang->required_posts}<br /><small class=\"input\">{$lang->required_posts_desc}</small><br />".$form->generate_text_box('canusesigxposts', $mybb->input['canusesigxposts'], array('id' => 'canusesigxposts', 'class' => 'field50')) 1010 ); 1011 $form_container->output_row($lang->account_management, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $account_options)."</div>"); 1012 1013 $reputation_options = array( 1014 $form->generate_check_box("usereputationsystem", 1, $lang->show_reputations, array("checked" => $mybb->input['usereputationsystem'])), 1015 $form->generate_check_box("cangivereputations", 1, $lang->can_give_reputation, array("checked" => $mybb->input['cangivereputations'])), 1016 "{$lang->points_to_award_take}<br /><small class=\"input\">{$lang->points_to_award_take_desc}</small><br />".$form->generate_text_box('reputationpower', $mybb->input['reputationpower'], array('id' => 'reputationpower', 'class' => 'field50')), 1017 "{$lang->max_reputations_perthread}<br /><small class=\"input\">{$lang->max_reputations_perthread_desc}</small><br />".$form->generate_text_box('maxreputationsperthread', $mybb->input['maxreputationsperthread'], array('id' => 'maxreputationsperthread', 'class' => 'field50')), 1018 "{$lang->max_reputations_daily}<br /><small class=\"input\">{$lang->max_reputations_daily_desc}</small><br />".$form->generate_text_box('maxreputationsday', $mybb->input['maxreputationsday'], array('id' => 'maxreputationsday', 'class' => 'field50')) 1019 ); 1020 $form_container->output_row($lang->reputation_system, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $reputation_options)."</div>"); 1021 1022 $warning_options = array( 1023 $form->generate_check_box("canwarnusers", 1, $lang->can_send_warnings, array("checked" => $mybb->input['canwarnusers'])), 1024 $form->generate_check_box("canreceivewarnings", 1, $lang->can_receive_warnings, array("checked" => $mybb->input['canreceivewarnings'])), 1025 "{$lang->warnings_per_day}<br />".$form->generate_text_box('maxwarningsday', $mybb->input['maxwarningsday'], array('id' => 'maxwarningsday', 'class' => 'field50')) 1026 ); 1027 $form_container->output_row($lang->warning_system, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $warning_options)."</div>"); 1028 1029 $pm_options = array( 1030 $form->generate_check_box("canusepms", 1, $lang->can_use_pms, array("checked" => $mybb->input['canusepms'])), 1031 $form->generate_check_box("cansendpms", 1, $lang->can_send_pms, array("checked" => $mybb->input['cansendpms'])), 1032 $form->generate_check_box("canoverridepm", 1, $lang->can_override_pms, array("checked" => $mybb->input['canoverridepm'])), 1033 $form->generate_check_box("cantrackpms", 1, $lang->can_track_pms, array("checked" => $mybb->input['cantrackpms'])), 1034 $form->generate_check_box("candenypmreceipts", 1, $lang->can_deny_reciept, array("checked" => $mybb->input['candenypmreceipts'])), 1035 "{$lang->message_quota}<br /><small>{$lang->message_quota_desc}</small><br />".$form->generate_text_box('pmquota', $mybb->input['pmquota'], array('id' => 'pmquota', 'class' => 'field50')), 1036 "{$lang->max_recipients}<br /><small>{$lang->max_recipients_desc}</small><br />".$form->generate_text_box('maxpmrecipients', $mybb->input['maxpmrecipients'], array('id' => 'maxpmrecipients', 'class' => 'field50')) 1037 ); 1038 $form_container->output_row($lang->private_messaging, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $pm_options)."</div>"); 1039 1040 $form_container->end(); 1041 echo "</div>"; 1042 1043 // 1044 // MISC 1045 // 1046 echo "<div id=\"tab_misc\">"; 1047 $form_container = new FormContainer($lang->misc); 1048 1049 $calendar_options = array( 1050 $form->generate_check_box("canviewcalendar", 1, $lang->can_view_calendar, array("checked" => $mybb->input['canviewcalendar'])), 1051 $form->generate_check_box("canaddevents", 1, $lang->can_post_events, array("checked" => $mybb->input['canaddevents'])), 1052 $form->generate_check_box("canbypasseventmod", 1, $lang->can_bypass_event_moderation, array("checked" => $mybb->input['canbypasseventmod'])), 1053 $form->generate_check_box("canmoderateevents", 1, $lang->can_moderate_events, array("checked" => $mybb->input['canmoderateevents'])) 1054 ); 1055 $form_container->output_row($lang->calendar, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $calendar_options)."</div>"); 1056 1057 $wol_options = array( 1058 $form->generate_check_box("canviewonline", 1, $lang->can_view_whos_online, array("checked" => $mybb->input['canviewonline'])), 1059 $form->generate_check_box("canviewwolinvis", 1, $lang->can_view_invisible, array("checked" => $mybb->input['canviewwolinvis'])), 1060 $form->generate_check_box("canviewonlineips", 1, $lang->can_view_ips, array("checked" => $mybb->input['canviewonlineips'])) 1061 ); 1062 $form_container->output_row($lang->whos_online, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $wol_options)."</div>"); 1063 1064 $misc_options = array( 1065 $form->generate_check_box("canviewmemberlist", 1, $lang->can_view_member_list, array("checked" => $mybb->input['canviewmemberlist'])), 1066 $form->generate_check_box("showinbirthdaylist", 1, $lang->show_in_birthday_list, array("checked" => $mybb->input['showinbirthdaylist'])), 1067 $form->generate_check_box("cansendemail", 1, $lang->can_email_users, array("checked" => $mybb->input['cansendemail'])), 1068 "{$lang->max_emails_per_day}<br /><small class=\"input\">{$lang->max_emails_per_day_desc}</small><br />".$form->generate_text_box('maxemails', $mybb->input['maxemails'], array('id' => 'maxemails', 'class' => 'field50')) 1069 ); 1070 $form_container->output_row($lang->misc, "", "<div class=\"group_settings_bit\">".implode("</div><div class=\"group_settings_bit\">", $misc_options)."</div>"); 1071 1072 $form_container->end(); 1073 echo "</div>"; 1074 1075 $plugins->run_hooks("admin_user_groups_edit_graph"); 1076 1077 $buttons[] = $form->generate_submit_button($lang->save_user_group); 1078 $form->output_submit_wrapper($buttons); 1079 1080 $form->end(); 1081 $page->output_footer(); 1082 } 1083 1084 if($mybb->input['action'] == "delete") 1085 { 1086 $plugins->run_hooks("admin_user_groups_delete"); 1087 1088 $query = $db->simple_select("usergroups", "*", "gid='".intval($mybb->input['gid'])."'"); 1089 $usergroup = $db->fetch_array($query); 1090 1091 if(!$usergroup['gid']) 1092 { 1093 flash_message($lang->error_invalid_user_group, 'error'); 1094 admin_redirect("index.php?module=user-groups"); 1095 } 1096 if($usergroup['type'] == 1) 1097 { 1098 flash_message($lang->error_default_group_delete, 'error'); 1099 admin_redirect("index.php?module=user-groups"); 1100 } 1101 1102 // User clicked no 1103 if($mybb->input['no']) 1104 { 1105 admin_redirect("index.php?module=user-groups"); 1106 } 1107 1108 if($mybb->request_method == "post") 1109 { 1110 // Move any users back to the registered group 1111 $updated_users = array("usergroup" => 2); 1112 $db->update_query("users", $updated_users, "usergroup='{$usergroup['gid']}'"); 1113 1114 $updated_users = array("displaygroup" => "usergroup"); 1115 $plugins->run_hooks("admin_user_groups_delete_commit"); 1116 1117 $db->update_query("users", $updated_users, "displaygroup='{$usergroup['gid']}'", "", true); // No quotes = displaygroup=usergroup 1118 1119 switch($db->type) 1120 { 1121 case "pgsql": 1122 case "sqlite": 1123 $query = $db->simple_select("users", "uid", "','||additionalgroups||',' LIKE '%,{$usergroup['gid']},%'"); 1124 break; 1125 default: 1126 $query = $db->simple_select("users", "uid", "CONCAT(',',additionalgroups,',') LIKE '%,{$usergroup['gid']},%'"); 1127 } 1128 while($user = $db->fetch_array($query)) 1129 { 1130 leave_usergroup($user['uid'], $usergroup['gid']); 1131 } 1132 1133 $db->delete_query("groupleaders", "gid='{$usergroup['gid']}'"); 1134 $db->delete_query("usergroups", "gid='{$usergroup['gid']}'"); 1135 1136 $cache->update_groupleaders(); 1137 $cache->update_moderators(); 1138 $cache->update_usergroups(); 1139 $cache->update_forumpermissions(); 1140 1141 // Log admin action 1142 log_admin_action($usergroup['gid'], $usergroup['title']); 1143 1144 flash_message($lang->success_group_deleted, 'success'); 1145 admin_redirect("index.php?module=user-groups"); 1146 } 1147 else 1148 { 1149 $page->output_confirm_action("index.php?module=user-groups&action=delete&gid={$usergroup['gid']}", $lang->confirm_group_deletion); 1150 } 1151 } 1152 1153 if($mybb->input['action'] == "disporder" && $mybb->request_method == "post") 1154 { 1155 $plugins->run_hooks("admin_user_groups_disporder"); 1156 1157 foreach($mybb->input['disporder'] as $gid=>$order) 1158 { 1159 $gid = intval($gid); 1160 $order = intval($order); 1161 if($gid != 0 && $order != 0) 1162 { 1163 $sql_array = array( 1164 'disporder' => $order, 1165 ); 1166 $db->update_query('usergroups', $sql_array, "gid = '{$gid}'"); 1167 } 1168 } 1169 1170 // Log admin action 1171 log_admin_action(); 1172 1173 $plugins->run_hooks("admin_user_groups_disporder_commit"); 1174 1175 flash_message($lang->success_group_disporders_updated, 'success'); 1176 admin_redirect("index.php?module=user-groups"); 1177 } 1178 1179 if(!$mybb->input['action']) 1180 { 1181 $plugins->run_hooks("admin_user_groups_start"); 1182 1183 if($mybb->request_method == "post") 1184 { 1185 if(!empty($mybb->input['disporder'])) 1186 { 1187 foreach($mybb->input['disporder'] as $gid => $order) 1188 { 1189 $db->update_query("usergroups", array('disporder' => intval($order)), "gid='".intval($gid)."'"); 1190 } 1191 1192 $plugins->run_hooks("admin_user_groups_start_commit"); 1193 1194 $cache->update_usergroups(); 1195 1196 flash_message($lang->success_groups_disporder_updated, 'success'); 1197 admin_redirect("index.php?module=user-groups"); 1198 } 1199 } 1200 1201 $page->output_header($lang->manage_user_groups); 1202 $page->output_nav_tabs($sub_tabs, 'manage_groups'); 1203 1204 $form = new Form("index.php?module=user-groups", "post", "groups"); 1205 1206 $query = $db->query(" 1207 SELECT g.gid, COUNT(u.uid) AS users 1208 FROM ".TABLE_PREFIX."users u 1209 LEFT JOIN ".TABLE_PREFIX."usergroups g ON (g.gid=u.usergroup) 1210 GROUP BY g.gid 1211 "); 1212 while($groupcount = $db->fetch_array($query)) 1213 { 1214 $primaryusers[$groupcount['gid']] = $groupcount['users']; 1215 } 1216 1217 switch($db->type) 1218 { 1219 case "pgsql": 1220 case "sqlite": 1221 $query = $db->query(" 1222 SELECT g.gid, COUNT(u.uid) AS users 1223 FROM ".TABLE_PREFIX."users u 1224 LEFT JOIN ".TABLE_PREFIX."usergroups g ON (','|| u.additionalgroups|| ',' LIKE '%,'|| g.gid|| ',%') 1225 WHERE g.gid != '0' AND g.gid is not NULL GROUP BY g.gid 1226 "); 1227 break; 1228 default: 1229 $query = $db->query(" 1230 SELECT g.gid, COUNT(u.uid) AS users 1231 FROM ".TABLE_PREFIX."users u 1232 LEFT JOIN ".TABLE_PREFIX."usergroups g ON (CONCAT(',', u.additionalgroups, ',') LIKE CONCAT('%,', g.gid, ',%')) 1233 WHERE g.gid != '0' AND g.gid is not NULL GROUP BY g.gid 1234 "); 1235 } 1236 while($groupcount = $db->fetch_array($query)) 1237 { 1238 $secondaryusers[$groupcount['gid']] = $groupcount['users']; 1239 } 1240 1241 $query = $db->query(" 1242 SELECT g.gid, COUNT(r.uid) AS users 1243 FROM ".TABLE_PREFIX."joinrequests r 1244 LEFT JOIN ".TABLE_PREFIX."usergroups g ON (g.gid=r.gid) 1245 GROUP BY g.gid 1246 "); 1247 while($joinrequest = $db->fetch_array($query)) 1248 { 1249 $joinrequests[$joinrequest['gid']] = $joinrequest['users']; 1250 } 1251 1252 // Fetch group leaders 1253 $leaders = array(); 1254 $query = $db->query(" 1255 SELECT u.username, u.uid, l.gid 1256 FROM ".TABLE_PREFIX."groupleaders l 1257 INNER JOIN ".TABLE_PREFIX."users u ON (u.uid=l.uid) 1258 ORDER BY u.username ASC 1259 "); 1260 while($leader = $db->fetch_array($query)) 1261 { 1262 $leaders[$leader['gid']][] = build_profile_link($leader['username'], $leader['uid'], "_blank"); 1263 } 1264 1265 $form_container = new FormContainer($lang->user_groups); 1266 $form_container->output_row_header($lang->group); 1267 $form_container->output_row_header($lang->number_of_users, array("class" => "align_center", 'width' => '75')); 1268 $form_container->output_row_header($lang->order, array("class" => "align_center", 'width' => '5%')); 1269 $form_container->output_row_header($lang->controls, array("class" => "align_center")); 1270 1271 $query = $db->simple_select("usergroups", "*", "", array('order_by' => 'disporder')); 1272 while($usergroup = $db->fetch_array($query)) 1273 { 1274 if($usergroup['type'] > 1) 1275 { 1276 $icon = "<img src=\"styles/default/images/icons/custom.gif\" alt=\"{$lang->custom_user_group}\" style=\"vertical-align: middle;\" />"; 1277 } 1278 else 1279 { 1280 $icon = "<img src=\"styles/default/images/icons/default.gif\" alt=\"{$lang->default_user_group}\" style=\"vertical-align: middle;\" />"; 1281 } 1282 1283 $leaders_list = ''; 1284 if(isset($leaders[$usergroup['gid']])) 1285 { 1286 $leaders_list = "<br />{$lang->group_leaders}: ".implode(", ", $leaders[$usergroup['gid']]); 1287 } 1288 1289 $join_requests = ''; 1290 if($joinrequests[$usergroup['gid']] > 1) 1291 { 1292 $join_requests = " <small><a href=\"index.php?module=user-groups&action=join_requests&gid={$usergroup['gid']}\"><span style=\"color: red;\">({$joinrequests[$usergroup['gid']]} {$lang->outstanding_join_request})</span></a></small>"; 1293 } 1294 else if($joinrequests[$usergroup['gid']] == 1) 1295 { 1296 $join_requests = " <small><a href=\"index.php?module=user-groups&action=join_requests&gid={$usergroup['gid']}\"><span style=\"color: red;\">({$joinrequests[$usergroup['gid']]} {$lang->outstanding_join_request})</span></a></small>"; 1297 } 1298 1299 $form_container->output_cell("<div class=\"float_right\">{$icon}</div><div><strong><a href=\"index.php?module=user-groups&action=edit&gid={$usergroup['gid']}\">{$usergroup['title']}</a></strong>{$join_requests}<br /><small>{$usergroup['description']}{$leaders_list}</small></div>"); 1300 1301 if(!$primaryusers[$usergroup['gid']]) 1302 { 1303 $primaryusers[$usergroup['gid']] = 0; 1304 } 1305 $numusers = $primaryusers[$usergroup['gid']]; 1306 $numusers += $secondaryusers[$usergroup['gid']]; 1307 1308 $form_container->output_cell(my_number_format($numusers), array("class" => "align_center")); 1309 1310 if($usergroup['showforumteam'] == 1) 1311 { 1312 $form_container->output_cell("<input type=\"text\" name=\"disporder[{$usergroup['gid']}]\" value=\"{$usergroup['disporder']}\" class=\"text_input align_center\" style=\"width: 80%;\" />", array("class" => "align_center")); 1313 } 1314 else 1315 { 1316 $form_container->output_cell(" ", array("class" => "align_center")); 1317 } 1318 1319 $popup = new PopupMenu("usergroup_{$usergroup['gid']}", $lang->options); 1320 $popup->add_item($lang->edit_group, "index.php?module=user-groups&action=edit&gid={$usergroup['gid']}"); 1321 $popup->add_item($lang->list_users, "index.php?module=user-users&action=search&results=1&conditions[usergroup]={$usergroup['gid']}"); 1322 if($joinrequests[$usergroup['gid']] > 0) 1323 { 1324 $popup->add_item($lang->join_requests, "index.php?module=user-groups&action=join_requests&gid={$usergroup['gid']}"); 1325 } 1326 $popup->add_item($lang->group_leaders, "index.php?module=user-groups&action=leaders&gid={$usergroup['gid']}"); 1327 if($usergroup['type'] > 1) 1328 { 1329 $popup->add_item($lang->delete_group, "index.php?module=user-groups&action=delete&gid={$usergroup['gid']}&my_post_key={$mybb->post_code}", "return AdminCP.deleteConfirmation(this, '{$lang->confirm_group_deletion}')"); 1330 } 1331 $form_container->output_cell($popup->fetch(), array("class" => "align_center")); 1332 $form_container->construct_row(); 1333 } 1334 1335 if($form_container->num_rows() == 0) 1336 { 1337 $form_container->output_cell($lang->no_groups, array('colspan' => 4)); 1338 $form_container->construct_row(); 1339 } 1340 1341 $form_container->end(); 1342 1343 $buttons = array(); 1344 $buttons[] = $form->generate_submit_button($lang->update_groups_order); 1345 $form->output_submit_wrapper($buttons); 1346 1347 $form->end(); 1348 1349 echo <<<LEGEND 1350 <br /> 1351 <fieldset> 1352 <legend>{$lang->legend}</legend> 1353 <img src="styles/default/images/icons/custom.gif" alt="{$lang->custom_user_group}" style="vertical-align: middle;" /> {$lang->custom_user_group}<br /> 1354 <img src="styles/default/images/icons/default.gif" alt="{$lang->default_user_group}" style="vertical-align: middle;" /> {$lang->default_user_group} 1355 </fieldset> 1356 LEGEND; 1357 1358 $page->output_footer(); 1359 } 1360 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Sun Dec 11 14:16:27 2011 | Cross-referenced by PHPXref 0.7.1 |