[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/ -> managegroup.php (source)

   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: managegroup.php 5297 2010-12-28 22:01:14Z Tomm $
  10   */
  11  
  12  define("IN_MYBB", 1);
  13  define('THIS_SCRIPT', 'managegroup.php');
  14  
  15  $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";
  16  
  17  require_once  "./global.php";
  18  
  19  // Load language files
  20  $lang->load("managegroup");
  21  
  22  $gid = $mybb->input['gid'] = intval($mybb->input['gid']);
  23  $usergroup = $groupscache[$mybb->input['gid']];
  24  if(!$usergroup['gid'])
  25  {
  26      error($lang->invalid_group);
  27  }
  28  $lang->nav_group_management = $lang->sprintf($lang->nav_group_management, $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  if($mybb->input['action'] == "joinrequests")
  33  {
  34      add_breadcrumb($lang->nav_join_requests);
  35  }
  36  
  37  // Check that this user is actually a leader of this group
  38  $query = $db->simple_select("groupleaders", "*", "uid='{$mybb->user['uid']}' AND gid='{$gid}'");
  39  $groupleader = $db->fetch_array($query);
  40  if(!$groupleader['uid'] && $mybb->user['cancp'] != 1)
  41  {
  42      error($lang->not_leader_of_this_group);
  43  }
  44  
  45  if($mybb->input['action'] == "do_add" && $mybb->request_method == "post")
  46  {
  47      // Verify incoming POST request
  48      verify_post_check($mybb->input['my_post_key']);
  49  
  50      if($groupleader['canmanagemembers'] == 0)
  51      {
  52          error_no_permission();
  53      }
  54      $query = $db->simple_select("users", "uid, additionalgroups, usergroup", "username = '".$db->escape_string($mybb->input['username'])."'", array("limit" => 1));
  55      $user = $db->fetch_array($query);
  56      if($user['uid'])
  57      {
  58          $additionalgroups = explode(',', $user['additionalgroups']);
  59          if ($user['usergroup'] != $gid && !in_array($gid, $additionalgroups))
  60          {
  61              join_usergroup($user['uid'], $gid);
  62              redirect("managegroup.php?gid=".$gid, $lang->user_added);
  63          }
  64          else 
  65          {
  66              error($lang->error_alreadyingroup);
  67          }
  68      }
  69      else
  70      {
  71          error($lang->error_invalidusername);
  72      }
  73  }
  74  elseif($mybb->input['action'] == "do_joinrequests" && $mybb->request_method == "post")
  75  {
  76      // Verify incoming POST request
  77      verify_post_check($mybb->input['my_post_key']);
  78  
  79      if($groupleader['canmanagerequests'] == 0)
  80      {
  81          error_no_permission();
  82      }
  83  
  84      $plugins->run_hooks("managegroup_do_joinrequests_start");
  85  
  86      if(is_array($mybb->input['request']))
  87      {
  88          foreach($mybb->input['request'] as $uid => $what)
  89          {
  90              if($what == "accept")
  91              {
  92                  join_usergroup($uid, $gid);
  93                  $uidin[] = intval($uid);
  94              }
  95              elseif($what == "decline")
  96              {
  97                  $uidin[] = intval($uid);
  98              }
  99          }
 100      }
 101      if(is_array($uidin))
 102      {
 103          $uids = implode(",", $uidin);
 104          $db->delete_query("joinrequests", "uid IN ({$uids}) AND gid='{$gid}'");
 105      }
 106  
 107      $plugins->run_hooks("managegroup_do_joinrequests_end");
 108  
 109      redirect("usercp.php?action=usergroups", $lang->join_requests_moderated);
 110  }
 111  elseif($mybb->input['action'] == "joinrequests")
 112  {
 113      $users = "";
 114      $plugins->run_hooks("managegroup_joinrequests_start");
 115  
 116      $query = $db->query("
 117          SELECT j.*, u.uid, u.username, u.postnum, u.regdate
 118          FROM ".TABLE_PREFIX."joinrequests j
 119          LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=j.uid)
 120          WHERE j.gid='".$mybb->input['gid']."' AND j.uid != 0
 121          ORDER BY u.username ASC
 122      ");
 123      while($user = $db->fetch_array($query))
 124      {
 125          $user['reason'] = htmlspecialchars_uni($user['reason']);
 126          $altbg = alt_trow();
 127          $regdate = my_date($mybb->settings['dateformat'], $user['regdate']);
 128          $user['profilelink'] = build_profile_link($user['username'], $user['uid']);
 129          eval("\$users .= \"".$templates->get("managegroup_joinrequests_request")."\";");
 130      }
 131      if(!$users)
 132      {
 133          error($lang->no_requests);
 134      }
 135      $lang->join_requests = $lang->sprintf($lang->join_requests_title,htmlspecialchars_uni($usergroup['title']));
 136  
 137      $plugins->run_hooks("managegroup_joinrequests_end");
 138  
 139      eval("\$joinrequests = \"".$templates->get("managegroup_joinrequests")."\";");
 140      output_page($joinrequests);
 141  }
 142  elseif($mybb->input['action'] == "do_manageusers" && $mybb->request_method == "post")
 143  {
 144      // Verify incoming POST request
 145      verify_post_check($mybb->input['my_post_key']);
 146  
 147      if($groupleader['canmanagemembers'] == 0)
 148      {
 149          error_no_permission();
 150      }
 151  
 152      $plugins->run_hooks("managegroup_do_manageusers_start");
 153  
 154      if(is_array($mybb->input['removeuser']))
 155      {
 156          foreach($mybb->input['removeuser'] as $uid)
 157          {
 158              leave_usergroup($uid, $mybb->input['gid']);
 159          }
 160      }
 161      else
 162      {
 163          error($lang->no_users_selected);
 164      }
 165  
 166      $plugins->run_hooks("managegroup_do_manageusers_end");
 167  
 168      redirect("usercp.php?action=usergroups", $lang->users_removed);
 169  }
 170  else
 171  {
 172      $plugins->run_hooks("managegroup_start");
 173  
 174      $lang->members_of = $lang->sprintf($lang->members_of, $usergroup['title']);
 175      $lang->add_member = $lang->sprintf($lang->add_member, $usergroup['title']);
 176      if($usergroup['type'] == 4)
 177      {
 178          $query = $db->simple_select("joinrequests", "COUNT(*) AS req", "gid='".$mybb->input['gid']."'");
 179          $numrequests = $db->fetch_array($query);
 180          if($numrequests['req'])
 181          {
 182              $lang->num_requests_pending = $lang->sprintf($lang->num_requests_pending, $numrequests['req']);
 183              eval("\$joinrequests = \"".$templates->get("managegroup_requestnote")."\";");
 184          }
 185          $usergrouptype = $lang->group_public_moderated;
 186      }
 187      elseif($usergroup['type'] == 3)
 188      {
 189          $usergrouptype = $lang->group_public_not_moderated;
 190      }
 191      elseif($usergroup['type'] == 2)
 192      {
 193          $usergrouptype = $lang->group_private;
 194      }
 195      else
 196      {
 197          $usergrouptype = $lang->group_default;
 198      }
 199  
 200      // Display group leaders (if there is any)
 201      $query = $db->query("
 202          SELECT g.*, u.username, u.usergroup, u.displaygroup
 203          FROM ".TABLE_PREFIX."groupleaders g
 204          LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=g.uid)
 205          WHERE g.gid = '".$mybb->input['gid']."'
 206      ");
 207      if($db->num_rows($query))
 208      {
 209          $loop = 1;
 210          $leader_count = $db->num_rows($query);
 211          while($leader = $db->fetch_array($query))
 212          {
 213              $leader_name = format_name(htmlspecialchars_uni($leader['username']), $leader['usergroup'], $leader['displaygroup']);
 214              $leader_profile_link = build_profile_link($leader_name, $leader['uid']);
 215  
 216              // Get commas...
 217              if($loop != $leader_count)
 218              {
 219                  $comma = $lang->comma;
 220              }
 221              else
 222              {
 223                  $comma = '';
 224              }
 225  
 226              ++$loop;
 227              eval("\$leaders .= \"".$templates->get("managegroup_leaders_bit")."\";");
 228          }
 229  
 230          eval("\$group_leaders = \"".$templates->get("managegroup_leaders")."\";");
 231      }
 232  
 233      switch($db->type)
 234      {
 235          case "pgsql":
 236          case "sqlite":
 237              $query = $db->simple_select("users", "*", "','||additionalgroups||',' LIKE '%,".$mybb->input['gid'].",%' OR usergroup='".$mybb->input['gid']."'", array('order_by' => 'username'));
 238              break;
 239          default:
 240              $query = $db->simple_select("users", "*", "CONCAT(',',additionalgroups,',') LIKE '%,".$mybb->input['gid'].",%' OR usergroup='".$mybb->input['gid']."'", array('order_by' => 'username'));
 241      }
 242  
 243      $numusers = $db->num_rows($query);
 244      /*if(!$numusers && !$numrequests)
 245      {
 246          error($lang->group_no_members);
 247      }*/
 248      $perpage = $mybb->settings['membersperpage'];
 249      if($page && $page > 0)
 250      {
 251          $start = ($page-1) *$perpage;
 252      }
 253      else
 254      {
 255          $start = 0;
 256          $page = 1;
 257      }
 258      $multipage = multipage($numusers, $perpage, $page, "managegroup.php?gid=".$mybb->input['gid']);
 259      $users = "";
 260      while($user = $db->fetch_array($query))
 261      {
 262          $altbg = alt_trow();
 263          $regdate = my_date($mybb->settings['dateformat'].", ".$mybb->settings['timeformat'], $user['regdate']);
 264          $post = $user;
 265          $sendpm = $email = '';
 266          if($mybb->settings['enablepms'] == 1 && $post['receivepms'] != 0 && $mybb->usergroup['cansendpms'] == 1 && my_strpos(",".$post['ignorelist'].",", ",".$mybb->user['uid'].",") === false)
 267          {
 268              eval("\$sendpm = \"".$templates->get("postbit_pm")."\";");
 269          }
 270          
 271          if($user['hideemail'] != 1)
 272          {
 273              eval("\$email = \"".$templates->get("postbit_email")."\";");
 274          }
 275          else
 276          {
 277              $email = '';
 278          }
 279          $query1 = $db->simple_select("groupleaders", "uid", "uid='{$user['uid']}' AND gid='{$gid}'");
 280          $isleader = $db->fetch_array($query1);
 281          $user['username'] = format_name($user['username'], $user['usergroup'], $user['displaygroup']);
 282          $user['profilelink'] = build_profile_link($user['username'], $user['uid']);
 283          if($isleader['uid'])
 284          {
 285              $leader = $lang->leader;
 286          }
 287          else
 288          {
 289              $leader = '';
 290          }
 291  
 292          // Checkbox for user management - only if current user is allowed
 293          $checkbox = '';
 294          if($groupleader['canmanagemembers'] == 1)
 295          {
 296              eval("\$checkbox = \"".$templates->get("managegroup_user_checkbox")."\";");
 297          }
 298  
 299          eval("\$users .= \"".$templates->get("managegroup_user")."\";");
 300      }
 301  
 302      $add_user = '';
 303      $remove_users = '';
 304      if($groupleader['canmanagemembers'] == 1)
 305      {
 306          eval("\$add_user = \"".$templates->get("managegroup_adduser")."\";");
 307          eval("\$remove_users = \"".$templates->get("managegroup_removeusers")."\";");
 308      }
 309  
 310      $plugins->run_hooks("managegroup_end");
 311  
 312      eval("\$manageusers = \"".$templates->get("managegroup")."\";");
 313      output_page($manageusers);
 314  }
 315  ?>


Generated: Sun Jan 1 10:49:49 2012 Cross-referenced by PHPXref 0.7.1