[ Index ]

PHP Cross Reference of MyBB 1.4.13

title

Body

[close]

/ -> memberlist.php (source)

   1  <?php
   2  /**
   3   * MyBB 1.4
   4   * Copyright © 2008 MyBB Group, All Rights Reserved
   5   *
   6   * Website: http://www.mybboard.net
   7   * License: http://www.mybboard.net/about/license
   8   *
   9   * $Id: memberlist.php 4314 2009-01-31 00:43:26Z Tikitiki $
  10   */
  11  
  12  define("IN_MYBB", 1);
  13  define('THIS_SCRIPT', 'memberlist.php');
  14  
  15  $templatelist = "memberlist,memberlist_member,memberlist_search,memberlist_user,memberlist_user_groupimage,memberlist_user_avatar";
  16  $templatelist .= ",postbit_www,postbit_email,multipage_nextpage,multipage_page_current,multipage_page,multipage_start,multipage_end,multipage";
  17  require_once  "./global.php";
  18  
  19  // Load global language phrases
  20  $lang->load("memberlist");
  21  
  22  if($mybb->settings['enablememberlist'] == 0)
  23  {
  24      error($lang->memberlist_disabled);
  25  }
  26  
  27  $plugins->run_hooks("memberlist_start");
  28  
  29  add_breadcrumb($lang->nav_memberlist);
  30  
  31  if($mybb->usergroup['canviewmemberlist'] == 0)
  32  {
  33      error_no_permission();
  34  }
  35  
  36  // Showing advanced search page?
  37  if($mybb->input['action'] == "search")
  38  {
  39      eval("\$search_page = \"".$templates->get("memberlist_search")."\";");
  40      $plugins->run_hooks("memberlist_search");
  41      output_page($search_page);    
  42  }
  43  else
  44  {
  45      $search_url = '';
  46      
  47      // Incoming sort field?
  48      if($mybb->input['sort'])
  49      {
  50          $mybb->input['sort'] = strtolower($mybb->input['sort']);
  51      }
  52      else
  53      {
  54          $mybb->input['sort'] = $mybb->settings['default_memberlist_sortby'];
  55      }
  56      
  57      switch($mybb->input['sort'])
  58      {
  59          case "regdate":
  60              $sort_field = "u.regdate";
  61              break;
  62          case "lastvisit":
  63              $sort_field = "u.lastactive";
  64              break;
  65          case "reputation":
  66              $sort_field = "u.reputation";
  67              break;
  68          case "postnum":
  69              $sort_field = "u.postnum";
  70              break;
  71          default:
  72              $sort_field = "u.username";
  73              $mybb->input['sort'] = 'username';
  74              break;
  75      }
  76      $sort_selected[$mybb->input['sort']] = " selected=\"selected\"";
  77      
  78      // Incoming sort order?
  79      if($mybb->input['order'])
  80      {
  81          $mybb->input['order'] = strtolower($mybb->input['order']);
  82      }
  83      else
  84      {
  85          $mybb->input['order'] = strtolower($mybb->settings['default_memberlist_order']);
  86      }
  87      
  88      if($mybb->input['order'] == "asc" || (!$mybb->input['order'] && $mybb->input['sort'] == 'username'))
  89      {
  90          $sort_order = "ASC";
  91          $mybb->input['order'] = "asc";
  92      }
  93      else
  94      {
  95          $sort_order = "DESC";
  96          $mybb->input['order'] = "desc";
  97      }
  98      $order_check[$mybb->input['order']] = " checked=\"checked\"";
  99      
 100      // Incoming results per page?
 101      $mybb->input['perpage'] = intval($mybb->input['perpage']);
 102      if($mybb->input['perpage'] > 0 && $mybb->input['perpage'] <= 500)
 103      {
 104          $per_page = $mybb->input['perpage'];
 105      }
 106      else
 107      {
 108          $per_page = $mybb->input['perpage'] = intval($mybb->settings['membersperpage']);    
 109      }
 110      
 111      $search_query = '1=1';
 112      $search_url = "memberlist.php?sort={$mybb->input['sort']}&order={$mybb->input['order']}&perpage={$mybb->input['perpage']}";
 113      
 114      // Limiting results to a certain letter
 115      if($mybb->input['letter'])
 116      {
 117          $letter = chr(ord($mybb->input['letter']));
 118          if($mybb->input['letter'] == -1)
 119          {
 120              $search_query .= " AND u.username NOT REGEXP('[a-zA-Z]')";
 121          }
 122          else if(strlen($letter) == 1)
 123          {
 124              $search_query .= " AND u.username LIKE '".$db->escape_string($letter)."%'";
 125          }
 126          $search_url .= "&letter={$letter}";
 127      }
 128  
 129      // Searching for a matching username
 130      $search_username = htmlspecialchars_uni($mybb->input['username']);
 131      if(trim($mybb->input['username']))
 132      {
 133          $username_like_query = $db->escape_string_like($mybb->input['username']);
 134          // Name begins with
 135          if($mybb->input['username_match'] == "begins")
 136          {
 137              $search_query .= " AND u.username LIKE '".$username_like_query."%'";
 138              $search_url .= "&username_match=begins";
 139          }
 140          // Just contains
 141          else
 142          {
 143              $search_query .= " AND u.username LIKE '%".$username_like_query."%'";
 144          }
 145          $search_url .= "&username=".urlencode($mybb->input['username']);
 146      }
 147  
 148      // Website contains
 149      $search_website = htmlspecialchars_uni($mybb->input['website']);
 150      if(trim($mybb->input['website']))
 151      {
 152          $search_query .= " AND u.website LIKE '%".$db->escape_string_like($mybb->input['website'])."%'";
 153          $search_url .= "&website=".urlencode($mybb->input['website']);
 154      }
 155  
 156      // AIM Identity
 157      if(trim($mybb->input['aim']))
 158      {
 159          $search_query .= " AND u.aim LIKE '%".$db->escape_string_like($mybb->input['aim'])."%'";
 160          $search_url .= "&aim=".urlencode($mybb->input['aim']);
 161      }
 162  
 163      // ICQ Number
 164      if(trim($mybb->input['icq']))
 165      {
 166          $search_query .= " AND u.icq LIKE '%".$db->escape_string_like($mybb->input['icq'])."%'";
 167          $search_url .= "&icq=".urlencode($mybb->input['icq']);
 168      }
 169  
 170      // MSN/Windows Live Messenger address
 171      if(trim($mybb->input['msn']))
 172      {
 173          $search_query .= " AND u.msn LIKE '%".$db->escape_string_like($mybb->input['msn'])."%'";
 174          $search_url .= "&msn=".urlencode($mybb->input['msn']);
 175      }
 176  
 177      // Yahoo! Messenger address
 178      if(trim($mybb->input['yahoo']))
 179      {
 180          $search_query .= " AND u.yahoo LIKE '%".$db->escape_string_like($mybb->input['yahoo'])."%'";
 181          $search_url .= "&yahoo=".urlencode($mybb->input['yahoo']);
 182      }
 183  
 184      $query = $db->simple_select("users u", "COUNT(*) AS users", "{$search_query}");
 185      $num_users = $db->fetch_field($query, "users");
 186  
 187      $page = intval($mybb->input['page']);
 188      if($page && $page > 0)
 189      {
 190          $start = ($page - 1) * $per_page;
 191      }
 192      else
 193      {
 194          $start = 0;
 195          $page = 1;
 196      }
 197      $search_url = htmlspecialchars_uni($search_url);
 198      $multipage = multipage($num_users, $per_page, $page, $search_url);
 199      
 200      // Cache a few things
 201      $usergroups_cache = $cache->read('usergroups');
 202      $query = $db->simple_select("usertitles", "*", "", array('order_by' => 'posts', 'order_dir' => 'DESC'));
 203      while($usertitle = $db->fetch_array($query))
 204      {
 205          $usertitles_cache[$usertitle['posts']] = $usertitle;
 206      }
 207      $query = $db->query("
 208          SELECT u.*, f.*
 209          FROM ".TABLE_PREFIX."users u
 210          LEFT JOIN ".TABLE_PREFIX."userfields f ON (f.ufid=u.uid)
 211          WHERE {$search_query}
 212          ORDER BY {$sort_field} {$sort_order}
 213          LIMIT {$start}, {$per_page}
 214      ");
 215      while($user = $db->fetch_array($query))
 216      {
 217          $plugins->run_hooks("memberlist_user");
 218  
 219          $user['username'] = format_name($user['username'], $user['usergroup'], $user['displaygroup']);
 220  
 221          $user['profilelink'] = build_profile_link($user['username'], $user['uid']);
 222          
 223          // Get the display usergroup
 224          if(!$user['displaygroup'])
 225          {
 226              $user['displaygroup'] = $user['usergroup'];
 227          }
 228          $usergroup = $usergroups_cache[$user['displaygroup']];
 229          
 230          // Work out the usergroup/title stuff
 231          if(!empty($usergroup['image']))
 232          {
 233              if(!empty($mybb->user['language']))
 234              {
 235                  $language = $mybb->user['language'];
 236              }
 237              else
 238              {
 239                  $language = $mybb->settings['bblanguage'];
 240              }
 241              $usergroup['image'] = str_replace("{lang}", $language, $usergroup['image']);
 242              $usergroup['image'] = str_replace("{theme}", $theme['imgdir'], $usergroup['image']);
 243              eval("\$usergroup['groupimage'] = \"".$templates->get("memberlist_user_groupimage")."\";");
 244          }
 245  
 246          $has_custom_title = 0;
 247          if(trim($user['usertitle']) != "")
 248          {
 249              $has_custom_title = 1;
 250          }
 251  
 252          if($usergroup['usertitle'] != "" && !$has_custom_title)
 253          {
 254              $user['usertitle'] = $usergroup['usertitle'];
 255          }
 256          elseif(is_array($usertitles_cache) && !$usergroup['usertitle'])
 257          {
 258              foreach($usertitles_cache as $posts => $titleinfo)
 259              {
 260                  if($user['postnum'] >= $posts)
 261                  {
 262                      if(!$has_custom_title)
 263                      {
 264                          $user['usertitle'] = $titleinfo['title'];
 265                      }
 266                      $user['stars'] = $titleinfo['stars'];
 267                      $user['starimage'] = $titleinfo['starimage'];
 268                      break;
 269                  }
 270              }
 271          }
 272  
 273          if($usergroup['stars'])
 274          {
 275              $user['stars'] = $usergroup['stars'];
 276          }
 277  
 278          if(!$user['starimage'])
 279          {
 280              $user['starimage'] = $usergroup['starimage'];
 281          }
 282          $user['starimage'] = str_replace("{theme}", $theme['imgdir'], $user['starimage']);
 283  
 284          for($i = 0; $i < $user['stars']; ++$i)
 285          {
 286              $user['userstars'] .= "<img src=\"".$user['starimage']."\" border=\"0\" alt=\"*\" />";
 287          }
 288  
 289          if($user['userstars'] && $usergroup['groupimage'])
 290          {
 291              $user['userstars'] = "<br />".$user['userstars'];
 292          }
 293      
 294          // Show avatar
 295          if($user['avatar'] != '')
 296          {
 297              $user['avatar'] = htmlspecialchars_uni($user['avatar']);
 298              $avatar_dimensions = explode("|", $user['avatardimensions']);
 299              
 300              if($avatar_dimensions[0] && $avatar_dimensions[1])
 301              {
 302                  list($max_width, $max_height) = explode("x", my_strtolower($mybb->settings['memberlistmaxavatarsize']));
 303                   if($avatar_dimensions[0] > $max_width || $avatar_dimensions[1] > $max_height)
 304                  {
 305                      require_once  MYBB_ROOT."inc/functions_image.php";
 306                      $scaled_dimensions = scale_image($avatar_dimensions[0], $avatar_dimensions[1], $max_width, $max_height);
 307                      $avatar_width_height = "width=\"{$scaled_dimensions['width']}\" height=\"{$scaled_dimensions['height']}\"";
 308                  }
 309                  else
 310                  {
 311                      $avatar_width_height = "width=\"{$avatar_dimensions[0]}\" height=\"{$avatar_dimensions[1]}\"";    
 312                  }
 313              }
 314              
 315              eval("\$user['avatar'] = \"".$templates->get("memberlist_user_avatar")."\";");
 316          }
 317          else
 318          {
 319              $user['avatar'] = "";
 320          }        
 321          
 322          $user['regdate'] = my_date($mybb->settings['dateformat'], $user['regdate']).", ".my_date($mybb->settings['timeformat'], $user['regdate']);
 323          $user['lastvisit'] = my_date($mybb->settings['dateformat'], $user['lastactive']).", ".my_date($mybb->settings['timeformat'], $user['lastactive']);
 324          $user['postnum'] = my_number_format($user['postnum']);
 325          $alt_bg = alt_trow();
 326          eval("\$users .= \"".$templates->get("memberlist_user")."\";");
 327      }
 328  
 329      // Do we have no results?
 330      if(!$users)
 331      {
 332          $users = "<tr>\n<td colspan=\"6\" align=\"center\" class=\"trow1\">$lang->error_no_members</td>\n</tr>";
 333      }
 334  
 335      $plugins->run_hooks("memberlist_end");
 336  
 337      eval("\$memberlist = \"".$templates->get("memberlist")."\";");
 338      output_page($memberlist);
 339  }
 340  ?>


Generated: Mon Apr 19 19:52:21 2010 Cross-referenced by PHPXref 0.7