Example #1
0
 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);
Example #2
0
     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']}&amp;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();
     }
 }
Example #3
0
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'] . '&amp;pp=' . $vbulletin->GPC['perpage'] . '&amp;' . $sorturl);
        $sortfield = $search['sort'];
        unset($search['sort']);
        $sorturl = 'private.php?' . $vbulletin->session->vars['sessionurl'] . 'folderid=' . $vbulletin->GPC['folderid'] . ($searchurl = urlimplode($search) ? '&amp;' . $searchurl : '');
        $oppositesort = $desc ? 'asc' : 'desc';
        $orderlinks = array('date' => $sorturl . '&amp;sort=date' . ($sortfield == 'date' ? '&amp;order=' . $oppositesort : ''), 'title' => $sorturl . '&amp;sort=title' . ($sortfield == 'title' ? '&amp;order=' . $oppositesort : '&amp;order=asc'), 'sender' => $sorturl . '&amp;sort=sender' . ($sortfield == 'sender' ? '&amp;order=' . $oppositesort : '&amp;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);
}
Example #4
0
    }
    $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']);
Example #5
0
 $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=\"&laquo; " . $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=\"&lt; " . $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'] . " &gt;\" 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'] . " &raquo;\" 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);
Example #6
0
 // 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)) {
Example #7
0
     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) {
Example #8
0
         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;
Example #9
0
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'], "&amp;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;
}
Example #10
0
 } else {
     if ($_GET['approval'] == '1') {
         $approval = ' AND modqueue = 0';
         $params .= '&amp;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&amp;pin={$cleanpin}&amp;approval={$cleanapprove}", "" . (!empty($cleancatid) ? "&amp;category={$cleancatid}" : ""));
 $params .= '&amp;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'];
Example #11
0
     $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 = '&amp;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 . '&amp;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']);
Example #12
0
             }
         }
     }
 }
 $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");
Example #13
0
 }
 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);
Example #14
0
		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'] . '&amp;' : '';
	$sortaddon .= ($vbulletin->GPC['postsupper']) ? 'postsupper=' . $vbulletin->GPC['postsupper'] . '&amp;' : '';
	$sortaddon .= ($vbulletin->GPC['ausername'] != '') ? 'ausername='******'ausername']) . '&amp;' : '';
	$sortaddon .= ($vbulletin->GPC['homepage'] != '') ? 'homepage=' . urlencode($vbulletin->GPC['homepage']) . '&amp;' : '';
	$sortaddon .= ($vbulletin->GPC['icq'] != '') ? 'icq=' . urlencode($vbulletin->GPC['icq']) . '&amp;' : '';
	$sortaddon .= ($vbulletin->GPC['aim'] != '') ? 'aim=' . urlencode($vbulletin->GPC['aim']) . '&amp;' : '';
	$sortaddon .= ($vbulletin->GPC['yahoo'] != '') ? 'yahoo=' . urlencode($vbulletin->GPC['yahoo']) . '&amp;' : '';
	$sortaddon .= ($vbulletin->GPC['msn'] != '') ? 'msn=' . urlencode($vbulletin->GPC['msn']) . '&amp;' : '';
	$sortaddon .= ($vbulletin->GPC['skype'] != '') ? 'skype=' . urlencode($vbulletin->GPC['skype']) . '&amp;' : '';
	$sortaddon .= ($vbulletin->GPC['joindateafter'] != '') ? 'joindateafter=' . urlencode($vbulletin->GPC['joindateafter']) . '&amp;' : '';
	$sortaddon .= ($vbulletin->GPC['joindatebefore'] != '') ? 'joindatebefore=' . urlencode($vbulletin->GPC['joindatebefore']) . '&amp;' : '';
	$sortaddon .= ($vbulletin->GPC['lastpostafter'] != '') ? 'lastpostafter=' . urlencode($vbulletin->GPC['lastpostafter']) . '&amp;' : '';
	$sortaddon .= ($vbulletin->GPC['lastpostbefore'] != '') ? 'lastpostbefore=' . urlencode($vbulletin->GPC['lastpostbefore']) . '&amp;' : '';
	$sortaddon .= ($usergroupid) ? 'usergroupid=' . $usergroupid . '&amp;' : '';
Example #15
0
             }
             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'])) {
Example #16
0
         $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)) {
Example #17
0
     $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]}'"));
Example #18
0
            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)) {
Example #19
0
 /**
  * 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;
 }
Example #20
0
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;
}
Example #21
0
 $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'] . '&amp;' : '';
 $sortaddon .= $vbulletin->GPC['countryupper'] ? 'countryupper=' . $vbulletin->GPC['countryupper'] . '&amp;' : '';
 $sortaddon .= $vbulletin->GPC['state'] != '' ? 'state=' . urlencode($vbulletin->GPC['state']) . '&amp;' : '';
 $sortaddon .= $vbulletin->GPC['city'] != '' ? 'city=' . urlencode($vbulletin->GPC['city']) . '&amp;' : '';
 $sortaddon .= $vbulletin->GPC['name'] != '' ? 'name=' . urlencode($vbulletin->GPC['name']) . '&amp;' : '';
 $sortaddon .= $ltr != '' ? 'ltr=' . urlencode($ltr) . '&amp;' : '';
 $sortaddon = preg_replace('#&amp;$#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;
Example #22
0
         $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)) {
Example #23
0
     while ($photoplog_cnt_bits % 4 != 0) {
         $photoplog['album_bits'] .= "<td class=\"alt1\" align=\"left\" valign=\"bottom\" width=\"25%\">&nbsp;</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']));