if ($vbulletin->options['searchperpage'] < 1) { $vbulletin->options['searchperpage'] = 20; } // trim results down to maximum $vbulletin->options[maxresults] if ($vbulletin->options['maxresults'] > 0 and $numitems > $vbulletin->options['maxresults']) { $clippedids = array(); for ($i = 0; $i < $vbulletin->options['maxresults']; $i++) { $clippedids[] = $orderedids["{$i}"]; } $orderedids =& $clippedids; $numitems = $vbulletin->options['maxresults']; } // ############################################################################# // ############################################################################# // get page split... sanitize_pageresults($numitems, $vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], 200, $vbulletin->options['searchperpage']); // get list of thread to display on this page $startat = ($vbulletin->GPC['pagenumber'] - 1) * $vbulletin->GPC['perpage']; $endat = $startat + $vbulletin->GPC['perpage']; $itemids = array(); for ($i = $startat; $i < $endat; $i++) { if (isset($orderedids["{$i}"])) { $itemids["{$orderedids[$i]}"] = true; } } // ############################################################################# // do data query if (!empty($itemids)) { $ids = implode(', ', array_keys($itemids)); $dataQuery .= '(' . $ids . ')'; $items = $db->query_read_slave($dataQuery);
if (isset($usergroups["{$optionvalue}"])) { $optiontitle = construct_phrase($vbphrase['x_y_requests'], $vbulletin->usergroupcache["{$optionvalue}"]['title'], vb_number_format($usergroups["{$optionvalue}"])); $optionselected = iif($optionvalue == $vbulletin->GPC['usergroupid'], 'selected="selected"', ''); $optionclass = ''; $usergroupbits .= render_option_template($optiontitle, $optionvalue, $optionselected, $optionclass); } } // set a shortcut to the vbulletin->usergroupcache entry for this group $usergroup =& $vbulletin->usergroupcache["{$vbulletin->GPC['usergroupid']}"]; // initialize $joinrequestbits $joinrequestbits = ''; $numrequests =& $usergroups["{$vbulletin->GPC['usergroupid']}"]; // if there are some requests for this usergroup, display them if ($numrequests > 0) { // set defaults sanitize_pageresults($numrequests, $vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], 100, 20); $startat = ($vbulletin->GPC['pagenumber'] - 1) * $vbulletin->GPC['perpage']; $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], $numrequests, 'joinrequests.php?' . $vbulletin->session->vars['sessionurl'] . "usergroupid={$vbulletin->GPC['usergroupid']}&pp=" . $vbulletin->GPC['perpage']); $requests = $db->query_read_slave("\n\t\t\tSELECT req.*, user.username, IF(user.displaygroupid = 0, user.usergroupid, user.displaygroupid) AS displaygroupid, infractiongroupid\n\t\t\tFROM " . TABLE_PREFIX . "usergrouprequest AS req\n\t\t\tINNER JOIN " . TABLE_PREFIX . "user AS user USING(userid)\n\t\t\tWHERE req.usergroupid = " . $vbulletin->GPC['usergroupid'] . "\n\t\t\tLIMIT {$startat}, " . $vbulletin->GPC['perpage'] . "\n\t\t"); while ($request = $db->fetch_array($requests)) { fetch_musername($request); $request['date'] = vbdate($vbulletin->options['dateformat'], $request['dateline'], 1); $request['time'] = vbdate($vbulletin->options['timeformat'], $request['dateline']); exec_switch_bg(); ($hook = vBulletinHook::fetch_hook('joinrequest_view_bit')) ? eval($hook) : false; $templater = vB_Template::create('joinrequestsbit'); $templater->register('bgclass', $bgclass); $templater->register('request', $request); $joinrequestbits .= $templater->render(); } }
function do_get_pms() { global $vbulletin, $db, $messagecounters; if (!$vbulletin->userinfo['userid']) { json_error(ERR_INVALID_LOGGEDIN, RV_NOT_LOGGED_IN); } $vbulletin->input->clean_array_gpc('r', array('folderid' => TYPE_INT, 'perpage' => TYPE_UINT, 'pagenumber' => TYPE_UINT)); // Fetch PM unread count $result = $db->query_read_slave("\n\tSELECT COUNT(messageread) AS unread\n\tFROM " . TABLE_PREFIX . "pm\n\tWHERE userid = " . $vbulletin->userinfo['userid'] . "\n\tAND messageread = 0"); $unread = 0; if ($row = $db->fetch_array($result)) { $unread = $row['unread']; } $pm_out = array(); // vBulletin Code Begin $folderjump = construct_folder_jump(0, $vbulletin->GPC['folderid']); $foldername = $foldernames["{$vbulletin->GPC['folderid']}"]; // count receipts $receipts = $db->query_first_slave("\n\t\tSELECT\n\t\t\tSUM(IF(readtime <> 0, 1, 0)) AS confirmed,\n\t\t\tSUM(IF(readtime = 0, 1, 0)) AS unconfirmed\n\t\tFROM " . TABLE_PREFIX . "pmreceipt\n\t\tWHERE userid = " . $vbulletin->userinfo['userid']); // get ignored users $ignoreusers = preg_split('#\\s+#s', $vbulletin->userinfo['ignorelist'], -1, PREG_SPLIT_NO_EMPTY); $totalmessages = intval($messagecounters["{$vbulletin->GPC['folderid']}"]); // build pm counters bar, folder is 100 if we have no quota so red shows on the main bar $tdwidth = array(); $tdwidth['folder'] = $permissions['pmquota'] ? ceil($totalmessages / $permissions['pmquota'] * 100) : 100; $tdwidth['total'] = $permissions['pmquota'] ? ceil($vbulletin->userinfo['pmtotal'] / $permissions['pmquota'] * 100) - $tdwidth['folder'] : 0; $tdwidth['quota'] = 100 - $tdwidth['folder'] - $tdwidth['total']; $show['thisfoldertotal'] = iif($tdwidth['folder'], true, false); $show['allfolderstotal'] = iif($tdwidth['total'], true, false); $show['pmicons'] = iif($vbulletin->options['privallowicons'], true, false); // build navbar $navbits[''] = $foldernames["{$vbulletin->GPC['folderid']}"]; if ($totalmessages == 0) { $show['messagelist'] = false; } else { $show['messagelist'] = true; $vbulletin->input->clean_array_gpc('r', array('sort' => TYPE_NOHTML, 'order' => TYPE_NOHTML, 'searchtitle' => TYPE_NOHTML, 'searchuser' => TYPE_NOHTML, 'startdate' => TYPE_UNIXTIME, 'enddate' => TYPE_UNIXTIME, 'searchread' => TYPE_UINT)); $search = array('sort' => 'sender' == $vbulletin->GPC['sort'] ? 'sender' : ('title' == $vbulletin->GPC['sort'] ? 'title' : 'date'), 'order' => $vbulletin->GPC['order'] == 'asc' ? 'asc' : 'desc', 'searchtitle' => $vbulletin->GPC['searchtitle'], 'searchuser' => $vbulletin->GPC['searchuser'], 'startdate' => $vbulletin->GPC['startdate'], 'enddate' => $vbulletin->GPC['enddate'], 'read' => $vbulletin->GPC['searchread']); // make enddate inclusive $search['enddate'] = $search['enddate'] ? $search['enddate'] + 86400 : 0; $show['openfilter'] = ($search['searchtitle'] or $search['searchuser'] or $search['startdate'] or $search['enddate']); $sortfield = 'sender' == $search['sort'] ? 'pmtext.fromusername' : ('title' == $search['sort'] ? 'pmtext.title' : 'pmtext.dateline'); $desc = $search['order'] == 'desc'; //($hook = vBulletinHook::fetch_hook('private_messagelist_filter')) ? eval($hook) : false; // get a sensible value for $perpage sanitize_pageresults($totalmessages, $vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], $vbulletin->options['pmmaxperpage'], $vbulletin->options['pmperpage']); // work out the $startat value $startat = ($vbulletin->GPC['pagenumber'] - 1) * $vbulletin->GPC['perpage']; $perpage = $vbulletin->GPC['perpage']; $pagenumber = $vbulletin->GPC['pagenumber']; // array to store private messages in period groups $pm_period_groups = array(); $need_sql_calc_rows = ($search['searchtitle'] or $search['searchuser'] or $search['startdate'] or $search['enddate'] or $search['read']); $readstatus = array(0 => '', 1 => '= 0', 2 => '> 0', 3 => '< 2', 4 => '= 2'); $readstatus = $search['read'] == 0 ? '' : 'AND pm.messageread ' . $readstatus[$search['read']]; // query private messages $pms = $db->query_read_slave("\n\t\t\tSELECT " . ($need_sql_calc_rows ? 'SQL_CALC_FOUND_ROWS' : '') . " pm.*, pmtext.*\n\t\t\t\t" . iif($vbulletin->options['privallowicons'], ", icon.title AS icontitle, icon.iconpath") . "\n\t\t\tFROM " . TABLE_PREFIX . "pm AS pm\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "pmtext AS pmtext ON(pmtext.pmtextid = pm.pmtextid)\n\t\t\t" . iif($vbulletin->options['privallowicons'], "LEFT JOIN " . TABLE_PREFIX . "icon AS icon ON(icon.iconid = pmtext.iconid)") . "\n\t\t\tWHERE pm.userid=" . $vbulletin->userinfo['userid'] . " AND pm.folderid=" . $vbulletin->GPC['folderid'] . ($search['searchtitle'] ? " AND pmtext.title LIKE '%" . $vbulletin->db->escape_string($search['searchtitle']) . "%'" : '') . ($search['searchuser'] ? " AND pmtext.fromusername LIKE '%" . $vbulletin->db->escape_string($search['searchuser']) . "%'" : '') . ($search['startdate'] ? " AND pmtext.dateline >= {$search['startdate']}" : '') . ($search['enddate'] ? " AND pmtext.dateline <= {$search['enddate']}" : '') . "\n\t\t\t{$readstatus}\n\t\t\tORDER BY {$sortfield} " . ($desc ? 'DESC' : 'ASC') . "\n\t\t\tLIMIT {$startat}, " . $vbulletin->GPC['perpage'] . "\n\t\t"); while ($pm = $db->fetch_array($pms)) { if ('title' == $search['sort']) { $pm_period_groups[fetch_char_group($pm['title'])]["{$pm['pmid']}"] = $pm; } else { if ('sender' == $search['sort']) { $pm_period_groups["{$pm['fromusername']}"]["{$pm['pmid']}"] = $pm; } else { $pm_period_groups[fetch_period_group($pm['dateline'])]["{$pm['pmid']}"] = $pm; } } } $db->free_result($pms); // ensure other group is last if (isset($pm_period_groups['other'])) { $pm_period_groups = $desc ? array_merge($pm_period_groups, array('other' => $pm_period_groups['other'])) : array_merge(array('other' => $pm_period_groups['other']), $pm_period_groups); } // display returned messages $show['pmcheckbox'] = true; require_once DIR . '/includes/functions_bigthree.php'; foreach ($pm_period_groups as $groupid => $pms) { if ('date' == $search['sort'] and preg_match('#^(\\d+)_([a-z]+)_ago$#i', $groupid, $matches)) { $groupname = construct_phrase($vbphrase["x_{$matches['2']}_ago"], $matches[1]); } else { if ('title' == $search['sort'] or 'date' == $search['sort']) { if ('older' == $groupid and sizeof($pm_period_groups) == 1) { $groupid = 'old_messages'; } $groupname = $vbphrase["{$groupid}"]; } else { $groupname = $groupid; } } $groupid = $vbulletin->GPC['folderid'] . '_' . $groupid; $collapseobj_groupid =& $vbcollapse["collapseobj_pmf{$groupid}"]; $collapseimg_groupid =& $vbcollapse["collapseimg_pmf{$groupid}"]; $messagesingroup = sizeof($pms); $messagelistbits = ''; foreach ($pms as $pmid => $pm) { if (in_array($pm['fromuserid'], $ignoreusers)) { // from user is on Ignore List //eval('$messagelistbits .= "' . fetch_template('pm_messagelistbit_ignore') . '";'); } else { switch ($pm['messageread']) { case 0: // unread $pm['statusicon'] = 'new'; break; case 1: // read $pm['statusicon'] = 'old'; break; case 2: // replied to $pm['statusicon'] = 'replied'; break; case 3: // forwarded $pm['statusicon'] = 'forwarded'; break; } $pm['senddate'] = vbdate($vbulletin->options['dateformat'], $pm['dateline']); $pm['sendtime'] = vbdate($vbulletin->options['timeformat'], $pm['dateline']); // get userbit if ($vbulletin->GPC['folderid'] == -1) { $users = unserialize($pm['touserarray']); $touser = array(); $tousers = array(); if (!empty($users)) { foreach ($users as $key => $item) { if (is_array($item)) { foreach ($item as $subkey => $subitem) { $touser["{$subkey}"] = $subitem; } } else { $touser["{$key}"] = $item; } } uasort($touser, 'strnatcasecmp'); } foreach ($touser as $userid => $username) { //eval('$tousers[] = "' . fetch_template('pm_messagelistbit_user') . '";'); } $userbit = implode(', ', $tousers); } else { $userid =& $pm['fromuserid']; $username =& $pm['fromusername']; //eval('$userbit = "' . fetch_template('pm_messagelistbit_user') . '";'); } $show['pmicon'] = iif($pm['iconpath'], true, false); $show['unread'] = iif(!$pm['messageread'], true, false); //($hook = vBulletinHook::fetch_hook('private_messagelist_messagebit')) ? eval($hook) : false; //eval('$messagelistbits .= "' . fetch_template('pm_messagelistbit') . '";'); } $to_users = unserialize($pm['touserarray']); $users = array(); if ($to_users !== false) { if ($to_users['cc']) { $users = $to_users['cc']; } } if (!is_array($users)) { $users = array(); } $pm_new = 0; switch ($pm['messageread']) { case 0: $pm_new = 1; break; case 1: $pm_new = 0; break; case 2: $pm_new = 2; break; } $avatarurl = ''; $userinfoavatar = fetch_userinfo($pm['fromuserid'], FETCH_USERINFO_AVATAR); fetch_avatar_from_userinfo($userinfoavatar, true, false); if ($userinfoavatar['avatarurl'] != '') { $avatarurl = process_avatarurl($userinfoavatar['avatarurl']); } unset($userinfoavatar); $tmp = array('id' => $pm['pmid'], 'new_pm' => $pm_new, 'username' => prepare_utf8_string(strip_tags($pm['fromusername'])), 'to_usernames' => prepare_utf8_string(implode('; ', $users)), 'title' => prepare_utf8_string($pm['title']), 'message' => prepare_utf8_string(htmlspecialchars_uni(fetch_censored_text(strip_bbcode(strip_quotes($pm['message']), false, true)))), 'pm_timestamp' => prepare_utf8_string(date_trunc($pm['senddate'] . ' ' . $pm['sendtime']))); if ($avatarurl != '') { $tmp['avatarurl'] = $avatarurl; } $pm_out[] = $tmp; } // free up memory not required any more unset($pm_period_groups["{$groupid}"]); //($hook = vBulletinHook::fetch_hook('private_messagelist_period')) ? eval($hook) : false; // build group template //eval('$messagelist_periodgroups .= "' . fetch_template('pm_messagelist_periodgroup') . '";'); } if ($desc) { unset($search['order']); } $sorturl = urlimplode($search); // build pagenav if ($need_sql_calc_rows) { list($totalmessages) = $vbulletin->db->query_first_slave("SELECT FOUND_ROWS()", DBARRAY_NUM); } $pagenav = construct_page_nav($pagenumber, $perpage, $totalmessages, 'private.php?' . $vbulletin->session->vars['sessionurl'] . 'folderid=' . $vbulletin->GPC['folderid'] . '&pp=' . $vbulletin->GPC['perpage'] . '&' . $sorturl); $sortfield = $search['sort']; unset($search['sort']); $sorturl = 'private.php?' . $vbulletin->session->vars['sessionurl'] . 'folderid=' . $vbulletin->GPC['folderid'] . ($searchurl = urlimplode($search) ? '&' . $searchurl : ''); $oppositesort = $desc ? 'asc' : 'desc'; $orderlinks = array('date' => $sorturl . '&sort=date' . ($sortfield == 'date' ? '&order=' . $oppositesort : ''), 'title' => $sorturl . '&sort=title' . ($sortfield == 'title' ? '&order=' . $oppositesort : '&order=asc'), 'sender' => $sorturl . '&sort=sender' . ($sortfield == 'sender' ? '&order=' . $oppositesort : '&order=asc')); //eval('$sortarrow["$sortfield"] = "' . fetch_template('forumdisplay_sortarrow') . '";'); // values for filters $startdate = fetch_datearray_from_timestamp($search['startdate'] ? $search['startdate'] : strtotime('last month', TIMENOW)); $enddate = fetch_datearray_from_timestamp($search['enddate'] ? $search['enddate'] : TIMENOW); $startmonth[$startdate[month]] = 'selected="selected"'; $endmonth[$enddate[month]] = 'selected="selected"'; $readselection[$search['read']] = 'selected="selected"'; //eval('$sortfilter = "' . fetch_template('pm_filter') . '";'); } if ($vbulletin->GPC['folderid'] == -1) { $show['sentto'] = true; $show['movetofolder'] = false; } else { $show['sentto'] = false; $show['movetofolder'] = true; } return array('pms' => $pm_out, 'total_pms' => $totalmessages, 'unread_pms' => $unread); }
} $vbphrase['delete_messages_js'] = addslashes_js($vbphrase['delete_messages']); $vbphrase['undelete_messages_js'] = addslashes_js($vbphrase['undelete_messages']); $vbphrase['approve_messages_js'] = addslashes_js($vbphrase['approve_messages']); $vbphrase['unapprove_messages_js'] = addslashes_js($vbphrase['unapprove_messages']); $ownerlink = 'member.php?' . $vbulletin->session->vars['sessionurl'] . 'u=' . $group['creatoruserid']; eval('$socialgroups_css = "' . fetch_template('socialgroups_css') . '";'); $templatename = 'socialgroups_group'; } // ####################################################################### if ($_REQUEST['do'] == 'viewmembers') { $vbulletin->input->clean_array_gpc('r', array('perpage' => TYPE_UINT, 'pagenumber' => TYPE_UINT)); $perpage = $vbulletin->GPC['perpage']; $pagenumber = $vbulletin->GPC['pagenumber']; $totalmembers = $group['members']; sanitize_pageresults($totalmembers, $pagenumber, $perpage); $groupmembers = $vbulletin->db->query_read("\n\t\tSELECT userfield.*, usertextfield.*, user.*, UNIX_TIMESTAMP(passworddate) AS passworddate,\n\t\t\tIF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible,\n\t\t\t" . ($vbulletin->options['avatarenabled'] ? 'avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline, customavatar.width AS avwidth, customavatar.height AS avheight,' : '') . "\n\t\t\tcustomprofilepic.userid AS profilepic, customprofilepic.dateline AS profilepicdateline, customprofilepic.width AS ppwidth, customprofilepic.height AS ppheight,\n\t\t\tuser.icq AS icq, user.aim AS aim, user.yahoo AS yahoo, user.msn AS msn, user.skype AS skype\n\t\tFROM " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember\n\t\tINNER JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = socialgroupmember.userid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON (user.userid = userfield.userid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid)\n\t\t" . ($vbulletin->options['avatarenabled'] ? "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON (avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON (customavatar.userid = user.userid) " : '') . "\n\t\tLEFT JOIN " . TABLE_PREFIX . "customprofilepic AS customprofilepic ON (user.userid = customprofilepic.userid)\n\t\tWHERE socialgroupmember.groupid = " . $vbulletin->GPC['groupid'] . " AND socialgroupmember.type = 'member'\n\t\tORDER BY user.username\n\t\tLIMIT " . ($pagenumber - 1) * $perpage . ", {$perpage}\n\t"); require_once DIR . '/includes/functions_bigthree.php'; while ($groupmember = $vbulletin->db->fetch_array($groupmembers)) { $width = 0; $height = 0; $alt = exec_switch_bg(); fetch_avatar_from_userinfo($groupmember, true); fetch_musername($groupmember); $user =& $groupmember; fetch_online_status($user, true); construct_im_icons($user, true); ($hook = vBulletinHook::fetch_hook('group_memberbit')) ? eval($hook) : false; eval('$member_list .= "' . fetch_template('memberinfo_small') . '";'); } $navbits = array('group.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['social_groups'], 'group.php?' . $vbulletin->session->vars['sessionurl'] . 'groupid=' . $group['groupid'] => $group['name'], '' => $vbphrase['member_list']);
$totalrep = $count['count']; if (!$totalrep) { print_stop_message('no_matches_found'); } switch ($vbulletin->GPC['orderby']) { case 'leftbyuser': $orderbysql = 'leftby_user.username'; break; case 'leftforuser': $orderbysql = 'leftfor_user.username'; break; default: $orderbysql = 'rep.dateline'; $orderby = 'dateline'; } sanitize_pageresults($totalrep, $vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage']); $startat = ($vbulletin->GPC['pagenumber'] - 1) * $vbulletin->GPC['perpage']; $totalpages = ceil($totalrep / $vbulletin->GPC['perpage']); $comments = $db->query_read("\n\t\tSELECT post.postid, rep.userid AS userid, whoadded, rep.reason, rep.dateline, rep.reputationid, rep.reputation,\n\t\t\tleftfor_user.username AS leftfor_username,\n\t\t\tleftby_user.username AS leftby_username,\n\t\t\tpost.title, post.threadid\n\t\tFROM " . TABLE_PREFIX . "reputation AS rep\n\t\tLEFT JOIN " . TABLE_PREFIX . "post AS post ON (rep.postid = post.postid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "user AS leftby_user ON (rep.whoadded = leftby_user.userid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "user AS leftfor_user ON (rep.userid = leftfor_user.userid)\n\t\t{$condition}\n\t\tORDER BY {$orderbysql}\n\t\tLIMIT {$startat}, " . $vbulletin->GPC['perpage']); if ($vbulletin->GPC['pagenumber'] != 1) { $prv = $vbulletin->GPC['pagenumber'] - 1; $firstpage = "<input type=\"button\" class=\"button\" value=\"« " . $vbphrase['first_page'] . "\" tabindex=\"1\" onclick=\"window.location='adminreputation.php?" . $vbulletin->session->vars['sessionurl'] . "do=dolist" . "&u=" . $vbulletin->GPC['userid'] . "&whoadded=" . $vbulletin->GPC['whoadded'] . "&pp=" . $vbulletin->GPC['perpage'] . "&page=1" . "&startstamp=" . $vbulletin->GPC['start'] . "&endstamp=" . $vbulletin->GPC['end'] . "&orderby=" . $vbulletin->GPC['orderby'] . "'\">"; $prevpage = "<input type=\"button\" class=\"button\" value=\"< " . $vbphrase['prev_page'] . "\" tabindex=\"1\" onclick=\"window.location='adminreputation.php?" . $vbulletin->session->vars['sessionurl'] . "do=dolist" . "&u=" . $vbulletin->GPC['userid'] . "&whoadded=" . $vbulletin->GPC['whoadded'] . "&pp=" . $vbulletin->GPC['perpage'] . "&page=" . $prv . "&startstamp=" . $vbulletin->GPC['start'] . "&endstamp=" . $vbulletin->GPC['end'] . "&orderby=" . $vbulletin->GPC['orderby'] . "'\">"; } if ($vbulletin->GPC['pagenumber'] != $totalpages) { $nxt = $vbulletin->GPC['pagenumber'] + 1; $nextpage = "<input type=\"button\" class=\"button\" value=\"" . $vbphrase['next_page'] . " >\" tabindex=\"1\" onclick=\"window.location='adminreputation.php?" . $vbulletin->session->vars['sessionurl'] . "do=dolist" . "&u=" . $vbulletin->GPC['userid'] . "&whoadded=" . $vbulletin->GPC['whoadded'] . "&pp=" . $vbulletin->GPC['perpage'] . "&page=" . $nxt . "&startstamp=" . $vbulletin->GPC['start'] . "&endstamp=" . $vbulletin->GPC['end'] . "&orderby=" . $vbulletin->GPC['orderby'] . "'\">"; $lastpage = "<input type=\"button\" class=\"button\" value=\"" . $vbphrase['last_page'] . " »\" tabindex=\"1\" onclick=\"window.location='adminreputation.php?" . $vbulletin->session->vars['sessionurl'] . "do=dolist" . "&u=" . $vbulletin->GPC['userid'] . "&whoadded=" . $vbulletin->GPC['whoadded'] . "&pp=" . $vbulletin->GPC['perpage'] . "&page=" . $totalpages . "&startstamp=" . $vbulletin->GPC['start'] . "&endstamp=" . $vbulletin->GPC['end'] . "&orderby=" . $vbulletin->GPC['orderby'] . "'\">"; } print_form_header('adminreputation', 'dolist'); print_table_header(construct_phrase($vbphrase['x_reputation_comments_page_y_z'], vb_number_format($totalrep), $vbulletin->GPC['pagenumber'], vb_number_format($totalpages)), 7);
// build pm counters bar, folder is 100 if we have no quota so red shows on the main bar $tdwidth = array(); $tdwidth['folder'] = $permissions['pmquota'] ? ceil($totalmessages / $permissions['pmquota'] * 100) : 100; $tdwidth['total'] = $permissions['pmquota'] ? ceil($vbulletin->userinfo['pmtotal'] / $permissions['pmquota'] * 100) - $tdwidth['folder'] : 0; $tdwidth['quota'] = 100 - $tdwidth['folder'] - $tdwidth['total']; $show['thisfoldertotal'] = iif($tdwidth['folder'], true, false); $show['allfolderstotal'] = iif($tdwidth['total'], true, false); $show['pmicons'] = iif($vbulletin->options['privallowicons'], true, false); // build navbar $navbits[''] = $foldernames["{$vbulletin->GPC['folderid']}"]; if ($totalmessages == 0) { $show['messagelist'] = false; } else { $show['messagelist'] = true; // get a sensible value for $perpage sanitize_pageresults($totalmessages, $vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], $vbulletin->options['pmmaxperpage'], $vbulletin->options['pmperpage']); // work out the $startat value $startat = ($vbulletin->GPC['pagenumber'] - 1) * $vbulletin->GPC['perpage']; // array to store private messages in period groups $pm_period_groups = array(); // query private messages $pms = $db->query_read_slave("\n\t\t\tSELECT pm.*, pmtext.*\n\t\t\t\t" . iif($vbulletin->options['privallowicons'], ", icon.title AS icontitle, icon.iconpath") . "\n\t\t\tFROM " . TABLE_PREFIX . "pm AS pm\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "pmtext AS pmtext ON(pmtext.pmtextid = pm.pmtextid)\n\t\t\t" . iif($vbulletin->options['privallowicons'], "LEFT JOIN " . TABLE_PREFIX . "icon AS icon ON(icon.iconid = pmtext.iconid)") . "\n\t\t\tWHERE pm.userid=" . $vbulletin->userinfo['userid'] . " AND pm.folderid=" . $vbulletin->GPC['folderid'] . "\n\t\t\tORDER BY pmtext.dateline DESC\n\t\t\tLIMIT {$startat}, " . $vbulletin->GPC['perpage'] . "\n\t\t"); while ($pm = $db->fetch_array($pms)) { $pm_period_groups[fetch_period_group($pm['dateline'])]["{$pm['pmid']}"] = $pm; } $db->free_result($pms); // display returned messages $show['pmcheckbox'] = true; require_once DIR . '/includes/functions_bigthree.php'; foreach ($pm_period_groups as $groupid => $pms) { if (preg_match('#^(\\d+)_([a-z]+)_ago$#i', $groupid, $matches)) {
if ($vbulletin->options['ecdownloads_tops']) { eval('$dpanel = "' . fetch_template('downloads_panel_side') . '";'); eval('$dmain .= "' . fetch_template('downloads_wrapper_side') . '";'); } else { eval('$dmain .= "' . fetch_template('downloads_wrapper_top') . '";'); } } else { if ($_GET['do'] == 'my') { $navbits['downloads.php?do=my'] = $vbphrase['ecdownloads_my_files']; $dlcustomtitle = $vbphrase['ecdownloads_my_files']; // check for category permissions $filesexclude = $dl->exclude_files(); $temp = $db->query_first("SELECT COUNT(*) AS files FROM " . TABLE_PREFIX . "dl_files WHERE " . $filesexclude . " `uploaderid` = " . $vbulletin->userinfo['userid']); if ($temp['files'] > 0) { $pagenumber = $vbulletin->input->clean_gpc('r', 'pagenumber', TYPE_UINT); sanitize_pageresults($temp['files'], $pagenumber, $dl->perpage, $dl->perpage, $dl->perpage); $limit = ($pagenumber - 1) * $dl->perpage; $navigation = construct_page_nav($pagenumber, $dl->perpage, $temp['files'], 'downloads.php?' . $vbulletin->session->vars['sessionurl'] . 'do=my'); $result = $db->query_read("SELECT * FROM " . TABLE_PREFIX . "dl_files WHERE " . $filesexclude . " `uploaderid` = " . $vbulletin->userinfo['userid'] . " LIMIT " . $limit . "," . $dl->perpage); while ($file = $db->fetch_array($result)) { $date = vbdate($vbulletin->options['dateformat'], $file['date'], true); if ($file['rating'] <= 0) { $grade = $vbphrase['ecdownloads_not_rated']; } else { if ($file['rating'] > 9.6) { $grade = "A+"; } else { if ($file['rating'] > 9.300000000000001) { $grade = "A"; } else { if ($file['rating'] > 8.9) {
break; default: $handled = false; ($hook = vBulletinHook::fetch_hook('moderation_posts_sort')) ? eval($hook) : false; if (!$handled) { $sqlsortfield = 'post.dateline'; $sortfield = 'dateline'; } } $sort = array($sortfield => 'selected="selected"'); $hook_query_fields = $hook_query_joins = $hook_query_where = ''; ($hook = vBulletinHook::fetch_hook('moderation_postsquery_postscount')) ? eval($hook) : false; $postscount = $db->query_first_slave("\n\t\tSELECT COUNT(*) AS posts\n\t\t{$hook_query_fields}\n\t\t{$postfrom}\n\t\t{$hook_query_joins}\n\t\tINNER JOIN " . TABLE_PREFIX . "thread AS thread ON (post.threadid = thread.threadid)\n\t\tWHERE type = '{$posttype}'\n\t\t\tAND forumid IN (" . implode(', ', $modforums) . ")\n\t\t\t{$datecut}\n\t\t\t{$hook_query_where}\n\t"); $totalposts = $postscount['posts']; // set defaults sanitize_pageresults($totalposts, $pagenumber, $perpage, 200, 4); // display posts $limitlower = ($pagenumber - 1) * $perpage; $limitupper = $pagenumber * $perpage; if ($limitupper > $totalposts) { $limitupper = $totalposts; if ($limitlower > $totalposts) { $limitlower = $totalposts - $perpage - 1; } } if ($limitlower < 0) { $limitlower = 0; } if ($totalposts) { $hook_query_fields = $hook_query_joins = $hook_query_where = ''; ($hook = vBulletinHook::fetch_hook('moderation_postsquery_postid')) ? eval($hook) : false;
function do_get_forum() { global $vbulletin, $db, $show, $vbphrase, $foruminfo; $canpost = true; $vbulletin->input->clean_array_gpc('r', array('fid' => TYPE_INT, 'previewtype' => TYPE_INT)); $previewtype = $vbulletin->GPC['previewtype']; if (!$previewtype) { $previewtype = 1; } if (empty($foruminfo['forumid'])) { $forumid = -1; } else { $vbulletin->input->clean_array_gpc('r', array('password' => TYPE_STR)); // Check the forum password if ($vbulletin->GPC['password'] && $foruminfo['password'] == $vbulletin->GPC['password']) { // Set a temp cookie for guests if (!$vbulletin->userinfo['userid']) { set_bbarray_cookie('forumpwd', $foruminfo['forumid'], md5($vbulletin->userinfo['userid'] . $vbulletin->GPC['password'])); } else { set_bbarray_cookie('forumpwd', $foruminfo['forumid'], md5($vbulletin->userinfo['userid'] . $vbulletin->GPC['password']), 1); } } $perpage = $vbulletin->input->clean_gpc('r', 'perpage', TYPE_UINT); $pagenumber = $vbulletin->input->clean_gpc('r', 'pagenumber', TYPE_UINT); $daysprune = $vbulletin->input->clean_gpc('r', 'daysprune', TYPE_INT); $sortfield = $vbulletin->input->clean_gpc('r', 'sortfield', TYPE_STR); // get permission to view forum $_permsgetter_ = 'forumdisplay'; $forumperms = fetch_permissions($foruminfo['forumid']); if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview'])) { json_error(ERR_NO_PERMISSION); } // Check for forum password! if (!verify_forum_password($foruminfo['forumid'], $foruminfo['password'], false)) { json_error(ERR_NEED_PASSWORD, RV_NEED_FORUM_PASSWORD); } // Can we post in this forum? if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canpostnew'])) { $canpost = false; } $forumid = $foruminfo['forumid']; } // Can forum contain threads? $announcements_out = array(); // These $_REQUEST values will get used in the sort template so they are assigned to normal variables $perpage = $vbulletin->input->clean_gpc('r', 'perpage', TYPE_UINT); $pagenumber = $vbulletin->input->clean_gpc('r', 'pagenumber', TYPE_UINT); $daysprune = $vbulletin->input->clean_gpc('r', 'daysprune', TYPE_INT); $sortfield = $vbulletin->input->clean_gpc('r', 'sortfield', TYPE_STR); // get permission to view forum $_permsgetter_ = 'forumdisplay'; $forumperms = fetch_permissions($foruminfo['forumid']); if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview'])) { json_error(ERR_NO_PERMISSION); } // disable thread preview if we can't view threads if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads'])) { $vbulletin->options['threadpreview'] = 0; } // check if there is a forum password and if so, ensure the user has it set verify_forum_password($foruminfo['forumid'], $foruminfo['password']); // verify that we are at the canonical SEO url // and redirect to this if not //verify_seo_url('forum', $foruminfo, array('pagenumber' => $_REQUEST['pagenumber'])); // get vbulletin->iforumcache - for use by makeforumjump and forums list // fetch the forum even if they are invisible since its needed // for the title but we'll unset that further down // also fetch subscription info for $show['subscribed'] variable cache_ordered_forums(1, 1, $vbulletin->userinfo['userid']); $show['newthreadlink'] = iif(!$show['search_engine'] and $foruminfo['allowposting'], true, false); $show['threadicons'] = iif($foruminfo['allowicons'], true, false); $show['threadratings'] = iif($foruminfo['allowratings'], true, false); $show['subscribed_to_forum'] = $vbulletin->forumcache["{$foruminfo['forumid']}"]['subscribeforumid'] != '' ? true : false; if (!$daysprune) { if ($vbulletin->userinfo['daysprune']) { $daysprune = $vbulletin->userinfo['daysprune']; } else { $daysprune = iif($foruminfo['daysprune'], $foruminfo['daysprune'], 30); } } $daysprune = -1; // FRNR // ### GET FORUMS, PERMISSIONS, MODERATOR iCACHES ######################## cache_moderators(); // draw nav bar $navbits = array(); $navbits[$vbulletin->options['forumhome'] . '.php' . $vbulletin->session->vars['sessionurl_q']] = $vbphrase['forum']; $parentlist = array_reverse(explode(',', substr($foruminfo['parentlist'], 0, -3))); foreach ($parentlist as $forumID) { $forumTitle = $vbulletin->forumcache["{$forumID}"]['title']; $navbits[fetch_seo_url('forum', array('forumid' => $forumID, 'title' => $forumTitle))] = $forumTitle; } // pop the last element off the end of the $nav array so that we can show it without a link array_pop($navbits); $navbits[''] = $foruminfo['title']; $navbits = construct_navbits($navbits); $navbar = render_navbar_template($navbits); $moderatorslist = ''; $listexploded = explode(',', $foruminfo['parentlist']); $showmods = array(); $show['moderators'] = false; $totalmods = 0; foreach ($listexploded as $parentforumid) { if (!$imodcache["{$parentforumid}"] or $parentforumid == -1) { continue; } foreach ($imodcache["{$parentforumid}"] as $moderator) { if ($showmods["{$moderator['userid']}"] === true) { continue; } $showmods["{$moderator['userid']}"] = true; $show['comma_leader'] = $moderatorslist != ''; $show['moderators'] = true; $totalmods++; } } // ### BUILD FORUMS LIST ################################################# // get an array of child forum ids for this forum $foruminfo['childlist'] = explode(',', $foruminfo['childlist']); // define max depth for forums display based on $vbulletin->options[forumhomedepth] define('MAXFORUMDEPTH', $vbulletin->options['forumdisplaydepth']); if (($vbulletin->options['showforumusers'] == 1 or $vbulletin->options['showforumusers'] == 2 or $vbulletin->options['showforumusers'] > 2 and $vbulletin->userinfo['userid']) and !$show['search_engine']) { $datecut = TIMENOW - $vbulletin->options['cookietimeout']; $forumusers = $db->query_read_slave("\n \t\tSELECT user.username, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible, user.usergroupid,\n \t\t\tsession.userid, session.inforum, session.lastactivity, session.badlocation,\n \t\t\tIF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid\n \t\tFROM " . TABLE_PREFIX . "session AS session\n \t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = session.userid)\n \t\tWHERE session.lastactivity > {$datecut}\n \t\tORDER BY" . iif($vbulletin->options['showforumusers'] == 1 or $vbulletin->options['showforumusers'] == 3, " username ASC,") . " lastactivity DESC\n \t"); $numberregistered = 0; $numberguest = 0; $doneuser = array(); if ($vbulletin->userinfo['userid']) { // fakes the user being in this forum $loggedin = array('userid' => $vbulletin->userinfo['userid'], 'username' => $vbulletin->userinfo['username'], 'invisible' => $vbulletin->userinfo['invisible'], 'invisiblemark' => $vbulletin->userinfo['invisiblemark'], 'inforum' => $foruminfo['forumid'], 'lastactivity' => TIMENOW, 'musername' => $vbulletin->userinfo['musername']); $numberregistered = 1; fetch_online_status($loggedin); $show['comma_leader'] = false; $doneuser["{$vbulletin->userinfo['userid']}"] = 1; } $inforum = array(); // this require the query to have lastactivity ordered by DESC so that the latest location will be the first encountered. while ($loggedin = $db->fetch_array($forumusers)) { if ($loggedin['badlocation']) { continue; } if (empty($doneuser["{$loggedin['userid']}"])) { if (in_array($loggedin['inforum'], $foruminfo['childlist']) and $loggedin['inforum'] != -1) { if (!$loggedin['userid']) { // this is a guest $numberguest++; $inforum["{$loggedin['inforum']}"]++; } else { $numberregistered++; $inforum["{$loggedin['inforum']}"]++; if (fetch_online_status($loggedin)) { fetch_musername($loggedin); $show['comma_leader'] = $activeusers != ''; } } } if ($loggedin['userid']) { $doneuser["{$loggedin['userid']}"] = 1; } } } if (!$vbulletin->userinfo['userid']) { $numberguest = $numberguest == 0 ? 1 : $numberguest; } $totalonline = $numberregistered + $numberguest; unset($joingroupid, $key, $datecut, $invisibleuser, $userinfo, $userid, $loggedin, $index, $value, $forumusers, $parentarray); $show['activeusers'] = true; } else { $show['activeusers'] = false; } // ############################################################################# // get read status for this forum and children $unreadchildforums = 0; foreach ($foruminfo['childlist'] as $val) { if ($val == -1 or $val == $foruminfo['forumid']) { continue; } if ($vbulletin->options['threadmarking'] and $vbulletin->userinfo['userid']) { $lastread_child = max($vbulletin->forumcache["{$val}"]['forumread'], TIMENOW - $vbulletin->options['markinglimit'] * 86400); } else { $lastread_child = max(intval(fetch_bbarray_cookie('forum_view', $val)), $vbulletin->userinfo['lastvisit']); } if ($vbulletin->forumcache["{$val}"]['lastpost'] > $lastread_child) { $unreadchildforums = 1; break; } } $forumbits = fr_construct_forum_bit($forumid); // admin tools $show['post_queue'] = can_moderate($foruminfo['forumid'], 'canmoderateposts'); $show['attachment_queue'] = can_moderate($foruminfo['forumid'], 'canmoderateattachments'); $show['mass_move'] = can_moderate($foruminfo['forumid'], 'canmassmove'); $show['mass_prune'] = can_moderate($foruminfo['forumid'], 'canmassprune'); $show['post_new_announcement'] = can_moderate($foruminfo['forumid'], 'canannounce'); $show['addmoderator'] = $permissions['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel']; $show['adminoptions'] = ($show['post_queue'] or $show['attachment_queue'] or $show['mass_move'] or $show['mass_prune'] or $show['addmoderator'] or $show['post_new_announcement']); $navpopup = array('id' => 'forumdisplay_navpopup', 'title' => $foruminfo['title_clean'], 'link' => fetch_seo_url('forum', $foruminfo)); construct_quick_nav($navpopup); ///////////////////////////////// if ($foruminfo['cancontainthreads']) { ///////////////////////////////// if ($vbulletin->options['threadmarking'] and $vbulletin->userinfo['userid']) { $foruminfo['forumread'] = $vbulletin->forumcache["{$foruminfo['forumid']}"]['forumread']; $lastread = max($foruminfo['forumread'], TIMENOW - $vbulletin->options['markinglimit'] * 86400); } else { $bbforumview = intval(fetch_bbarray_cookie('forum_view', $foruminfo['forumid'])); $lastread = max($bbforumview, $vbulletin->userinfo['lastvisit']); } // Inline Moderation $show['movethread'] = can_moderate($forumid, 'canmanagethreads') ? true : false; $show['deletethread'] = (can_moderate($forumid, 'candeleteposts') or can_moderate($forumid, 'canremoveposts')) ? true : false; $show['approvethread'] = can_moderate($forumid, 'canmoderateposts') ? true : false; $show['openthread'] = can_moderate($forumid, 'canopenclose') ? true : false; $show['inlinemod'] = ($show['movethread'] or $show['deletethread'] or $show['approvethread'] or $show['openthread']) ? true : false; $show['spamctrls'] = ($show['inlinemod'] and $show['deletethread']); $url = $show['inlinemod'] ? SCRIPTPATH : ''; // fetch popup menu if ($show['popups'] and $show['inlinemod']) { } else { $threadadmin_imod_thread_menu = ''; } // get announcements $announcebits = ''; if ($show['threadicons'] and $show['inlinemod']) { $announcecolspan = 6; } else { if (!$show['threadicons'] and !$show['inlinemod']) { $announcecolspan = 4; } else { $announcecolspan = 5; } } $mindate = TIMENOW - 2592000; // 30 days $hook_query_fields = $hook_query_joins = $hook_query_where = ''; $announcements = $db->query_read_slave("\n \t\tSELECT\n \t\t\tannouncement.announcementid, startdate, title, announcement.views,\n \t\t\tuser.username, user.userid, user.usertitle, user.customtitle, user.usergroupid,\n \t\t\tIF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid\n \t\t\t" . ($vbulletin->userinfo['userid'] ? ", NOT ISNULL(announcementread.announcementid) AS readannounce" : "") . "\n \t\t\t{$hook_query_fields}\n \t\tFROM " . TABLE_PREFIX . "announcement AS announcement\n \t\t" . ($vbulletin->userinfo['userid'] ? "LEFT JOIN " . TABLE_PREFIX . "announcementread AS announcementread ON (announcementread.announcementid = announcement.announcementid AND announcementread.userid = " . $vbulletin->userinfo['userid'] . ")" : "") . "\n \t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = announcement.userid)\n \t\t{$hook_query_joins}\n \t\tWHERE startdate <= " . TIMENOW . "\n \t\t\tAND enddate >= " . TIMENOW . "\n \t\t\tAND " . fetch_forum_clause_sql($foruminfo['forumid'], 'forumid') . "\n \t\t\t{$hook_query_where}\n \t\tORDER BY startdate DESC, announcement.announcementid DESC\n \t\t" . iif($vbulletin->options['oneannounce'], "LIMIT 1")); while ($announcement = $db->fetch_array($announcements)) { fetch_musername($announcement); $announcement['title'] = fetch_censored_text($announcement['title']); $announcement['postdate'] = vbdate($vbulletin->options['dateformat'], $announcement['startdate']); if ($announcement['readannounce'] or $announcement['startdate'] <= $mindate) { $announcement['statusicon'] = 'old'; } else { $announcement['statusicon'] = 'new'; } $announcement['views'] = vb_number_format($announcement['views']); $announcementidlink = iif(!$vbulletin->options['oneannounce'], "&a={$announcement['announcementid']}"); // FRNR START if ($pagenumber == 1) { $avatarurl = ''; $userinfoavatar = fetch_userinfo($announcement['userid'], FETCH_USERINFO_AVATAR); fetch_avatar_from_userinfo($userinfoavatar, true, false); if ($userinfoavatar['avatarurl'] != '') { $avatarurl = process_avatarurl($userinfoavatar['avatarurl']); } unset($userinfoavatar); $tmp = array('thread_id' => $foruminfo['forumid'], 'announcement' => 1, 'new_posts' => $announcement['readannounce'] ? 0 : 1, 'thread_title' => prepare_utf8_string(strip_tags($announcement['title'])), 'thread_preview' => prepare_utf8_string(preview_chop(html_entity_decode($announcement['pagetext']), FR_PREVIEW_LEN)), 'post_userid' => $announcement['userid'], 'post_lastposttime' => prepare_utf8_string(date_trunc($announcement['postdate'])), 'post_username' => prepare_utf8_string(strip_tags($announcement['username']))); if ($avatarurl != '') { $tmp['avatarurl'] = $avatarurl; } $announcements_out[] = $tmp; } // FRNR END } // display threads if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers'])) { $limitothers = "AND postuserid = " . $vbulletin->userinfo['userid'] . " AND " . $vbulletin->userinfo['userid'] . " <> 0"; } else { $limitothers = ''; } if (can_moderate($foruminfo['forumid'])) { $redirectjoin = "LEFT JOIN " . TABLE_PREFIX . "threadredirect AS threadredirect ON(thread.open = 10 AND thread.threadid = threadredirect.threadid)"; } else { $redirectjoin = ''; } // filter out deletion notices if can't be seen if ($forumperms & $vbulletin->bf_ugp_forumpermissions['canseedelnotice'] or can_moderate($foruminfo['forumid'])) { $canseedelnotice = true; $deljoin = "LEFT JOIN " . TABLE_PREFIX . "deletionlog AS deletionlog ON(thread.threadid = deletionlog.primaryid AND deletionlog.type = 'thread')"; } else { $canseedelnotice = false; $deljoin = ''; } // remove threads from users on the global ignore list if user is not a moderator if ($Coventry = fetch_coventry('string') and !can_moderate($foruminfo['forumid'])) { $globalignore = "AND postuserid NOT IN ({$Coventry}) "; } else { $globalignore = ''; } // look at thread limiting options $stickyids = ''; $stickycount = 0; if ($daysprune != -1) { if ($vbulletin->userinfo['userid'] and in_coventry($vbulletin->userinfo['userid'], true)) { $tachyjoin = "LEFT JOIN " . TABLE_PREFIX . "tachythreadpost AS tachythreadpost ON " . "(tachythreadpost.threadid = thread.threadid AND tachythreadpost.userid = " . $vbulletin->userinfo['userid'] . ")"; $datecut = " AND (thread.lastpost >= " . (TIMENOW - $daysprune * 86400) . " OR tachythreadpost.lastpost >= " . (TIMENOW - $daysprune * 86400) . ")"; } else { $datecut = "AND lastpost >= " . (TIMENOW - $daysprune * 86400); $tachyjoin = ""; } $show['noposts'] = false; } else { $tachyjoin = ""; $datecut = ""; $show['noposts'] = true; } // complete form fields on page $daysprunesel = iif($daysprune == -1, 'all', $daysprune); $daysprunesel = array($daysprunesel => 'selected="selected"'); $vbulletin->input->clean_array_gpc('r', array('sortorder' => TYPE_NOHTML, 'prefixid' => TYPE_NOHTML)); // prefix options $prefix_options = fetch_prefix_html($foruminfo['forumid'], $vbulletin->GPC['prefixid']); $prefix_selected = array('anythread', 'anythread' => '', 'none' => ''); if ($vbulletin->GPC['prefixid']) { //no prefix id if ($vbulletin->GPC['prefixid'] == '-1') { $prefix_filter = "AND thread.prefixid = ''"; $prefix_selected['none'] = ' selected="selected"'; } else { if ($vbulletin->GPC['prefixid'] == '-2') { $prefix_filter = "AND thread.prefixid <> ''"; $prefix_selected['anyprefix'] = ' selected="selected"'; } else { $prefix_filter = "AND thread.prefixid = '" . $db->escape_string($vbulletin->GPC['prefixid']) . "'"; } } } else { $prefix_filter = ''; $prefix_selected['anythread'] = ' selected="selected"'; } // default sorting methods if (empty($sortfield)) { $sortfield = $foruminfo['defaultsortfield']; } if (empty($vbulletin->GPC['sortorder'])) { $vbulletin->GPC['sortorder'] = $foruminfo['defaultsortorder']; } // look at sorting options: if ('asc' != ($sortorder = $vbulletin->GPC['sortorder'])) { $sqlsortorder = 'DESC'; $order = array('desc' => 'checked="checked"'); $vbulletin->GPC['sortorder'] = 'desc'; } else { $sqlsortorder = ''; $order = array('asc' => 'checked="checked"'); } $sqlsortfield2 = ''; switch ($sortfield) { case 'title': $sqlsortfield = 'thread.title'; break; case 'lastpost': $sqlsortfield = 'lastpost'; break; case 'replycount': case 'views': $sqlsortfield = 'views'; case 'postusername': $sqlsortfield = $sortfield; break; case 'voteavg': if ($foruminfo['allowratings']) { $sqlsortfield = 'voteavg'; $sqlsortfield2 = 'votenum'; break; } case 'dateline': $sqlsortfield = 'thread.dateline'; break; // else, use last post // else, use last post default: $handled = false; if (!$handled) { $sqlsortfield = 'lastpost'; $sortfield = 'lastpost'; } } $sort = array($sortfield => 'selected="selected"'); $visiblethreads = " AND visible = 1"; /*if (!can_moderate($forumid, 'canmoderateposts')) { if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canseedelnotice'])) { $visiblethreads = " AND visible = 1 "; } else { $visiblethreads = " AND visible IN (1,2)"; } } else { $visiblethreads = " AND visible IN (0,1,2)"; }*/ $hook_query_fields = $hook_query_joins = $hook_query_where = ''; # Include visible IN (0,1,2) in order to hit upon the 4 column index $threadscount = $db->query_first_slave("\n \t\tSELECT COUNT(*) AS threads, SUM(IF(thread.lastpost > {$lastread} AND open <> 10, 1, 0)) AS newthread\n \t\t{$hook_query_fields}\n \t\tFROM " . TABLE_PREFIX . "thread AS thread\n \t\t{$tachyjoin}\n \t\t{$hook_query_joins}\n \t\tWHERE forumid = {$foruminfo['forumid']}\n \t\t\tAND sticky = 0\n \t\t\t{$prefix_filter}\n \t\t\t{$visiblethreads}\n \t\t\t{$globalignore}\n \t\t\t{$limitothers}\n \t\t\t{$datecut}\n \t\t\t{$hook_query_where}\n \t"); $totalthreads = $threadscount['threads']; $newthreads = $threadscount['newthread']; // set defaults sanitize_pageresults($totalthreads, $pagenumber, $perpage, 200, $vbulletin->options['maxthreads']); // get number of sticky threads for the first page // on the first page there will be the sticky threads PLUS the $perpage other normal threads // not quite a bug, but a deliberate feature! if ($pagenumber == 1) { $stickies = $db->query_read_slave("\n \t\t\tSELECT thread.threadid, lastpost, open\n \t\t\tFROM " . TABLE_PREFIX . "thread AS thread\n \t\t\tWHERE forumid = {$foruminfo['forumid']}\n \t\t\t\tAND sticky = 1\n \t\t\t\t{$prefix_filter}\n \t\t\t\t{$visiblethreads}\n \t\t\t\t{$limitothers}\n \t\t\t\t{$globalignore}\n \t\t"); while ($thissticky = $db->fetch_array($stickies)) { $stickycount++; if ($thissticky['lastpost'] >= $lastread and $thissticky['open'] != 10) { $newthreads++; } $stickyids .= ",{$thissticky['threadid']}"; } $db->free_result($stickies); unset($thissticky, $stickies); } $limitlower = ($pagenumber - 1) * $perpage; $limitupper = $pagenumber * $perpage; if ($limitupper > $totalthreads) { $limitupper = $totalthreads; if ($limitlower > $totalthreads) { $limitlower = $totalthreads - $perpage - 1; } } if ($limitlower < 0) { $limitlower = 0; } if ($foruminfo['allowratings']) { $vbulletin->options['showvotes'] = intval($vbulletin->options['showvotes']); $votequery = "\n \t\t\tIF(votenum >= " . $vbulletin->options['showvotes'] . ", votenum, 0) AS votenum,\n \t\t\tIF(votenum >= " . $vbulletin->options['showvotes'] . " AND votenum > 0, votetotal / votenum, 0) AS voteavg,\n \t\t"; } else { $votequery = ''; } if ($previewtype == 1) { $previewfield = "post.pagetext AS preview, post.username AS lastpost_username, post.userid AS lastpost_userid,"; $previewjoin = "LEFT JOIN " . TABLE_PREFIX . "post AS post ON(post.postid = thread.firstpostid)"; } else { $previewfield = "post.pagetext AS preview, post.username AS lastpost_username, post.userid AS lastpost_userid,"; $previewjoin = "LEFT JOIN " . TABLE_PREFIX . "post AS post ON(post.postid = thread.lastpostid)"; } if ($vbulletin->userinfo['userid'] and in_coventry($vbulletin->userinfo['userid'], true)) { $tachyjoin = "\n \t\t\tLEFT JOIN " . TABLE_PREFIX . "tachythreadpost AS tachythreadpost ON\n \t\t\t\t(tachythreadpost.threadid = thread.threadid AND tachythreadpost.userid = " . $vbulletin->userinfo['userid'] . ")\n \t\t\tLEFT JOIN " . TABLE_PREFIX . "tachythreadcounter AS tachythreadcounter ON\n \t\t\t\t(tachythreadcounter.threadid = thread.threadid AND tachythreadcounter.userid = " . $vbulletin->userinfo['userid'] . ")\n \t\t"; $tachy_columns = "\n \t\t\tIF(tachythreadpost.userid IS NULL, thread.lastpost, tachythreadpost.lastpost) AS lastpost,\n \t\t\tIF(tachythreadpost.userid IS NULL, thread.lastposter, tachythreadpost.lastposter) AS lastposter,\n \t\t\tIF(tachythreadpost.userid IS NULL, thread.lastposterid, tachythreadpost.lastposterid) AS lastposterid,\n \t\t\tIF(tachythreadpost.userid IS NULL, thread.lastpostid, tachythreadpost.lastpostid) AS lastpostid,\n \t\t\tIF(tachythreadcounter.userid IS NULL, thread.replycount, thread.replycount + tachythreadcounter.replycount) AS replycount,\n \t\t\tIF(thread.views<=IF(tachythreadcounter.userid IS NULL, thread.replycount, thread.replycount + tachythreadcounter.replycount), IF(tachythreadcounter.userid IS NULL, thread.replycount, thread.replycount + tachythreadcounter.replycount)+1, thread.views) AS views\n \t\t"; } else { $tachyjoin = ''; $tachy_columns = 'thread.lastpost, thread.lastposter, thread.lastposterid, thread.lastpostid, thread.replycount, IF(thread.views<=thread.replycount, thread.replycount+1, thread.views) AS views'; } $hook_query_fields = $hook_query_joins = $hook_query_where = ''; $getthreadids = $db->query_read_slave("\n \t\tSELECT " . iif($sortfield == 'voteavg', $votequery) . " thread.threadid,\n \t\t\t{$tachy_columns}\n \t\t\t{$hook_query_fields}\n \t\tFROM " . TABLE_PREFIX . "thread AS thread\n \t\t{$tachyjoin}\n \t\t{$hook_query_joins}\n \t\tWHERE forumid = {$foruminfo['forumid']}\n \t\t\tAND sticky = 0\n \t\t\t{$prefix_filter}\n \t\t\t{$visiblethreads}\n \t\t\t{$globalignore}\n \t\t\t{$limitothers}\n \t\t\t{$datecut}\n \t\t\t{$hook_query_where}\n \t\tORDER BY sticky DESC, {$sqlsortfield} {$sqlsortorder}" . (!empty($sqlsortfield2) ? ", {$sqlsortfield2} {$sqlsortorder}" : '') . "\n \t\tLIMIT {$limitlower}, {$perpage}\n \t"); $ids = ''; while ($thread = $db->fetch_array($getthreadids)) { $ids .= ',' . $thread['threadid']; } $ids .= $stickyids; $db->free_result($getthreadids); unset($thread, $getthreadids); $hook_query_fields = $hook_query_joins = $hook_query_where = ''; $threads = $db->query_read_slave("\n \t\tSELECT {$votequery} {$previewfield}\n \t\t\tthread.threadid, thread.title AS threadtitle, thread.forumid, pollid, open, postusername, postuserid, thread.iconid AS threadiconid,\n \t\t\tthread.dateline, notes, thread.visible, sticky, votetotal, thread.attach, {$tachy_columns},\n \t\t\tthread.prefixid, thread.taglist, hiddencount, deletedcount,\n \t\t\tuser.usergroupid, user.homepage, user.options AS useroptions, IF(userlist.friend = 'yes', 1, 0) AS isfriend\n \t\t\t" . (($vbulletin->options['threadsubscribed'] and $vbulletin->userinfo['userid']) ? ", NOT ISNULL(subscribethread.subscribethreadid) AS issubscribed" : "") . "\n \t\t\t" . ($deljoin ? ", deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason" : "") . "\n \t\t\t" . (($vbulletin->options['threadmarking'] and $vbulletin->userinfo['userid']) ? ", threadread.readtime AS threadread" : "") . "\n \t\t\t" . ($redirectjoin ? ", threadredirect.expires" : "") . "\n \t\t\t{$hook_query_fields}\n \t\tFROM " . TABLE_PREFIX . "thread AS thread\n \t\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = thread.lastposterid)\n \t\t\tLEFT JOIN " . TABLE_PREFIX . "userlist AS userlist ON (userlist.relationid = user.userid AND userlist.type = 'buddy' AND userlist.userid = " . $vbulletin->userinfo['userid'] . ")\n \t\t\t{$deljoin}\n \t\t\t" . (($vbulletin->options['threadsubscribed'] and $vbulletin->userinfo['userid']) ? " LEFT JOIN " . TABLE_PREFIX . "subscribethread AS subscribethread ON(subscribethread.threadid = thread.threadid AND subscribethread.userid = " . $vbulletin->userinfo['userid'] . " AND canview = 1)" : "") . "\n \t\t\t" . (($vbulletin->options['threadmarking'] and $vbulletin->userinfo['userid']) ? " LEFT JOIN " . TABLE_PREFIX . "threadread AS threadread ON (threadread.threadid = thread.threadid AND threadread.userid = " . $vbulletin->userinfo['userid'] . ")" : "") . "\n \t\t\t{$previewjoin}\n \t\t\t{$tachyjoin}\n \t\t\t{$redirectjoin}\n \t\t\t{$hook_query_joins}\n \t\tWHERE thread.threadid IN (0{$ids}) {$hook_query_where}\n \t\tORDER BY sticky DESC, {$sqlsortfield} {$sqlsortorder}" . (!empty($sqlsortfield2) ? ", {$sqlsortfield2} {$sqlsortorder}" : '') . "\n \t"); unset($limitothers, $delthreadlimit, $deljoin, $datecut, $votequery, $sqlsortfield, $sqlsortorder, $threadids, $sqlsortfield2); // Get Dot Threads $dotthreads = fetch_dot_threads_array($ids); if ($vbulletin->options['showdots'] and $vbulletin->userinfo['userid']) { $show['dotthreads'] = true; } else { $show['dotthreads'] = false; } unset($ids); $pageinfo = array(); if ($vbulletin->GPC['prefixid']) { $pageinfo['prefixid'] = $vbulletin->GPC['prefixid']; } if ($vbulletin->GPC['daysprune']) { $pageinfo['daysprune'] = $daysprune; } $show['fetchseo'] = true; $oppositesort = $vbulletin->GPC['sortorder'] == 'asc' ? 'desc' : 'asc'; $pageinfo_voteavg = $pageinfo + array('sort' => 'voteavg', 'order' => 'voteavg' == $sortfield ? $oppositesort : 'desc'); $pageinfo_title = $pageinfo + array('sort' => 'title', 'order' => 'title' == $sortfield ? $oppositesort : 'asc'); $pageinfo_postusername = $pageinfo + array('sort' => 'postusername', 'order' => 'postusername' == $sortfield ? $oppositesort : 'asc'); $pageinfo_flastpost = $pageinfo + array('sort' => 'lastpost', 'order' => 'lastpost' == $sortfield ? $oppositesort : 'asc'); $pageinfo_replycount = $pageinfo + array('sort' => 'replycount', 'order' => 'replycount' == $sortfield ? $oppositesort : 'desc'); $pageinfo_views = $pageinfo + array('sort' => 'views', 'order' => 'views' == $sortfield ? $oppositesort : 'desc'); $pageinfo_sort = $pageinfo + array(sort => $sortfield, 'order' => $oppositesort, 'pp' => $perpage, 'page' => $pagenumber); if ($totalthreads > 0 or $stickyids) { if ($totalthreads > 0) { $limitlower++; } // check to see if there are any threads to display. If there are, do so, otherwise, show message if ($vbulletin->options['threadpreview'] > 0) { // Get Buddy List $buddy = array(); if (trim($vbulletin->userinfo['buddylist'])) { $buddylist = preg_split('/( )+/', trim($vbulletin->userinfo['buddylist']), -1, PREG_SPLIT_NO_EMPTY); foreach ($buddylist as $buddyuserid) { $buddy["{$buddyuserid}"] = 1; } } DEVDEBUG('buddies: ' . implode(', ', array_keys($buddy))); // Get Ignore Users $ignore = array(); if (trim($vbulletin->userinfo['ignorelist'])) { $ignorelist = preg_split('/( )+/', trim($vbulletin->userinfo['ignorelist']), -1, PREG_SPLIT_NO_EMPTY); foreach ($ignorelist as $ignoreuserid) { if (!$buddy["{$ignoreuserid}"]) { $ignore["{$ignoreuserid}"] = 1; } } } DEVDEBUG('ignored users: ' . implode(', ', array_keys($ignore))); } $show['threads'] = true; $threadbits = ''; $threadbits_sticky = ''; $counter = 0; $toread = 0; while ($thread = $db->fetch_array($threads)) { // AND $counter++ < $perpage) // build thread data $thread = process_thread_array($thread, $lastread, $foruminfo['allowicons']); $realthreadid = $thread['realthreadid']; if ($thread['sticky']) { $threadbit =& $threadbits_sticky; } else { $threadbit =& $threadbits; } // Soft Deleted Thread if ($thread['visible'] == 2) { $thread['deletedcount']++; $show['threadtitle'] = (can_moderate($forumid) or $vbulletin->userinfo['userid'] != 0 and $vbulletin->userinfo['userid'] == $thread['postuserid']) ? true : false; $show['deletereason'] = !empty($thread['del_reason']) ? true : false; $show['viewthread'] = can_moderate($forumid) ? true : false; $show['managethread'] = (can_moderate($forumid, 'candeleteposts') or can_moderate($forumid, 'canremoveposts')) ? true : false; $show['moderated'] = ($thread['hiddencount'] > 0 and can_moderate($forumid, 'canmoderateposts')) ? true : false; $show['deletedthread'] = $canseedelnotice; } else { if (!$thread['visible']) { $thread['hiddencount']++; } $show['moderated'] = ($thread['hiddencount'] > 0 and can_moderate($forumid, 'canmoderateposts')) ? true : false; $show['deletedthread'] = ($thread['deletedcount'] > 0 and $canseedelnotice) ? true : false; $pageinfo_lastpage = array(); if ($show['pagenavmore']) { $pageinfo_lastpage['page'] = $thread['totalpages']; } $pageinfo_newpost = array('goto' => 'newpost'); $pageinfo_lastpost = array('p' => $thread['lastpostid']); // prepare the member action drop-down menu $memberaction_dropdown = construct_memberaction_dropdown(fetch_lastposter_userinfo($thread)); } // FRNR Start $avatarurl = ''; if ($thread['lastpost_userid'] > 0) { $userinfoavatar = fetch_userinfo($thread['lastpost_userid'], FETCH_USERINFO_AVATAR); fetch_avatar_from_userinfo($userinfoavatar, true, false); if ($userinfoavatar['avatarurl'] != '') { $avatarurl = process_avatarurl($userinfoavatar['avatarurl']); } unset($userinfoavatar); } $tmp = array('thread_id' => $thread['threadid'], 'new_posts' => $show['gotonewpost'] ? 1 : 0, 'forum_id' => $thread['forumid'], 'total_posts' => $thread['totalposts'] ? $thread['totalposts'] : 0, 'thread_title' => prepare_utf8_string(strip_tags($thread['threadtitle'])), 'thread_preview' => prepare_utf8_string(preview_chop(html_entity_decode($thread['preview']), FR_PREVIEW_LEN)), 'post_userid' => $thread['lastpost_userid'], 'post_lastposttime' => prepare_utf8_string(date_trunc($thread['lastpostdate']) . ' ' . $thread['lastposttime']), 'post_username' => prepare_utf8_string(strip_tags($thread['lastpost_username']))); if ($avatarurl != '') { $tmp['avatarurl'] = $avatarurl; } if ($thread['prefixid']) { $tmp['prefix'] = prepare_utf8_string(strip_tags($vbphrase["prefix_{$thread['prefixid']}_title_plain"])); } if ($thread['attach']) { $tmp['attach'] = true; } if ($thread['pollid']) { $tmp['poll'] = true; } if ($thread['open'] == 10) { // Special case for redirect threads $tmp = array_merge($tmp, array('post_userid' => $thread['postuserid'], 'post_username' => prepare_utf8_string(strip_tags($thread['postusername'])), 'poll' => false)); } if ($thread['sticky']) { $thread_data_sticky[] = $tmp; } else { $thread_data[] = $tmp; } // FRNR Stop } $db->free_result($threads); unset($thread, $counter); $pageinfo_pagenav = array(); if (!empty($vbulletin->GPC['perpage'])) { $pageinfo_pagenav['pp'] = $perpage; } if (!empty($vbulletin->GPC['prefixid'])) { $pageinfo_pagenav['prefixid'] = $vbulletin->GPC['prefixid']; } if (!empty($vbulletin->GPC['sortfield'])) { $pageinfo_pagenav['sort'] = $sortfield; } if (!empty($vbulletin->GPC['sortorder'])) { $pageinfo_pagenav['order'] = $vbulletin->GPC['sortorder']; } if (!empty($vbulletin->GPC['daysprune'])) { $pageinfo_pagenav['daysprune'] = $daysprune; } $pagenav = construct_page_nav($pagenumber, $perpage, $totalthreads, 'forumdisplay.php?' . $vbulletin->session->vars['sessionurl'] . "f={$foruminfo['forumid']}", '', '', 'forum', $foruminfo, $pageinfo_pagenav); } unset($threads, $dotthreads); // get colspan for bottom bar $foruminfo['bottomcolspan'] = 5; if ($foruminfo['allowicons']) { $foruminfo['bottomcolspan']++; } if ($show['inlinemod']) { $foruminfo['bottomcolspan']++; } $show['threadslist'] = true; ///////////////////////////////// } else { $show['threadslist'] = false; $canpost = false; // FRNR } ///////////////////////////////// if (!$vbulletin->GPC['prefixid'] and $newthreads < 1 and $unreadchildforums < 1) { mark_forum_read($foruminfo, $vbulletin->userinfo['userid'], TIMENOW); } // FNRN Below $out = array(); if (is_array($thread_data) && count($thread_data) > 0) { $out['threads'] = $thread_data; } else { $out['threads'] = array(); } if (is_array($thread_data_sticky) && count($thread_data_sticky) > 0) { $out['threads_sticky'] = $thread_data_sticky; $out['total_sticky_threads'] = count($thread_data_sticky); } else { $out['threads_sticky'] = array(); $out['total_sticky_threads'] = 0; } // Announcements become #1 on the threads if (is_array($announcements_out) && count($announcements_out) == 1) { array_unshift($out['threads'], $announcements_out[0]); $totalthreads++; } $out['total_threads'] = $totalthreads ? $totalthreads : 0; if ($forumbits) { $out['forums'] = $forumbits; } else { $out['forums'] = array(); } $out['canpost'] = $canpost ? 1 : 0; $out['canattach'] = ($forumperms & $vbulletin->bf_ugp_forumpermissions['canpostattachment'] and $vbulletin->userinfo['userid']); // Get thread prefixes for this forum (if any) $prefix_out = array(); if ($prefixsets = fetch_prefix_array($forumid)) { foreach ($prefixsets as $prefixsetid => $prefixes) { $optgroup_options = ''; foreach ($prefixes as $prefixid => $prefix) { if ($permcheck and !can_use_prefix($prefixid, $prefix['restrictions'])) { continue; } $optionvalue = $prefixid; $optiontitle = htmlspecialchars_uni($vbphrase["prefix_{$prefixid}_title_plain"]); $prefix_out[] = array('prefixid' => $prefixid, 'prefixcaption' => prepare_utf8_string($optiontitle)); } } } if ($foruminfo['options'] & $vbulletin->bf_misc_forumoptions['prefixrequired']) { $out['prefixrequired'] = true; } else { $out['prefixrequired'] = false; } $out['prefixes'] = $prefix_out; return $out; }
} else { if ($_GET['approval'] == '1') { $approval = ' AND modqueue = 0'; $params .= '&approval=1'; $cleanapprove = 1; } else { $approval = ''; $cleanapprove = 1; } } $temp = $db->query_first("SELECT COUNT(*) AS files FROM " . TABLE_PREFIX . "dl2_files WHERE {$filesexclude} " . $category . $pin . $approval); $cleanpin = $vbulletin->input->clean_gpc('r', 'pin', TYPE_UINT); $cleancatid = $vbulletin->input->clean_gpc('r', 'category', TYPE_UINT); // $cleanapprove = $vbulletin->input->clean_gpc('r', 'approval', TYPE_UINT); $pagenumber = $vbulletin->input->clean_gpc('r', 'pagenumber', TYPE_UINT); sanitize_pageresults($temp['files'], $pagenumber, $vbulletin->options['dl2perpage'], $vbulletin->options['dl2perpage'], $vbulletin->options['dl2perpage']); $limit = ($pagenumber - 1) * $vbulletin->options['dl2perpage']; $pagenav = construct_page_nav($pagenumber, $vbulletin->options['dl2perpage'], $temp['files'], "downloads.php?" . $vbulletin->session->vars['sessionurl'] . "do=manfiles&pin={$cleanpin}&approval={$cleanapprove}", "" . (!empty($cleancatid) ? "&category={$cleancatid}" : "")); $params .= '&page=' . $pagenumber; $result = $db->query_read("SELECT * FROM " . TABLE_PREFIX . "dl2_files WHERE {$filesexclude} " . $category . $pin . $approval . " ORDER BY `id` DESC LIMIT {$limit}, " . $vbulletin->options['dl2perpage']); if ($db->num_rows($result) > 0) { while ($file = $db->fetch_array($result)) { exec_switch_bg(); $file['title'] = htmlspecialchars_uni($file['title']); if ($file['modqueue'] == 0) { $info = ' <span style="color: blue;">' . $vbphrase['dl2_approved'] . '</span>'; } else { $info = ' <span style="color: red;">' . $vbphrase['dl2_unapproved'] . '</span>'; } if ($file['pin'] == 1) { $info .= ', ' . $vbphrase['dl2_pinned'];
$photoplog_where_sql = 'WHERE 1=0'; if (!empty($photoplog_album_fileids)) { $photoplog_where_sql = 'WHERE fileid IN (' . implode(',', $photoplog_album_fileids) . ')'; } $db->free_result($photoplog_album_info); } $photoplog_catid_sql = ''; if ($photoplog_catid_default && !in_array($photoplog_catid_default, $photoplog_perm_not_allowed_bits)) { $photoplog_catid_link = '&cid=' . intval($photoplog_catid_default); $photoplog_catid_sql = 'AND catid = ' . intval($photoplog_catid_default); } ($hook = vBulletinHook::fetch_hook('photoplog_selector_sql')) ? eval($hook) : false; $photoplog_file_info = $db->query_first_slave("SELECT COUNT(*) AS cnt1\r\n\t\tFROM " . PHOTOPLOG_PREFIX . "photoplog_fileuploads\r\n\t\t{$photoplog_where_sql}\r\n\t\t{$photoplog_catid_sql}\r\n\t"); $photoplog_file_tot = intval($photoplog_file_info['cnt1']); $db->free_result($photoplog_file_info); sanitize_pageresults($photoplog_file_tot, $photoplog_page_num, $photoplog_per_page, 5, 5); $photoplog_limit_lower = ($photoplog_page_num - 1) * $photoplog_per_page; if ($photoplog_limit_lower < 0) { $photoplog_limit_lower = 0; } $photoplog_limit_lower = intval($photoplog_limit_lower); $photoplog_per_page = intval($photoplog_per_page); $photoplog_file_infos = $db->query_read_slave("SELECT fileid,userid,filename\r\n\t\t\tFROM " . PHOTOPLOG_PREFIX . "photoplog_fileuploads\r\n\t\t\t{$photoplog_where_sql}\r\n\t\t\t{$photoplog_catid_sql}\r\n\t\t\tORDER BY dateline DESC\r\n\t\t\tLIMIT {$photoplog_limit_lower},{$photoplog_per_page}\r\n\t"); $photoplog_sort_url = $photoplog['location'] . '/selector.php?' . $vbulletin->session->vars['sessionurl'] . 'do=view' . $photoplog_catid_link . $photoplog_albumid_link . '&e=' . urlencode($photoplog_editorid); $photoplog['pagenav'] = construct_page_nav($photoplog_page_num, $photoplog_per_page, $photoplog_file_tot, $photoplog_sort_url); $photoplog_cnt = 0; $photoplog_selector_bits = ''; $photoplog_bbcode_link = $vbulletin->options['photoplog_bbcode_link']; while ($photoplog_file_info = $db->fetch_array($photoplog_file_infos)) { $photoplog_cnt++; $photoplog['fileid'] = intval($photoplog_file_info['fileid']);
} } } } $db->free_result($photoplog_file_infos); $photoplog_search_tot = count($photoplog_fid_bits); $photoplog_catbit_info = array(); $photoplog_catbit_subcats = ''; if (!$photoplog_search_tot) { photoplog_output_page('photoplog_error_page', $vbphrase['photoplog_error'], $vbphrase['photoplog_no_results']); } $photoplog_numcat_thumbs = intval($vbulletin->options['photoplog_numcat_thumbs']); if ($photoplog_numcat_thumbs < 1) { photoplog_output_page('photoplog_error_page', $vbphrase['photoplog_error'], $vbphrase['photoplog_no_results']); } sanitize_pageresults($photoplog_search_tot, $photoplog_page_num, $photoplog_per_page, $photoplog_numcat_thumbs, $photoplog_numcat_thumbs); $photoplog_search_limit_lower = ($photoplog_page_num - 1) * $photoplog_per_page; if ($photoplog_search_limit_lower < 0) { $photoplog_search_limit_lower = 0; } $photoplog_search_limit_lower = intval($photoplog_search_limit_lower); $photoplog_per_page = intval($photoplog_per_page); $photoplog['fid_list'] = implode(",", $photoplog_fid_bits); $photoplog_last_comment_ids_list = "0"; if ($photoplog_last_comment_ids) { $photoplog_last_comment_ids_list = implode(",", $photoplog_last_comment_ids); } $photoplog_file_infos = $db->query_read_slave("SELECT catid, fileid, userid, username, title,\r\n\t\t\tdescription, filename, filesize, dimensions, dateline, views, moderate,\r\n\t\t{$photoplog_admin_sql4}\r\n\t\tFROM " . PHOTOPLOG_PREFIX . "photoplog_fileuploads\r\n\t\tWHERE fileid IN (" . $photoplog['fid_list'] . ")\r\n\t\t{$photoplog_catid_sql1}\r\n\t\t{$photoplog_admin_sql1}\r\n\t\t{$photoplog_searchorderoption_sql}\r\n\t\tLIMIT {$photoplog_search_limit_lower},{$photoplog_per_page}\r\n\t"); $photoplog_sort_url = $photoplog['location'] . '/search.php?' . $vbulletin->session->vars['sessionurl'] . 'do=view' . $photoplog_search_pagination_link; $photoplog['pagenav'] = construct_page_nav($photoplog_page_num, $photoplog_per_page, $photoplog_search_tot, $photoplog_sort_url, ''); $photoplog_last_comment_infos = $db->query_read_slave("SELECT fileid,\r\n\t\t\tuserid, username, title, dateline, commentid\r\n\t\tFROM " . PHOTOPLOG_PREFIX . "photoplog_ratecomment\r\n\t\tWHERE commentid IN (" . $photoplog_last_comment_ids_list . ")\r\n\t\t{$photoplog_catid_sql2}\r\n\t\t{$photoplog_admin_sql2}\r\n\t\tAND comment != ''\r\n\t\tORDER BY dateline DESC\r\n\t");
} if ($vbulletin->GPC['next']) { $pagenumber = $vbulletin->GPC['pagenumber'] + 1; $vbulletin->GPC['pagenumber'] = $pagenumber; } else { if ($vbulletin->GPC['previous']) { $pagenumber = $vbulletin->GPC['pagenumber'] - 1; $vbulletin->GPC['pagenumber'] = $pagenumber; } } if ($vbulletin->GPC['marketid'] > 0) { $grabitem = $vbulletin->GPC['marketid']; } $cel_users = $db->query_first("\r\n SELECT COUNT('tranid') AS users_donate\r\n FROM " . TABLE_PREFIX . "market_transactions AS market_transactions\r\n WHERE gift_customid='{$grabitem}'\r\n"); // Sanitize for points user has stolen sanitize_pageresults($cel_users['users_stolen'], $pagenumber, $perpage, 100, 20); if ($vbulletin->GPC['pagenumber'] < 1) { $vbulletin->GPC['pagenumber'] = 1; } else { if ($vbulletin->GPC['pagenumber'] > ceil(($cel_users['users_donate'] + 1) / $perpage)) { $vbulletin->GPC['pagenumber'] = ceil(($cel_users['users_donate'] + 1) / $perpage); } } $limitlower = ($vbulletin->GPC['pagenumber'] - 1) * $perpage; $limitupper = $vbulletin->GPC['pagenumber'] * $perpage; print_cp_header($vbphrase['market_history_header']); print_form_header('market', 'itemcustomgifthistory'); print_table_header($vbphrase['market_history_header'], 6); print_description_row($vbphrase['market_history_description'], 0, 6); construct_hidden_code('pagenumber', $vbulletin->GPC['pagenumber']); construct_hidden_code('marketid', $grabitem);
FROM " . TABLE_PREFIX . "user AS user " . ($include_userfield_join ? "LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield USING (userid)" : '') . " $hook_query_joins WHERE $condition AND (user.usergroupid IN ($ids)" . (defined('MEMBERLIST_INCLUDE_SECONDARY') ? (" OR FIND_IN_SET(" . implode(', user.membergroupids) OR FIND_IN_SET(', $idarray) . ", user.membergroupids)") : '') . ") $hook_query_where "); $totalusers = $userscount['users']; if (!$totalusers) { eval(standard_error(fetch_error('searchnoresults', $displayCommon))); } // set defaults sanitize_pageresults($totalusers, $pagenumber, $perpage, 100, $vbulletin->options['memberlistperpage']); $sortaddon = ($vbulletin->GPC['postslower']) ? 'postslower=' . $vbulletin->GPC['postslower'] . '&' : ''; $sortaddon .= ($vbulletin->GPC['postsupper']) ? 'postsupper=' . $vbulletin->GPC['postsupper'] . '&' : ''; $sortaddon .= ($vbulletin->GPC['ausername'] != '') ? 'ausername='******'ausername']) . '&' : ''; $sortaddon .= ($vbulletin->GPC['homepage'] != '') ? 'homepage=' . urlencode($vbulletin->GPC['homepage']) . '&' : ''; $sortaddon .= ($vbulletin->GPC['icq'] != '') ? 'icq=' . urlencode($vbulletin->GPC['icq']) . '&' : ''; $sortaddon .= ($vbulletin->GPC['aim'] != '') ? 'aim=' . urlencode($vbulletin->GPC['aim']) . '&' : ''; $sortaddon .= ($vbulletin->GPC['yahoo'] != '') ? 'yahoo=' . urlencode($vbulletin->GPC['yahoo']) . '&' : ''; $sortaddon .= ($vbulletin->GPC['msn'] != '') ? 'msn=' . urlencode($vbulletin->GPC['msn']) . '&' : ''; $sortaddon .= ($vbulletin->GPC['skype'] != '') ? 'skype=' . urlencode($vbulletin->GPC['skype']) . '&' : ''; $sortaddon .= ($vbulletin->GPC['joindateafter'] != '') ? 'joindateafter=' . urlencode($vbulletin->GPC['joindateafter']) . '&' : ''; $sortaddon .= ($vbulletin->GPC['joindatebefore'] != '') ? 'joindatebefore=' . urlencode($vbulletin->GPC['joindatebefore']) . '&' : ''; $sortaddon .= ($vbulletin->GPC['lastpostafter'] != '') ? 'lastpostafter=' . urlencode($vbulletin->GPC['lastpostafter']) . '&' : ''; $sortaddon .= ($vbulletin->GPC['lastpostbefore'] != '') ? 'lastpostbefore=' . urlencode($vbulletin->GPC['lastpostbefore']) . '&' : ''; $sortaddon .= ($usergroupid) ? 'usergroupid=' . $usergroupid . '&' : '';
} if (!empty($row['Fourth_ET']) and !empty($row['Fourth_MPH'])) { $row['Fourth_ET'] = number_format($row['Fourth_ET'], 3, '.', ',') . " @ " . number_format($row['Fourth_MPH'], 2, '.', ',') . " mph"; } if (!empty($row['Sixty'])) { $row['Sixty'] = number_format($row['Sixty'], 3, '.', ','); } else { $row['Sixty'] = ''; } $queue[] = array('id' => $row['ID'], 'car_id' => $row['Car_ID'], 'car_name' => get_vehicle_name($row['Car_ID']), 'driver_id' => $row['Owner'], 'driver' => get_driver_name($row['Owner']), 'date' => date("M d, Y", strtotime($row['Date'])), 'trackid' => $row['Track'], 'track' => get_track_name($row['Track']), '60ft' => $row['Sixty'], '8et' => $row['Eighth_ET'], '4et' => $row['Fourth_ET']); } $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $perpage, $slips_count['slip_count'], 'slips.php?v=' . $vbulletin->GPC['v'] . '' . $vbulletin->session->vars['sessionurl']); } } else { $slips_count = $db->query_first("SELECT COUNT('ID') AS slip_count FROM " . TABLE_PREFIX . "dso_slips"); sanitize_pageresults($slips_count['slip_count'], $pagenumber, $perpage, 100, $vbulletin->options['dso_slips_perpage_slips']); if ($vbulletin->GPC['pagenumber'] < 1) { $vbulletin->GPC['pagenumber'] = 1; } else { if ($vbulletin->GPC['pagenumber'] > ceil(($slips_count['slip_count'] + 1) / $perpage)) { $vbulletin->GPC['pagenumber'] = ceil(($slips_count['slip_count'] + 1) / $perpage); } } $limitlower = ($vbulletin->GPC['pagenumber'] - 1) * $perpage; $limitupper = $vbulletin->GPC['pagenumber'] * $perpage; $slipsqueue = $db->query_read("SELECT ID,Car_ID,Owner,Date,Track,Sixty,Eighth_ET,Eighth_MPH,Fourth_ET,Fourth_MPH FROM " . TABLE_PREFIX . "dso_slips ORDER BY Date DESC LIMIT {$limitlower}, {$perpage}"); if ($db->num_rows($slipsqueue) == 0) { eval(standard_error(fetch_error('slipsqueue_noslips'))); } else { while ($row = $db->fetch_array($slipsqueue)) { if (!empty($row['Eighth_ET']) and !empty($row['Eighth_MPH'])) {
$sqlsortfield = 'subscribeevent.reminder'; $sortphrase = 'reminder'; break; case 'title': $sqlsortfield = 'event.' . $sortfield; $sortphrase = 'event'; break; default: $sqlsortfield = 'event.dateline_from'; $sortfield = 'fromdate'; $sortphrase = 'date'; } $eventcount = $db->query_first_slave("\n\t\tSELECT COUNT(*) AS events\n\t\tFROM " . TABLE_PREFIX . "subscribeevent AS subscribeevent\n\t\tLEFT JOIN " . TABLE_PREFIX . "event AS event ON (subscribeevent.eventid = event.eventid)\n\t\tWHERE subscribeevent.userid = " . $vbulletin->userinfo['userid'] . "\n\t\t\tAND event.visible = 1\n\t"); $totalevents = intval($eventcount['events']); // really stupid mysql bug sanitize_pageresults($totalevents, $pagenumber, $perpage, 200, $vbulletin->options['maxthreads']); $limitlower = ($pagenumber - 1) * $perpage + 1; $limitupper = $pagenumber * $perpage; if ($limitupper > $totalevents) { $limitupper = $totalevents; if ($limitlower > $totalevents) { $limitlower = $totalevents - $perpage; } } if ($limitlower <= 0) { $limitlower = 1; } $getevents = $db->query_read_slave("\n\t\tSELECT event.*, IF(dateline_to = 0, 1, 0) AS singleday, user.username, user.options, user.adminoptions, user.usergroupid, user.membergroupids, user.infractiongroupids, IF(options & " . $vbulletin->bf_misc_useroptions['hasaccessmask'] . ", 1, 0) AS hasaccessmask,\n\t\t\tsubscribeevent.reminder, subscribeevent.subscribeeventid\n\t\t\t" . ($vbulletin->options['avatarenabled'] ? ",avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline,customavatar.width AS avwidth,customavatar.height AS avheight, customavatar.width_thumb AS avwidth_thumb, customavatar.height_thumb AS avheight_thumb, filedata_thumb, NOT ISNULL(customavatar.userid) AS hascustom" : "") . "\n\t\tFROM " . TABLE_PREFIX . "subscribeevent AS subscribeevent\n\t\tLEFT JOIN " . TABLE_PREFIX . "event AS event ON (subscribeevent.eventid = event.eventid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON (event.userid = user.userid)\n\t\t" . ($vbulletin->options['avatarenabled'] ? "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON(avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON(customavatar.userid = user.userid)" : "") . "\n\t\tWHERE\n\t\t\tsubscribeevent.userid = " . $vbulletin->userinfo['userid'] . "\n\t\t\t\tAND\n\t\t\tevent.visible = 1\n\t\tORDER BY\n\t\t\t{$sqlsortfield} {$sortorder}\n\t\tLIMIT " . ($limitlower - 1) . ", {$perpage}\n\t"); $itemcount = ($pagenumber - 1) * $perpage; $first = $itemcount + 1; if ($db->num_rows($getevents)) {
$createdby = "createdby"; } // **************** Actions Done By Me ******************* if ($type == 1) { $query = "createdby = '{$userid}'"; $createdby = "purchasedby"; } // Check if User Has Purchased Access if ($vbulletin->userinfo[market_gift_access] != 1) { standard_error($vbphrase['market_error_nopurchase']); } // Pageinating for points user has stolen $vbulletin->input->clean_array_gpc('r', array('perpage' => TYPE_UINT, 'pagenumber' => TYPE_UINT)); $cel_users = $db->query_first("\r\n SELECT COUNT('giftid') AS gift_count\r\n FROM " . TABLE_PREFIX . "market_gifts AS market_gifts\r\n WHERE {$query}\r\n"); // Sanitize for points user has stolen sanitize_pageresults($cel_users['giftid'], $pagenumber, $perpage, 100, 20); if ($vbulletin->GPC['pagenumber'] < 1) { $vbulletin->GPC['pagenumber'] = 1; } else { if ($vbulletin->GPC['pagenumber'] > ceil(($cel_users['giftid'] + 1) / $perpage)) { $vbulletin->GPC['pagenumber'] = ceil(($cel_users['giftid'] + 1) / $perpage); } } $limitlower = ($vbulletin->GPC['pagenumber'] - 1) * $perpage; $limitupper = $vbulletin->GPC['pagenumber'] * $perpage; // Main Query to find who user has stolen from $result = $db->query_read("SELECT * FROM " . TABLE_PREFIX . "market_gifts AS market_gifts\r\n WHERE {$query} order by giftid DESC LIMIT {$limitlower}, {$perpage}"); while ($shu = $vbulletin->db->fetch_array($result)) { ++$loop_count; // Find User $other_user = $db->fetch_array($db->query_read("SELECT userid,username FROM " . TABLE_PREFIX . "user where userid='{$shu[$createdby]}'"));
eval('$attachments .= "' . fetch_template('attachmentbit') . '";'); } ($hook = vBulletinHook::fetch_hook('misc_showattachments_complete')) ? eval($hook) : false; eval('print_output("' . fetch_template('ATTACHMENTS') . '");'); } else { eval(standard_error(fetch_error('noattachments'))); } } // ############################### start show avatars ############################### if ($_REQUEST['do'] == 'showavatars') { $vbulletin->input->clean_array_gpc('r', array('pagenumber' => TYPE_UINT)); ($hook = vBulletinHook::fetch_hook('misc_avatars_start')) ? eval($hook) : false; $perpage = $vbulletin->options['numavatarsperpage']; $totalavatars = $db->query_first_slave("\n\t\tSELECT COUNT(*) AS count\n\t\tFROM " . TABLE_PREFIX . "avatar AS avatar\n\t\tLEFT JOIN " . TABLE_PREFIX . "imagecategorypermission AS perm ON (perm.imagecategoryid=avatar.imagecategoryid AND perm.usergroupid=" . $vbulletin->userinfo['usergroupid'] . ")\n\t\tWHERE ISNULL(perm.imagecategoryid)\n\t"); $totalavatars = intval($totalavatars['count']); sanitize_pageresults($totalavatars, $vbulletin->GPC['pagenumber'], $perpage, 100, 25); $startat = ($vbulletin->GPC['pagenumber'] - 1) * $perpage; $first = $startat + 1; $last = $startat + $perpage; if ($last > $totalavatars) { $last = $totalavatars; } $minposts = 0; $avatarbits = ''; $avatars = $db->query_read_slave("\n\t\tSELECT avatar.title,minimumposts,avatarpath,imagecategory.title AS category\n\t\tFROM " . TABLE_PREFIX . "avatar AS avatar\n\t\tLEFT JOIN " . TABLE_PREFIX . "imagecategory AS imagecategory ON (imagecategory.imagecategoryid=avatar.imagecategoryid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "imagecategorypermission AS perm ON (perm.imagecategoryid=avatar.imagecategoryid AND perm.usergroupid=" . $vbulletin->userinfo['usergroupid'] . ")\n\t\tWHERE ISNULL(perm.imagecategoryid)\n\t\tORDER BY minimumposts,imagecategory.displayorder,avatar.displayorder\n\t\tLIMIT {$startat}, {$perpage}\n\t"); $avatarsonthispage = $db->num_rows($avatars); // check to see that there are some avatars to display if ($db->num_rows($avatars)) { $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $perpage, $totalavatars, 'misc.php?' . $vbulletin->session->vars['sessionurl'] . 'do=showavatars'); exec_switch_bg(); while ($avatar = $db->fetch_array($avatars)) {
/** * Prepare any data needed for the output * * @param string The id of the block * @param array Options specific to the block */ function prepare_output($id = '', $options = array()) { global $show, $vbphrase; $show['infractions'] = false; ($hook = vBulletinHook::fetch_hook('member_infraction_start')) ? eval($hook) : false; $perpage = $options['perpage']; $pagenumber = $options['pagenumber']; $totalinfractions = $this->registry->db->query_first_slave("\n\t\t\tSELECT COUNT(*) AS count\n\t\t\tFROM " . TABLE_PREFIX . "infraction AS infraction\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "post AS post ON (infraction.postid = post.postid)\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "thread AS thread ON (post.threadid = thread.threadid)\n\t\t\tWHERE infraction.userid = " . $this->profile->userinfo['userid'] . "\n\t\t"); if ($totalinfractions['count']) { if (!$pagenumber or $options['tab'] != $id) { $pagenumber = 1; } // set defaults sanitize_pageresults($totalinfractions['count'], $pagenumber, $perpage, 100, 5); $limitlower = ($pagenumber - 1) * $perpage + 1; $limitupper = $pagenumber * $perpage; if ($limitupper > $totalinfractions['count']) { $limitupper = $totalinfractions['count']; if ($limitlower > $totalinfractions['count']) { $limitlower = $totalinfractions['count'] - $perpage; } } if ($limitlower <= 0) { $limitlower = 1; } if ($this->profile->userinfo['userid'] != $this->registry->userinfo['userid'] and $this->registry->userinfo['permissions']['genericpermissions'] & $this->registry->bf_ugp_genericpermissions['canreverseinfraction']) { $show['reverse'] = true; } require_once DIR . '/includes/class_bbcode.php'; $bbcode_parser = new vB_BbCodeParser($this->registry, fetch_tag_list()); $infractions = $this->registry->db->query_read_slave("\n\t\t\t\tSELECT infraction.*, thread.title, thread.threadid, user.username, thread.visible AS thread_visible, post.visible,\n\t\t\t\t\tforumid, postuserid, IF(ISNULL(post.postid) AND infraction.postid != 0, 1, 0) AS postdeleted\n\t\t\t\tFROM " . TABLE_PREFIX . "infraction AS infraction\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "post AS post ON (infraction.postid = post.postid)\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "thread AS thread ON (post.threadid = thread.threadid)\n\t\t\t\tINNER JOIN " . TABLE_PREFIX . "user AS user ON (infraction.whoadded = user.userid)\n\t\t\t\tWHERE infraction.userid = " . $this->profile->userinfo['userid'] . "\n\t\t\t\tORDER BY infraction.dateline DESC\n\t\t\t\tLIMIT " . ($limitlower - 1) . ", {$perpage}\n\t\t\t"); while ($infraction = $this->registry->db->fetch_array($infractions)) { $show['expired'] = $show['reversed'] = $show['neverexpires'] = false; $card = $infraction['points'] > 0 ? 'redcard' : 'yellowcard'; $infraction['timeline'] = vbdate($this->registry->options['timeformat'], $infraction['dateline']); $infraction['dateline'] = vbdate($this->registry->options['dateformat'], $infraction['dateline']); switch ($infraction['action']) { case 0: if ($infraction['expires'] != 0) { $infraction['expires_timeline'] = vbdate($this->registry->options['timeformat'], $infraction['expires']); $infraction['expires_dateline'] = vbdate($this->registry->options['dateformat'], $infraction['expires']); $show['neverexpires'] = false; } else { $show['neverexpires'] = true; } break; case 1: $show['expired'] = true; break; case 2: $show['reversed'] = true; break; } $infraction['threadtitle'] = vbstrlen($infraction['title']) > 25 ? fetch_trimmed_title($infraction['title'], 24) : $infraction['title']; $infraction['reason'] = !empty($vbphrase['infractionlevel' . $infraction['infractionlevelid'] . '_title']) ? $vbphrase['infractionlevel' . $infraction['infractionlevelid'] . '_title'] : ($infraction['customreason'] ? $infraction['customreason'] : $vbphrase['n_a']); $show['threadtitle'] = true; $show['postdeleted'] = false; if ($infraction['postid'] != 0) { if ($infraction['postdeleted']) { $show['postdeleted'] = true; } else { if ((!$infraction['visible'] or !$infraction['thread_visible']) and !can_moderate($infraction['forumid'], 'canmoderateposts')) { $show['threadtitle'] = false; } else { if (($infraction['visible'] == 2 or $infraction['thread_visible'] == 2) and !can_moderate($infraction['forumid'], 'candeleteposts')) { $show['threadtitle'] = false; } else { $forumperms = fetch_permissions($infraction['forumid']); if (!($forumperms & $this->registry->bf_ugp_forumpermissions['canview'])) { $show['threadtitle'] = false; } if (!($forumperms & $this->registry->bf_ugp_forumpermissions['canviewothers']) and ($infraction['postuserid'] != $this->registry->userinfo['userid'] or $this->registry->userinfo['userid'] == 0)) { $show['threadtitle'] = false; } } } } } ($hook = vBulletinHook::fetch_hook('member_infractionbit')) ? eval($hook) : false; $threadinfo = array('threadid' => $infraction['threadid'], 'title' => $infraction['title']); $pageinfo = array('p' => $infraction['postid']); $memberinfo = array('userid' => $infraction['whoadded'], 'username' => $infraction['username']); $templater = vB_Template::create('memberinfo_infractionbit'); $templater->register('card', $card); $templater->register('infraction', $infraction); $templater->register('memberinfo', $memberinfo); $templater->register('pageinfo', $pageinfo); $templater->register('threadinfo', $threadinfo); $infractionbits .= $templater->render(); } unset($bbcode_parser); $pageinfo_pagenav = array('tab' => $id); if ($options['perpage']) { $pageinfo_pagenav['pp'] = $options['perpage']; } $this->block_data['pagenav'] = construct_page_nav($pagenumber, $perpage, $totalinfractions['count'], '', '', $id, 'member', $this->profile->userinfo, $pageinfo_pagenav); $this->block_data['infractionbits'] = $infractionbits; } $show['giveinfraction'] = ($this->registry->userinfo['permissions']['genericpermissions'] & $this->registry->bf_ugp_genericpermissions['cangiveinfraction'] and $this->profile->userinfo['userid'] != $this->registry->userinfo['userid'] and !($this->profile->userinfo['permissions']['adminpermissions'] & $this->registry->bf_ugp_adminpermissions['cancontrolpanel']) and (!($this->profile->userinfo['permissions']['adminpermissions'] & $this->registry->bf_ugp_adminpermissions['ismoderator']) or $this->registry->userinfo['permissions']['adminpermissions'] & $this->registry->bf_ugp_adminpermissions['cancontrolpanel'])); ($hook = vBulletinHook::fetch_hook('member_infraction_complete')) ? eval($hook) : false; }
function do_get_subscriptions() { global $vbulletin, $db, $show, $vbphrase, $permissions, $subscribecounters; $vbulletin->options['threadpreview'] = FR_PREVIEW_LEN; if (!$vbulletin->userinfo['userid']) { json_error(ERR_NO_PERMISSION); } if (!$vbulletin->userinfo['userid'] and $_REQUEST['do'] != 'removesubscription' or $vbulletin->userinfo['userid'] and !($permissions['forumpermissions'] & $vbulletin->bf_ugp_forumpermissions['canview']) or $vbulletin->userinfo['usergroupid'] == 4 or !($permissions['genericoptions'] & $vbulletin->bf_ugp_genericoptions['isnotbannedgroup'])) { json_error(ERR_NO_PERMISSION); } $thread_data = array(); $unread_subs = 0; // vbulletin expects folderid, but we will just get them all $vbulletin->input->clean_array_gpc('r', array('folderid' => TYPE_NOHTML, 'perpage' => TYPE_UINT, 'pagenumber' => TYPE_UINT, 'sortfield' => TYPE_NOHTML, 'sortorder' => TYPE_NOHTML, 'previewtype' => TYPE_INT)); $previewtype = $vbulletin->GPC['previewtype']; if (!$previewtype) { $previewtype = 1; } $vbulletin->GPC['folderid'] = 'all'; // Values that are reused in templates $sortfield =& $vbulletin->GPC['sortfield']; $perpage =& $vbulletin->GPC['perpage']; $pagenumber =& $vbulletin->GPC['pagenumber']; $folderid =& $vbulletin->GPC['folderid']; if ($folderid == 'all') { $getallfolders = true; $show['allfolders'] = true; } else { $folderid = intval($folderid); } $folderselect["{$folderid}"] = 'selected="selected"'; // Build folder jump require_once DIR . '/includes/functions_misc.php'; $folders = construct_folder_jump(1, $folderid, false, '', true); $templater = vB_Template::create('subscribe_folder_jump'); $templater->register('folders', $folders); $folderjump = $templater->render(); // look at sorting options: if ($vbulletin->GPC['sortorder'] != 'asc') { $vbulletin->GPC['sortorder'] = 'desc'; $sqlsortorder = 'DESC'; $order = array('desc' => 'selected="selected"'); } else { $sqlsortorder = ''; $order = array('asc' => 'selected="selected"'); } switch ($sortfield) { case 'title': case 'lastpost': case 'replycount': case 'views': case 'postusername': $sqlsortfield = 'thread.' . $sortfield; break; default: $handled = false; if (!$handled) { $sqlsortfield = 'thread.lastpost'; $sortfield = 'lastpost'; } } $sort = array($sortfield => 'selected="selected"'); if ($getallfolders) { $totalallthreads = array_sum($subscribecounters); } else { $totalallthreads = $subscribecounters["{$folderid}"]; } // set defaults sanitize_pageresults($totalallthreads, $pagenumber, $perpage, 200, $vbulletin->options['maxthreads']); // display threads $limitlower = ($pagenumber - 1) * $perpage + 1; $limitupper = $pagenumber * $perpage; if ($limitupper > $totalallthreads) { $limitupper = $totalallthreads; if ($limitlower > $totalallthreads) { $limitlower = $totalallthreads - $perpage; } } if ($limitlower <= 0) { $limitlower = 1; } $hook_query_fields = $hook_query_joins = $hook_query_where = ''; $getthreads = $db->query_read_slave("\n\t\tSELECT thread.threadid, emailupdate, subscribethreadid, thread.forumid, thread.postuserid\n\t\t\t{$hook_query_fields}\n\t\tFROM " . TABLE_PREFIX . "subscribethread AS subscribethread\n\t\tLEFT JOIN " . TABLE_PREFIX . "thread AS thread ON(thread.threadid = subscribethread.threadid)\n\t\t{$hook_query_joins}\n\t\tWHERE subscribethread.userid = " . $vbulletin->userinfo['userid'] . "\n\t\t\tAND thread.visible = 1\n\t\t\tAND canview = 1\n\t\t" . iif(!$getallfolders, "\tAND folderid = {$folderid}") . "\n\t\t\t{$hook_query_where}\n\t\tORDER BY {$sqlsortfield} {$sqlsortorder}\n\t\tLIMIT " . ($limitlower - 1) . ", {$perpage}\n\t"); if ($totalthreads = $db->num_rows($getthreads)) { $forumids = array(); $threadids = array(); $emailupdate = array(); $killthreads = array(); while ($getthread = $db->fetch_array($getthreads)) { $forumperms = fetch_permissions($getthread['forumid']); if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) or !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) or $getthread['postuserid'] != $vbulletin->userinfo['userid'] and !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers'])) { $killthreads["{$getthread['subscribethreadid']}"] = $getthread['subscribethreadid']; $totalallthreads--; continue; } $forumids["{$getthread['forumid']}"] = true; $threadids[] = $getthread['threadid']; $emailupdate["{$getthread['threadid']}"] = $getthread['emailupdate']; $subscribethread["{$getthread['threadid']}"] = $getthread['subscribethreadid']; } $threadids = implode(',', $threadids); } unset($getthread); $db->free_result($getthreads); if (!empty($killthreads)) { // Update thread subscriptions $vbulletin->db->query_write("\n\t\t\tUPDATE " . TABLE_PREFIX . "subscribethread\n\t\t\tSET canview = 0\n\t\t\tWHERE subscribethreadid IN (" . implode(', ', $killthreads) . ")\n\t\t"); } if (!empty($threadids)) { cache_ordered_forums(1); $colspan = 5; $show['threadicons'] = false; // get last read info for each thread $lastread = array(); foreach (array_keys($forumids) as $forumid) { if ($vbulletin->options['threadmarking']) { $lastread["{$forumid}"] = max($vbulletin->forumcache["{$forumid}"]['forumread'], TIMENOW - $vbulletin->options['markinglimit'] * 86400); } else { $lastread["{$forumid}"] = max(intval(fetch_bbarray_cookie('forum_view', $forumid)), $vbulletin->userinfo['lastvisit']); } if ($vbulletin->forumcache["{$forumid}"]['options'] & $vbulletin->bf_misc_forumoptions['allowicons']) { $show['threadicons'] = true; $colspan = 6; } } if ($previewtype == 1) { $previewfield = "post.pagetext AS preview, post.username AS lastpost_username, post.userid AS lastpost_userid,"; $previewjoin = "LEFT JOIN " . TABLE_PREFIX . "post AS post ON(post.postid = thread.firstpostid)"; } else { $previewfield = "post.pagetext AS preview, post.username AS lastpost_username, post.userid AS lastpost_userid,"; $previewjoin = "LEFT JOIN " . TABLE_PREFIX . "post AS post ON(post.postid = thread.lastpostid)"; } $hasthreads = true; $threadbits = ''; $pagenav = ''; $counter = 0; $toread = 0; $vbulletin->options['showvotes'] = intval($vbulletin->options['showvotes']); if ($vbulletin->userinfo['userid'] and in_coventry($vbulletin->userinfo['userid'], true)) { $lastpost_info = "IF(tachythreadpost.userid IS NULL, thread.lastpost, tachythreadpost.lastpost) AS lastpost, " . "IF(tachythreadpost.userid IS NULL, thread.lastposter, tachythreadpost.lastposter) AS lastposter, " . "IF(tachythreadpost.userid IS NULL, thread.lastposterid, tachythreadpost.lastposterid) AS lastposterid, " . "IF(tachythreadpost.userid IS NULL, thread.lastpostid, tachythreadpost.lastpostid) AS lastpostid"; $tachyjoin = "LEFT JOIN " . TABLE_PREFIX . "tachythreadpost AS tachythreadpost ON " . "(tachythreadpost.threadid = thread.threadid AND tachythreadpost.userid = " . $vbulletin->userinfo['userid'] . ')'; } else { $lastpost_info = 'thread.lastpost, thread.lastposter, thread.lastposterid, thread.lastpostid'; $tachyjoin = ''; } $hook_query_fields = $hook_query_joins = $hook_query_where = ''; $threads = $db->query_read_slave("\n\t\t\tSELECT\n\t\t\t\tIF(thread.votenum >= " . $vbulletin->options['showvotes'] . ", thread.votenum, 0) AS votenum,\n\t\t\t\tIF(thread.votenum >= " . $vbulletin->options['showvotes'] . " AND thread.votenum > 0, thread.votetotal / thread.votenum, 0) AS voteavg,\n\t\t\t\tthread.votetotal,\n\t\t\t\t{$previewfield} thread.threadid, thread.title AS threadtitle, thread.forumid, thread.pollid,\n\t\t\t\tthread.open, thread.replycount, thread.postusername, thread.prefixid,\n\t\t\t\t{$lastpost_info}, thread.postuserid, thread.dateline, thread.views, thread.iconid AS threadiconid,\n\t\t\t\tthread.notes, thread.visible, thread.attach, thread.taglist\n\t\t\t\t" . ($vbulletin->options['threadmarking'] ? ", threadread.readtime AS threadread" : '') . "\n\t\t\t\t{$hook_query_fields}\n\t\t\tFROM " . TABLE_PREFIX . "thread AS thread\n\t\t\t{$previewjoin}\n\t\t\t" . ($vbulletin->options['threadmarking'] ? " LEFT JOIN " . TABLE_PREFIX . "threadread AS threadread ON (threadread.threadid = thread.threadid AND threadread.userid = " . $vbulletin->userinfo['userid'] . ")" : '') . "\n\t\t\t{$tachyjoin}\n\t\t\t{$hook_query_joins}\n\t\t\tWHERE thread.threadid IN ({$threadids})\n\t\t\tORDER BY {$sqlsortfield} {$sqlsortorder}\n\t\t"); unset($sqlsortfield, $sqlsortorder); require_once DIR . '/includes/functions_forumdisplay.php'; // Get Dot Threads $dotthreads = fetch_dot_threads_array($threadids); if ($vbulletin->options['showdots'] and $vbulletin->userinfo['userid']) { $show['dotthreads'] = true; } else { $show['dotthreads'] = false; } if ($vbulletin->options['threadpreview'] and $vbulletin->userinfo['ignorelist']) { // Get Buddy List $buddy = array(); if (trim($vbulletin->userinfo['buddylist'])) { $buddylist = preg_split('/( )+/', trim($vbulletin->userinfo['buddylist']), -1, PREG_SPLIT_NO_EMPTY); foreach ($buddylist as $buddyuserid) { $buddy["{$buddyuserid}"] = 1; } } DEVDEBUG('buddies: ' . implode(', ', array_keys($buddy))); // Get Ignore Users $ignore = array(); if (trim($vbulletin->userinfo['ignorelist'])) { $ignorelist = preg_split('/( )+/', trim($vbulletin->userinfo['ignorelist']), -1, PREG_SPLIT_NO_EMPTY); foreach ($ignorelist as $ignoreuserid) { if (!$buddy["{$ignoreuserid}"]) { $ignore["{$ignoreuserid}"] = 1; } } } DEVDEBUG('ignored users: ' . implode(', ', array_keys($ignore))); } $foruminfo['allowratings'] = true; $show['notificationtype'] = true; $show['threadratings'] = true; $show['threadrating'] = true; while ($thread = $db->fetch_array($threads)) { $threadid = $thread['threadid']; // build thread data $thread = process_thread_array($thread, $lastread["{$thread['forumid']}"]); switch ($emailupdate["{$thread['threadid']}"]) { case 0: $thread['notification'] = $vbphrase['none']; break; case 1: $thread['notification'] = $vbphrase['instant']; break; case 2: $thread['notification'] = $vbphrase['daily']; break; case 3: $thread['notification'] = $vbphrase['weekly']; break; default: $thread['notification'] = $vbphrase['n_a']; } $avatarurl = ''; if ($thread['lastpost_userid'] > 0) { $userinfoavatar = fetch_userinfo($thread['lastpost_userid'], FETCH_USERINFO_AVATAR); fetch_avatar_from_userinfo($userinfoavatar, true, false); if ($userinfoavatar['avatarurl'] != '') { $avatarurl = process_avatarurl($userinfoavatar['avatarurl']); } unset($userinfoavatar); } $tmp = array('thread_id' => $thread['threadid'], 'new_posts' => $show['gotonewpost'] ? true : false, 'forum_id' => $thread['forumid'], 'total_posts' => $thread['totalposts'] ? $thread['totalposts'] : 0, 'forum_title' => prepare_utf8_string($thread['forumtitle']), 'thread_title' => prepare_utf8_string($thread['threadtitle']), 'thread_preview' => prepare_utf8_string(preview_chop(html_entity_decode($thread['preview']), FR_PREVIEW_LEN)), 'post_userid' => $thread['lastpost_userid'], 'post_lastposttime' => prepare_utf8_string(date_trunc($thread['lastpostdate']) . ' ' . $thread['lastposttime']), 'post_username' => prepare_utf8_string(strip_tags($thread['lastpost_username']))); if ($avatarurl != '') { $tmp['avatarurl'] = $avatarurl; } if ($thread['attach']) { $tmp['attach'] = true; } if ($thread['pollid']) { $tmp['poll'] = true; } $thread_data[] = $tmp; } $db->free_result($threads); unset($threadids); } else { $totalallthreads = 0; } $out = array('threads' => $thread_data, 'total_threads' => $totalallthreads); return $out; }
$selectedletter =& $ltr; // build letter selector // now do alpha-characters for ($i = 65; $i < 91; $i++) { $currentletter = chr($i); $linkletter =& $currentletter; $show['selectedletter'] = $selectedletter == $currentletter ? true : false; eval('$letterbits .= "' . fetch_template('hospital_list_letter') . '";'); } $hospitalscount = $db->query_first_slave("\r\n\t\tSELECT COUNT(*) AS hospitals\r\n\t\tFROM " . TABLE_PREFIX . HOSPITAL_TABLE . "\r\n\t\tWHERE ({$condition}) AND type=1 AND publish = 1\r\n\t"); $totalhospitals = $hospitalscount['hospitals']; if (!$totalhospitals) { eval(standard_error(fetch_error('searchnoresults', $displayCommon))); } // set defaults sanitize_pageresults($totalhospitals, $pagenumber, $perpage, 100, $vbulletin->options['hospitalsperpage']); $sortaddon = $vbulletin->GPC['countrylower'] ? 'countrylower=' . $vbulletin->GPC['countrylower'] . '&' : ''; $sortaddon .= $vbulletin->GPC['countryupper'] ? 'countryupper=' . $vbulletin->GPC['countryupper'] . '&' : ''; $sortaddon .= $vbulletin->GPC['state'] != '' ? 'state=' . urlencode($vbulletin->GPC['state']) . '&' : ''; $sortaddon .= $vbulletin->GPC['city'] != '' ? 'city=' . urlencode($vbulletin->GPC['city']) . '&' : ''; $sortaddon .= $vbulletin->GPC['name'] != '' ? 'name=' . urlencode($vbulletin->GPC['name']) . '&' : ''; $sortaddon .= $ltr != '' ? 'ltr=' . urlencode($ltr) . '&' : ''; $sortaddon = preg_replace('#&$#s', '', $sortaddon); $sorturl = 'hospitals.php?' . $vbulletin->session->vars['sessionurl'] . $sortaddon; eval('$sortarrow[' . $sortfield . '] = "' . fetch_template('forumdisplay_sortarrow') . '";'); $hospitalsbit = ''; $limitlower = ($pagenumber - 1) * $perpage + 1; $limitupper = $pagenumber * $perpage; $counter = 0; if ($limitupper > $totalhospitals) { $limitupper = $totalhospitals;
$attachsize = 100; } else { $attachsize = ceil($attachsum / $permissions['attachlimit'] * 100); $totalsize = 100 - $attachsize; } $attachlimit = vb_number_format($permissions['attachlimit'], 1, true); } $attachsum = vb_number_format($attachsum, 1, true); if ($showthumbs) { $maxperpage = 10; $defaultperpage = 10; } else { $maxperpage = 200; $defaultperpage = 20; } sanitize_pageresults($totalattachments, $pagenumber, $perpage, $maxperpage, $defaultperpage); $limitlower = ($pagenumber - 1) * $perpage + 1; $limitupper = $pagenumber * $perpage; if ($limitupper > $totalattachments) { $limitupper = $totalattachments; if ($limitlower > $totalattachments) { $limitlower = $totalattachments - $perpage; } } if ($limitlower <= 0) { $limitlower = 1; } // Get attachment info $attachments = $db->query_read_slave("\n\t\t\tSELECT thread.forumid, post.postid, post.threadid AS p_threadid, post.title AS p_title, post.dateline AS p_dateline, attachment.attachmentid,\n\t\t\t\tthread.title AS t_title, attachment.filename, attachment.counter, attachment.filesize AS size, IF(thumbnail_filesize > 0, 1, 0) AS hasthumbnail,\n\t\t\t\tthumbnail_filesize, user.username, thread.open, attachment.userid " . iif($userid == $vbulletin->userinfo['userid'], ", IF(attachment.postid = 0, 1, 0) AS inprogress") . ",\n\t\t\t\tattachment.dateline, attachment.thumbnail_dateline\n\t\t\tFROM " . TABLE_PREFIX . "attachment AS attachment\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "post AS post ON (post.postid = attachment.postid)\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "thread AS thread ON (post.threadid = thread.threadid)\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON (attachment.userid = user.userid)\n\t\t\tWHERE attachment.userid = {$userid}\n\t\t\t\tAND ((forumid IN (0{$forumids}) AND thread.visible = 1 AND post.visible = 1) " . iif($userid == $vbulletin->userinfo['userid'], "OR attachment.postid = 0") . ")\n\t\t\tORDER BY attachment.attachmentid DESC\n\t\t\tLIMIT " . ($limitlower - 1) . ", {$perpage}\n\t\t"); $template['attachmentlistbits'] = ''; while ($post = $db->fetch_array($attachments)) {
while ($photoplog_cnt_bits % 4 != 0) { $photoplog['album_bits'] .= "<td class=\"alt1\" align=\"left\" valign=\"bottom\" width=\"25%\"> </td>"; $photoplog_cnt_bits++; } sanitize_pageresults($photoplog_file_tot, $photoplog_page_num, $photoplog_per_page, $photoplog_page_tot, $photoplog_page_tot); $photoplog_link = 'do=view&aid=' . intval($photoplog['album_albumid']); $photoplog_sort_url = $photoplog['location'] . '/albums.php?' . $vbulletin->session->vars['sessionurl'] . $photoplog_link; $photoplog['album_pagenav'] = construct_page_nav($photoplog_page_num, $photoplog_per_page, $photoplog_file_tot, $photoplog_sort_url); ($hook = vBulletinHook::fetch_hook('photoplog_albums_viewlist')) ? eval($hook) : false; photoplog_output_page('photoplog_album_view_list', $vbphrase['photoplog_album_view']); } else { $photoplog_album_info = $db->query_first_slave("SELECT COUNT(*) AS cnt1\r\n\t\t\tFROM " . PHOTOPLOG_PREFIX . "photoplog_useralbums\r\n\t\t\tWHERE userid = " . intval($vbulletin->userinfo['userid']) . "\r\n\t\t"); $photoplog_album_tot = intval($photoplog_album_info['cnt1']); $db->free_result($photoplog_album_info); $photoplog_page_tot = 10; sanitize_pageresults($photoplog_album_tot, $photoplog_page_num, $photoplog_per_page, $photoplog_page_tot, $photoplog_page_tot); $photoplog_limit_lower = ($photoplog_page_num - 1) * $photoplog_per_page; if ($photoplog_limit_lower < 0) { $photoplog_limit_lower = 0; } $photoplog_limit_lower = intval($photoplog_limit_lower); $photoplog_per_page = intval($photoplog_per_page); $photoplog_link = 'do=view'; $photoplog_sort_url = $photoplog['location'] . '/albums.php?' . $vbulletin->session->vars['sessionurl'] . $photoplog_link; $photoplog['album_pagenav'] = construct_page_nav($photoplog_page_num, $photoplog_per_page, $photoplog_album_tot, $photoplog_sort_url); $photoplog_album_infos = $db->query_read_slave("SELECT albumid,title,description,fileids,visible\r\n\t\t\tFROM " . PHOTOPLOG_PREFIX . "photoplog_useralbums\r\n\t\t\tWHERE userid = " . intval($vbulletin->userinfo['userid']) . "\r\n\t\t\tORDER BY dateline DESC\r\n\t\t\tLIMIT {$photoplog_limit_lower},{$photoplog_per_page}\r\n\t\t"); while ($photoplog_album_info = $db->fetch_array($photoplog_album_infos)) { $photoplog_cnt++; $photoplog['album_albumid'] = intval($photoplog_album_info['albumid']); $photoplog['album_title'] = htmlspecialchars_uni($photoplog_album_info['title']); $photoplog['album_description'] = nl2br(htmlspecialchars_uni($photoplog_album_info['description']));