| [ Index ] |
PHP Cross Reference of MyBB 1.8.40 |
[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', 'memberlist.php'); 13 14 $templatelist = "memberlist,memberlist_search,memberlist_user,memberlist_user_groupimage,memberlist_user_avatar,memberlist_user_userstar,memberlist_search_contact_field,memberlist_referrals,memberlist_referrals_bit"; 15 $templatelist .= ",multipage,multipage_end,multipage_jump_page,multipage_nextpage,multipage_page,multipage_page_current,multipage_page_link_current,multipage_prevpage,multipage_start,memberlist_error,memberlist_orderarrow"; 16 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, "memberlist.php"); 30 31 if($mybb->usergroup['canviewmemberlist'] == 0) 32 { 33 error_no_permission(); 34 } 35 36 $orderarrow = $sort_selected = array( 37 'regdate' => '', 38 'lastvisit' => '', 39 'reputation' => '', 40 'postnum' => '', 41 'threadnum' => '', 42 'referrals' => '', 43 'username' => '' 44 ); 45 46 // Showing advanced search page? 47 if($mybb->get_input('action') == "search") 48 { 49 $plugins->run_hooks("memberlist_search"); 50 add_breadcrumb($lang->nav_memberlist_search); 51 52 if(isset($mybb->usergroup['usergroup'])) 53 { 54 $usergroup = $mybb->usergroup['usergroup']; 55 } 56 else 57 { 58 $usergroup = ''; 59 } 60 if(isset($mybb->usergroup['additionalgroups'])) 61 { 62 $additionalgroups = $mybb->usergroup['additionalgroups']; 63 } 64 else 65 { 66 $additionalgroups = ''; 67 } 68 69 $referrals_option = ''; 70 if($mybb->settings['usereferrals'] == 1) 71 { 72 eval("\$referrals_option = \"".$templates->get("memberlist_referrals_option")."\";"); 73 } 74 75 eval("\$search_page = \"".$templates->get("memberlist_search")."\";"); 76 output_page($search_page); 77 } 78 else 79 { 80 $colspan = 6; 81 $search_url = ''; 82 83 // Incoming sort field? 84 if(isset($mybb->input['sort'])) 85 { 86 $mybb->input['sort'] = strtolower($mybb->get_input('sort')); 87 } 88 else 89 { 90 $mybb->input['sort'] = $mybb->settings['default_memberlist_sortby']; 91 } 92 93 switch($mybb->input['sort']) 94 { 95 case "regdate": 96 $sort_field = "u.regdate"; 97 break; 98 case "lastvisit": 99 $sort_field = "u.lastactive"; 100 break; 101 case "reputation": 102 $sort_field = "u.reputation"; 103 break; 104 case "postnum": 105 $sort_field = "u.postnum"; 106 break; 107 case "threadnum": 108 $sort_field = "u.threadnum"; 109 break; 110 case "referrals": 111 if($mybb->settings['usereferrals'] == 1) 112 { 113 $sort_field = "u.referrals"; 114 } 115 else 116 { 117 $sort_field = "u.username"; 118 } 119 break; 120 default: 121 $sort_field = "u.username"; 122 $mybb->input['sort'] = 'username'; 123 break; 124 } 125 $sort_selected[$mybb->input['sort']] = " selected=\"selected\""; 126 127 // Incoming sort order? 128 if(isset($mybb->input['order'])) 129 { 130 $mybb->input['order'] = strtolower($mybb->input['order']); 131 } 132 else 133 { 134 $mybb->input['order'] = strtolower($mybb->settings['default_memberlist_order']); 135 } 136 137 $order_check = array('ascending' => '', 'descending' => ''); 138 if($mybb->input['order'] == "ascending" || (!$mybb->input['order'] && $mybb->input['sort'] == 'username')) 139 { 140 $sort_order = "ASC"; 141 $sortordernow = "ascending"; 142 $oppsort = $lang->desc; 143 $oppsortnext = "descending"; 144 $mybb->input['order'] = "ascending"; 145 } 146 else 147 { 148 $sort_order = "DESC"; 149 $sortordernow = "descending"; 150 $oppsort = $lang->asc; 151 $oppsortnext = "ascending"; 152 $mybb->input['order'] = "descending"; 153 } 154 $order_check[$mybb->input['order']] = " checked=\"checked\""; 155 156 if($sort_field == 'u.lastactive' && $mybb->usergroup['canviewwolinvis'] == 0) 157 { 158 $sort_field = "u.invisible ASC, CASE WHEN u.invisible = 1 THEN u.regdate ELSE u.lastactive END"; 159 } 160 161 // Incoming results per page? 162 $mybb->input['perpage'] = $mybb->get_input('perpage', MyBB::INPUT_INT); 163 if($mybb->input['perpage'] > 0 && $mybb->input['perpage'] <= 500) 164 { 165 $per_page = $mybb->input['perpage']; 166 } 167 else if($mybb->settings['membersperpage']) 168 { 169 $per_page = $mybb->input['perpage'] = (int)$mybb->settings['membersperpage']; 170 } 171 else 172 { 173 $per_page = $mybb->input['perpage'] = 20; 174 } 175 176 $search_query = '1=1'; 177 $search_url = ""; 178 179 switch($db->type) 180 { 181 // PostgreSQL's LIKE is case sensitive 182 case "pgsql": 183 $like = "ILIKE"; 184 break; 185 default: 186 $like = "LIKE"; 187 } 188 189 // Limiting results to a certain letter 190 if(isset($mybb->input['letter'])) 191 { 192 $letter = chr(ord($mybb->get_input('letter'))); 193 if($mybb->input['letter'] == -1) 194 { 195 $search_query .= " AND u.username NOT REGEXP('[a-zA-Z]')"; 196 } 197 else if(strlen($letter) == 1) 198 { 199 $search_query .= " AND u.username {$like} '".$db->escape_string_like($letter)."%'"; 200 } 201 $search_url .= "&letter={$letter}"; 202 } 203 204 // Searching for a matching username 205 $search_username = htmlspecialchars_uni(trim($mybb->get_input('username'))); 206 if($search_username != '') 207 { 208 $username_like_query = $db->escape_string_like($search_username); 209 210 // Name begins with 211 if($mybb->get_input('username_match') == "begins") 212 { 213 $search_query .= " AND u.username {$like} '".$username_like_query."%'"; 214 $search_url .= "&username_match=begins"; 215 } 216 // Just contains 217 else if($mybb->get_input('username_match') == "contains") 218 { 219 $search_query .= " AND u.username {$like} '%".$username_like_query."%'"; 220 $search_url .= "&username_match=contains"; 221 } 222 // Exact 223 else 224 { 225 $username_esc = $db->escape_string(my_strtolower($search_username)); 226 $search_query .= " AND LOWER(u.username)='{$username_esc}'"; 227 } 228 229 $search_url .= "&username=".urlencode($search_username); 230 } 231 232 // Website contains 233 $mybb->input['website'] = trim($mybb->get_input('website')); 234 $search_website = htmlspecialchars_uni($mybb->input['website']); 235 if(trim($mybb->input['website'])) 236 { 237 $search_query .= " AND u.website {$like} '%".$db->escape_string_like($mybb->input['website'])."%'"; 238 $search_url .= "&website=".urlencode($mybb->input['website']); 239 } 240 241 $usergroups_cache = $cache->read('usergroups'); 242 243 $group = array(); 244 foreach($usergroups_cache as $gid => $groupcache) 245 { 246 if($groupcache['showmemberlist'] == 0) 247 { 248 $group[] = (int)$gid; 249 } 250 } 251 252 if(is_array($group) && !empty($group)) 253 { 254 $hiddengroup = implode(',', $group); 255 256 $search_query .= " AND u.usergroup NOT IN ({$hiddengroup})"; 257 258 foreach($group as $hidegid) 259 { 260 switch($db->type) 261 { 262 case "pgsql": 263 case "sqlite": 264 $search_query .= " AND ','||u.additionalgroups||',' NOT LIKE '%,{$hidegid},%'"; 265 break; 266 default: 267 $search_query .= " AND CONCAT(',',u.additionalgroups,',') NOT LIKE '%,{$hidegid},%'"; 268 break; 269 } 270 } 271 } 272 273 $sorturl = htmlspecialchars_uni("memberlist.php?perpage={$mybb->input['perpage']}{$search_url}"); 274 $search_url = htmlspecialchars_uni("memberlist.php?sort={$mybb->input['sort']}&order={$mybb->input['order']}&perpage={$mybb->input['perpage']}{$search_url}"); 275 276 $plugins->run_hooks('memberlist_intermediate'); 277 278 $query = $db->simple_select("users u", "COUNT(*) AS users", "{$search_query}"); 279 $num_users = $db->fetch_field($query, "users"); 280 281 $page = $mybb->get_input('page', MyBB::INPUT_INT); 282 if($page && $page > 0) 283 { 284 $start = ($page - 1) * $per_page; 285 $pages = ceil($num_users / $per_page); 286 if($page > $pages) 287 { 288 $start = 0; 289 $page = 1; 290 } 291 } 292 else 293 { 294 $start = 0; 295 $page = 1; 296 } 297 298 $sort = htmlspecialchars_uni($mybb->input['sort']); 299 eval("\$orderarrow['{$sort}'] = \"".$templates->get("memberlist_orderarrow")."\";"); 300 301 $referral_header = ''; 302 303 // Referral? 304 if($mybb->settings['usereferrals'] == 1) 305 { 306 $colspan = 7; 307 eval("\$referral_header = \"".$templates->get("memberlist_referrals")."\";"); 308 } 309 310 $multipage = multipage($num_users, $per_page, $page, $search_url); 311 312 // Cache a few things 313 $usertitles = $cache->read('usertitles'); 314 $usertitles_cache = array(); 315 foreach($usertitles as $usertitle) 316 { 317 $usertitles_cache[$usertitle['posts']] = $usertitle; 318 } 319 $users = ''; 320 $query = $db->query(" 321 SELECT u.*, f.* 322 FROM ".TABLE_PREFIX."users u 323 LEFT JOIN ".TABLE_PREFIX."userfields f ON (f.ufid=u.uid) 324 WHERE {$search_query} 325 ORDER BY {$sort_field} {$sort_order} 326 LIMIT {$start}, {$per_page} 327 "); 328 while($user = $db->fetch_array($query)) 329 { 330 $user = $plugins->run_hooks("memberlist_user", $user); 331 332 $alt_bg = alt_trow(); 333 334 $user['username'] = format_name(htmlspecialchars_uni($user['username']), $user['usergroup'], $user['displaygroup']); 335 336 $user['profilelink'] = build_profile_link($user['username'], $user['uid']); 337 338 // Get the display usergroup 339 if($user['usergroup']) 340 { 341 $usergroup = usergroup_permissions($user['usergroup']); 342 } 343 else 344 { 345 $usergroup = usergroup_permissions(1); 346 } 347 348 $displaygroupfields = array("title", "description", "namestyle", "usertitle", "stars", "starimage", "image"); 349 350 if(!$user['displaygroup']) 351 { 352 $user['displaygroup'] = $user['usergroup']; 353 } 354 355 $display_group = usergroup_displaygroup($user['displaygroup']); 356 if(is_array($display_group)) 357 { 358 $usergroup = array_merge($usergroup, $display_group); 359 } 360 361 $referral_bit = ''; 362 363 // Build referral? 364 if($mybb->settings['usereferrals'] == 1) 365 { 366 $referral_count = (int) $user['referrals']; 367 if($referral_count > 0) 368 { 369 $uid = (int) $user['uid']; 370 eval("\$user['referrals'] = \"".$templates->get('member_referrals_link')."\";"); 371 } 372 373 eval("\$referral_bit = \"".$templates->get("memberlist_referrals_bit")."\";"); 374 } 375 376 $usergroup['groupimage'] = ''; 377 // Work out the usergroup/title stuff 378 if(!empty($usergroup['image'])) 379 { 380 if(!empty($mybb->user['language'])) 381 { 382 $language = $mybb->user['language']; 383 } 384 else 385 { 386 $language = $mybb->settings['bblanguage']; 387 } 388 $usergroup['image'] = str_replace("{lang}", $language, $usergroup['image']); 389 $usergroup['image'] = str_replace("{theme}", $theme['imgdir'], $usergroup['image']); 390 eval("\$usergroup['groupimage'] = \"".$templates->get("memberlist_user_groupimage")."\";"); 391 } 392 393 $has_custom_title = 0; 394 if(trim($user['usertitle']) != "") 395 { 396 $has_custom_title = 1; 397 } 398 399 if($usergroup['usertitle'] != "" && !$has_custom_title) 400 { 401 $user['usertitle'] = $usergroup['usertitle']; 402 } 403 elseif(is_array($usertitles_cache) && !$usergroup['usertitle']) 404 { 405 foreach($usertitles_cache as $posts => $titleinfo) 406 { 407 if($user['postnum'] >= $posts) 408 { 409 if(!$has_custom_title) 410 { 411 $user['usertitle'] = $titleinfo['title']; 412 } 413 $user['stars'] = $titleinfo['stars']; 414 $user['starimage'] = $titleinfo['starimage']; 415 break; 416 } 417 } 418 } 419 420 $user['usertitle'] = htmlspecialchars_uni($user['usertitle']); 421 422 if(!empty($usergroup['stars'])) 423 { 424 $user['stars'] = $usergroup['stars']; 425 } 426 427 if(empty($user['starimage'])) 428 { 429 $user['starimage'] = $usergroup['starimage']; 430 } 431 432 $user['userstars'] = ''; 433 if(!empty($user['starimage']) && isset($user['stars'])) 434 { 435 // Only display stars if we have an image to use... 436 $starimage = str_replace("{theme}", $theme['imgdir'], $user['starimage']); 437 438 for($i = 0; $i < $user['stars']; ++$i) 439 { 440 eval("\$user['userstars'] .= \"".$templates->get("memberlist_user_userstar", 1, 0)."\";"); 441 } 442 } 443 444 if($user['userstars'] && $usergroup['groupimage']) 445 { 446 $user['userstars'] = "<br />".$user['userstars']; 447 } 448 449 // Show avatar 450 $useravatar = format_avatar($user['avatar'], $user['avatardimensions'], my_strtolower($mybb->settings['memberlistmaxavatarsize'])); 451 eval("\$user['avatar'] = \"".$templates->get("memberlist_user_avatar")."\";"); 452 453 $last_seen = max(array($user['lastactive'], $user['lastvisit'])); 454 if(empty($last_seen)) 455 { 456 $user['lastvisit'] = $lang->lastvisit_never; 457 } 458 else 459 { 460 // We have some stamp here 461 if($user['invisible'] == 1 && $mybb->usergroup['canviewwolinvis'] != 1 && $user['uid'] != $mybb->user['uid']) 462 { 463 $user['lastvisit'] = $lang->lastvisit_hidden; 464 } 465 else 466 { 467 $user['lastvisit'] = my_date('relative', $last_seen); 468 } 469 } 470 471 $user['regdate'] = my_date('relative', $user['regdate']); 472 $user['postnum'] = my_number_format($user['postnum']); 473 $user['threadnum'] = my_number_format($user['threadnum']); 474 eval("\$users .= \"".$templates->get("memberlist_user")."\";"); 475 } 476 477 // Do we have no results? 478 if(!$users) 479 { 480 eval("\$users = \"".$templates->get("memberlist_error")."\";"); 481 } 482 483 $referrals_option = ''; 484 if($mybb->settings['usereferrals'] == 1) 485 { 486 eval("\$referrals_option = \"".$templates->get("memberlist_referrals_option")."\";"); 487 } 488 489 $plugins->run_hooks("memberlist_end"); 490 491 eval("\$memberlist = \"".$templates->get("memberlist")."\";"); 492 output_page($memberlist); 493 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| 2005 - 2021 © MyBB.de | Alle Rechte vorbehalten! | Sponsor: netcup | Cross-referenced by PHPXref |