1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:
595:
596:
597:
598:
599:
600:
601:
602:
603:
604:
605:
606:
607:
608:
609:
610:
611:
612:
613:
614:
615:
616:
617:
618:
619:
620:
621:
622:
623:
624:
625:
626:
627:
628:
629:
630:
631:
632:
633:
634:
635:
636:
637:
638:
639:
640:
641:
642:
643:
644:
645:
646:
647:
648:
649:
650:
651:
652:
653:
654:
655:
656:
657:
658:
659:
660:
661:
662:
663:
664:
665:
666:
667:
668:
669:
670:
671:
672:
673:
674:
675:
676:
|
<?php
// ************************************************************************************//
// * WoltLab Burning Board 2
// ************************************************************************************//
// * Copyright (c) 2001-2004 WoltLab GmbH
// * Web http://www.woltlab.de/
// * License http://www.woltlab.de/products/burning_board/license_en.php
// * http://www.woltlab.de/products/burning_board/license.php
// ************************************************************************************//
// * WoltLab Burning Board 2 is NOT free software.
// * You may not redistribute this package or any of it's files.
// ************************************************************************************//
// * $Date: 2005-02-07 16:18:22 +0100 (Mon, 07 Feb 2005) $
// * $Author: Burntime $
// * $Rev: 1549 $
// ************************************************************************************//
$filename = 'memberslist.php';
require('./global.php');
if ($wbbuserdata['can_view_mblist'] == 0) access_error();
require('./acp/lib/class_parse.php');
$lang->load('MEMBERS');
/**
* cache custom profile fields
*
* @return void
*/
function cacheProfilefields() {
global $profilefieldcache, $db, $n;
$profilefieldcache = array();
$result = $db->unbuffered_query("SELECT * FROM bb".$n."_profilefields");
while ($row = $db->fetch_array($result)) $profilefieldcache[$row['profilefieldid']] = $row;
}
/**
* parse members bit
*
* @param string userid
*
* @return string membersbit
*/
function makeMembersbit($userids, $link) {
global $a_show, $select, $letter, $sortby, $order, $colspan, $profilefieldcache, $fieldheader, $db, $n, $style, $tpl, $lang, $wbbuserdata, $showavatar, $allowflashavatar, $session, $SID_ARG_1ST, $SID_ARG_2ND, $SID_ARG_2ND_UN;
$read_profilefields = 0;
$read_avatars = 0;
$read_ranks = 0;
$read_useronlinemarking = 0;
$letter_enc = urlencode($letter);
reset($a_show);
while (list($key, $val) = each($a_show)) {
$fieldname = $lang->get('LANG_MEMBERS_MBL_'.wbb_strtoupper($val));
if ($val == 'avatar') $read_avatars = 1;
elseif ($val == 'ranktitle' || $val == 'rankimage') $read_ranks = 1;
elseif (strstr($val, 'profilefield')) {
$read_profilefields = 1;
if ($profilefieldcache == 0) cacheProfilefields();
if ($profilefieldcache[wbb_substr($val, 12)]['hidden'] == 1 && $wbbuserdata['a_can_view_hidden'] != 1) continue;
$fieldname = getlangvar($profilefieldcache[wbb_substr($val, 12)]['title'], $lang);
}
$searchname = getSearchFieldname($val);
$colspan++;
eval("\$fieldheader .= \" ".$tpl->get("memberslist_fieldheader")."\";");
}
$result = $db->unbuffered_query("SELECT u.*
".(($read_profilefields == 1) ? (", uf.*") : (""))."
".(($read_avatars == 0) ? (", a.avatarid, a.avatarextension, a.width, a.height") : (""))."
".(($read_ranks == 1) ? (", r.ranktitle, r.rankimages") : (""))."
".$select."
FROM bb".$n."_users u
".(($read_profilefields == 1) ? (" LEFT JOIN bb".$n."_userfields uf USING (userid)") : (""))."
".(($read_avatars == 0) ? (" LEFT JOIN bb".$n."_avatars a ON (u.avatarid=a.avatarid)") : (""))."
".(($read_ranks == 1) ? (" LEFT JOIN bb".$n."_ranks r ON (u.rankid=r.rankid)") : (""))."
WHERE u.userid IN (0$userids)
ORDER BY $sortby $order");
$count = 0;
$membersbit = '';
while ($members = $db->fetch_array($result)) {
reset($a_show);
$fields = "";
$count = 1;
while (list($key, $val) = each($a_show)) {
$tdclass = getone($count, 'tablea', 'tableb');
$username = $members['username'];
if (strstr($val, 'profilefield')) {
$profilefield = $profilefieldcache[wbb_substr($val, 12)];
if (($profilefield['hidden'] == 1 && $wbbuserdata['a_can_view_hidden'] != 1)) continue;
$fieldcontent = $members["field".$profilefield['profilefieldid']];
if ($fieldcontent && $fieldcontent != "0000-00-00") {
if ($profilefield['fieldtype'] == "multiselect") $fieldcontent = str_replace("\n", "; ", $fieldcontent);
elseif ($profilefield['fieldtype'] == "date") {
$row_datearray = explode("-", $fieldcontent);
if ($row_datearray[0] == "0000") $fieldcontent = $row_datearray[2].".".$row_datearray[1].".";
else $fieldcontent = $row_datearray[2].".".$row_datearray[1].".".$row_datearray[0];
}
$fieldcontent = htmlconverter(textwrap($fieldcontent, 30));
eval("\$fields .= \"".$tpl->get("memberslist_userfields")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
}
else {
switch ($val) {
case 'username':
$useravatar = '';
if ($members['avatarid'] && $showavatar == 1 && $wbbuserdata['showavatars'] == 1) {
$avatarname = "images/avatars/avatar-".$members['avatarid'].".".$members['avatarextension'];
$avatarwidth = $members['width'];
$avatarheight = $members['height'];
if ($members['avatarextension'] == "swf" && $allowflashavatar == 1) {
eval("\$useravatar = \"".$tpl->get("avatar_flash")."\";");
}
else if ($members['avatarextension'] != "swf") {
eval("\$useravatar = \"".$tpl->get("avatar_image")."\";");
}
}
$members['username'] = htmlconverter($members['username']);
eval("\$fields .= \" ".$tpl->get("memberslist_username")."\";");
break;
case 'email':
$LANG_MEMBERS_SENDEMAIL = $lang->get("LANG_MEMBERS_SENDEMAIL", array('$username' => $username));
if ($members['showemail'] == 1) {
$members['email'] = getASCIICodeString($members['email']);
eval("\$fields .= \" ".$tpl->get("memberslist_email")."\";");
}
else if ($members['usercanemail'] == 1) eval("\$fields .= \" ".$tpl->get("memberslist_formmail")."\";");
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
break;
case 'homepage':
if ($members['homepage']) {
$members['homepage'] = htmlconverter($members['homepage']);
$LANG_MEMBERS_HOMEPAGE = $lang->get("LANG_MEMBERS_HOMEPAGE", array('$username' => $username));
eval("\$fields .= \" ".$tpl->get("memberslist_homepage")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
break;
case 'pm':
if ($members['receivepm'] && $wbbuserdata['can_use_pms'] == 1) {
$LANG_MEMBERS_PM = $lang->get("LANG_MEMBERS_PM", array('$username' => $username));
eval("\$fields .= \" ".$tpl->get("memberslist_pm")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
break;
case 'search':
$LANG_MEMBERS_SEARCH = $lang->get("LANG_MEMBERS_SEARCH", array('$username' => $username));
eval("\$fields .= \" ".$tpl->get("memberslist_search")."\";");
break;
case 'userposts':
if ($members['userposts'] >= 1000) $userposts = number_format($members['userposts'], 0, "", $lang->get("LANG_GLOBAL_THOUSANDS_SEP"));
else $userposts = $members['userposts'];
eval("\$fields .= \" ".$tpl->get("memberslist_userposts")."\";");
break;
case 'postsperday':
$regdays = (time() - $members['regdate']) / 86400;
if ($regdays < 1) $postperday = $members['userposts'];
else $postperday = $members['userposts'] / $regdays;
$postperday = number_format($postperday, 2, $lang->get("LANG_GLOBAL_DEC_POINT"), $lang->get("LANG_GLOBAL_THOUSANDS_SEP"));
$LANG_MEMBERS_PROFILE_POSTSPERDAY = $lang->get("LANG_MEMBERS_PROFILE_POSTSPERDAY", array('$postperday' => $postperday));
eval("\$fields .= \" ".$tpl->get("memberslist_postsperday")."\";");
break;
case 'userlevel':
$userlevel = userlevel($members['userposts'], $members['regdate']);
eval("\$fields .= \" ".$tpl->get("memberslist_userlevel")."\";");
break;
case 'avatar':
if ($members['avatarid'] && $showavatar == 1 && $wbbuserdata['showavatars'] == 1) {
$avatarname = "images/avatars/avatar-".$members['avatarid'].".".$members['avatarextension'];
$avatarwidth = $members['width'];
$avatarheight = $members['height'];
if ($members['avatarextension'] == "swf" && $allowflashavatar == 1) {
eval("\$useravatar = \"".$tpl->get("avatar_flash")."\";");
eval("\$fields .= \" ".$tpl->get("memberslist_avatar")."\";");
}
else if ($members['avatarextension'] != "swf") {
eval("\$useravatar = \"".$tpl->get("avatar_image")."\";");
eval("\$fields .= \" ".$tpl->get("memberslist_avatar")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
break;
case 'ranktitle':
if ($members['title']) $members['ranktitle'] = htmlconverter($members['title']);
else $members['ranktitle'] = getlangvar($members['ranktitle'], $lang);
eval("\$fields .= \" ".$tpl->get("memberslist_ranktitle")."\";");
break;
case 'rankimage':
$rankimages = formatRI($members['rankimages']);
eval("\$fields .= \" ".$tpl->get("memberslist_rankimage")."\";");
break;
case 'usertext':
if ($members['usertext']) {
$members['usertext'] = htmlconverter(textwrap($members['usertext'], 40));
eval("\$fields .= \" ".$tpl->get("memberslist_usertext")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
break;
case 'icq':
if ($members['icq']) {
$LANG_MEMBERS_ICQ = $lang->get("LANG_MEMBERS_ICQ", array('$username' => $username));
eval("\$fields .= \" ".$tpl->get("memberslist_icq")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
break;
case 'aim':
if ($members['aim']) {
$members['aim'] = htmlconverter($members['aim']);
$aim = $members['aim'];
$LANG_MEMBERS_AIM = $lang->get("LANG_MEMBERS_AIM", array('$username' => $username, '$aim' => $aim));
eval("\$fields .= \" ".$tpl->get("memberslist_aim")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
break;
case 'yim':
if ($members['yim']) {
$members['yim'] = htmlconverter($members['yim']);
$yim = $members['yim'];
$LANG_MEMBERS_YIM = $lang->get("LANG_MEMBERS_YIM", array('$username' => $username, '$yim' => $yim));
eval("\$fields .= \" ".$tpl->get("memberslist_yim")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
break;
case 'msn':
if ($members['msn']) {
$members['msn'] = htmlconverter($members['msn']);
$LANG_MEMBERS_MSN = $lang->get("LANG_MEMBERS_MSN", array('$username' => $username));
eval("\$fields .= \" ".$tpl->get("memberslist_msn")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
break;
case 'lastactivity':
if ($members['invisible'] == 0 || $wbbuserdata['a_can_use_acp'] == 1) {
$la_date = formatdate($wbbuserdata['dateformat'], $members['lastactivity'], 1);
$la_time = formatdate($wbbuserdata['timeformat'], $members['lastactivity']);
eval("\$fields .= \" ".$tpl->get("memberslist_lastactivity")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
break;
case 'birthday':
if ($members['birthday'] && $members['birthday'] != "0000-00-00") {
$birthday_array = explode("-", $members['birthday']);
if ($birthday_array[0] == "0000") $birthday = $birthday_array[2].".".$birthday_array[1].".";
else $birthday = $birthday_array[2].".".$birthday_array[1].".".$birthday_array[0];
eval("\$fields .= \" ".$tpl->get("memberslist_birthday")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
break;
case 'gender':
if ($members['gender']) {
if ($members['gender'] == 1) $gender = $lang->items['LANG_MEMBERS_PROFILE_MALE'];
else $gender = $lang->items['LANG_MEMBERS_PROFILE_FEMALE'];
eval("\$fields .= \" ".$tpl->get("memberslist_gender")."\";");
}
else eval("\$fields .= \" ".$tpl->get("memberslist_none")."\";");
break;
case 'buddy':
$LANG_MEMBERS_BUDDY = $lang->get("LANG_MEMBERS_BUDDY", array('$username' => $username));
eval("\$fields .= \" ".$tpl->get("memberslist_buddy")."\";");
break;
case 'regdate':
$regdate = formatdate($wbbuserdata['dateformat'], $members['regdate']);
eval("\$fields .= \" ".$tpl->get("memberslist_regdate")."\";");
break;
}
}
$count++;
}
eval("\$membersbit .= \" ".$tpl->get("memberslist_membersbit")."\";");
}
return $membersbit;
}
if (isset($_REQUEST['action'])) $action = $_REQUEST['action'];
else $action = '';
$profilefieldcache = 0;
$a_show = explode("|", $memberslistoptions_show);
if (isset($_REQUEST['sortby'])) $_REQUEST['sortby'] = $_REQUEST['sortby'];
else $_REQUEST['sortby'] = '';
$sortby = '';
while (list($key, $val) = each($a_show)) {
$fieldname = getSearchFieldname($val);
if ($fieldname != '' && $fieldname == $_REQUEST['sortby']) {
$sortby = $_REQUEST['sortby'];
break;
}
}
if ($sortby == '') $sortby = $default_memberslist_sortfield;
if (isset($_REQUEST['order'])) $order = $_REQUEST['order'];
else $order = '';
switch ($order) {
case 'ASC': break;
case 'DESC': break;
default: $order = $default_memberslist_sortorder;
}
$sel_order[$order] = " selected=\"selected\" ";
// members search
if ($action == "search") {
$colspan = 2;
$membersbit = '';
if (isset($_REQUEST['send'])) {
$where = '';
if (isset($_REQUEST['limit'])) {
$limit = intval($_REQUEST['limit']);
if ($limit <= 0) $limit = $membersperpage;
if ($limit > 500) $limit = 500;
}
else $limit = $membersperpage;
$link = "memberslist.php?action=search&send=send&limit=$limit&".$SID_ARG_2ND."&";
if (isset($_REQUEST['username']) && $_REQUEST['username']) {
add2where("username LIKE '%".addslashes($_REQUEST['username'])."%'");
linkGenerator("username", $_REQUEST['username']);
}
if (isset($_REQUEST['email']) && $_REQUEST['email']) {
add2where("showemail=1 AND email LIKE '%".addslashes($_REQUEST['email'])."%'");
linkGenerator("email", $_REQUEST['email']);
}
if (isset($_REQUEST['title']) && $_REQUEST['title']) {
add2where("title LIKE '%".addslashes($_REQUEST['title'])."%'");
linkGenerator("title", $_REQUEST['title']);
}
if (isset($_REQUEST['usertext']) && $_REQUEST['usertext']) {
add2where("usertext LIKE '%".addslashes($_REQUEST['usertext'])."%'");
linkGenerator("usertext", $_REQUEST['usertext']);
}
if (isset($_REQUEST['signature']) && $_REQUEST['signature']) {
linkGenerator("signature", $_REQUEST['signature']);
add2where("signature LIKE '%".addslashes($_REQUEST['signature'])."%'");
}
if (isset($_REQUEST['homepage']) && $_REQUEST['homepage']) {
add2where("homepage LIKE '%".addslashes($_REQUEST['homepage'])."%'");
linkGenerator("homepage", $_REQUEST['homepage']);
}
if (isset($_REQUEST['icq']) && $_REQUEST['icq']) {
add2where("icq LIKE '%".intval($_REQUEST['icq'])."%'");
linkGenerator("icq", $_REQUEST['icq']);
}
if (isset($_REQUEST['aim']) && $_REQUEST['aim']) {
add2where("aim LIKE '%".addslashes($_REQUEST['aim'])."%'");
linkGenerator("aim", $_REQUEST['aim']);
}
if (isset($_REQUEST['yim']) && $_REQUEST['yim']) {
add2where("yim LIKE '%".addslashes($_REQUEST['yim'])."%'");
linkGenerator("yim", $_REQUEST['yim']);
}
if (isset($_REQUEST['msn']) && $_REQUEST['msn']) {
add2where("msn LIKE '%".addslashes($_REQUEST['msn'])."%'");
linkGenerator("msn", $_REQUEST['msn']);
}
if (isset($_REQUEST['userposts_morethen']) && $_REQUEST['userposts_morethen'] != '') {
add2where("userposts > '".intval($_REQUEST['userposts_morethen'])."'");
linkGenerator("userposts_morethen", $_REQUEST['userposts_morethen']);
}
if (isset($_REQUEST['userposts_lessthen']) && $_REQUEST['userposts_lessthen'] != '') {
add2where("userposts < '".intval($_REQUEST['userposts_lessthen'])."'");
linkGenerator("userposts_lessthen", $_REQUEST['userposts_lessthen']);
}
if (isset($_REQUEST['gender']) && $_REQUEST['gender'] != 0) {
add2where("gender = '".intval($_REQUEST['gender'])."'");
linkGenerator("gender", $_REQUEST['gender']);
}
$userfields = 0;
$dayfield = $_REQUEST['dayfield'];
$monthfield = $_REQUEST['monthfield'];
$yearfield = $_REQUEST['yearfield'];
$result_userfields = $db->unbuffered_query("SELECT profilefieldid,fieldtype FROM bb".$n."_profilefields WHERE hidden = 0 ORDER BY profilefieldid ASC");
while ($row = $db->fetch_array($result_userfields)) {
switch ($row['fieldtype']) {
case 'text':
if (isset($_REQUEST['profilefield'][$row['profilefieldid']]) && $_REQUEST['profilefield'][$row['profilefieldid']]) {
$userfields = 1;
add2where("field".$row['profilefieldid']." LIKE '%".addslashes($_REQUEST['profilefield'][$row['profilefieldid']])."%'");
linkGenerator("profilefield[".$row['profilefieldid']."]", $_REQUEST['profilefield'][$row['profilefieldid']]);
}
break;
case 'checkbox':
if (isset($_REQUEST['profilefield'][$row['profilefieldid']]) && $_REQUEST['profilefield'][$row['profilefieldid']]) {
$userfields = 1;
add2where("field".$row['profilefieldid']."='".addslashes($_REQUEST['profilefield'][$row['profilefieldid']])."'");
linkGenerator("profilefield[".$row['profilefieldid']."]", $_REQUEST['profilefield'][$row['profilefieldid']]);
}
break;
case 'select':
if (isset($_REQUEST['profilefield'][$row['profilefieldid']]) && $_REQUEST['profilefield'][$row['profilefieldid']]) {
$userfields = 1;
add2where("field".$row['profilefieldid']."='".addslashes($_REQUEST['profilefield'][$row['profilefieldid']])."'");
linkGenerator("profilefield[".$row['profilefieldid']."]", $_REQUEST['profilefield'][$row['profilefieldid']]);
}
break;
case 'multiselect':
if (isset($_REQUEST['profilefield'][$row['profilefieldid']]) && is_array($_REQUEST['profilefield'][$row['profilefieldid']]) && count($_REQUEST['profilefield'][$row['profilefieldid']])) {
$userfields = 1;
$subwhere = '';
foreach ($_REQUEST['profilefield'][$row['profilefieldid']] as $val) {
if ($subwhere != '') $subwhere .= ' OR ';
$subwhere .= "field".$row['profilefieldid']." like '%".addslashes($val)."%'";
linkGenerator("profilefield[".$row['profilefieldid']."][]", $val);
}
if ($subwhere != '') add2where("(".$subwhere.")");
}
break;
case 'date':
if ($dayfield[$row['profilefieldid']] && $monthfield[$row['profilefieldid']]) {
$userfields = 1;
$datefield = ((wbb_strlen($yearfield[$row['profilefieldid']]) == 4) ? ($yearfield[$row['profilefieldid']]) : (((wbb_strlen($yearfield[$row['profilefieldid']]) == 2) ? ("19".$yearfield[$row['profilefieldid']]) : ("0000"))))."-".(($monthfield[$row['profilefieldid']] < 10) ? ("0".$monthfield[$row['profilefieldid']]) : ($monthfield[$row['profilefieldid']]))."-".(($dayfield[$row['profilefieldid']] < 10) ? ("0".$dayfield[$row['profilefieldid']]) : ($dayfield[$row['profilefieldid']]));
add2where("field".$row['profilefieldid']."='".$datefield."'");
linkGenerator("yearfield[".$row['profilefieldid']."]", $yearfield[$row['profilefieldid']]);
linkGenerator("monthfield[".$row['profilefieldid']."]", $monthfield[$row['profilefieldid']]);
linkGenerator("dayfield[".$row['profilefieldid']."]", $dayfield[$row['profilefieldid']]);
}
break;
}
}
$userids = '';
$result = $db->query("SELECT u.userid FROM bb".$n."_users u".(($userfields == 1) ? (" LEFT JOIN bb".$n."_userfields USING (userid)") : ("")).(($where) ? (" WHERE $where") : ("")));
$memberscount = $db->num_rows($result);
if ($memberscount == 0) error($lang->items['LANG_GLOBAL_ERROR_SEARCHNORESULT']);
while ($row = $db->fetch_array($result)) $userids .= ",".$row['userid'];
if (isset($_REQUEST['page'])) {
$page = intval($_REQUEST['page']);
if ($page < 1) $page = 1;
}
else $page = 1;
$linkpages = $link . "order=$order&sortby=$sortby";
$pages = ceil($memberscount / $limit);
if ($page > $pages) $page = 1;
if ($pages > 1) $pagelink = makePageLink($linkpages, $page, $pages, $showpagelinks - 1);
$select = '';
$join = '';
if (strstr($sortby, "field")) $join .= " LEFT JOIN bb".$n."_userfields uf USING(userid)";
if ($sortby == "postsperday") $select .= ", IF((UNIX_TIMESTAMP()-regdate)/86400>1,userposts/((UNIX_TIMESTAMP()-regdate)/86400),userposts) AS postsperday";
if ($sortby == "userlevel") $select .= ", userposts*((UNIX_TIMESTAMP()-regdate)/86400) AS userlevel";
if ($sortby == "ranktitle") {
$select .= ", IF(title<>'',title,r.ranktitle) AS ranktitle";
$join .= " LEFT JOIN bb".$n."_ranks r ON(u.rankid=r.rankid)";
}
$result = $db->unbuffered_query("SELECT u.userid".$select." FROM bb".$n."_users u".$join." WHERE u.userid IN (0$userids) ORDER BY $sortby $order", 0, $limit, $limit * ($page - 1));
$userids = '';
while ($row = $db->fetch_array($result)) $userids .= ",".$row['userid'];
$fieldheader = '';
$colspan = 0;
$membersbit = makeMembersbit($userids, $link);
if ($membersbit == '') error($lang->items['LANG_GLOBAL_ERROR_SEARCHNORESULT']);
}
else {
$morebit = '';
$count = 0;
$result = $db->unbuffered_query("SELECT profilefieldid, title, fieldtype, fieldoptions FROM bb".$n."_profilefields WHERE hidden = 0 ORDER BY fieldorder ASC");
while ($row = $db->fetch_array($result)) {
$field_options = '';
switch ($row['fieldtype']) {
case 'select':
$row_options = explode("\n", wbb_trim($row['fieldoptions']));
$field_options = "<option value=\"\"></option>\n";
foreach ($row_options as $option) $field_options .= makeoption(wbb_trim($option), wbb_trim($option), "");
break;
case 'multiselect':
$row_options = explode("\n", wbb_trim($row['fieldoptions']));
$field_options = '';
foreach ($row_options as $option) $field_options .= makeoption(wbb_trim($option), wbb_trim($option), "");
break;
case 'date':
$dayfield_value = "<option value=\"\"></option>\n";
$monthfield_value = "<option value=\"\"></option>\n";
for ($i = 1; $i <= 31; $i++) $dayfield_value .= makeoption($i, $i, "");
for ($i = 1; $i <= 12; $i++) $monthfield_value .= makeoption($i, getmonth($i), "");
$yearfield_value = '';
break;
}
$searchfield = getlangvar($row['title'], $lang);
if ($row['fieldtype'] == "multiselect" || $row['fieldtype'] == "text") {
$LANG_SEARCHFIELD_PROFILEFIELD = $lang->get("LANG_MEMBERS_MBS_SEARCHFIELD_CONTAINS", array('$searchfield' => $searchfield));
}
else {
$LANG_SEARCHFIELD_PROFILEFIELD = $lang->get("LANG_MEMBERS_MBS_SEARCHFIELD_IS", array('$searchfield' => $searchfield));
}
$rowclass = getone($count++, "tablea", "tableb");
eval("\$morebit .= \"".$tpl->get("memberssearch_morebit_".$row['fieldtype'])."\";");
}
$fields_contains = array("USERNAME", "EMAIL", "TITLE", "USERTEXT", "SIGNATURE", "HOMEPAGE", "ICQ", "AIM", "YIM", "MSN");
for ($i = 0; $i < count($fields_contains); $i++) {
$searchfield = $lang->items['LANG_MEMBERS_MBL_'.$fields_contains[$i]];
$name = "LANG_SEARCHFIELD_$fields_contains[$i]";
$$name = $lang->get("LANG_MEMBERS_MBS_SEARCHFIELD_CONTAINS", array('$searchfield' => $searchfield));
}
$searchfield = $lang->items['LANG_MEMBERS_MBL_GENDER'];
$LANG_SEARCHFIELD_GENDER = $lang->get("LANG_MEMBERS_MBS_SEARCHFIELD_IS", array('$searchfield' => $searchfield));
}
reset($a_show);
$sortby_options = '';
while (list($key, $val) = each($a_show)) {
$fieldname = $lang->get("LANG_MEMBERS_MBL_".wbb_strtoupper($val));
if (strstr($val, "profilefield")) {
if ($profilefieldcache == 0) cacheProfilefields();
if ($profilefieldcache[wbb_substr($val, 12)]['hidden'] == 1 && $wbbuserdata['a_can_view_hidden'] != 1) continue;
$fieldname = getlangvar($profilefieldcache[wbb_substr($val, 12)]['title'], $lang);
}
$searchname = getSearchFieldname($val);
if ($searchname != '') $sortby_options .= makeoption($searchname, $fieldname, $sortby);
}
eval("\$tpl->output(\"".$tpl->get("memberssearch")."\");");
}
else {
$letteroptions = '';
$alpha = "#ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (!isset($_GET['letter']) || ($_GET['letter'] && !strstr($alpha, $_GET['letter']))) $letter = '';
else $letter = urldecode($_GET['letter']);
for ($i = 0; $i < wbb_strlen($alpha); $i++) $letteroptions .= makeoption($alpha[$i], $alpha[$i], $letter, 1);
eval("\$options_letter = \"".$tpl->get("memberslist_letter")."\";");
if ($letter != '') {
if ($letter == "#") $result = $db->query("SELECT userid FROM bb".$n."_users WHERE SUBSTRING(username,1,1) NOT IN ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z')");
else $result = $db->query("SELECT userid FROM bb".$n."_users WHERE SUBSTRING(username,1,1)='$letter'");
$memberscount = $db->num_rows($result);
$userids = '';
while ($row = $db->fetch_array($result)) $userids .= ",".$row['userid'];
}
else list($memberscount) = $db->query_first("SELECT COUNT(*) FROM bb".$n."_users");
if (isset($_GET['page'])) {
$page = intval($_GET['page']);
if ($page < 1) $page = 1;
}
else $page = 1;
$link = "memberslist.php?letter=".urlencode($letter).$SID_ARG_2ND."&";
$pages = ceil($memberscount / $membersperpage);
if ($page > $pages) $page = 1;
if ($pages > 1) $pagelink = makepagelink($link . "order=$order&sortby=$sortby", $page, $pages, $showpagelinks - 1);
$select = "";
$join = "";
if (strstr($sortby, "field")) $join .= " LEFT JOIN bb".$n."_userfields uf USING(userid)";
if ($sortby == "postsperday") $select .= ", IF((UNIX_TIMESTAMP()-regdate)/86400>1,userposts/((UNIX_TIMESTAMP()-regdate)/86400),userposts) AS postsperday";
if ($sortby == "userlevel") $select .= ", userposts*((UNIX_TIMESTAMP()-regdate)/86400) AS userlevel";
if ($sortby == "ranktitle") {
$select .= ", IF(title<>'',title,r.ranktitle) AS ranktitle";
$join .= " LEFT JOIN bb".$n."_ranks r ON(u.rankid=r.rankid)";
}
$result = $db->unbuffered_query("SELECT u.userid".$select." FROM bb".$n."_users u".$join." ".(($letter != '') ? ("WHERE u.userid IN (0$userids) ") : (""))."ORDER BY $sortby $order", 0, $membersperpage, $membersperpage * ($page - 1));
$userids = '';
while ($row = $db->fetch_array($result)) $userids .= ",".$row['userid'];
$fieldheader = '';
$colspan = 0;
$membersbit = makeMembersbit($userids, $link);
eval("\$options_order = \"".$tpl->get("memberslist_order")."\";");
reset($a_show);
$sortby_options = '';
while (list($key, $val) = each($a_show)) {
$fieldname = $lang->get("LANG_MEMBERS_MBL_".wbb_strtoupper($val));
if (strstr($val, "profilefield")) {
if ($profilefieldcache == 0) cacheProfilefields();
if ($profilefieldcache[wbb_substr($val, 12)]['hidden'] == 1 && $wbbuserdata['a_can_view_hidden'] != 1) continue;
$fieldname = getlangvar($profilefieldcache[wbb_substr($val, 12)]['title'], $lang);
}
$searchname = getSearchFieldname($val);
if ($searchname != '') $sortby_options .= makeoption($searchname, $fieldname, $sortby);
}
eval("\$options_sortby = \"".$tpl->get("memberslist_sortby")."\";");
$lang->items['LANG_MEMBERS_MBL_SORTOPTIONS'] = $lang->get("LANG_MEMBERS_MBL_SORTOPTIONS", array('$options_letter' => $options_letter, '$options_sortby' => $options_sortby, '$options_order' => $options_order));
eval("\$tpl->output(\"".$tpl->get("memberslist")."\");");
}
?>
|