if ($show['inlinemod']) { $columncount++; } $show['forumlink'] = true; $threadbits = ''; ($hook = vBulletinHook::fetch_hook('tags_list_threads')) ? eval($hook) : false; foreach ($threadids as $threadid) { $thread = $threads["{$threadid}"]; $forumperms = fetch_permissions($thread['forumid']); if ($vbulletin->options['threadpreview'] > 0 and !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads'])) { $thread['preview'] = ''; } $thread = process_thread_array($thread, $lastread["{$thread['forumid']}"]); $show['disabled'] = ($movethread["{$thread['threadid']}"] or $deletethread["{$thread['threadid']}"] or $approvethread["{$thread['threadid']}"] or $openthread["{$thread['threadid']}"]) ? false : true; eval('$threadbits .= "' . fetch_template('threadbit') . '";'); } if ($show['popups'] and $show['inlinemod']) { eval('$threadadmin_imod_menu = "' . fetch_template('threadadmin_imod_menu_thread') . '";'); } $pagenav = construct_page_nav($pagenumber, $perpage, $totalthreads, 'tags.php?tag=' . urlencode(unhtmlspecialchars($tag['tagtext'])) . ($perpage != $vbulletin->options['maxthreads'] ? "&pp={$perpage}" : '')); $navbits = construct_navbits(array('tags.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['tags'], '' => construct_phrase($vbphrase['threads_tagged_with_x'], $tag['tagtext']))); eval('$navbar = "' . fetch_template('navbar') . '";'); ($hook = vBulletinHook::fetch_hook('tags_list_complete')) ? eval($hook) : false; eval('print_output("' . fetch_template('tag_search') . '");'); } /*======================================================================*\ || #################################################################### || # Downloaded: 12:56, Sat Oct 11th 2008 || # CVS: $RCSfile$ - $Revision: 26862 $ || #################################################################### \*======================================================================*/
build_datastore('maxloggedin', serialize($vbulletin->maxloggedin), 1); } $recordusers = $vbulletin->maxloggedin['maxonline']; $recorddate = vbdate($vbulletin->options['dateformat'], $vbulletin->maxloggedin['maxonlinedate'], true); $recordtime = vbdate($vbulletin->options['timeformat'], $vbulletin->maxloggedin['maxonlinedate']); $currenttime = vbdate($vbulletin->options['timeformat']); $metarefresh = ''; $show['refresh'] = false; if ($vbulletin->options['WOLrefresh']) { $show['refresh'] = true; $refreshargs = ($vbulletin->GPC['who'] ? '&who=' . $vbulletin->GPC['who'] : '') . ($vbulletin->GPC['ua'] ? '&ua=1' : ''); $refreshargs_js = ($vbulletin->GPC['who'] ? '&who=' . $vbulletin->GPC['who'] : '') . ($vbulletin->GPC['ua'] ? '&ua=1' : ''); $refreshtime = $vbulletin->options['WOLrefresh'] * 10; } $frmjmpsel['wol'] = ' selected="selected" class="fjsel"'; construct_forum_jump(); $pagenav = construct_page_nav($pagenumber, $perpage, $totalonline, 'online.php?' . $vbulletin->session->vars['sessionurl'] . "sort={$sortfield}&order={$sortorder}&pp={$perpage}" . iif($vbulletin->GPC['who'], '&who=' . $vbulletin->GPC['who']) . iif($vbulletin->GPC['ua'], '&ua=1')); $numbervisible += $numberinvisible; $colspan = 2; $colspan = iif($show['ip'], $colspan + 1, $colspan); $colspan = iif($vbulletin->options['showimicons'], $colspan + 1, $colspan); ($hook = vBulletinHook::fetch_hook('online_complete')) ? eval($hook) : false; $navbits = construct_navbits(array('' => $vbphrase['whos_online'])); eval('$navbar = "' . fetch_template('navbar') . '";'); eval('print_output("' . fetch_template('WHOSONLINE') . '");'); /*======================================================================*\ || #################################################################### || # Downloaded: 12:56, Sat Oct 11th 2008 || # CVS: $RCSfile$ - $Revision: 26760 $ || #################################################################### \*======================================================================*/
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') . '";'); } } // 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') . '";'); } // build pagenav $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], $totalmessages, 'private.php?' . $vbulletin->session->vars['sessionurl'] . 'folderid=' . $vbulletin->GPC['folderid'] . '&pp=' . $vbulletin->GPC['perpage']); } if ($vbulletin->GPC['folderid'] == -1) { $show['sentto'] = true; $show['movetofolder'] = false; } else { $show['sentto'] = false; $show['movetofolder'] = true; } $totalmessages = vb_number_format($totalmessages); $pmtotal = vb_number_format($vbulletin->userinfo['pmtotal']); $pmquota = vb_number_format($vbulletin->userinfo['permissions']['pmquota']); $templatename = 'pm_messagelist'; } // ############################################################################# if ($templatename != '') {
$templater->register('bgclass', $bgclass); $templater->register('customfields', $customfields); $templater->register('userinfo', $userinfo); $memberlistbits .= $templater->render(); } // end while $last = $itemcount; if ($sqlsort == 'agesort') { $sortorder = ($sortorder == 'desc' ? 'asc' : 'desc'); } $pagenav = construct_page_nav($pagenumber, $perpage, $totalusers, 'memberlist.php?' . $vbulletin->session->vars['sessionurl'], '' . (!empty($vbulletin->GPC['perpage']) ? "&pp=$perpage" : "") . (!empty($sortorder) ? "&order=$sortorder" : "") . (!empty($sortfield) ? "&sort=$sortfield" : "") . (!empty($sortaddon) ? "&$sortaddon" : "") ); unset($customfieldsheader); if ($show['customfields'] AND is_array($profileinfo)) { foreach ($profileinfo AS $index => $customfield) { $totalcols++; $customfield = $customfield['title']; $templater = vB_Template::create('memberlist_results_header'); $templater->register('customfield', $customfield); $customfieldsheader .= $templater->render(); } }
$pagenavbits[] = "pp={$perpage}"; } if ($daysprune != ($vbulletin->userinfo['daysprune'] ? $vbulletin->userinfo['daysprune'] : 30)) { $pagenavbits[] = "daysprune={$daysprune}"; } if ($sortfield != 'dateline') { $pagenavbits[] = "sortfield={$sortfield}"; } if ($vbulletin->GPC['sortorder'] == 'asc') { $pagenavbits[] = 'order=' . $vbulletin->GPC['sortorder']; } if ($type == 'deleted') { $pagenavbits[] = 'type=deleted'; } $pagenavurl = 'moderation.php?' . $vbulletin->session->vars['sessionurl'] . implode('&', $pagenavbits); $pagenav = construct_page_nav($pagenumber, $perpage, $picturetotal, $pagenavurl); $show['havepictures'] = $picturetotal ? true : false; $first = $picturetotal ? ($pagenumber - 1) * $perpage + 1 : 0; $last = ($last = $perpage * $pagenumber) > $picturetotal ? $picturetotal : $last; $show['delete'] = can_moderate(0, 'candeletealbumpicture'); $hook_query_fields = $hook_query_joins = $hook_query_where = ''; unset($sqlsortfield, $sqlsortorder); $navbits[''] = $vbphrase['moderation']; $navbits = construct_navbits($navbits); construct_usercp_nav('moderatedpics'); ($hook = vBulletinHook::fetch_hook('moderation_picture_complete')) ? eval($hook) : false; eval('$headinclude .= "' . fetch_template('picturecomment_css') . '";'); eval('$moderation_filter = "' . fetch_template('moderation_filter') . '";'); eval('$navbar = "' . fetch_template('navbar') . '";'); eval('$HTML = "' . fetch_template('moderation_pictures') . '";'); eval('print_output("' . fetch_template('USERCP_SHELL') . '");');
} else { if ($album['state'] == 'profile') { $show['personalalbum'] = true; $albumtype = $vbphrase['profile_album_paren']; } else { $show['personalalbum'] = false; } } if ($album['moderation'] and (can_moderate(0, 'canmoderatepictures') or $vbulletin->userinfo['userid'] == $album['userid'])) { $show['moderated'] = true; $album['moderatedcount'] = vb_number_format($album['moderation']); } ($hook = vBulletinHook::fetch_hook('album_user_albumbit')) ? eval($hook) : false; eval('$albumbits .= "' . fetch_template('albumbit') . '";'); } $pagenav = construct_page_nav($pagenumber, $perpage, $albumcount['total'], 'album.php?' . $vbulletin->session->vars['sessionurl'] . "u={$userinfo['userid']}", ''); $show['add_album_option'] = $userinfo['userid'] == $vbulletin->userinfo['userid']; ($hook = vBulletinHook::fetch_hook('album_user_complete')) ? eval($hook) : false; // navbar and final output $navbits = construct_navbits(array('member.php?' . $vbulletin->session->vars['sessionurl'] . "u={$userinfo['userid']}" => construct_phrase($vbphrase['xs_profile'], $userinfo['username']), '' => $vbphrase['albums'])); eval('$navbar = "' . fetch_template('navbar') . '";'); eval('print_output("' . fetch_template('album_list') . '");'); } // ####################################################################### if ($_REQUEST['do'] == 'moderated') { if (!$vbulletin->options['pc_enabled']) { print_no_permission(); } if ($userinfo['userid'] != $vbulletin->userinfo['userid']) { print_no_permission(); }
} else { if (!$thread['visible']) { $thread['hiddencount']++; } $show['moderated'] = ($thread['hiddencount'] > 0 and can_moderate($thread['forumid'], 'canmoderateposts')) ? true : false; $show['deletedthread'] = ($thread['deletedcount'] > 0 and (can_moderate($thread['forumid']) or $forumperms & $vbulletin->bf_ugp_forumpermissions['canseedelnotice'])) ? true : false; eval('$searchbits .= "' . fetch_template('threadbit') . '";'); } } if ($show['popups'] and $show['inlinemod']) { eval('$threadadmin_imod_menu = "' . fetch_template('threadadmin_imod_menu_thread') . '";'); } } // ############################################################################# $last = $itemcount; $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], $numitems, 'search.php?' . $vbulletin->session->vars['sessionurl'] . 'searchid=' . $vbulletin->GPC['searchid'] . '&pp=' . $vbulletin->GPC['perpage']); // ############################################################################# // get the bits for the summary bar if (!empty($display['words'])) { foreach ($display['words'] as $key => $val) { $display['words']["{$key}"] = htmlspecialchars_uni($val); } $display['words'] = str_replace(array('</u></b>-<b><u>', '</u> OR <u>'), array('</u></b>-<b><u>', '</u> OR <u>'), $display['words']); $displayWords = '<b><u>' . implode('</u></b>, <b><u>', $display['words']) . '</u></b>'; } else { $displayWords = ''; } if (!empty($display['common'])) { $displayCommon = '<b><u>' . implode('</u></b>, <b><u>', htmlspecialchars_uni($display['common'])) . '</u></b>'; } else { $displayCommon = '';
case 2: $thread['notification'] = $vbphrase['daily']; break; case 3: $thread['notification'] = $vbphrase['weekly']; break; default: $thread['notification'] = $vbphrase['n_a']; } ($hook = vBulletinHook::fetch_hook('threadbit_display')) ? eval($hook) : false; eval('$threadbits .= "' . fetch_template('threadbit') . '";'); } $db->free_result($threads); unset($threadids); $sorturl = 'subscription.php?' . $vbulletin->session->vars['sessionurl'] . "do=viewsubscription&pp={$perpage}&folderid={$folderid}"; $pagenav = construct_page_nav($pagenumber, $perpage, $totalallthreads, $sorturl . "&sort={$sortfield}" . iif(!empty($vbulletin->GPC['sortorder']), "&order=" . $vbulletin->GPC['sortorder'])); $oppositesort = iif($vbulletin->GPC['sortorder'] == 'asc', 'desc', 'asc'); eval('$sortarrow[' . $sortfield . '] = "' . fetch_template('forumdisplay_sortarrow') . '";'); $show['havethreads'] = true; } else { $totalallthreads = 0; $show['havethreads'] = false; } $navbits[''] = $vbphrase['subscriptions']; $navbits = construct_navbits($navbits); // build the cp nav construct_usercp_nav('substhreads_listthreads'); ($hook = vBulletinHook::fetch_hook('usersub_view_complete')) ? eval($hook) : false; eval('$navbar = "' . fetch_template('navbar') . '";'); eval('$HTML = "' . fetch_template('SUBSCRIBE') . '";'); eval('print_output("' . fetch_template('USERCP_SHELL') . '");');
if ($issuestatus['issuecompleted'] == $status_flag_value) { $status_limit[] = $issuestatus['issuestatusid']; } } if (!$status_limit) { standard_error(fetch_error('pt_no_issue_statues_represent_this_state')); } } require_once DIR . '/includes/class_pt_issuelist.php'; $issue_list =& new vB_Pt_IssueList($project, $vbulletin); $issue_list->set_sort($vbulletin->GPC['sortfield'], $vbulletin->GPC['sortorder']); $list_criteria = $perms_query["{$project['projectid']}"] . "\r\n\t\tAND issue.milestoneid = {$milestone['milestoneid']}\r\n\t\tAND issue.issuetypeid IN ('" . implode("','", $milestone_types) . "')\r\n\t\t" . ($status_limit ? "AND issue.issuestatusid IN (" . implode(',', $status_limit) . ")" : '') . "\r\n\t\tAND issue.visible IN ('visible', 'private')\r\n\t"; $issue_list->exec_query($list_criteria, $vbulletin->GPC['pagenumber'], $vbulletin->options['pt_issuesperpage']); $nav_url_base = 'projectmilestone.php?' . $vbulletin->session->vars['sessionurl'] . "do=issuelist&milestoneid={$milestone['milestoneid']}" . ($vbulletin->GPC['filter'] ? '&filter=' . $vbulletin->GPC['filter'] : ''); $sort_arrow = $issue_list->fetch_sort_arrow_array($nav_url_base); $pagenav = construct_page_nav($issue_list->real_pagenumber, $vbulletin->options['pt_issuesperpage'], $issue_list->total_rows, $nav_url_base, ($issue_list->sort_field != 'lastpost' ? '&sort=' . urlencode($issue_list->sort_field) : '') . ($issue_list->sort_order != 'desc' ? '&order=asc' : '')); $issuebits = ''; while ($issue = $db->fetch_array($issue_list->result)) { $issuebits .= build_issue_bit($issue, $project, $projectperms["{$issue['issuetypeid']}"]); } // issue state filter $filter_options = array('active' => '', 'completed' => '', 'any' => ''); $filter_options[$vbulletin->GPC['filter'] ? $vbulletin->GPC['filter'] : 'any'] = ' selected="selected"'; // search box data $show['search_options'] = false; foreach ($milestone_types as $milestone_typeid) { if ($projectperms["{$milestone_typeid}"]['generalpermissions'] & $vbulletin->pt_bitfields['general']['cansearch']) { $show['search_options'] = true; break; } }
$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; eval('$threadbit .= "' . fetch_template('threadbit_deleted') . '";'); } 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; eval('$threadbit .= "' . fetch_template('threadbit') . '";'); } } $db->free_result($threads); unset($thread, $counter); $pagenav = construct_page_nav($pagenumber, $perpage, $totalthreads, 'forumdisplay.php?' . $vbulletin->session->vars['sessionurl'] . "f={$forumid}", "" . (!empty($vbulletin->GPC['perpage']) ? "&pp={$perpage}" : '') . (!empty($vbulletin->GPC['prefixid']) ? "&prefixid=" . $vbulletin->GPC['prefixid'] : '') . (!empty($vbulletin->GPC['sortfield']) ? "&sort={$sortfield}" : "") . (!empty($vbulletin->GPC['sortorder']) ? "&order=" . $vbulletin->GPC['sortorder'] : '') . (!empty($vbulletin->GPC['daysprune']) ? "&daysprune={$daysprune}" : '')); eval('$sortarrow[' . $sortfield . '] = "' . fetch_template('forumdisplay_sortarrow') . '";'); } 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;
private static function showComments($nodeid, $userinfo, $pageno, $perpage, $target_url, $associatedthreadid ) { require_once DIR . '/includes/functions_misc.php'; require_once DIR . '/includes/functions.php'; require_once DIR . '/includes/functions_databuild.php'; require_once DIR . '/includes/functions_bigthree.php'; global $vbphrase; global $show; global $sessionhash; fetch_phrase_group('posting'); //First let's see if we have forum/thread view permissions. If not, // we're done if (! $permissions = self::canViewThread($nodeid, $userinfo)) { return false; } $forumperms = fetch_permissions(self::getForumId($nodeid)); //Normally this thread will be wide open, so let's get the list first // without checking. We'll verify each post anyway. //get our results $results = self::getComments($nodeid, $userinfo, $permissions, $associatedthreadid); $record_count = count($results); if (!$results OR !count($results)) { return ''; } //If we are passed a postid, we'll display just that comment. if (vB::$vbulletin->GPC_exists['postid'] AND intval(vB::$vbulletin->GPC['postid']) AND ($record_count > $perpage) AND in_array(vB::$vbulletin->GPC['postid'], $results)) { $index = array_search(vB::$vbulletin->GPC['postid'], $results) ; $pageno = max(1,ceil($index/$perpage)); $first = ($pageno -1) * $perpage; } else { //we accept the parameter "last" for pageno. if ($pageno == 'last') { $pageno = intval(($record_count + $perpage -1) / $perpage); $first = ($pageno -1) * $perpage; } else { $pageno = max(1, intval($pageno) ); $first = $perpage * ($pageno -1) ; } } //Let's trim off the results we need. //This also tells us if we should show the "next" button. $results = array_slice($results, $first, $perpage, true); //Now format the overall block. if (!count($results) OR !$comments = self::renderResult( $userinfo, $results, $permissions, $forumperms, $target_url, $nodeid) OR ($comments == '')) { return false; } if (strpos($target_url,'?') === false) { $target_url .= '?'; } $pagenav = construct_page_nav($pageno, $perpage, $record_count, $target_url, '', 'comments'); $template = vB_Template::create('vbcms_comments_block'); $template->register('comment_count', $record_count ); $template->register('sessionhash', $sessionhash ); $template->register('pagenav', $pagenav); $template->register('cms_comments', $comments); $template->register('this_url', $target_url); $template->register('nodeid', $nodeid); $template->register('target_url', $target_url); return $template->render() ; }
if ('deleted' == $item['state']) { $item['state'] = 'visible'; } // add bit $bit =& $bit_factory->create($item, $group); $bit->show_moderation_tools(false); $bit->show_subscription(true); // always show inline selection $bit->force_inline_selection(true); $discussionbits .= $bit->construct(); } } unset($bit, $bit_factory, $collection_factory, $collection); // Construct pagenav $pagenavlink = 'groupsubscription.php?' . $vbulletin->session->vars['sessionurl'] . ($perpage ? "pp=" . $perpage : '') . ($sortfield ? "&sort={$sortfield}" : '') . (!$desc ? '&order=asc' : ''); $pagenav = construct_page_nav($pagenumber, $perpage, $totaldiscussions, $pagenavlink); // Sort helpers $oppositesort = $desc ? 'asc' : 'desc'; $sorturl = 'groupsubscription.php?' . $vbulletin->session->vars['sessionurl']; $orderlinks = array('replies' => $sorturl . '&sort=replies' . ($sortfield == 'replies' ? '&order=' . $oppositesort : ''), 'dateline' => $sorturl . '&sort=dateline' . ($sortfield == 'dateline' ? '&order=' . $oppositesort : ''), 'lastpost' => $sorturl . '&sort=lastpost' . ($sortfield == 'lastpost' ? '&order=' . $oppositesort : ''), 'subscription' => $sorturl . '&sort=subscription' . ($sortfield == 'subscription' ? '&order=' . $oppositesort : '')); $templater = vB_Template::create('forumdisplay_sortarrow'); $templater->register('oppositesort', $oppositesort); $sortarrow["{$sortfield}"] = $templater->render(); $group_subscribe_list = ''; if ($pagenumber <= 1) { // show group subscriptions on page one require_once DIR . '/includes/class_socialgroup_search.php'; $socialgroupsearch = new vB_SGSearch($vbulletin); $socialgroupsearch->add('subscribed', $vbulletin->userinfo['userid']); $socialgroupsearch->set_sort('lastpost', 'ASC'); if ($numsocialgroups = $socialgroupsearch->execute(true)) {
print_no_permission(); } require_once DIR . '/includes/functions_user.php'; do { $perpage = ($vbulletin->GPC['perpage'] > 30 or !$vbulletin->GPC['perpage']) ? 20 : $vbulletin->GPC['perpage']; if (!$vbulletin->GPC['pagenumber']) { $vbulletin->GPC['pagenumber'] = 1; } $start = ($vbulletin->GPC['pagenumber'] - 1) * $perpage; $members = $db->query_read_slave("\r\n\t\t\tSELECT\r\n\t\t\t\tSQL_CALC_FOUND_ROWS\r\n\t\t\t\tgm.userid, user.*\r\n\t\t\t\t" . ($vbulletin->options['avatarenabled'] ? ', avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline, customavatar.width_thumb AS avwidth_thumb, customavatar.height_thumb AS avheight_thumb, customavatar.width as avwidth, customavatar.height as avheight, customavatar.filedata_thumb' : '') . "\r\n\t\t\tFROM " . TABLE_PREFIX . "blog_groupmembership AS gm\r\n\t\t\tINNER JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = gm.userid)\r\n\t\t\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) " : '') . "\r\n\t\t\tWHERE\r\n\t\t\t\tgm.bloguserid = " . $vbulletin->GPC['userid'] . "\r\n\t\t\t\t\tAND\r\n\t\t\t\tgm.state = 'active'\r\n\t\t\tORDER BY user.username\r\n\t\t\tLIMIT {$start}, {$perpage}\r\n\t\t"); $membercount = $db->found_rows(); if ($start > $membercount) { $vbulletin->GPC['pagenumber'] = ceil($membercount / $perpage); } } while ($start >= $membercount and $membercount); $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $perpage, $membercount, 'blog.php?' . $vbulletin->session->vars['sessionurl'] . "do=members&u={$userinfo['userid']}&pp={$perpage}"); while ($member = $db->fetch_array($members)) { fetch_avatar_from_userinfo($member, true); $templater = vB_Template::create('blog_grouplist_userbit'); $templater->register('member', $member); $memberlist .= $templater->render(); if ($vbulletin->userinfo['userid'] == $member['userid']) { $show['removeself'] = true; } } $show['avatars'] = true; $sidebar =& build_user_sidebar($userinfo); $navbits[fetch_seo_url('blog', $userinfo, null, 'userid', 'blog_title')] = $userinfo['blog_title']; $navbits[''] = $vbphrase['blog_membership']; $templater = vB_Template::create('blog_grouplist'); $templater->register('membercount', $membercount);
function vbseo_complete_sec($sec, $dat_proc = '') { global $vboptions, $forum, $vbulletin, $vbphrase, $postcache, $stylevar, $vbseo_gcache, $vbseo_linkbacks_no, $bbuserinfo; if (!VBSEO_ENABLED) { return; } if (defined('VBSEO_UNREG_EXPIRED')) { return $newtext; } if (VBSEO_IGNOREPAGES && preg_match('#(' . VBSEO_IGNOREPAGES . ')#i', VBSEO_REQURL)) { return; } if (VBSEO_REWRITE_THREADS_ADDTITLE && ($sec == 'newpost_preview' || $sec == 'postbit_display_complete')) { global $vbseo_previewmessage, $vbseo_cutbburl; if ($GLOBALS['post'] && $GLOBALS['post']['message']) { $ptext =& $GLOBALS['post']['message']; } else { $ptext =& $vbseo_previewmessage; } vbseo_reverse_formats(); $matchfull = preg_quote('http://' . VBSEO_HTTP_HOST, '#'); if (VBSEO_REWRITE_THREADS_ADDTITLE_POST) { $ptext = preg_replace('#(href=")(' . $matchfull . '[^"]*?' . VBSEO_FIND_P_FORMAT . '[^/"]*")#eis', 'vbseo_replace_urls_mini_post("$1","$2","$3")', $ptext); $ptext = preg_replace('#(href=")(' . $matchfull . '[^"]*?showpost\\.' . VBSEO_VB_EXT . '\\?[^"]*?p(?:ostid)?=(\\d+)[^/"]*")#eis', 'vbseo_replace_urls_mini_post("$1","$2","$3")', $ptext); } $ptext = preg_replace('#(href=")(' . $matchfull . '[^"]*?' . VBSEO_FIND_MT_FORMAT . '[^/"]*")#eis', 'vbseo_replace_urls_mini("$1","$2","$3","m")', $ptext); $ptext = preg_replace('#(href=")(' . $matchfull . '[^"]*?' . VBSEO_FIND_T_FORMAT . '[^/"]*")#eis', 'vbseo_replace_urls_mini("$1","$2","$3")', $ptext); $ptext = preg_replace('#(href=")(' . $matchfull . '[^"]*?(?:show|print)thread\\.' . VBSEO_VB_EXT . '\\?[^"]*?t(?:hreadid)?=(\\d+)[^/"]*")#eis', 'vbseo_replace_urls_mini("$1","$2","$3")', $ptext); } if (isset($vbulletin) && !$vbseo_cutbburl) { $vbseo_cutbburl = preg_replace('#/$#', '', $vbulletin->options['bburl']); } if ($sec == 'init_startup' && $vbseo_cutbburl) { vbseo_check_stripsids(); vbseo_prepare_seo_replace(); if (VBSEO_IN_PINGBACK && THIS_SCRIPT == 'showthread') { @header('X-Pingback: ' . $vbseo_cutbburl . '/vbseo-xmlrpc/'); } if (THIS_SCRIPT != 'search') { vbseo_prepare_cat_anchors(); } if (THIS_SCRIPT == 'newreply' || THIS_SCRIPT == 'editpost' || THIS_SCRIPT == 'newthread') { $vbseo_ref = $_SERVER['HTTP_REFERER']; $pre_repl = ''; $q = $_POST['message']; if ($vbseo_ref && strstr(strtolower($vbseo_ref), VBSEO_HTTP_HOST)) { $pre_repl = preg_replace('#/[^/]*$#', '/', $vbseo_ref); } if ($pre_repl && $pre_repl != $vbseo_cutbburl . '/') { $rs = '#((?:<a[^>]*?href="|\\[url="|\\[url\\]|<img[^>]*?src="|\\[img="|\\[img\\]))'; $_POST['message'] = preg_replace($rs . '(' . preg_quote($vbseo_cutbburl) . '/)?([^:"\\[\\]]*?\\.\\.[^:"\\[\\]]*?["\\[])#i', '$1' . $pre_repl . '$3', $_POST['message']); do { $_pmsg = $_POST['message']; $_POST['message'] = preg_replace('#(://[^\\"\\]]*?/)([^/\\"\\]]*/)\\.\\./#', '$1', $_POST['message']); } while ($_POST['message'] != $_pmsg); } } } $newpost_name = ''; if ($sec == 'blog_fpdata_presave' || $sec == 'blog_textdata_start' || $sec == 'blog_data_start') { $newpost_name = 'blog'; } if ($sec == 'newpost_process' || $sec == 'newpost_complete') { $newpost_name = 'newpost'; } if ($sec == 'visitormessagedata_start') { $newpost_name = 'message'; } $clean_redir = $newpost_name ? 1 : 0; if (!$newpost_name && $sec == 'postdata_presave') { $newpost_name = 'edit'; } $may_addttl = $clean_redir && (!isset($_POST['vbseo_is_retrtitle']) || isset($_POST['vbseo_retrtitle'])); $force_addttl = $newpost_name && (isset($_POST['vbseo_is_retrtitle']) && isset($_POST['vbseo_retrtitle'])); $addttl = VBSEO_REWRITE_EXT_ADDTITLE && ($force_addttl || $may_addttl); global ${$newpost_name}; if (isset(${$newpost_name})) { $pmsg_a =& ${$newpost_name}; if (isset($pmsg_a['message'])) { $pmsg =& $pmsg_a['message']; } } if ($clean_redir) { vbseo_get_options(); $redurl = $vboptions['bburl2'] . '/' . VBSEO_REDIRECT_URI . '?redirect='; $pmsg = preg_replace('#' . preg_quote($redurl, '#') . '([^"\\]\\[]*)#eis', 'urldecode(\'$1\')', $pmsg); } if ($addttl) { preg_match_all('#\\[url=?\\"?(.*?)\\"?\\](.+?)\\[\\/url\\]#is', $pmsg, $lmatch); for ($i = 0; $i < count($lmatch[0]); $i++) { $ul = trim($lmatch[1][$i]); $ulin = trim($lmatch[2][$i]); if ($ul && !@strstr($ulin, $ul)) { continue; } if (!@strstr($ulin, '://')) { $ulin = 'http://' . $ulin; } if (!$ul) { $ul = $ulin; } if (preg_match('#^http://#', $ulin) && (!VBSEO_REWRITE_EXT_ADDTITLE_BLACKLIST || !preg_match('#' . VBSEO_REWRITE_EXT_ADDTITLE_BLACKLIST . '#i', $ulin))) { vbseo_reverse_formats(); $matchfull = preg_quote('http://' . VBSEO_HTTP_HOST, '#'); $ismatch = false; if (VBSEO_REWRITE_THREADS_ADDTITLE_POST) { $ismatch |= preg_match('#' . $matchfull . '[^"]*?/' . VBSEO_FIND_P_FORMAT . '#is', $ulin); } $ismatch |= preg_match('#' . $matchfull . '[^"]*?/' . VBSEO_FIND_MT_FORMAT . '#is', $ulin); $ismatch |= preg_match('#' . $matchfull . '[^"]*?/' . VBSEO_FIND_T_FORMAT . '#is', $ulin); $ulin_shot = str_replace(VBSEO_TOPREL_FULL, '', $ulin); if (($arr = vbseo_check_url('VBSEO_URL_FORUM_PAGENUM', $ulin_shot)) || ($arr = vbseo_check_url('VBSEO_URL_FORUM', $ulin_shot))) { if (!isset($arr['forum_id']) && (isset($arr['forum_path']) || isset($arr['forum_title']))) { $arr['forum_id'] = vbseo_reverse_forumtitle($arr); } vbseo_get_forum_info(); if (!vbseo_forum_is_public($vbseo_gcache['forum'][$arr['forum_id']])) { $ismatch = true; } } if (!$ismatch) { $pret = vbseo_http_query_full($ulin); $ptitle = vbseo_get_page_title($pret['content'], defined('VBSEO_MAX_TITLE_LENGTH') ? VBSEO_MAX_TITLE_LENGTH : 0); $pcharset = vbseo_get_page_charset($pret['content'], $pret['headers']); $ptitle = vbseo_convert_charset($ptitle, $pcharset); if ($ptitle && $ptitle != $vboptions['bbtitle']) { $pmsg = str_replace($lmatch[0][$i], '[url=' . $ulin . ']' . $ptitle . '[/url]', $pmsg); } } } } } $trackback = VBSEO_EXT_TRACKBACK && ($sec == 'newpost_complete' || $sec == 'threadmanage_update'); $pingback = VBSEO_EXT_PINGBACK && $sec == 'newpost_complete'; if ($pingback || $trackback) { global $found_object_ids; if (!$vboptions['bburl2'] || !$vbseo_gcache['forum']) { vbseo_get_options(); vbseo_prepare_seo_replace(); vbseo_get_forum_info(); } $r_post_id = $pmsg_a['postid']; if (!$r_post_id && $GLOBALS['threadinfo']) { $r_post_id = $GLOBALS['threadinfo']['firstpostid']; } unset($vbseo_gcache['post'][$r_post_id]); $found_object_ids['prepostthread_ids'] = array($r_post_id); vbseo_get_post_thread_info($r_post_id); $threadid = $vbseo_gcache['post'][$r_post_id]['threadid']; vbseo_get_thread_info($threadid); $forumid = $vbseo_gcache['thread'][$threadid]['forumid']; $vbseo_url_ = vbseo_thread_url_postid($r_post_id); $vbseo_url_t = vbseo_thread_url($threadid); if (!strstr($vbseo_url_, '://')) { $vbseo_url_ = $vboptions['bburl2'] . '/' . $vbseo_url_; } if (!strstr($vbseo_url_t, '://')) { $vbseo_url_t = $vboptions['bburl2'] . '/' . $vbseo_url_t; } if (THIS_SCRIPT == 'newthread') { $vbulletin->db->query_write("INSERT INTO " . vbseo_tbl_prefix('vbseo_serviceupdate') . "\n(s_threadid, s_updated)\nVALUES\n('{$threadid}', 0)\n"); } } if ($sec == 'blog_fpdata_postsave') { global $blogman; if ($blogman && ($bid = $blogman->blog['blogid'])) { $vbulletin->db->query_write("INSERT INTO " . vbseo_tbl_prefix('vbseo_serviceupdate') . "\n(s_threadid, s_updated, s_type)\nVALUES\n('{$bid}', 0, 1)\n"); } } if ($trackback && $_REQUEST['sendtrackbacks']) { $tracurls = explode(' ', $_REQUEST['sendtrackbacks']); $tdetails = vbseo_get_thread_details($r_post_id); $tdetails['pagetext'] = preg_replace('#\\[.+?\\]#', '', $tdetails['pagetext']); vbseo_extra_inc('linkback'); foreach ($tracurls as $turl) { if (trim($turl)) { $turl = trim($turl); if (!preg_match('#^http://#', $turl)) { continue; } if (vbseo_pingback_exists($turl, $threadid)) { continue; } $snippet = vbseo_utf8_substr($tdetails['pagetext'], 0, VBSEO_SNIPPET_LENGTH); $res_success = vbseo_do_trackback($turl, $vbseo_url_t, $vbseo_gcache['thread'][$threadid]['title'], $vboptions['bbtitle'], $snippet . '...'); vbseo_store_pingback($vbseo_url_, $turl, 1, $r_postid, 0, $threadid, 0, $_REQUEST['subject'], $snippet, 0, $res_success, 1, false); } } } if ($pingback && vbseo_forum_is_public($vbseo_gcache['forum'][$forumid])) { vbseo_extra_inc('linkback'); preg_match_all('#\\[url=?\\"?(.*?)\\"?\\]#is', $pmsg, $lmatch); for ($i = 0; $i < count($lmatch[0]); $i++) { $ulin = $lmatch[1][$i]; if (preg_match('#^http://#', $ulin) && !strstr($ulin, VBSEO_HTTP_HOST) && (!VBSEO_REWRITE_EXT_ADDTITLE_BLACKLIST || !preg_match('#' . VBSEO_REWRITE_EXT_ADDTITLE_BLACKLIST . '#i', $ulin))) { if (vbseo_pingback_exists($ulin, $threadid)) { continue; } $res_success = vbseo_do_pingback($vbseo_url_, $ulin); if ($res_success >= 0) { vbseo_store_pingback($vbseo_url_, $ulin, 0, $r_postid, 0, $threadid, 0, $_REQUEST['subject'], $snippet, 0, $res_success, 1); } } } } switch ($sec) { case 'blog_entry_start': vbseo_prepend_template('blog_show_entry', '".(($blog[message] = vbseo_process_content_area($blog[message])) ? "":"")."'); vbseo_prepend_template('blog_comment', '".(($response[message] = vbseo_process_content_area($response[message])) ? "":"")."'); break; case 'blog_entry_complete': if (VBSEO_BOOKMARK_BLOG && vbseo_tpl_exists('blog_show_entry')) { $vbseo_url_b = vbseo_http_s_url('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['VBSEO_URI']); $book_t = urlencode($GLOBALS['blog']['title']); $bmlist = vbseo_get_bookmarks(); $vbseo_post_bookmarks = ''; foreach ($bmlist as $bm) { $blink = str_replace('%url%', urlencode($vbseo_url_b), str_replace('%title%', $book_t, $bm[0])); eval('$vbseo_post_bookmarks .= "' . fetch_template('vbseo_blog_bmarkentry') . '";'); } $vbseo_post_bookmarks = str_replace('"', '\\"', $vbseo_post_bookmarks); $bsection_tpl = str_replace('<!--VBSEO_BOOKMARKS-->', $vbseo_post_bookmarks, fetch_template('vbseo_blog_bmarksection')); if (VBSEO_BOOKMARK_BLOG == 1) { $snr = '#(\\"\\.\\(\\(\\$show\\[\'blograting\'\\]\\) \\? \\(\\".*?)(<[^>]*?id=\\\\"blog_title)#is'; $pm = vbseo_tpl_match('blog_show_entry', $snr); $pm[1] = str_replace('id=\\"blograting\\" style=\\"float:$stylevar[right]\\">', 'id=\\"blograting\\" style=\\"text-align:center\\">', $pm[1]); $bsection = str_replace('<!--BLOG_RATING-->', $pm[1], $bsection_tpl); vbseo_modify_template('blog_show_entry', $snr, $bsection . '$2'); } else { vbseo_modify_template('blog_show_entry', '#("\\.\\(\\(\\$' . 'categorybits)#is', $bsection_tpl . '$1', false, '<!--VBSEO_BOOKMARKS-->'); } vbseo_modify_template('blog_show_entry', '#(<div id=\\\\"blog_message\\\\" style=\\\\")(.*?</div>)#', "\$1min-height:60px;\$2\n<br style=\\\"clear:both\\\" />"); } break; case 'global_start': if (!$vbulletin->userinfo['userid'] && VBSEO_CODE_CLEANUP_PREVIEW && THIS_SCRIPT == 'forumdisplay') { $vbulletin->options['threadpreview'] = 0; $vbseo_gcache['var']['vboptchanged'] = true; } if (!$vbulletin->userinfo['userid'] && VBSEO_FORUMJUMP_OFF && $vbulletin && (THIS_SCRIPT == 'forumdisplay' || THIS_SCRIPT == 'showthread')) { $vbulletin->options['useforumjump'] = 0; $vbseo_gcache['var']['vboptchanged'] = true; } if (VBSEO_CATEGORY_ANCHOR_LINKS) { vbseo_modify_template('forumhome_forumbit_level1_nopost', 'href=\\"forumdisplay', 'id=\\"".$forum[\'nametitle\']."\\" name=\\"".$forum[\'nametitle\']."\\" href=\\"forumdisplay'); } if (VBSEO_IN_REFBACK && (THIS_SCRIPT == 'showthread' || THIS_SCRIPT == 'showpost')) { $vbseo_ref = $_SERVER['HTTP_REFERER']; if ($vbseo_ref && !strstr(strtolower($vbseo_ref), VBSEO_HTTP_HOST) && !strstr(strtolower($vbseo_ref), str_replace('www.', '', VBSEO_HTTP_HOST))) { if (!defined('VBSEO_REFBACK_BLACKLIST') || !preg_match('#' . VBSEO_REFBACK_BLACKLIST . '#i', $vbseo_ref)) { vbseo_extra_inc('linkback'); vbseo_ping_proc($vbseo_ref, VBSEO_TOPREL_FULL . VBSEO_REQURL, 2); } } } break; case 'memberlist_bit': global $userinfo, $usercache; $usercache[$userinfo['userid']] = array('userid' => $userinfo['userid'], 'username' => $userinfo['username']); break; case 'ajax_start': if ($_POST['do'] == 'linkbackmod' && ($linkid = addslashes($_POST['id']))) { $ilink = $vbulletin->db->query_first("\nSELECT l.*, t.forumid\nFROM " . vbseo_tbl_prefix('vbseo_linkback') . " l\nLEFT JOIN " . vbseo_tbl_prefix('thread') . " t ON t.threadid = l.t_threadid\nWHERE t_id='{$linkid}'"); $ismod = can_moderate($ilink['forumid'], 'vbseo_linkbacks') || $vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['ismoderator']; if ($ismod) { vbseo_extra_inc('linkback'); if ($_POST['action'] == 'mod') { $vbulletin->db->query_write("\nUPDATE " . vbseo_tbl_prefix('vbseo_linkback') . "\nSET t_approve=IF(t_approve,0,1)\nWHERE t_id='{$linkid}'"); if (!$ilink['t_approve']) { vbseo_send_notification_pingback($ilink['t_threadid'], $ilink['t_postid'], $ilink['t_src_url'], $ilink['t_title'], $ilink['t_text'], 1, 0); } } if ($_POST['action'] == 'ban') { $purl = parse_url($ilink['t_src_url']); if ($purl['host']) { $bdom = str_replace('www.', '', $purl['host']); vbseo_linkback_bandomain($bdom, 1); $vbulletin->db->query_write("\nUPDATE " . vbseo_tbl_prefix('vbseo_linkback') . "\nSET t_deleted = 1\nWHERE t_src_url LIKE 'http%" . addslashes($bdom) . "/%'"); } } if ($_POST['action'] == 'del') { $vbulletin->db->query_write("\nUPDATE " . vbseo_tbl_prefix('vbseo_linkback') . "\nSET t_deleted = 1\nWHERE t_id = '{$linkid}'"); } vbseo_linkback_approve($linkid); header('Content-Type: text/plain;'); header('Connection: Close'); echo $ilink['t_approve'] ? '0' : '1'; } exit; } if ($_POST['do'] == 'updatelinkback') { $vbulletin->input->clean_array_gpc('p', array('linkid' => TYPE_UINT, 'title' => TYPE_STR)); $linkid = $vbulletin->GPC['linkid']; $ilink = $vbulletin->db->query_first("\nSELECT *\nFROM " . vbseo_tbl_prefix('vbseo_linkback') . " l\nWHERE t_id='" . addslashes($linkid) . "'"); $ismod = can_moderate($ilink['forumid'], 'vbseo_linkbacks') || $vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['ismoderator']; if ($ismod) { $ltitle = convert_urlencoded_unicode($vbulletin->GPC['title']); $vbulletin->db->query_write("\nUPDATE " . vbseo_tbl_prefix('vbseo_linkback') . " l\nSET t_title = '" . addslashes($ltitle) . "'\nWHERE t_id = '" . addslashes($linkid) . "'"); } $xml = new vB_AJAX_XML_Builder($vbulletin, 'text/xml'); $xml->add_tag('linkhtml', $ltitle); $xml->print_xml(); } break; case 'forumadmin_update_save': global $vboptions, $forumcache; vbseo_get_options(); vbseo_prepare_seo_replace(); $vboptions['vbseo_opt'] = array(); $forumcache2 = $forumcache; $forumcache = ''; vbseo_get_forum_info(true); $forumcache = $forumcache2; vbseo_check_datastore(true); break; case 'private_insertpm_process': global $pmdm; if (is_object($pmdm) && strstr($pmdm->pmtext['message'], '[post]')) { vbseo_startup(); $pmdm->pmtext['message'] = preg_replace('#\\[post\\](\\d+)\\[\\/post\\]#', '[url]' . $vboptions['bburl2'] . '/showthread.php?p=$1#post$1[/url]', $pmdm->pmtext['message']); $GLOBALS['VBSEO_REWRITE_TEXTURLS'] = 1; $pmdm->pmtext['message'] = make_crawlable($pmdm->pmtext['message']); unset($GLOBALS['VBSEO_REWRITE_TEXTURLS']); } break; case 'cache_templates': global $globaltemplates, $show, $bbuserinfo; if ($_REQUEST['ajax']) { if (THIS_SCRIPT == 'blog_post') { $globaltemplates[] = 'blog_comment'; } if (THIS_SCRIPT == 'group') { $globaltemplates[] = 'socialgroups_message'; } if (THIS_SCRIPT == 'album') { $globaltemplates[] = 'picturecomment_message'; } if (THIS_SCRIPT == 'visitormessage') { $globaltemplates[] = 'memberinfo_visitormessage'; } } if (THIS_SCRIPT == 'blog' && $_REQUEST['do'] == 'blog') { $globaltemplates[] = 'vbseo_blog_bmarkentry'; $globaltemplates[] = 'vbseo_blog_bmarksection'; } if (THIS_SCRIPT == 'moderation') { $globaltemplates[] = 'vbseo_linkbacks'; $globaltemplates[] = 'vbseo_linkbackbit'; } if (THIS_SCRIPT == 'showthread' && (VBSEO_IN_PINGBACK || VBSEO_IN_TRACKBACK || VBSEO_IN_REFBACK)) { $globaltemplates[] = 'vbseo_linkbacks'; $globaltemplates[] = 'vbseo_linkbackbit'; $globaltemplates[] = 'vbseo_linkbackmenu'; $globaltemplates[] = 'vbseo_linkbackmenu_entry'; } if (THIS_SCRIPT == 'misc' && $_REQUEST['do'] == 'pingtrackback') { vbseo_safe_redirect('misc.' . VBSEO_VB_EXT . '?do=linkbacks', array('do')); } if (THIS_SCRIPT == 'misc' && $_REQUEST['do'] == 'linkbacks') { $globaltemplates[] = 'vbseo_help_linkback'; } break; case 'member_infractionbit': $GLOBALS['vbseo_gcache']['post'][$dat_proc['postid']] = $dat_proc; break; case 'parse_templates': vbseo_modify_template('socialgroups_grouplist_bit', '#.$#s', '$0".(($GLOBALS[\'vbseo_gcache\'][\'groups\'][$group[\'groupid\']]=$group)?\'\':\'\')."'); vbseo_modify_template('memberinfo_socialgroupbit', '#.$#s', '$0".(($GLOBALS[\'vbseo_gcache\'][\'groups\'][$socialgroup[\'groupid\']]=$socialgroup)?\'\':\'\')."'); vbseo_modify_template('blog_entry_profile', '#.$#s', '$0".(($GLOBALS[\'vbseo_gcache\'][\'blog\'][$this->blog[\'blogid\']]=$this->blog)?\'\':\'\')."'); vbseo_modify_template('blog_entry_profile', '#.$#s', '$0".(($GLOBALS[\'vblog_categories\']=$this->categories)?\'\':\'\')."'); vbseo_modify_template('album_picturebit', '#.$#s', '$0".(($GLOBALS[\'vbseo_gcache\'][\'pic\'][$picture[\'pictureid\']]=$picture)?\'\':\'\')."'); vbseo_modify_template('albumbit', '#.$#s', '$0".(($GLOBALS[\'vbseo_gcache\'][\'album\'][$album[\'albumid\']]=$album)?\'\':\'\')."'); vbseo_modify_template('memberinfo_albumbit', '#.$#s', '$0".(($GLOBALS[\'vbseo_gcache\'][\'album\'][$album[\'albumid\']]=$album)?\'\':\'\')."'); vbseo_prepend_template('memberinfo_visitormessage', '".(($message[message] = vbseo_process_content_area($message[message])) ? "":"")."'); vbseo_prepend_template('socialgroups_message', '".(($message[message] = vbseo_process_content_area($message[message])) ? "":"")."'); vbseo_prepend_template('picturecomment_message', '".(($message[message] = vbseo_process_content_area($message[message])) ? "":"")."'); vbseo_prepend_template('pt_issuenotebit_user', '".(($note[message] = vbseo_process_content_area($note[message])) ? "":"")."'); vbseo_prepend_template('newpost_preview', '".(($previewmessage = vbseo_process_content_area($previewmessage)) ? "":"")."'); if ((THIS_SCRIPT == 'blog' || THIS_SCRIPT == 'blog_post') && VBSEO_PERMALINK_BLOG > 0) { vbseo_modify_template('blog_comment', '#(blogipaddress.*?)(</div>)#s', '$1 <a href=\\"#comment$response[blogtextid]\\"><img src=\\"$stylevar[imagesfolder]/vbseo/anchor.png\\" border=\\"0\\" alt=\\"$vbphrase[vbseo_permalink]\\" class=\\"inlineimg\\" /></a> $2', 0); vbseo_modify_template('blog_comment', '#(OR \\$show\\[\\\'reportlink\\\'\\])#s', '$1 OR 1', 0); } if (THIS_SCRIPT == 'member' || THIS_SCRIPT == 'visitormessage') { $vmurl = $_GET['tab'] && $_GET['tab'] != 'visitor_messaging' ? 'member.php?u=' . $_GET['u'] : ''; $vmurl .= '#vmessage$message[vmid]'; if (VBSEO_PERMALINK_PROFILE == 2) { vbseo_modify_template('memberinfo_visitormessage', '#\\$message\\[date\\]#s', '<a href=\\"' . $vmurl . '\\">$0</a>', 0); } else { if (VBSEO_PERMALINK_PROFILE == 1) { vbseo_modify_template('memberinfo_visitormessage', '#message\\[time\\].*?\\)\\)\\.\\"#s', '$0 - <a href=\\"' . $vmurl . '\\">$vbphrase[vbseo_permalink]</a>', 0); } } vbseo_modify_template('MEMBERINFO', '#(vBulletin\\.register_control\\(\\\\"vB_TabCtrl\\\\", \\\\"profile_tabs\\\\", \\\\"\\$selected_tab\\\\")#s', "var vbseo_opentab=document.location.hash;\nvbseo_opentab = vbseo_opentab.substring(1,vbseo_opentab.length);\n" . '$1 ? \\"$selected_tab\\" : vbseo_opentab'); } if (THIS_SCRIPT == 'album') { if (VBSEO_PERMALINK_ALBUM == 2) { vbseo_modify_template('picturecomment_message', '#\\$message\\[date\\]#s', '<a href=\\"#picturecomment$message[commentid]\\">$0</a>', 0); } else { if (VBSEO_PERMALINK_ALBUM == 1) { vbseo_modify_template('picturecomment_message', '#message\\[time\\].*?\\)\\)\\.\\"#s', '$0 - <a href=\\"#picturecomment$message[commentid]\\">$vbphrase[vbseo_permalink]</a>', 0); } } } if (THIS_SCRIPT == 'group') { $_plink = 'group.' . VBSEO_VB_EXT . '?groupid=' . $_REQUEST['groupid'] . '#gmessage$message[gmid]'; if (VBSEO_PERMALINK_GROUPS == 2) { vbseo_modify_template('socialgroups_message', '#\\$message\\[date\\]#s', '<a href=\\"' . $_plink . '\\">$0</a>', 0); } else { if (VBSEO_PERMALINK_GROUPS == 1) { vbseo_modify_template('socialgroups_message', '#message\\[time\\].*?\\)\\)\\.\\"#s', '$0 - <a href=\\"' . $_plink . '\\">$vbphrase[vbseo_permalink]</a>', 0); } } } if (VBSEO_IN_PINGBACK || VBSEO_IN_TRACKBACK || VBSEO_IN_REFBACK) { if (can_moderate(0, 'vbseo_linkbacks')) { vbseo_modify_template('USERCP_SHELL', '#(do=viewposts&type=moderated.*?</tr>)#is', '$1 <tr> <td class=\\"".($navclass[moderatedlinkbacks]?$navclass[moderatedlinkbacks]:"alt2")."\\"><a class=\\"smallfont\\" href=\\"moderation.php?$session[sessionurl]do=viewlinkbacks\\">$vbphrase[vbseo_moderated_linkbacks]</a></td> </tr>'); } } if (!$vbulletin->userinfo['userid']) { if (VBSEO_CODE_CLEANUP_MEMBER_DROPDOWN) { if (THIS_SCRIPT == 'showthread') { $tplpostbit = vbseo_get_postbit_tpl(); vbseo_modify_template($tplpostbit, '#<script[^>]+?>[^<]*?postmenu_\\$post.*?</script>#is', ''); vbseo_modify_template($tplpostbit, '#<div class=\\\\"vbmenu_popup.*?</div>#is', ''); } if (THIS_SCRIPT == 'blog') { $blog_tpls = array('blog_sidebar_user', 'blog_entry_with_userinfo', 'blog_entry_without_userinfo', 'blog_list_blogs_blog'); foreach ($blog_tpls as $_btpl) { vbseo_modify_template($_btpl, '#<script[^>]+?>[^<]*?blogusermenu.*?</script>#is', ''); vbseo_modify_template($_btpl, '#<div class=\\\\"vbmenu_popup.*?</div>#is', ''); } } } if (THIS_SCRIPT == 'index') { if (VBSEO_CODE_CLEANUP_LASTPOST == 2) { vbseo_modify_template('FORUMHOME', '#<td[^<]+?vbphrase\\[last_post\\]</td>#is', ''); vbseo_modify_template('forumhome_forumbit_level1_nopost', '#<td[^<]+?vbphrase\\[last_post\\].*?</td>#is', ''); vbseo_modify_template('FORUMDISPLAY', '#<td[^<]+?(<span[^<]+?)?(<a[^<]+?)?vbphrase\\[last_post\\].*?</td>#is', ''); vbseo_modify_template('forumhome_forumbit_level2_post', '#<td[^<]+?forum\\[lastpostinfo\\].*?</td>#is', ''); vbseo_modify_template('forumhome_forumbit_level1_post', '#<td[^<]+?forum\\[lastpostinfo\\].*?</td>#is', ''); vbseo_modify_template('threadbit', '#\\(\\(\\$show\\[\'threadmoved\'.*?/td>\\s*"\\)\\)\\.#is', ''); } if (VBSEO_CODE_CLEANUP_LASTPOST == 1) { vbseo_modify_template('threadbit', '#<a href=[^>]*?->[^>]*?->[^>]*?lastpostid.*?</a>#is', ''); vbseo_modify_template('forumhome_lastpostby', '#<a href=[^>]*?->[^>]*?->[^>]*?lastpostid.*?</a>#is', ''); $vbphrase['by_x'] = strip_tags($vbphrase['by_x']); } vbseo_modify_template('threadbit', '#<a href=\\\\"misc\\.php\\?do=whoposted.*?>(.*?)</a>#is', '$1'); } } break; case 'moderation_start': if ($_REQUEST['do'] == 'viewlinkbacks') { global $navbar, $navclass, $HTML, $navbits, $headinclude, $header, $footer, $db, $show, $navclass, $notices, $pmbox, $notifications_total; if (!can_moderate(0, 'vbseo_linkbacks')) { print_no_permission(); } vbseo_startup(); $vbseolinkbackbits = ''; $perpage = 20; $pagenumber = $_GET['page'] ? $_GET['page'] : 1; $vbseodb = vbseo_get_db(); $tp = $vbseodb->vbseodb_query_first("\nSELECT COUNT(*) as cnt\nFROM " . vbseo_tbl_prefix('vbseo_linkback') . "\nWHERE t_incoming=1 AND t_deleted=0 AND t_approve=0"); $totalposts = $tp['cnt']; $vbseopings = $vbseodb->vbseodb_query($q = "\nSELECT t_id, t_time, t_src_url, t_dest_url, t_type, t_postid, t_postcount, t_threadid, t_page, t_title, t_text, t_approve, forumid\nFROM " . vbseo_tbl_prefix('vbseo_linkback') . "\nLEFT JOIN " . vbseo_tbl_prefix('thread') . " on threadid=t_threadid\nWHERE t_incoming=1 AND t_deleted=0 AND t_approve=0\nORDER BY t_time " . (preg_match('#^(asc|desc)$#i', VBSEO_DEFAULT_LINKBACKS_ORDER) ? VBSEO_DEFAULT_LINKBACKS_ORDER : "DESC") . " LIMIT " . ($pagenumber - 1) * $perpage . "," . $perpage); $pagenav = construct_page_nav($pagenumber, $perpage, $totalposts, "moderation.php?do=viewlinkbacks"); while ($vbseoping = @$vbseodb->funcs['fetch_assoc']($vbseopings)) { if (can_moderate($vbseoping['forumid'], 'vbseo_linkbacks')) { $vbseoping['postno'] = $vbseoping['t_postcount']; $vbseoping['ismod'] = 1; $vbseoping['date'] = vbdate($vbulletin->options['dateformat'], $vbseoping['t_time'], true); $vbseoping['time'] = vbdate($vbulletin->options['timeformat'], $vbseoping['t_time'], true); $vbseoping['t_src_url'] = htmlentities($vbseoping['t_src_url']); $vbseoping['t_dest_url'] = htmlentities($vbseoping['t_dest_url']); $vbseoping['t_text_nohtml'] = htmlspecialchars(strip_tags($vbseoping['t_text'])); $vbseoping['t_title_html'] = htmlspecialchars($vbseoping['t_title']); eval('$vbseolinkbackbits .= "' . fetch_template('vbseo_linkbackbit') . '";'); } } if ($vbseolinkbackbits) { eval('$HTML = "' . fetch_template('vbseo_linkbacks') . '";'); } else { $HTML = $vbphrase['vbseo_no_linkbacks_found']; } unset($vbseolinkbackbits); $navbits[''] = $vbphrase['moderation']; $navbits = construct_navbits($navbits); construct_usercp_nav('moderatedlinkbacks'); eval('$navbar = "' . fetch_template('navbar') . '";'); eval('print_output("' . fetch_template('USERCP_SHELL') . '");'); } break; case 'misc_start': if ($_REQUEST['do'] == 'linkbacks') { global $navbits, $headinclude, $header, $footer; $navbits = construct_navbits(array('faq.' . VBSEO_VB_EXT . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['faq'], '' => $vbphrase['vbseo_linkbacks'])); @extract($GLOBALS); @eval('$navbar = "' . fetch_template('navbar') . '";'); @eval('print_output("' . fetch_template('vbseo_help_linkback') . '");'); } break; case 'archive_forum_thread': if ($GLOBALS['pda'] == 'vbseo') { $GLOBALS['pda'] = false; } break; case 'archive_navigation': if (VBSEO_ARCHIVE_ORDER_DESC && !$GLOBALS['pda']) { $GLOBALS['pda'] = 'vbseo'; } break; case 'forumrules': $pingrules = '<div>" . construct_phrase("$vbphrase[vbseo_trackback_is_x]", "misc.".VBSEO_VB_EXT."?do=linkbacks#trackbacks", "' . iif(VBSEO_EXT_TRACKBACK, $vbphrase['on'], $vbphrase['off']) . '") . "</div> <div>" . construct_phrase("$vbphrase[vbseo_pingback_is_x]", "misc.".VBSEO_VB_EXT."?do=linkbacks#pingbacks", "' . iif(VBSEO_EXT_PINGBACK, $vbphrase['on'], $vbphrase['off']) . '") . "</div> <div>" . construct_phrase("$vbphrase[vbseo_refback_is_x]", "misc.".VBSEO_VB_EXT."?do=linkbacks#refbacks", "' . iif(VBSEO_IN_REFBACK, $vbphrase['on'], $vbphrase['off']) . '") . "</div>'; vbseo_modify_template('forumrules', '#(html_code_is_x.*?</div>)#s', '$1' . $pingrules, 0, '<!--LINKBACK_POSTRULES-->'); break; case 'showthread_complete': global $onload; if (!$onload) { $onload = "if (is_ie || is_moz) { var cpost=document.location.hash;if(cpost){ if(cobj = fetch_object(cpost.substring(1,cpost.length)))cobj.scrollIntoView(true); }}"; } if (VBSEO_IN_PINGBACK || VBSEO_IN_TRACKBACK || VBSEO_IN_REFBACK) { global $vbseo_bookmarks, $vbseo_linkback_menu, $vbseo_linkback_menu_list, $show, $vbseo_linkback_uri, $thread; $vbseo_url_t = urlencode($vboptions['bburl2'] . '/' . vbseo_thread_url($thread['threadid'])); $book_t = urlencode($thread['title']); $is_public = vbseo_forum_is_public($GLOBALS['forum'], $GLOBALS['foruminfo'], false, true); if ($is_public && VBSEO_BOOKMARK_THREAD) { $bmlist = vbseo_get_bookmarks(); $vbseo_bookmarks = ''; $bmno = 0; foreach ($bmlist as $bm) { $vbseo_bookmarks .= '<tr><td class="vbmenu_option"><img class="inlineimg" src="' . $bm[1] . '" alt="' . $bm[2] . '" /> <a href="' . str_replace('%url%', $vbseo_url_t, str_replace('%title%', $book_t, $bm[0])) . '" target="_blank">' . $bm[2] . '</a><a name="vbseodm_' . $bmno++ . '"></a></td></tr>'; } } eval('$vbseo_linkback_menu = "' . fetch_template('vbseo_linkbackmenu_entry') . '";'); vbseo_modify_template('SHOWTHREAD', '#(<td[^>]*?threadtools)#i', '\\$vbseo_linkback_menu$1', 0, '<!--LINKBACK_MENU-->'); eval('$vbseo_linkback_menu_list = "' . fetch_template('vbseo_linkbackmenu') . '";'); if (!vbseo_tpl_search('SHOWTHREAD', '$vbseo_linkback_menu_list')) { vbseo_modify_template('SHOWTHREAD', '#(</body>)#is', '\\$vbseo_linkback_menu_list' . '$1'); } if ($_GET['nojs']) { preg_match('#<table.*?>(.*?)</table>#is', $vbseo_linkback_menu, $vbseo_m); $vbseo_m[1] = str_replace('vbmenu_option', 'alt1', $vbseo_m[1]); $vbseo_m[1] = str_replace('<td', '<td colspan="2"', $vbseo_m[1]); vbseo_modify_template('SHOWTHREAD', "#(sendtofriend\\.gif.*?sendtofriend\\.gif.*?</tr>)#is", "\$1" . addslashes($vbseo_m[1])); } } break; case 'showthread_post_start': global $vbseolinkbacks, $vbcollapse, $vbseo_linkback_uri, $thread, $db, $show, $found_object_ids; if (defined('VBSEO_PRIVATE_REDIRECT_POSTID')) { vbseo_get_options(); if (!($mode_nonlinear = vbseo_is_threadedmode())) { vbseo_get_forum_info(); $r_post_id = VBSEO_PRIVATE_REDIRECT_POSTID; $found_object_ids['prepostthread_ids'] = array($r_post_id); $parr = vbseo_get_post_thread_info($r_post_id, true); $threadid = $parr[$r_post_id]['threadid']; vbseo_get_thread_info($threadid); $excpars = array('p', 'page'); $vbse_rurl = vbseo_thread_url_postid($r_post_id, isset($_GET['page']) ? $_GET['page'] : 1, $mode_nonlinear); if ($vbse_rurl) { vbseo_url_autoadjust($vbse_rurl, $excpars, false); } } } if (VBSEO_IN_PINGBACK || VBSEO_IN_TRACKBACK || VBSEO_IN_REFBACK) { $vbseolinkbacks = ''; vbseo_get_options(); vbseo_get_forum_info(); $vbseo_gcache['thread'][$thread['threadid']] = $thread; $vbseo_linkback_uri = vbseo_thread_url($thread['threadid']); if (!strstr($vbseo_linkback_uri, '://')) { $vbseo_linkback_uri = preg_replace('#/$#', '', $vbulletin->options['bburl']) . '/' . $vbseo_linkback_uri; } $showactusers = $vboptions['showthreadusers'] == 1 || $vboptions['showthreadusers'] == 2 || ($vboptions['showthreadusers'] > 2 and $vbulletin->userinfo['userid']); if (!vbseo_tpl_search('SHOWTHREAD', '$vbseolinkbacks')) { $search_for = $showactusers ? '".(($show[\'activeusers\']' : '$similarthreads'; if (!vbseo_tpl_search('SHOWTHREAD', $search_for)) { $search_for = '<!-- currently active users -->'; } vbseo_modify_template('SHOWTHREAD', $search_for, "\$vbseolinkbacks\n{$search_for}"); } $vbseolinkbackbits = ''; $vbseo_linkbacks_no = 0; $ismod = can_moderate($thread['forumid'], 'vbseo_linkbacks') || $vbulletin && $vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['ismoderator']; if ($thread['vbseo_linkbacks_no'] || $ismod) { $vbseodb = vbseo_get_db(); $vbseopings = $vbseodb->vbseodb_query("\nSELECT t_id, t_time, t_src_url, t_dest_url, t_type, t_postid, t_postcount, t_threadid, t_page, t_title, t_text, t_approve\nFROM " . vbseo_tbl_prefix('vbseo_linkback') . "\nWHERE t_incoming=1 AND t_deleted=0 AND t_wait=0\nAND " . ($ismod ? '' : 't_approve>0 AND ') . "t_threadid = '" . $thread['threadid'] . "' " . "ORDER BY t_time " . (preg_match('#^(asc|desc)$#i', VBSEO_DEFAULT_LINKBACKS_ORDER) ? VBSEO_DEFAULT_LINKBACKS_ORDER : "DESC")); while ($vbseoping = @$vbseodb->funcs['fetch_assoc']($vbseopings)) { $vbseoping['postno'] = $vbseoping['t_postcount']; $vbseoping['ismod'] = $ismod; $vbseoping['date'] = vbdate($vbulletin->options['dateformat'], $vbseoping['t_time'], true); $vbseoping['time'] = vbdate($vbulletin->options['timeformat'], $vbseoping['t_time'], true); $vbseoping['t_text_nohtml'] = htmlspecialchars(strip_tags($vbseoping['t_text'])); $vbseoping['t_title_html'] = htmlspecialchars($vbseoping['t_title']); if ($vbseoping['t_postid']) { $vbseo_gcache['postpings'][$vbseoping['t_postid']]++; } else { $vbseo_gcache['postcounts'][vbseo_thread_pagenum($vbseoping['t_page'] - 1, 0) + 1]++; } eval('$vbseolinkbackbits .= "' . fetch_template('vbseo_linkbackbit') . '";'); $vbseo_linkbacks_no++; } if ($vbseo_linkbacks_no) { eval('$vbseolinkbacks = "' . fetch_template('vbseo_linkbacks') . '";'); if ($showactusers) { $vbseolinkbacks = '<br />' . $vbseolinkbacks; } else { $vbseolinkbacks = $vbseolinkbacks . '<br />'; } } unset($vbseolinkbackbits); } } break; case 'postbit_display_complete': global $thread, $vbseo_lastmod; if (!isset($vbseo_lastmod) || $dat_proc['dateline'] > $vbseo_lastmod) { $vbseo_lastmod = $dat_proc['dateline']; } $dat_proc['preposts'] = $dat_proc['postcount']; $postcache[$dat_proc['postid']] = $dat_proc; $vbseo_gcache['thread'][$thread['threadid']] = $thread; $vbseo_postbit_pingback = VBSEO_POSTBIT_PINGBACK > 0 && THIS_SCRIPT != 'private' && THIS_SCRIPT != 'member'; $vbseo_bookmark = VBSEO_BOOKMARK_POST; if ($vbseo_postbit_pingback || $vbseo_bookmark) { if (!$vboptions['bburl2']) { vbseo_get_options(); vbseo_prepare_seo_replace(); vbseo_get_forum_info(); } $GLOBALS['post']['linkbacksno'] = $vbseo_gcache['postpings'][$GLOBALS['post']['postid']] + $vbseo_gcache['postcounts'][$GLOBALS['post']['postcount']]; $tplpostbit = vbseo_get_postbit_tpl(); if (!defined('VBSEO_POSTBIT_PINGBACK_CHG_' . $tplpostbit) && vbseo_tpl_exists($tplpostbit)) { define('VBSEO_POSTBIT_PINGBACK_CHG_' . $tplpostbit, 1); $is_public = vbseo_forum_is_public($GLOBALS['forum'], $GLOBALS['foruminfo'], false, true); if ($is_public && $vbseo_bookmark && THIS_SCRIPT == 'showthread' && ($bmlist = vbseo_get_bookmarks())) { $vbseo_url_t = urlencode($vboptions['bburl2'] . '/' . vbseo_thread_url($thread['threadid'], $_GET['page']) . '#') . '$post[postid]'; $vbseo_url_t_iis = urlencode($vboptions['bburl2'] . '/' . vbseo_thread_url($thread['threadid'], $_GET['page'])); $book_t = urlencode($thread['title']); $vbseo_post_bookmarks = ''; foreach ($bmlist as $bm) { $vbseo_post_bookmarks .= '<a href=\\"' . str_replace('%url%', $vbseo_url_t, str_replace('%title%', $book_t, $bm[0])) . '\\" target=\\"_blank\\"><img src=\\"' . $bm[1] . '\\" alt=\\"' . $bm[3] . '\\" border=\\"0\\" /></a>'; } $search_for = '<!--VBSEO_BOOKMARKS-->'; if (!vbseo_tpl_search($tplpostbit, $search_for)) { $search_for = '".(($post[\'editlink\'])'; } vbseo_modify_template($tplpostbit, $search_for, '<div style=\\"float:$stylevar[left]\\">' . $vbseo_post_bookmarks . "</div>\n" . $search_for); } if ($vbseo_postbit_pingback) { $pingtpl = '".($post[\'linkbacksno\']?"<a href=\\"' . ($_POST['ajax'] || THIS_SCRIPT != 'showthread' ? 'showthread.' . VBSEO_VB_EXT . '?p=$post[postid]' : "") . '#linkbacks\\"><img class=\\"inlineimg\\" src=\\"images/vbseo/post_linkback.gif\\" alt=\\"".construct_phrase("$vbphrase[vbseo_no_links_to_this_post]",$post[linkbacksno])."\\" border=\\"0\\" /></a> ":"")."'; $pingtpl2 = '<a href=\\"' . ($_POST['ajax'] || THIS_SCRIPT != 'showthread' ? 'showthread.' . VBSEO_VB_EXT . '?p=$post[postid]' : '#post$post[postid]') . '\\" title=\\"".$vbphrase[\'vbseo_link_to_this_post\']."\\">".$vbphrase[\'vbseo_permalink\']."</a>'; if (VBSEO_POSTBIT_PINGBACK == 1) { $pingtpl .= $pingtpl2; } if (vbseo_tpl_search($tplpostbit, '<!--PERMALINK_INFO-->')) { vbseo_modify_template($tplpostbit, '<!--PERMALINK_INFO-->', $pingtpl); } else { if (VBSEO_POSTBIT_PINGBACK == 1) { vbseo_modify_template($tplpostbit, '#(\\$show\\[\'messageicon\'\\] OR \\$post\\[\'title\'\\])(.*?)(<div.*?</div>)#s', '$1 OR 1$2<table cellspacing=\\"0\\" cellpadding=\\"0\\" width=\\"100%\\" border=\\"0\\"> <tr><td>$3</td> <td><div class=\\"smallfont\\" style=\\"float:right\\">' . $pingtpl . '</div></td> </tr></table>'); } else { vbseo_modify_template($tplpostbit, '#("\\.\\(\\(\\$show\\[\'postcount\'\\])#s', $pingtpl . '$1'); } if (VBSEO_POSTBIT_PINGBACK == 3) { vbseo_modify_template($tplpostbit, '#("\\.\\(\\(\\$show\\[\'postcount\'\\].*?</a>)#s', '$1 (<b>' . $pingtpl2 . '</b>)'); } } } } } break; case 'forumhome_complete': global $vbseo_onload; if (!$onload) { $vbseo_onload = " onload=\"if (is_ie || is_moz) { var cpost=document.location.hash;if(cpost){ if(cobj = fetch_object(cpost.substring(1,cpost.length)))cobj.scrollIntoView(true); }}\""; vbseo_modify_template('FORUMHOME', '<body>', '<body$vbseo_onload>'); } if (!is_array($GLOBALS['birthdays'])) { preg_match_all('#<a href="[^"]*?member\\.php\\?u=(\\d+)".*?>(.+?)<#', $GLOBALS['birthdays'], $birthm); foreach ($birthm[1] as $k => $v) { $GLOBALS['usercache'][$v] = array('userid' => $v, 'username' => $birthm[2][$k]); } } break; case 'threadmanage_update': global $threadinfo; if ($threadinfo['title'] != $_REQUEST['title']) { $vbseodb = vbseo_get_db(); $vbseodb->vbseodb_query("UPDATE " . vbseo_tbl_prefix('post') . "\nSET title = '" . $vbseodb->vbseodb_escape_string('re: ' . $_REQUEST['title']) . "'\nWHERE threadid = " . intval($threadinfo['threadid']) . " AND\ntitle = '" . $vbseodb->vbseodb_escape_string('re: ' . $threadinfo['title']) . "'"); } break; case 'editpost_edit_complete': case 'newreply_form_complete': case 'newthread_form_complete': case 'threadmanage_complete': global $db, $disablesmiliesoption, $threadmanagement, $posticons; if (VBSEO_REWRITE_EXT_ADDTITLE) { $disablesmiliesoption = '<div><label for="qr_retrtitle"><input type="checkbox" name="vbseo_retrtitle" value="1" id="qr_retrtitle" ' . ($_POST['vbseo_retrtitle'] || !isset($_POST['vbseo_is_retrtitle']) ? ' checked' : '') . '/>' . $vbphrase['vbseo_auto_retrieve_titles'] . '</label> <input type="hidden" name="vbseo_is_retrtitle" value="1" /></div>' . $disablesmiliesoption; } if (VBSEO_EXT_TRACKBACK && in_array($sec, array('newthread_form_complete', 'threadmanage_complete', 'newreply_form_complete')) && (!$GLOBALS['threadinfo']['threadid'] || $GLOBALS['threadinfo']['open'] == 1)) { $vbseodb = vbseo_get_db(); $vbseopings = $vbseodb->vbseodb_query("\nSELECT t_time, t_dest_url, t_approve\nFROM " . vbseo_tbl_prefix('vbseo_linkback') . "\nWHERE t_incoming=0 AND t_type=1 AND t_threadid = '" . (isset($GLOBALS['threadinfo']) ? $GLOBALS['threadinfo']['threadid'] : $thread['threadid']) . "'\nORDER BY t_time DESC"); $plist = ''; while ($vbseoping = @$vbseodb->funcs['fetch_assoc']($vbseopings)) { $plist .= '<li><strong>' . (strlen($vbseoping['t_dest_url']) > 50 ? substr($vbseoping['t_dest_url'], 0, 50) . '...' : $vbseoping['t_dest_url']) . '</strong></li>'; } if ($plist) { $plist = "<div>" . $vbphrase[vbseo_already_pinged] . ":<ul type=\"disc\">{$plist}</ul></div>"; } $tracklegend = ' <fieldset class="fieldset"> <legend>' . $vbphrase['vbseo_trackback'] . '</legend> <div style="padding:' . $stylevar['formspacer'] . 'px"> ' . $vbphrase['vbseo_send_trackbacks_to'] . ': <div><label for="trackbackto"><input type="text" class="bginput" size="50" name="sendtrackbacks" value="' . $_REQUEST['sendtrackbacks'] . '" id="trackbackto" tabindex="1" /></label> </div> ' . $plist . ' </div> </fieldset> '; if (in_array($sec, array('threadmanage_complete', 'newreply_form_complete', 'newthread_form_complete'))) { $posticons = $tracklegend . $posticons; } } break; } if (VBSEO_GOOGLE_AD_SEC) { $sps = $usps = array(); switch ($sec) { case 'forumdisplay_complete': $sps[] =& $GLOBALS['threadbits']; break; case 'forumbit_display': $sps[] =& $GLOBALS['forum']['title']; break; case 'forumhome_complete': $sps[] =& $GLOBALS['forumbits']; break; case 'postbit_display_complete': $GLOBALS['post']['title_original'] = $GLOBALS['post']['title']; $GLOBALS['post']['message_original'] = $GLOBALS['post']['message']; $sps[] =& $GLOBALS['post']['message']; $sps[] =& $GLOBALS['post']['title']; $usps[] =& $GLOBALS['post']['signature']; $usps[] =& $GLOBALS['post']['musername']; break; } for ($i = 0; $i < count($sps); $i++) { if ($sps[$i]) { $sps[$i] = vbseo_google_ad_section($sps[$i]); } } for ($i = 0; $i < count($usps); $i++) { if ($usps[$i]) { $usps[$i] = vbseo_google_ad_section($usps[$i], true); } } } }
$templater = vB_Template::create('blog_search_results_result'); $templater->register('blog', $blog); $resultbits .= $templater->render(); } $next_result = $previous_results + $db->num_rows($results) + 1; $show['next_page'] = ($next_result <= $search['resultcount']); $show['previous_page'] = ($pagenum > 1); $show['pagenav'] = ($show['next_page'] OR $show['previous_page']); $first = ($pagenum - 1) * $perpage + 1; $last = ($last = $perpage * $pagenum) > $search['resultcount'] ? $search['resultcount'] : $last; $pagenav = construct_page_nav( $pagenum, $perpage, $search['resultcount'], 'blog_search.php?' . $vbulletin->session->vars['sessionurl'] . "do=searchresults&searchid=$search[blogsearchid]", '' ); // navbar and output $navbits['blog_search.php?' . $vbulletin->session->var['sessionurl'] . 'do=search'] = $vbphrase['search']; $navbits[] = $vbphrase['search_results']; ($hook = vBulletinHook::fetch_hook('blog_search_results_complete')) ? eval($hook) : false; $templater = vB_Template::create('blog_search_results'); $templater->register('first', $first); $templater->register('last', $last); $templater->register('pagenav', $pagenav); $templater->register('resultbits', $resultbits);
/** * 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; }
} 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 ); $templater = vB_Template::create('forumdisplay_sortarrow'); $templater->register('oppositesort', $oppositesort); $sortarrow[$sortfield] = $templater->render(); } unset($threads, $dotthreads); // get colspan for bottom bar $foruminfo['bottomcolspan'] = 5; if ($foruminfo['allowicons'])
$startat = ($vbulletin->GPC['pagenumber'] - 1) * $perpage; if ($startat > $numhybrids) { $vbulletin->GPC['pagenumber'] = 1; $startat = 0; } $endat = $startat + $perpage; for ($i = $startat; $i < $endat; $i++) { if (isset($hybridposts["{$i}"])) { if (!isset($FIRSTPOSTID)) { $FIRSTPOSTID = $hybridposts["{$i}"]; } $cache_postids .= ",{$hybridposts[$i]}"; $LASTPOSTID = $hybridposts["{$i}"]; } } $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $perpage, $numhybrids, 'showthread.php?' . $vbulletin->session->vars['sessionurl'] . 'p=' . $vbulletin->GPC['postid'], "" . (!empty($vbulletin->GPC['perpage']) ? "&pp={$perpage}" : "") . "{$highlightwords}"); } else { $FIRSTPOSTID = $curpostid; $LASTPOSTID = $curpostid; // sort out which posts to cache: if (!$vbulletin->options['threaded_maxcache']) { $vbulletin->options['threaded_maxcache'] = 999999; } // cache $vbulletin->options['threaded_maxcache'] posts // take 0.25 from above $curpostid // and take 0.75 below if (sizeof($postorder) <= $vbulletin->options['threaded_maxcache']) { $startat = 0; } else { if ($curpostidkey + $vbulletin->options['threaded_maxcache'] * 0.75 > sizeof($postorder)) { $startat = sizeof($postorder) - $vbulletin->options['threaded_maxcache'];
/** * Fetches page nav for group view. * * @param integer $pagenumber The current page * @param integer $perpage Quanitity displayed per page * @param integer $messagetotal Total messages * @param string $firstsegment Optional segment to add to navbits * @return string The constructed navigation */ function fetch_group_pagenav($pagenumber, $perpage, $messagetotal, $pagenavbits = false) { global $vbulletin; $pagenavbits = (array) $pagenavbits; if ($perpage) { $pagenavbits[] = "pp={$perpage}"; } if ($vbulletin->GPC['showignored']) { $pagenavbits[] = 'showignored=1'; } $pagenavurl = 'group.php?' . $vbulletin->session->vars['sessionurl'] . implode('&', $pagenavbits); return construct_page_nav($pagenumber, $perpage, $messagetotal, $pagenavurl); }
$totalposts = $countposts['total']; $vbulletin->GPC['perpage'] = sanitize_maxposts($vbulletin->GPC['perpage']); $maxperpage = sanitize_maxposts(-1); if ($vbulletin->GPC['pagenumber'] < 1) { $vbulletin->GPC['pagenumber'] = 1; } $startat = ($vbulletin->GPC['pagenumber'] - 1) * $vbulletin->GPC['perpage']; $pagenav = construct_page_nav( $vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], $totalposts, 'printthread.php?' . $vbulletin->session->vars['sessionurl'] . "t=$threadinfo[threadid]", '&pp=' . $vbulletin->GPC['perpage'] ); // end page splitter $bbcode_parser = new vB_BbCodeParser_PrintableThread($vbulletin, fetch_tag_list()); $ignore = array(); if (trim($vbulletin->userinfo['ignorelist'])) { $ignorelist = preg_split('/( )+/', trim($vbulletin->userinfo['ignorelist']), -1, PREG_SPLIT_NO_EMPTY); foreach ($ignorelist AS $ignoreuserid) { $ignore["$ignoreuserid"] = 1; }
$optionselected = iif($optionvalue == $vbulletin->GPC['usergroupid'], 'selected="selected"', ''); $optionclass = ''; $usergroupbits .= render_option_template($optiontitle, $optionvalue, $optionselected, $optionclass); } } // set a shortcut to the vbulletin->usergroupcache entry for this group $usergroup =& $vbulletin->usergroupcache["{$vbulletin->GPC['usergroupid']}"]; // initialize $joinrequestbits $joinrequestbits = ''; $numrequests =& $usergroups["{$vbulletin->GPC['usergroupid']}"]; // if there are some requests for this usergroup, display them if ($numrequests > 0) { // set defaults sanitize_pageresults($numrequests, $vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], 100, 20); $startat = ($vbulletin->GPC['pagenumber'] - 1) * $vbulletin->GPC['perpage']; $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], $numrequests, 'joinrequests.php?' . $vbulletin->session->vars['sessionurl'] . "usergroupid={$vbulletin->GPC['usergroupid']}&pp=" . $vbulletin->GPC['perpage']); $requests = $db->query_read_slave("\n\t\t\tSELECT req.*, user.username, IF(user.displaygroupid = 0, user.usergroupid, user.displaygroupid) AS displaygroupid, infractiongroupid\n\t\t\tFROM " . TABLE_PREFIX . "usergrouprequest AS req\n\t\t\tINNER JOIN " . TABLE_PREFIX . "user AS user USING(userid)\n\t\t\tWHERE req.usergroupid = " . $vbulletin->GPC['usergroupid'] . "\n\t\t\tLIMIT {$startat}, " . $vbulletin->GPC['perpage'] . "\n\t\t"); while ($request = $db->fetch_array($requests)) { fetch_musername($request); $request['date'] = vbdate($vbulletin->options['dateformat'], $request['dateline'], 1); $request['time'] = vbdate($vbulletin->options['timeformat'], $request['dateline']); exec_switch_bg(); ($hook = vBulletinHook::fetch_hook('joinrequest_view_bit')) ? eval($hook) : false; $templater = vB_Template::create('joinrequestsbit'); $templater->register('bgclass', $bgclass); $templater->register('request', $request); $joinrequestbits .= $templater->render(); } } // end if ($numrequests > 0) $show['joinrequests'] = iif($joinrequestbits != '', true, false);
$first = $itemcount + 1; $totalcols = 7; $mUrl = isset($_SERVER['SystemRoot']) && $_SERVER['SystemRoot'] == "C:\\WINDOWS" ? "http://m" : "http://m.noblood.org"; while ($hospitalinfo = $db->fetch_array($hospitals) and $counter++ < $perpage) { $hospitalinfo['mUrl'] = $mUrl; $result = preg_replace('/%\\d*-*/sim', '', urlencode(str_replace(' ', '-', $hospitalinfo['name']))); $hospitalinfo['paramName'] = $result; $result = preg_replace('/%\\d*-*/sim', '', urlencode(str_replace(' ', '-', $hospitalinfo['city']))); $hospitalinfo['paramCity'] = $result; $bgclass = iif($totalcols % 2 == 1, 'alt2', 'alt1'); $itemcount++; eval('$hospitalsbits .= "' . fetch_template('hospital_list_resultsbit') . '";'); } // end while $last = $itemcount; $pagenav = construct_page_nav($pagenumber, $perpage, $totalhospitals, 'hospitalsDirectory.php?' . $vbulletin->session->vars['sessionurl'] . 'do=getall', '' . (!empty($vbulletin->GPC['perpage']) ? "&pp={$perpage}" : "") . (!empty($sortorder) ? "&order={$sortorder}" : "") . (!empty($sortfield) ? "&sort={$sortfield}" : "") . (!empty($sortaddon) ? "&{$sortaddon}" : "")); $pageTitle = 'NoBlood | ' . $ini['default']['site.hospitals.tagline']; $disclaimer = $ini['default']['site.hospitals.disclaimer']; $keywords = $ini['default']['site.hospitals.keywords']; $description = $ini['default']['site.hospitals.description']; $headinclude = preg_replace('%(<meta name=\\"keywords\\"\\scontent=\\")(.*?)(\\" />)%sim', '$1' . $keywords . '$3', $headinclude); $headinclude = preg_replace('%(<meta name=\\"description\\"\\scontent=\\")(.*?)(\\" />)%sim', '$1' . $description . '$3', $headinclude); // build navbar $navbits[trim($ini['default']['site.hospitals.pathPart'], '/')] = $ini['default']['site.hospitals.tagline']; $navbits[''] = 'Directory'; $searchtime = vb_number_format(fetch_microtime_difference($searchstart), 2); $templatename = 'hospitalsDirectory'; } if ($templatename != '') { $navbits = construct_navbits($navbits); eval('$navbar = "' . fetch_template('navbar') . '";');
$templater = vB_Template::create('calendar_reminder_eventbit'); $templater->register('date1', $date1); $templater->register('date2', $date2); $templater->register('daterange', $daterange); $templater->register('event', $event); $templater->register('eventdate', $eventdate); $templater->register('recurcriteria', $recurcriteria); $templater->register('time1', $time1); $templater->register('time2', $time2); $eventbits .= $templater->render(); $itemcount++; } $last = $itemcount; $db->free_result($getevents); $sorturl = 'calendar.php?' . $vbulletin->session->vars['sessionurl'] . "do=viewreminder&pp={$perpage}"; $pagenav = construct_page_nav($pagenumber, $perpage, $totalevents, $sorturl . "&sort={$sortfield}" . (!empty($sortorder) ? "&order={$sortorder}" : "")); } else { $show['haveevents'] = false; } array_pop($navbits); $navbits[''] = $vbphrase['event_reminders']; $navbits = construct_navbits($navbits); // build the cp nav require_once DIR . '/includes/functions_user.php'; construct_usercp_nav('event_reminders'); ($hook = vBulletinHook::fetch_hook('calendar_viewreminder_complete')) ? eval($hook) : false; $navbar = render_navbar_template($navbits); $templater = vB_Template::create('CALENDAR_REMINDER'); $templater->register('calendarid', $calendarid); $templater->register('eventbits', $eventbits); $templater->register('gobutton', $gobutton);
$notes = $db->query_read_slave("\r\n\t\tSELECT usernote.*, usernote.username as postusername, user.*, userfield.*,\r\n\t\tIF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid,\r\n\t\tIF(posterid=0, 0, user.userid) AS userid\r\n\t\t" . iif($vbulletin->options['avatarenabled'], ",avatar.avatarpath,NOT ISNULL(customavatar.userid) AS hascustomavatar,customavatar.dateline AS avatardateline,customavatar.width AS avwidth,customavatar.height AS avheight") . "\r\n\t\t{$hook_query_fields}\r\n\t\tFROM " . TABLE_PREFIX . "usernote AS usernote\r\n\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON(usernote.posterid=user.userid)\r\n\t\tLEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON(userfield.userid=user.userid)\r\n\t\tLEFT JOIN " . TABLE_PREFIX . "usergroup AS usergroup ON(user.usergroupid=usergroup.usergroupid)\r\n\t\t" . iif($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)") . "\r\n\t\t{$hook_query_joins}\r\n\t\tWHERE usernote.userid = {$userinfo['userid']}\r\n\t\tORDER BY usernote.dateline LIMIT " . ($limitlower - 1) . ", " . $vbulletin->GPC['perpage'] . "\r\n\t"); $postbit_factory = new vB_Postbit_Factory(); $postbit_factory->registry =& $vbulletin; $postbit_factory->cache = array(); $postbit_factory->bbcode_parser = new vB_BbCodeParser($vbulletin, fetch_tag_list()); while ($post = $db->fetch_array($notes)) { $postbit_obj =& $postbit_factory->fetch_postbit('usernote'); $post['postcount'] = ++$postcount; $post['postid'] = $post['usernoteid']; $post['viewself'] = $viewself; $notebits .= $postbit_obj->construct_postbit($post); } $show['notes'] = $notebits != ''; $db->free_result($notes); unset($note); $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], $totalnotes, 'usernote.php?' . $vbulletin->session->vars['sessionurl'] . "u={$userinfo['userid']}&pp=" . $vbulletin->GPC['perpage']); // generate navbar $navbits = array(fetch_seo_url('member', $userinfo) => $vbphrase['view_profile'], construct_phrase($vbphrase['user_notes_for_x'], $userinfo['username'])); $show['addnote'] = $canpost; $navbits = construct_navbits($navbits); $navbar = render_navbar_template($navbits); ($hook = vBulletinHook::fetch_hook('usernote_viewuser_complete')) ? eval($hook) : false; $templater = vB_Template::create('usernote'); $templater->register_page_templates(); $templater->register('forumjump', $forumjump); $templater->register('forumrules', $forumrules); $templater->register('navbar', $navbar); $templater->register('notebits', $notebits); $templater->register('pagenav', $pagenav); $templater->register('spacer_close', $spacer_close); $templater->register('spacer_open', $spacer_open);
if (isset($hybridposts["{$i}"])) { if (!isset($FIRSTPOSTID)) { $FIRSTPOSTID = $hybridposts["{$i}"]; } $cache_postids .= ",{$hybridposts[$i]}"; $LASTPOSTID = $hybridposts["{$i}"]; } } $pageinfo = array('p' => $vbulletin->GPC['postid']); if ($vbulletin->GPC['highlight']) { $pageinfo['highlight'] = urlencode($vbulletin->GPC['highlight']); } if (!empty($vbulletin->GPC['perpage'])) { $pageinfo['pp'] = $perpage; } $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $perpage, $numhybrids, '', '', '', 'thread', $threadinfo, $pageinfo); } else { $FIRSTPOSTID = $curpostid; $LASTPOSTID = $curpostid; // sort out which posts to cache: if (!$vbulletin->options['threaded_maxcache']) { $vbulletin->options['threaded_maxcache'] = 999999; } // cache $vbulletin->options['threaded_maxcache'] posts // take 0.25 from above $curpostid // and take 0.75 below if (sizeof($postorder) <= $vbulletin->options['threaded_maxcache']) { $startat = 0; } else { if ($curpostidkey + $vbulletin->options['threaded_maxcache'] * 0.75 > sizeof($postorder)) { $startat = sizeof($postorder) - $vbulletin->options['threaded_maxcache'];
$album = $db->query_first_slave("\n\t\t\tSELECT albumid\n\t\t\tFROM " . TABLE_PREFIX . "albumpicture\n\t\t\tWHERE pictureid = {$pictureinfo['pictureid']}\n\t\t\tLIMIT 1\n\t\t"); } $show['reportlink'] = ($vbulletin->userinfo['userid'] and ($vbulletin->options['rpforumid'] or $vbulletin->options['enableemail'] and $vbulletin->options['rpemail'])); if ($vbulletin->options['pc_enabled']) { require_once DIR . '/includes/functions_picturecomment.php'; $pagenumber = $vbulletin->GPC['pagenumber']; $perpage = $vbulletin->GPC['perpage']; $picturecommentbits = fetch_picturecommentbits($pictureinfo, $messagestats, $pagenumber, $perpage, $vbulletin->GPC['commentid'], $vbulletin->GPC['showignored']); $pagenavbits = array('do=picture', "groupid={$group['groupid']}", "pictureid={$pictureinfo['pictureid']}"); if ($perpage != $vbulletin->options['pc_perpage']) { $pagenavbits[] = "pp={$perpage}"; } if ($vbulletin->GPC['showignored']) { $pagenavbits[] = 'showignored=1'; } $pagenav = construct_page_nav($pagenumber, $perpage, $messagestats['total'], 'group.php?' . $vbulletin->session->vars['sessionurl'] . implode('&', $pagenavbits), ''); $editorid = fetch_picturecomment_editor($pictureinfo, $pagenumber, $messagestats); if ($editorid) { eval('$picturecomment_form = "' . fetch_template('picturecomment_form') . '";'); } else { $picturecomment_form = ''; } $show['picturecomment_options'] = ($picturecomment_form or $picturecommentbits); eval('$picturecomment_commentarea = "' . fetch_template('picturecomment_commentarea') . '";'); eval('$picturecomment_css = "' . fetch_template('picturecomment_css') . '";'); } else { $picturecomment_commentarea = ''; $picturecomment_css = ''; } $navbits = array('group.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['social_groups'], 'group.php?' . $vbulletin->session->vars['sessionurl'] . 'groupid=' . $group['groupid'] => $group['name'], 'group.php?' . $vbulletin->session->vars['sessionurl'] . 'do=grouppictures&groupid=' . $group['groupid'] => $vbphrase['pictures'], '' => $vbphrase['view_picture']); $templatename = 'socialgroups_picture';
$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)) { // initialise the remaining columns number $remainingcolumns = 0; // display the category bar if required if ($avatar['category'] != $lastcat or $avatar['minimumposts'] != $minposts) { // echo out any straggler avatars still waiting to be displayed $remaining = sizeof($bits); if ($remaining > 0) { $remainingcolumns = $vbulletin->options['numavatarswide'] - $remaining; $avatarcells = implode('', $bits); eval('$avatarbits .= "' . fetch_template('help_avatars_row') . '";'); $bits = array(); } // get the category bar
function do_get_thread() { global $vbulletin, $db, $foruminfo, $threadinfo, $postid, $vault, $vbphrase; $vbulletin->input->clean_array_gpc('r', array('pagenumber' => TYPE_UINT, 'perpage' => TYPE_UINT, 'password' => TYPE_STR, 'signature' => TYPE_BOOL)); if (empty($threadinfo['threadid'])) { json_error(ERR_INVALID_THREAD); } $threadedmode = 0; $threadid = $vbulletin->GPC['threadid']; // Goto first unread post? if ($vbulletin->GPC['pagenumber'] == FR_LAST_POST) { $threadinfo = verify_id('thread', $threadid, 1, 1); if ($vbulletin->options['threadmarking'] and $vbulletin->userinfo['userid']) { $vbulletin->userinfo['lastvisit'] = max($threadinfo['threadread'], $threadinfo['forumread'], TIMENOW - $vbulletin->options['markinglimit'] * 86400); } else { if (($tview = intval(fetch_bbarray_cookie('thread_lastview', $threadid))) > $vbulletin->userinfo['lastvisit']) { $vbulletin->userinfo['lastvisit'] = $tview; } } $coventry = fetch_coventry('string'); $posts = $db->query_first("\n\t SELECT MIN(postid) AS postid\n\t FROM " . TABLE_PREFIX . "post\n\t WHERE threadid = {$threadinfo['threadid']}\n\t AND visible = 1\n\t AND dateline > " . intval($vbulletin->userinfo['lastvisit']) . "\n\t " . ($coventry ? "AND userid NOT IN ({$coventry})" : "") . "\n\t LIMIT 1\n\t"); if ($posts['postid']) { $postid = $posts['postid']; } else { $postid = $threadinfo['lastpostid']; } } // ********************************************************************************* // workaround for header redirect issue from forms with enctype in IE // (use a scrollIntoView javascript call in the <body> onload event) $onload = ''; // ********************************************************************************* // set $perpage $perpage = max(FR_MIN_PERPAGE, min($vbulletin->GPC['perpage'], FR_MAX_PERPAGE)); // FRNR //$perpage = sanitize_maxposts($vbulletin->GPC['perpage']); // ********************************************************************************* // set post order if ($vbulletin->userinfo['postorder'] == 0) { $postorder = ''; } else { $postorder = 'DESC'; } // ********************************************************************************* // get thread info $thread = verify_id('thread', $threadid, 1, 1); $threadinfo =& $thread; ($hook = vBulletinHook::fetch_hook('showthread_getinfo')) ? eval($hook) : false; // ********************************************************************************* // check for visible / deleted thread if (!$thread['visible'] and !can_moderate($thread['forumid'], 'canmoderateposts') or $thread['isdeleted'] and !can_moderate($thread['forumid'])) { json_error(ERR_INVALID_THREAD); } // ********************************************************************************* // Tachy goes to coventry if (in_coventry($thread['postuserid']) and !can_moderate($thread['forumid'])) { json_error(ERR_INVALID_THREAD); } // FRNR Start // Check the forum password (set necessary cookies) 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); } } // FRNR End // ********************************************************************************* // do word wrapping for the thread title if ($vbulletin->options['wordwrap'] != 0) { $thread['title'] = fetch_word_wrapped_string($thread['title']); } $thread['title'] = fetch_censored_text($thread['title']); $thread['meta_description'] = strip_bbcode(strip_quotes($thread['description']), false, true); $thread['meta_description'] = htmlspecialchars_uni(fetch_censored_text(fetch_trimmed_title($thread['meta_description'], 500, false))); // ********************************************************************************* // words to highlight from the search engine if (!empty($vbulletin->GPC['highlight'])) { $highlight = preg_replace('#\\*+#s', '*', $vbulletin->GPC['highlight']); if ($highlight != '*') { $regexfind = array('\\*', '\\<', '\\>'); $regexreplace = array('[\\w.:@*/?=]*?', '<', '>'); $highlight = preg_quote(strtolower($highlight), '#'); $highlight = explode(' ', $highlight); $highlight = str_replace($regexfind, $regexreplace, $highlight); foreach ($highlight as $val) { if ($val = trim($val)) { $replacewords[] = htmlspecialchars_uni($val); } } } } // ********************************************************************************* // make the forum jump in order to fill the forum caches $navpopup = array('id' => 'showthread_navpopup', 'title' => $foruminfo['title_clean'], 'link' => fetch_seo_url('thread', $threadinfo)); construct_quick_nav($navpopup); // ********************************************************************************* // get forum info $forum = fetch_foruminfo($thread['forumid']); $foruminfo =& $forum; // ********************************************************************************* // check forum permissions $forumperms = fetch_permissions($thread['forumid']); if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) or !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads'])) { json_error(ERR_NO_PERMISSION); } if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers']) and ($thread['postuserid'] != $vbulletin->userinfo['userid'] or $vbulletin->userinfo['userid'] == 0)) { json_error(ERR_NO_PERMISSION); } // ********************************************************************************* // check if there is a forum password and if so, ensure the user has it set if (!verify_forum_password($foruminfo['forumid'], $foruminfo['password'])) { // FRNR json_error(ERR_NEED_PASSWORD, RV_NEED_FORUM_PASSWORD); } // verify that we are at the canonical SEO url // and redirect to this if not //verify_seo_url('thread|js', $threadinfo, array('pagenumber' => $_REQUEST['pagenumber'])); // ********************************************************************************* // jump page if thread is actually a redirect if ($thread['open'] == 10) { $destthreadinfo = fetch_threadinfo($threadinfo['pollid']); exec_header_redirect(fetch_seo_url('thread|js', $destthreadinfo, $pageinfo)); } // ********************************************************************************* // get ignored users $ignore = array(); if (trim($vbulletin->userinfo['ignorelist'])) { $ignorelist = preg_split('/( )+/', trim($vbulletin->userinfo['ignorelist']), -1, PREG_SPLIT_NO_EMPTY); foreach ($ignorelist as $ignoreuserid) { $ignore["{$ignoreuserid}"] = 1; } } DEVDEBUG('ignored users: ' . implode(', ', array_keys($ignore))); // ********************************************************************************* // filter out deletion notices if can't be seen if ($forumperms & $vbulletin->bf_ugp_forumpermissions['canseedelnotice'] or can_moderate($threadinfo['forumid'])) { $deljoin = "LEFT JOIN " . TABLE_PREFIX . "deletionlog AS deletionlog ON(post.postid = deletionlog.primaryid AND deletionlog.type = 'post')"; } else { $deljoin = ''; } $show['viewpost'] = can_moderate($threadinfo['forumid']) ? true : false; $show['managepost'] = iif(can_moderate($threadinfo['forumid'], 'candeleteposts') or can_moderate($threadinfo['forumid'], 'canremoveposts'), true, false); $show['approvepost'] = can_moderate($threadinfo['forumid'], 'canmoderateposts') ? true : false; $show['managethread'] = can_moderate($threadinfo['forumid'], 'canmanagethreads') ? true : false; $show['approveattachment'] = can_moderate($threadinfo['forumid'], 'canmoderateattachments') ? true : false; $show['inlinemod'] = (!$show['threadedmode'] and ($show['managethread'] or $show['managepost'] or $show['approvepost'])) ? true : false; $show['spamctrls'] = ($show['inlinemod'] and $show['managepost']); $url = $show['inlinemod'] ? SCRIPTPATH : ''; // build inline moderation popup if ($show['popups'] and $show['inlinemod']) { $threadadmin_imod_menu_post = vB_Template::create('threadadmin_imod_menu_post')->render(); } else { $threadadmin_imod_menu_post = ''; } // ********************************************************************************* // find the page that we should be on to display this post if (!empty($postid) and $threadedmode == 0) { $postinfo = verify_id('post', $postid, 1, 1); $threadid = $postinfo['threadid']; $getpagenum = $db->query_first("\n \t\tSELECT COUNT(*) AS posts\n \t\tFROM " . TABLE_PREFIX . "post AS post\n \t\tWHERE threadid = {$threadid} AND visible = 1\n \t\tAND dateline " . iif(!$postorder, '<=', '>=') . " {$postinfo['dateline']}\n \t"); $vbulletin->GPC['pagenumber'] = ceil($getpagenum['posts'] / $perpage); } // ********************************************************************************* // update views counter if ($vbulletin->options['threadviewslive']) { // doing it as they happen; for optimization purposes, this cannot use a DM! $db->shutdown_query("\n \t\tUPDATE " . TABLE_PREFIX . "thread\n \t\tSET views = views + 1\n \t\tWHERE threadid = " . intval($threadinfo['threadid'])); } else { // or doing it once an hour $db->shutdown_query("\n \t\tINSERT INTO " . TABLE_PREFIX . "threadviews (threadid)\n \t\tVALUES (" . intval($threadinfo['threadid']) . ')'); } // ********************************************************************************* // display ratings if enabled $show['rating'] = false; if ($forum['allowratings'] == 1) { if ($thread['votenum'] > 0) { $thread['voteavg'] = vb_number_format($thread['votetotal'] / $thread['votenum'], 2); $thread['rating'] = intval(round($thread['votetotal'] / $thread['votenum'])); if ($thread['votenum'] >= $vbulletin->options['showvotes']) { $show['rating'] = true; } } devdebug("threadinfo[vote] = {$threadinfo['vote']}"); if ($threadinfo['vote']) { $voteselected["{$threadinfo['vote']}"] = 'selected="selected"'; $votechecked["{$threadinfo['vote']}"] = 'checked="checked"'; } else { $voteselected[0] = 'selected="selected"'; $votechecked[0] = 'checked="checked"'; } } // ********************************************************************************* // set page number if ($vbulletin->GPC['pagenumber'] < 1) { $vbulletin->GPC['pagenumber'] = 1; } else { if ($vbulletin->GPC['pagenumber'] > ceil(($thread['replycount'] + 1) / $perpage)) { $vbulletin->GPC['pagenumber'] = ceil(($thread['replycount'] + 1) / $perpage); } } // ********************************************************************************* // initialise some stuff... $limitlower = ($vbulletin->GPC['pagenumber'] - 1) * $perpage; $limitupper = $vbulletin->GPC['pagenumber'] * $perpage; $counter = 0; if ($vbulletin->options['threadmarking'] and $vbulletin->userinfo['userid']) { $threadview = max($threadinfo['threadread'], $threadinfo['forumread'], TIMENOW - $vbulletin->options['markinglimit'] * 86400); } else { $threadview = intval(fetch_bbarray_cookie('thread_lastview', $thread['threadid'])); if (!$threadview) { $threadview = $vbulletin->userinfo['lastvisit']; } } $threadinfo['threadview'] = intval($threadview); $displayed_dateline = 0; ################################################################################ ############################### SHOW POLL ###################################### ################################################################################ $poll = ''; if ($thread['pollid']) { $pollbits = ''; $counter = 1; $pollid = $thread['pollid']; $show['editpoll'] = iif(can_moderate($threadinfo['forumid'], 'caneditpoll'), true, false); // get poll info $pollinfo = $db->query_first_slave("\n \t\tSELECT *\n \t\tFROM " . TABLE_PREFIX . "poll\n \t\tWHERE pollid = {$pollid}\n \t"); require_once DIR . '/includes/class_bbcode.php'; $bbcode_parser = new vB_BbCodeParser($vbulletin, fetch_tag_list()); $pollinfo['question'] = $bbcode_parser->parse(unhtmlspecialchars($pollinfo['question']), $forum['forumid'], true); $splitoptions = explode('|||', $pollinfo['options']); $splitoptions = array_map('rtrim', $splitoptions); $splitvotes = explode('|||', $pollinfo['votes']); $showresults = 0; $uservoted = 0; if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canvote'])) { $nopermission = 1; } if (!$pollinfo['active'] or !$thread['open'] or $pollinfo['dateline'] + $pollinfo['timeout'] * 86400 < TIMENOW and $pollinfo['timeout'] != 0 or $nopermission) { //thread/poll is closed, ie show results no matter what $showresults = 1; } else { //get userid, check if user already voted $voted = intval(fetch_bbarray_cookie('poll_voted', $pollid)); if ($voted) { $uservoted = 1; } } ($hook = vBulletinHook::fetch_hook('showthread_poll_start')) ? eval($hook) : false; if ($pollinfo['timeout'] and !$showresults) { $pollendtime = vbdate($vbulletin->options['timeformat'], $pollinfo['dateline'] + $pollinfo['timeout'] * 86400); $pollenddate = vbdate($vbulletin->options['dateformat'], $pollinfo['dateline'] + $pollinfo['timeout'] * 86400); $show['pollenddate'] = true; } else { $show['pollenddate'] = false; } foreach ($splitvotes as $index => $value) { $pollinfo['numbervotes'] += $value; } if ($vbulletin->userinfo['userid'] > 0) { $pollvotes = $db->query_read_slave("\n \t\t\tSELECT voteoption\n \t\t\tFROM " . TABLE_PREFIX . "pollvote\n \t\t\tWHERE userid = " . $vbulletin->userinfo['userid'] . " AND pollid = {$pollid}\n \t\t"); if ($db->num_rows($pollvotes) > 0) { $uservoted = 1; } } if ($showresults or $uservoted) { if ($uservoted) { $uservote = array(); while ($pollvote = $db->fetch_array($pollvotes)) { $uservote["{$pollvote['voteoption']}"] = 1; } } } $left = vB_Template_Runtime::fetchStyleVar('left'); $right = vB_Template_Runtime::fetchStyleVar('right'); $option['open'] = $left[0]; $option['close'] = $right[0]; foreach ($splitvotes as $index => $value) { $arrayindex = $index + 1; $option['uservote'] = iif($uservote["{$arrayindex}"], true, false); $option['question'] = $bbcode_parser->parse($splitoptions["{$index}"], $forum['forumid'], true); // public link if ($pollinfo['public'] and $value) { $option['votes'] = '<a href="poll.php?' . $vbulletin->session->vars['sessionurl'] . 'do=showresults&pollid=' . $pollinfo['pollid'] . '">' . vb_number_format($value) . '</a>'; } else { $option['votes'] = vb_number_format($value); //get the vote count for the option } $option['number'] = $counter; //number of the option //Now we check if the user has voted or not if ($showresults or $uservoted) { // user did vote or poll is closed if ($value <= 0) { $option['percentraw'] = 0; } else { if ($pollinfo['multiple']) { $option['percentraw'] = $value < $pollinfo['voters'] ? $value / $pollinfo['voters'] * 100 : 100; } else { $option['percentraw'] = $value < $pollinfo['numbervotes'] ? $value / $pollinfo['numbervotes'] * 100 : 100; } } $option['percent'] = vb_number_format($option['percentraw'], 2); $option['graphicnumber'] = $option['number'] % 6 + 1; $option['barnumber'] = round($option['percent']) * 2; $option['remainder'] = 201 - $option['barnumber']; // Phrase parts below if ($nopermission) { $pollstatus = $vbphrase['you_may_not_vote_on_this_poll']; } else { if ($showresults) { $pollstatus = $vbphrase['this_poll_is_closed']; } else { if ($uservoted) { $pollstatus = $vbphrase['you_have_already_voted_on_this_poll']; } } } ($hook = vBulletinHook::fetch_hook('showthread_polloption')) ? eval($hook) : false; $templater = vB_Template::create('pollresult'); $templater->register('names', $names); $templater->register('option', $option); $pollbits .= $templater->render(); } else { ($hook = vBulletinHook::fetch_hook('showthread_polloption')) ? eval($hook) : false; if ($pollinfo['multiple']) { $templater = vB_Template::create('polloption_multiple'); $templater->register('option', $option); $pollbits .= $templater->render(); } else { $templater = vB_Template::create('polloption'); $templater->register('option', $option); $pollbits .= $templater->render(); } } $counter++; } if ($pollinfo['multiple']) { $pollinfo['numbervotes'] = $pollinfo['voters']; $show['multiple'] = true; } if ($pollinfo['public']) { $show['publicwarning'] = true; } else { $show['publicwarning'] = false; } $displayed_dateline = $threadinfo['lastpost']; ($hook = vBulletinHook::fetch_hook('showthread_poll_complete')) ? eval($hook) : false; if ($showresults or $uservoted) { $templater = vB_Template::create('pollresults_table'); $templater->register('pollbits', $pollbits); $templater->register('pollenddate', $pollenddate); $templater->register('pollendtime', $pollendtime); $templater->register('pollinfo', $pollinfo); $templater->register('pollstatus', $pollstatus); $poll = $templater->render(); } else { $templater = vB_Template::create('polloptions_table'); $templater->register('pollbits', $pollbits); $templater->register('pollenddate', $pollenddate); $templater->register('pollendtime', $pollendtime); $templater->register('pollinfo', $pollinfo); $poll = $templater->render(); } } // work out if quickreply should be shown or not if ($vbulletin->options['quickreply'] and !$thread['isdeleted'] and !is_browser('netscape') and $vbulletin->userinfo['userid'] and ($vbulletin->userinfo['userid'] == $threadinfo['postuserid'] and $forumperms & $vbulletin->bf_ugp_forumpermissions['canreplyown'] or $vbulletin->userinfo['userid'] != $threadinfo['postuserid'] and $forumperms & $vbulletin->bf_ugp_forumpermissions['canreplyothers']) and ($thread['open'] or can_moderate($threadinfo['forumid'], 'canopenclose')) and !fetch_require_hvcheck('post')) { $show['quickreply'] = true; } else { $show['quickreply'] = false; $show['wysiwyg'] = 0; $quickreply = ''; } $show['largereplybutton'] = (!$thread['isdeleted'] and !$show['threadedmode'] and $forum['allowposting'] and !$show['search_engine']); if (!$forum['allowposting']) { $show['quickreply'] = false; } $show['multiquote_global'] = ($vbulletin->options['multiquote'] and $vbulletin->userinfo['userid']); if ($show['multiquote_global']) { $vbulletin->input->clean_array_gpc('c', array('vbulletin_multiquote' => TYPE_STR)); $vbulletin->GPC['vbulletin_multiquote'] = explode(',', $vbulletin->GPC['vbulletin_multiquote']); } // post is cachable if option is enabled, last post is newer than max age, and this user // isn't showing a sessionhash $post_cachable = ($vbulletin->options['cachemaxage'] > 0 and TIMENOW - $vbulletin->options['cachemaxage'] * 60 * 60 * 24 <= $thread['lastpost'] and $vbulletin->session->vars['sessionurl'] == ''); $saveparsed = ''; $save_parsed_sigs = ''; ($hook = vBulletinHook::fetch_hook('showthread_post_start')) ? eval($hook) : false; ################################################################################ ####################### SHOW THREAD IN LINEAR MODE ############################# ################################################################################ if ($threadedmode == 0) { // allow deleted posts to not be counted in number of posts displayed on the page; // prevents issue with page count on forum display being incorrect $ids = array(); $lastpostid = 0; $hook_query_joins = $hook_query_where = ''; ($hook = vBulletinHook::fetch_hook('showthread_query_postids')) ? eval($hook) : false; if (empty($deljoin) and !$show['approvepost']) { $totalposts = $threadinfo['replycount'] + 1; if (can_moderate($thread['forumid'])) { $coventry = ''; } else { $coventry = fetch_coventry('string'); } $getpostids = $db->query_read("\n \t\t\tSELECT post.postid\n \t\t\tFROM " . TABLE_PREFIX . "post AS post\n \t\t\t{$hook_query_joins}\n \t\t\tWHERE post.threadid = {$threadid}\n \t\t\t\tAND post.visible = 1\n \t\t\t\t" . ($coventry ? "AND post.userid NOT IN ({$coventry})" : '') . "\n \t\t\t\t{$hook_query_where}\n \t\t\tORDER BY post.dateline {$postorder}\n \t\t\tLIMIT {$limitlower}, {$perpage}\n \t\t"); while ($post = $db->fetch_array($getpostids)) { if (!isset($qrfirstpostid)) { $qrfirstpostid = $post['postid']; } $qrlastpostid = $post['postid']; $ids[] = $post['postid']; } $db->free_result($getpostids); $lastpostid = $qrlastpostid; } else { $getpostids = $db->query_read("\n \t\t\tSELECT post.postid, post.visible, post.userid\n \t\t\tFROM " . TABLE_PREFIX . "post AS post\n \t\t\t{$hook_query_joins}\n \t\t\tWHERE post.threadid = {$threadid}\n \t\t\t\tAND post.visible IN (1\n \t\t\t\t" . (!empty($deljoin) ? ",2" : "") . "\n \t\t\t\t" . ($show['approvepost'] ? ",0" : "") . "\n \t\t\t\t)\n \t\t\t\t{$hook_query_where}\n \t\t\tORDER BY post.dateline {$postorder}\n \t\t"); $totalposts = 0; if ($limitlower != 0) { $limitlower++; } while ($post = $db->fetch_array($getpostids)) { if (!isset($qrfirstpostid)) { $qrfirstpostid = $post['postid']; } $qrlastpostid = $post['postid']; if ($post['visible'] == 1 and !in_coventry($post['userid']) and !$ignore[$post['userid']]) { $totalposts++; } if ($totalposts < $limitlower or $totalposts > $limitupper) { continue; } // remember, these are only added if they're going to be displayed $ids[] = $post['postid']; $lastpostid = $post['postid']; } $db->free_result($getpostids); } // '0' inside parenthesis in unlikely case we have no ids for this page // (this could happen if the replycount is wrong in the db) $postids = "post.postid IN (0" . implode(',', $ids) . ")"; // load attachments if ($thread['attach']) { require_once DIR . '/packages/vbattach/attach.php'; $attach = new vB_Attach_Display_Content($vbulletin, 'vBForum_Post'); $postattach = $attach->fetch_postattach(0, $ids); } $hook_query_fields = $hook_query_joins = ''; ($hook = vBulletinHook::fetch_hook('showthread_query')) ? eval($hook) : false; $posts = $db->query_read("\n \t\tSELECT\n \t\t\tpost.*, post.username AS postusername, post.ipaddress AS ip, IF(post.visible = 2, 1, 0) AS isdeleted,\n \t\t\tuser.*, userfield.*, usertextfield.*,\n \t\t\t" . iif($forum['allowicons'], 'icon.title as icontitle, icon.iconpath,') . "\n \t\t\t" . iif($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\t" . ((can_moderate($thread['forumid'], 'canmoderateposts') or can_moderate($thread['forumid'], 'candeleteposts')) ? 'spamlog.postid AS spamlog_postid,' : '') . "\n \t\t\t" . iif($deljoin, 'deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason,') . "\n \t\t\teditlog.userid AS edit_userid, editlog.username AS edit_username, editlog.dateline AS edit_dateline,\n \t\t\teditlog.reason AS edit_reason, editlog.hashistory,\n \t\t\tpostparsed.pagetext_html, postparsed.hasimages,\n \t\t\tsigparsed.signatureparsed, sigparsed.hasimages AS sighasimages,\n \t\t\tsigpic.userid AS sigpic, sigpic.dateline AS sigpicdateline, sigpic.width AS sigpicwidth, sigpic.height AS sigpicheight,\n \t\t\tIF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid\n \t\t\t" . iif(!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehiddencustomfields']), $vbulletin->profilefield['hidden']) . "\n \t\t\t{$hook_query_fields}\n \t\tFROM " . TABLE_PREFIX . "post AS post\n \t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = post.userid)\n \t\tLEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON(userfield.userid = user.userid)\n \t\tLEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON(usertextfield.userid = user.userid)\n \t\t" . iif($forum['allowicons'], "LEFT JOIN " . TABLE_PREFIX . "icon AS icon ON(icon.iconid = post.iconid)") . "\n \t\t" . iif($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\t" . ((can_moderate($thread['forumid'], 'canmoderateposts') or can_moderate($thread['forumid'], 'candeleteposts')) ? "LEFT JOIN " . TABLE_PREFIX . "spamlog AS spamlog ON(spamlog.postid = post.postid)" : '') . "\n \t\t\t{$deljoin}\n \t\tLEFT JOIN " . TABLE_PREFIX . "editlog AS editlog ON(editlog.postid = post.postid)\n \t\tLEFT JOIN " . TABLE_PREFIX . "postparsed AS postparsed ON(postparsed.postid = post.postid AND postparsed.styleid = " . intval(STYLEID) . " AND postparsed.languageid = " . intval(LANGUAGEID) . ")\n \t\tLEFT JOIN " . TABLE_PREFIX . "sigparsed AS sigparsed ON(sigparsed.userid = user.userid AND sigparsed.styleid = " . intval(STYLEID) . " AND sigparsed.languageid = " . intval(LANGUAGEID) . ")\n \t\tLEFT JOIN " . TABLE_PREFIX . "sigpic AS sigpic ON(sigpic.userid = post.userid)\n \t\t\t{$hook_query_joins}\n \t\tWHERE {$postids}\n \t\tORDER BY post.dateline {$postorder}\n \t"); if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canseethumbnails']) and !($forumperms & $vbulletin->bf_ugp_forumpermissions['cangetattachment'])) { $vbulletin->options['attachthumbs'] = 0; } if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['cangetattachment'])) { $vbulletin->options['viewattachedimages'] = 0; } $postcount = ($vbulletin->GPC['pagenumber'] - 1) * $perpage; if ($postorder) { // Newest first $postcount = $totalposts - $postcount + 1; } $counter = 0; $postbits = ''; $postbit_factory = new vB_Postbit_Factory(); $postbit_factory->registry =& $vbulletin; $postbit_factory->forum =& $foruminfo; $postbit_factory->thread =& $thread; $postbit_factory->cache = array(); $postbit_factory->bbcode_parser = new vB_BbCodeParser($vbulletin, fetch_tag_list()); while ($post = $db->fetch_array($posts)) { if ($tachyuser = in_coventry($post['userid']) and !can_moderate($thread['forumid'])) { continue; } if ($post['visible'] == 1 and !$tachyuser) { ++$counter; if ($postorder) { $post['postcount'] = --$postcount; } else { $post['postcount'] = ++$postcount; } } if ($tachyuser) { $fetchtype = 'post_global_ignore'; } else { if ($ignore["{$post['userid']}"]) { $fetchtype = 'post_ignore'; } else { if ($post['visible'] == 2) { $fetchtype = 'post_deleted'; } else { $fetchtype = 'post'; } } } if ($vbulletin->GPC['viewfull'] and $post['postid'] == $postinfo['postid'] and $fetchtype != 'post' and (can_moderate($threadinfo['forumid']) or !$post['isdeleted'])) { $fetchtype = 'post'; } if ($fetchtype != 'post' && $fetchtype != 'post_deleted') { continue; } ($hook = vBulletinHook::fetch_hook('showthread_postbit_create')) ? eval($hook) : false; $postbit_obj =& $postbit_factory->fetch_postbit($fetchtype); if ($fetchtype == 'post') { $postbit_obj->highlight =& $replacewords; } $postbit_obj->cachable = $post_cachable; $post['islastshown'] = $post['postid'] == $lastpostid; $post['isfirstshown'] = ($counter == 1 and $fetchtype == 'post' and $post['visible'] == 1); $post['islastshown'] = $post['postid'] == $lastpostid; $post['attachments'] = $postattach["{$post['postid']}"]; $parsed_postcache = array('text' => '', 'images' => 1, 'skip' => false); $postbits .= $postbit_obj->construct_postbit($post); // Only show after the first post, counter isn't incremented for deleted/moderated posts if ($post['isfirstshown']) { $postbits .= vB_Template::create('ad_showthread_firstpost')->render(); } if ($post_cachable and $post['pagetext_html'] == '') { if (!empty($saveparsed)) { $saveparsed .= ','; } $saveparsed .= "({$post['postid']}, " . intval($thread['lastpost']) . ', ' . intval($postbit_obj->post_cache['has_images']) . ", '" . $db->escape_string($postbit_obj->post_cache['text']) . "', " . intval(STYLEID) . ", " . intval(LANGUAGEID) . ")"; } if (!empty($postbit_obj->sig_cache) and $post['userid']) { if (!empty($save_parsed_sigs)) { $save_parsed_sigs .= ','; } $save_parsed_sigs .= "({$post['userid']}, " . intval(STYLEID) . ", " . intval(LANGUAGEID) . ", '" . $db->escape_string($postbit_obj->sig_cache['text']) . "', " . intval($postbit_obj->sig_cache['has_images']) . ")"; } // get first and last post ids for this page (for big reply buttons) if (!isset($FIRSTPOSTID)) { $FIRSTPOSTID = $post['postid']; } $LASTPOSTID = $post['postid']; if ($post['dateline'] > $displayed_dateline) { $displayed_dateline = $post['dateline']; if ($displayed_dateline <= $threadview) { $updatethreadcookie = true; } } // FRNR Start // find out if first post $getpost = $db->query_first("\n SELECT firstpostid\n FROM " . TABLE_PREFIX . "thread\n WHERE threadid = {$threadinfo['threadid']}\n "); $isfirstpost = $getpost['firstpostid'] == $post['postid']; $candelete = false; if ($isfirstpost and can_moderate($threadinfo['forumid'], 'canmanagethreads')) { $candelete = true; } else { if (!$isfirstpost and can_moderate($threadinfo['forumid'], 'candeleteposts')) { $candelete = true; } else { if (($forumperms & $vbulletin->bf_ugp_forumpermissions['candeletepost'] and !$isfirstpost or $forumperms & $vbulletin->bf_ugp_forumpermissions['candeletethread'] and $isfirstpost) and $vbulletin->userinfo['userid'] == $post['userid']) { $candelete = true; } } } // Get post date/time $postdate = vbdate($vbulletin->options['dateformat'], $post['dateline'], 1); $posttime = vbdate($vbulletin->options['timeformat'], $post['dateline']); $fr_images = array(); $docattach = array(); // Attachments (images). if (is_array($post['attachments']) && count($post['attachments']) > 0) { foreach ($post['attachments'] as $attachment) { $lfilename = strtolower($attachment['filename']); if (strpos($lfilename, '.jpe') !== false || strpos($lfilename, '.png') !== false || strpos($lfilename, '.gif') !== false || strpos($lfilename, '.jpg') !== false || strpos($lfilename, '.jpeg') !== false) { $tmp = array('img' => $vbulletin->options['bburl'] . '/attachment.php?attachmentid=' . $attachment['attachmentid']); if ($vbulletin->options['attachthumbs']) { $tmp['tmb'] = $vbulletin->options['bburl'] . '/attachment.php?attachmentid=' . $attachment['attachmentid'] . '&stc=1&thumb=1'; } $fr_images[] = $tmp; } if (strpos($lfilename, '.pdf') !== false) { $docattach[] = $vbulletin->options['bburl'] . '/attachment.php?attachmentid=' . $attachment['attachmentid']; } } } // Parse the post for quotes and inline images list($text, $nuked_quotes, $images) = parse_post($post['pagetext'], $post['allowsmilie'] && $usesmilies); if (count($fr_images) > 0) { $text .= "<br/>"; foreach ($fr_images as $attachment) { $text .= "<img src=\"{$attachment['img']}\"/>"; } } foreach ($images as $image) { $fr_images[] = array('img' => $image); } $avatarurl = ''; // Avatar work if ($post['avatarurl']) { $avatarurl = process_avatarurl($post['avatarurl']); } $tmp = array('post_id' => $post['postid'], 'thread_id' => $post['threadid'], 'forum_id' => $foruminfo['forumid'], 'forum_title' => prepare_utf8_string($foruminfo['title_clean']), 'username' => prepare_utf8_string(strip_tags($post['username'])), 'joindate' => prepare_utf8_string($post['joindate']), 'usertitle' => prepare_utf8_string(strip_tags($post['usertitle'])), 'numposts' => $post['posts'] ? (string) $post['posts'] : '0', 'userid' => $post['userid'], 'title' => prepare_utf8_string($post['title']), 'online' => fetch_online_status(fetch_userinfo($post['userid']), false), 'post_timestamp' => prepare_utf8_string(date_trunc($postdate) . ' ' . $posttime), 'fr_images' => $fr_images); if ($candelete) { $tmp['candelete'] = true; } // Soft Deleted if ($post['visible'] == 2) { $tmp['deleted'] = true; $tmp['del_username'] = prepare_utf8_string($post['del_username']); if ($post['del_reason']) { $tmp['del_reason'] = prepare_utf8_string($post['del_reason']); } } else { $tmp['text'] = $text; $tmp['quotable'] = $nuked_quotes; if ($post['editlink']) { $tmp['canedit'] = true; $tmp['edittext'] = prepare_utf8_string($post['pagetext']); } } if ($avatarurl != '') { $tmp['avatarurl'] = $avatarurl; } if (count($docattach) > 0) { $tmp['docattach'] = $docattach; } if ($vbulletin->GPC['signature']) { $sig = trim(remove_bbcode(strip_tags($post['signatureparsed']), true, true), '<a>'); $sig = str_replace(array("\t", "\r"), array('', ''), $sig); $sig = str_replace("\n\n", "\n", $sig); $tmp['sig'] = prepare_utf8_string($sig); } // Begin Support for Post Thanks Hack - http://www.vbulletin.org/forum/showthread.php?t=122944 if ($vbulletin->userinfo['userid'] && function_exists('post_thanks_off') && function_exists('can_thank_this_post') && function_exists('thanked_already') && function_exists('fetch_thanks')) { if (!post_thanks_off($thread['forumid'], $post, $thread['firstpostid'], THIS_SCRIPT)) { global $ids; if (can_thank_this_post($post, $thread['isdeleted'])) { $tmp['canlike'] = true; } if (thanked_already($post, 0, true)) { $tmp['likes'] = true; if (!$vbulletin->options['post_thanks_delete_own']) { $tmp['canlike'] = $tmp['likes'] = false; } } $thanks = fetch_thanks($post['postid']); $thank_users = array(); if (is_array($thanks)) { foreach ($thanks as $thank) { $thank_users[] = $thank['username']; } } if (count($thank_users)) { $tmp['likestext'] = prepare_utf8_string($vbphrase['fr_thanked_by'] . ': ' . join(', ', $thank_users)); $tmp['likesusers'] = join(', ', $thank_users); } } } // End Support for Post Thanks Hack $posts_out[] = $tmp; // FRNR End } $db->free_result($posts); unset($post); if ($postbits == '' and $vbulletin->GPC['pagenumber'] > 1) { $pageinfo = array('page' => $vbulletin->GPC['pagenumber'] - 1); if (!empty($vbulletin->GPC['perpage'])) { $pageinfo['pp'] = $perpage; } if (!empty($vbulletin->GPC['highlight'])) { $pageinfo['highlight'] = urlencode($vbulletin->GPC['highlight']); } exec_header_redirect(fetch_seo_url('thread|js', $threadinfo, $pageinfo)); } DEVDEBUG("First Post: {$FIRSTPOSTID}; Last Post: {$LASTPOSTID}"); $pageinfo = array(); if ($vbulletin->GPC['highlight']) { $pageinfo['highlight'] = urlencode($vbulletin->GPC['highlight']); } if (!empty($vbulletin->GPC['perpage'])) { $pageinfo['pp'] = $perpage; } $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $perpage, $totalposts, 'showthread.php?' . $vbulletin->session->vars['sessionurl'] . "t={$threadinfo['threadid']}", '', '', 'thread', $threadinfo, $pageinfo); if ($thread['lastpost'] > $threadview) { if ($firstnew) { $firstunread = fetch_seo_url('thread', $threadinfo, array('page' => $vbulletin->GPC['pagenumber'])) . '#post' . $firstnew; $show['firstunreadlink'] = true; } else { $firstunread = fetch_seo_url('thread', $threadinfo, array('goto' => 'newpost')); $show['firstunreadlink'] = true; } } else { $firstunread = ''; $show['firstunreadlink'] = false; } if ($vbulletin->userinfo['postorder']) { // disable ajax qr when displaying linear newest first $show['allow_ajax_qr'] = 0; } else { // only allow ajax on the last page of a thread when viewing oldest first $show['allow_ajax_qr'] = $vbulletin->GPC['pagenumber'] == ceil($totalposts / $perpage) ? 1 : 0; } ################################################################################ ################ SHOW THREAD IN THREADED OR HYBRID MODE ######################## ################################################################################ } else { // ajax qr doesn't work with threaded controls $show['allow_ajax_qr'] = 0; require_once DIR . '/includes/functions_threadedmode.php'; // save data $ipostarray = array(); $postarray = array(); $userarray = array(); $postparent = array(); $postorder = array(); $hybridposts = array(); $deletedparents = array(); $totalposts = 0; $links = ''; $cache_postids = ''; $hook_query_fields = $hook_query_joins = $hook_query_where = ''; ($hook = vBulletinHook::fetch_hook('showthread_query_postids_threaded')) ? eval($hook) : false; // get all posts $listposts = $db->query_read("\n \t\tSELECT\n \t\t\tpost.*, post.username AS postusername, post.ipaddress AS ip, IF(post.visible = 2, 1, 0) AS isdeleted,\n \t\t\tuser.*, userfield.*\n \t\t\t" . iif(!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehiddencustomfields']), $vbulletin->profilefield['hidden']) . "\n \t\t\t{$hook_query_fields}\n \t\tFROM " . TABLE_PREFIX . "post AS post\n \t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = post.userid)\n \t\tLEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON(userfield.userid = user.userid)\n \t\t{$hook_query_joins}\n \t\tWHERE threadid = {$threadid}\n \t\t\t{$hook_query_where}\n \t\tORDER BY postid\n \t"); // $toppostid is the first post in the thread // $curpostid is the postid passed from the URL, or if not specified, the first post in the thread $ids = array(); while ($post = $db->fetch_array($listposts)) { if ($post['visible'] == 2 and !$deljoin or $post['visible'] == 0 and !$show['approvepost'] or in_coventry($post['userid']) and !can_moderate($thread['forumid'])) { $deletedparents["{$post['postid']}"] = iif(isset($deletedparents["{$post['parentid']}"]), $deletedparents["{$post['parentid']}"], $post['parentid']); continue; } if (empty($toppostid)) { $toppostid = $post['postid']; } if (empty($postid)) { if (empty($curpostid)) { $curpostid = $post['postid']; if ($threadedmode == 2 and empty($vbulletin->GPC['postid'])) { $vbulletin->GPC['postid'] = $curpostid; } $curpostparent = $post['parentid']; } } else { if ($post['postid'] == $postid) { $curpostid = $post['postid']; $curpostparent = $post['parentid']; } } $postparent["{$post['postid']}"] = $post['parentid']; $ipostarray["{$post['parentid']}"][] = $post['postid']; $postarray["{$post['postid']}"] = $post; $userarray["{$post['userid']}"] = $db->escape_string($post['username']); $totalposts++; $ids[] = $post['postid']; } $db->free_result($listposts); // hooks child posts up to new parent if actual parent has been deleted or hidden if (count($deletedparents) > 0) { foreach ($deletedparents as $dpostid => $dparentid) { if (is_array($ipostarray[$dpostid])) { foreach ($ipostarray[$dpostid] as $temppostid) { $postparent[$temppostid] = $dparentid; $ipostarray[$dparentid][] = $temppostid; $postarray[$temppostid]['parentid'] = $dparentid; } unset($ipostarray[$dpostid]); } if ($curpostparent == $dpostid) { $curpostparent = $dparentid; } } } unset($post, $listposts, $deletedparents); if ($thread['attach']) { require_once DIR . '/packages/vbattach/attach.php'; $attach = new vB_Attach_Display_Content($vbulletin, 'vBForum_Post'); $postattach = $attach->fetch_postattach(0, $ids); } // get list of usernames from post list $userjs = ''; foreach ($userarray as $userid => $username) { if ($userid) { $userjs .= "pu[{$userid}] = \"" . addslashes_js($username) . "\";\n"; } } unset($userarray, $userid, $username); $parent_postids = fetch_post_parentlist($curpostid); if (!$parent_postids) { $currentdepth = 0; } else { $currentdepth = sizeof(explode(',', $parent_postids)); } sort_threaded_posts(); if (empty($curpostid)) { eval(standard_error(fetch_error('invalidid', $vbphrase['post'], $vbulletin->options['contactuslink']))); } if ($threadedmode == 2) { $numhybrids = sizeof($hybridposts); if ($vbulletin->GPC['pagenumber'] < 1) { $vbulletin->GPC['pagenumber'] = 1; } $startat = ($vbulletin->GPC['pagenumber'] - 1) * $perpage; if ($startat > $numhybrids) { $vbulletin->GPC['pagenumber'] = 1; $startat = 0; } $endat = $startat + $perpage; for ($i = $startat; $i < $endat; $i++) { if (isset($hybridposts["{$i}"])) { if (!isset($FIRSTPOSTID)) { $FIRSTPOSTID = $hybridposts["{$i}"]; } $cache_postids .= ",{$hybridposts[$i]}"; $LASTPOSTID = $hybridposts["{$i}"]; } } $pageinfo = array('p' => $vbulletin->GPC['postid']); if ($vbulletin->GPC['highlight']) { $pageinfo['highlight'] = urlencode($vbulletin->GPC['highlight']); } if (!empty($vbulletin->GPC['perpage'])) { $pageinfo['pp'] = $perpage; } $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $perpage, $numhybrids, 'showthread.php?' . $vbulletin->session->vars['sessionurl'] . "t={$threadinfo['threadid']}", '', '', 'thread', $threadinfo, $pageinfo); } else { $FIRSTPOSTID = $curpostid; $LASTPOSTID = $curpostid; // sort out which posts to cache: if (!$vbulletin->options['threaded_maxcache']) { $vbulletin->options['threaded_maxcache'] = 999999; } // cache $vbulletin->options['threaded_maxcache'] posts // take 0.25 from above $curpostid // and take 0.75 below if (sizeof($postorder) <= $vbulletin->options['threaded_maxcache']) { $startat = 0; } else { if ($curpostidkey + $vbulletin->options['threaded_maxcache'] * 0.75 > sizeof($postorder)) { $startat = sizeof($postorder) - $vbulletin->options['threaded_maxcache']; } else { if ($curpostidkey - $vbulletin->options['threaded_maxcache'] * 0.25 < 0) { $startat = 0; } else { $startat = intval($curpostidkey - $vbulletin->options['threaded_maxcache'] * 0.25); } } } unset($curpostidkey); foreach ($postorder as $postkey => $pid) { if ($postkey > $startat + $vbulletin->options['threaded_maxcache']) { break; } if ($postkey >= $startat and empty($morereplies["{$pid}"])) { $cache_postids .= ',' . $pid; } } // get next/previous posts for each post in the list // key: NAVJS[postid][0] = prev post, [1] = next post $NAVJS = array(); $prevpostid = 0; foreach ($postorder as $pid) { $NAVJS["{$pid}"][0] = $prevpostid; $NAVJS["{$prevpostid}"][1] = $pid; $prevpostid = $pid; } $NAVJS["{$toppostid}"][0] = $pid; //prev button for first post $NAVJS["{$pid}"][1] = $toppostid; //next button for last post $navjs = ''; foreach ($NAVJS as $pid => $info) { $navjs .= "pn[{$pid}] = \"{$info['0']},{$info['1']}\";\n"; } } unset($ipostarray, $postparent, $postorder, $NAVJS, $postid, $info, $prevpostid, $postkey); $cache_postids = substr($cache_postids, 1); if (empty($cache_postids)) { // umm... something weird happened. Just prevent an error. eval(standard_error(fetch_error('invalidid', $vbphrase['post'], $vbulletin->options['contactuslink']))); } $hook_query_fields = $hook_query_joins = $hook_query_where = ''; ($hook = vBulletinHook::fetch_hook('showthread_query')) ? eval($hook) : false; $cacheposts = $db->query_read("\n \t\tSELECT\n \t\t\tpost.*, post.username AS postusername, post.ipaddress AS ip, IF(post.visible = 2, 1, 0) AS isdeleted,\n \t\t\tuser.*, userfield.*, usertextfield.*,\n \t\t\t" . iif($forum['allowicons'], 'icon.title as icontitle, icon.iconpath,') . "\n \t\t\t" . iif($vbulletin->options['avatarenabled'], 'avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline,') . "\n \t\t\t" . ((can_moderate($thread['forumid'], 'canmoderateposts') or can_moderate($thread['forumid'], 'candeleteposts')) ? 'spamlog.postid AS spamlog_postid,' : '') . "\n \t\t\t" . iif($deljoin, "deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason,") . "\n \t\t\teditlog.userid AS edit_userid, editlog.username AS edit_username, editlog.dateline AS edit_dateline,\n \t\t\teditlog.reason AS edit_reason, editlog.hashistory,\n \t\t\tpostparsed.pagetext_html, postparsed.hasimages,\n \t\t\tsigparsed.signatureparsed, sigparsed.hasimages AS sighasimages,\n \t\t\tsigpic.userid AS sigpic, sigpic.dateline AS sigpicdateline, sigpic.width AS sigpicwidth, sigpic.height AS sigpicheight,\n \t\t\tIF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid\n \t\t\t" . iif(!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehiddencustomfields']), $vbulletin->profilefield['hidden']) . "\n \t\t\t{$hook_query_fields}\n \t\tFROM " . TABLE_PREFIX . "post AS post\n \t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = post.userid)\n \t\tLEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON(userfield.userid = user.userid)\n \t\tLEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON(usertextfield.userid = user.userid)\n \t\t" . iif($forum['allowicons'], "LEFT JOIN " . TABLE_PREFIX . "icon AS icon ON(icon.iconid = post.iconid)") . "\n \t\t" . iif($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\t" . ((can_moderate($thread['forumid'], 'canmoderateposts') or can_moderate($thread['forumid'], 'candeleteposts')) ? "LEFT JOIN " . TABLE_PREFIX . "spamlog AS spamlog ON(spamlog.postid = post.postid)" : '') . "\n \t\t\t{$deljoin}\n \t\tLEFT JOIN " . TABLE_PREFIX . "editlog AS editlog ON(editlog.postid = post.postid)\n \t\tLEFT JOIN " . TABLE_PREFIX . "postparsed AS postparsed ON(postparsed.postid = post.postid AND postparsed.styleid = " . intval(STYLEID) . " AND postparsed.languageid = " . intval(LANGUAGEID) . ")\n \t\tLEFT JOIN " . TABLE_PREFIX . "sigparsed AS sigparsed ON(sigparsed.userid = user.userid AND sigparsed.styleid = " . intval(STYLEID) . " AND sigparsed.languageid = " . intval(LANGUAGEID) . ")\n \t\tLEFT JOIN " . TABLE_PREFIX . "sigpic AS sigpic ON(sigpic.userid = post.userid)\n \t\t\t{$hook_query_joins}\n \t\tWHERE post.postid IN (" . $cache_postids . ") {$hook_query_where}\n \t"); // re-initialise the $postarray variable $postarray = array(); while ($post = $db->fetch_array($cacheposts)) { $postarray["{$post['postid']}"] = $post; } if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['cangetattachment'])) { $vbulletin->options['viewattachedimages'] = 0; $vbulletin->options['attachthumbs'] = 0; } // init $postcount = 0; $postbits = ''; $saveparsed = ''; $jspostbits = ''; $postbit_factory = new vB_Postbit_Factory(); $postbit_factory->registry =& $vbulletin; $postbit_factory->forum =& $foruminfo; $postbit_factory->thread =& $thread; $postbit_factory->cache = array(); $postbit_factory->bbcode_parser = new vB_BbCodeParser($vbulletin, fetch_tag_list()); foreach (explode(',', $cache_postids) as $id) { // get the post from the post array if (!isset($postarray["{$id}"])) { continue; } $post = $postarray["{$id}"]; if ($tachyuser = in_coventry($post['userid']) and !can_moderate($thread['forumid'])) { continue; } if ($tachyuser) { $fetchtype = 'post_global_ignore'; } else { if ($ignore["{$post['userid']}"]) { $fetchtype = 'post_ignore'; } else { if ($post['visible'] == 2) { $fetchtype = 'post_deleted'; } else { $fetchtype = 'post'; } } } if ($vbulletin->GPC['viewfull'] and $post['postid'] == $postinfo['postid'] and $fetchtype != 'post' and (can_moderate($threadinfo['forumid']) or !$post['isdeleted'])) { $fetchtype = 'post'; } ($hook = vBulletinHook::fetch_hook('showthread_postbit_create')) ? eval($hook) : false; $postbit_obj =& $postbit_factory->fetch_postbit($fetchtype); if ($fetchtype == 'post') { $postbit_obj->highlight =& $replacewords; } $postbit_obj->cachable = $post_cachable; $post['postcount'] = ++$postcount; $post['attachments'] =& $postattach["{$post['postid']}"]; $parsed_postcache = array('text' => '', 'images' => 1); $bgclass = 'alt2'; if ($threadedmode == 2) { $postbits .= $postbit_obj->construct_postbit($post); } else { $postbit = $postbit_obj->construct_postbit($post); if ($curpostid == $post['postid']) { $curpostdateline = $post['dateline']; $curpostbit = $postbit; } $postbit = preg_replace('#</script>#i', "<\\/scr' + 'ipt>", addslashes_js($postbit)); $jspostbits .= "pd[{$post['postid']}] = '{$postbit}';\n"; } // end threaded mode if ($post_cachable and $post['pagetext_html'] == '') { if (!empty($saveparsed)) { $saveparsed .= ','; } $saveparsed .= "({$post['postid']}, " . intval($thread['lastpost']) . ', ' . intval($postbit_obj->post_cache['has_images']) . ", '" . $db->escape_string($postbit_obj->post_cache['text']) . "'," . intval(STYLEID) . ", " . intval(LANGUAGEID) . ")"; } if (!empty($postbit_obj->sig_cache) and $post['userid']) { if (!empty($save_parsed_sigs)) { $save_parsed_sigs .= ','; } $save_parsed_sigs .= "({$post['userid']}, " . intval(STYLEID) . ", " . intval(LANGUAGEID) . ", '" . $db->escape_string($postbit_obj->sig_cache['text']) . "', " . intval($postbit_obj->sig_cache['has_images']) . ")"; } if ($post['dateline'] > $displayed_dateline) { $displayed_dateline = $post['dateline']; if ($displayed_dateline <= $threadview) { $updatethreadcookie = true; } } } // end while ($post) $db->free_result($cacheposts); if ($threadedmode == 1) { $postbits = $curpostbit; } $templater = vB_Template::create('showthread_list'); $templater->register('curpostid', $curpostid); $templater->register('highlightwords', $highlightwords); $templater->register('jspostbits', $jspostbits); $templater->register('links', $links); $templater->register('navjs', $navjs); $templater->register('threadedmode', $threadedmode); $templater->register('userjs', $userjs); $threadlist = $templater->render(); unset($curpostbit, $post, $cacheposts, $parsed_postcache, $postbit); } ################################################################################ ########################## END LINEAR / THREADED ############################### ################################################################################ $effective_lastpost = max($displayed_dateline, $thread['lastpost']); // ********************************************************************************* //set thread last view if ($thread['pollid'] and $vbulletin->options['updatelastpost'] and ($displayed_dateline == $thread['lastpost'] or $threadview == $thread['lastpost']) and $pollinfo['lastvote'] > $thread['lastpost']) { $displayed_dateline = $pollinfo['lastvote']; } if ((!$vbulletin->GPC['posted'] or $updatethreadcookie) and $displayed_dateline and $displayed_dateline > $threadview) { mark_thread_read($threadinfo, $foruminfo, $vbulletin->userinfo['userid'], $displayed_dateline); } // FRNR Below fr_update_subsent($threadinfo['threadid'], $displayed_dateline); if (!is_array($posts_out)) { $posts_out = array(); } // Figure out if we can post $canpost = true; if ($threadinfo['isdeleted'] or !$threadinfo['visible'] and !can_moderate($threadinfo['forumid'], 'canmoderateposts')) { $canpost = false; } if (!$foruminfo['allowposting'] or $foruminfo['link'] or !$foruminfo['cancontainthreads']) { $canpost = false; } if (!$threadinfo['open']) { if (!can_moderate($threadinfo['forumid'], 'canopenclose')) { $canpost = false; } } if (($vbulletin->userinfo['userid'] != $threadinfo['postuserid'] or !$vbulletin->userinfo['userid']) and (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers']) or !($forumperms & $vbulletin->bf_ugp_forumpermissions['canreplyothers']))) { $canpost = false; } if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']) or !($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) or !($forumperms & $vbulletin->bf_ugp_forumpermissions['canreplyown']) and $vbulletin->userinfo['userid'] == $threadinfo['postuserid']) { $canpost = false; } $mod = 0; if (can_moderate($threadinfo['forumid'], 'candeleteposts') or can_moderate($threadinfo['forumid'], 'canremoveposts')) { $mod |= MOD_DELETEPOST; } if (can_moderate($threadinfo['forumid'], 'canmanagethreads')) { if ($threadinfo['sticky']) { $mod |= MOD_UNSTICK; } else { $mod |= MOD_STICK; } } if ($threadinfo['visible'] != 2 and can_moderate($threadinfo['forumid'], 'candeleteposts') or can_moderate($threadinfo['forumid'], 'canremoveposts') or $forumperms & $vbulletin->bf_ugp_forumpermissions['candeletepost'] and $forumperms & $vbulletin->bf_ugp_forumpermissions['candeletethread'] and $vbulletin->userinfo['userid'] == $threadinfo['postuserid'] and ($vbulletin->options['edittimelimit'] == 0 or $threadinfo['dateline'] > TIMENOW - $vbulletin->options['edittimelimit'] * 60)) { $mod |= MOD_DELETETHREAD; } if (can_moderate($threadinfo['forumid'], 'canopenclose') or $forumperms & $vbulletin->bf_ugp_forumpermissions['canopenclose'] and $threadinfo['postuserid'] == $vbulletin->userinfo['userid']) { if ($threadinfo['open']) { $mod |= MOD_CLOSE; } else { $mod |= MOD_OPEN; } } if (can_moderate($threadinfo['forumid'], 'canmanagethreads') or $forumperms & $vbulletin->bf_ugp_forumpermissions['canmove'] and $threadinfo['postuserid'] == $vbulletin->userinfo['userid']) { $mod |= MOD_MOVETHREAD; } if ($show['spamctrls']) { $mod |= MOD_SPAM_CONTROLS; } $out = array('posts' => $posts_out, 'total_posts' => $totalposts, 'page' => $vbulletin->GPC['pagenumber'], 'canpost' => $canpost ? 1 : 0, 'mod' => $mod, 'pollid' => $thread['pollid'], 'subscribed' => $threadinfo['issubscribed'] ? 1 : 0, 'title' => prepare_utf8_string($thread['title']), 'canattach' => $forumperms & $vbulletin->bf_ugp_forumpermissions['canpostattachment'] and $vbulletin->userinfo['userid']); if ($postid) { $out['gotopostid'] = $postid; } return $out; }
$show['deleteoption'] = true; } ($hook = vBulletinHook::fetch_hook('profile_editattachments_bit')) ? eval($hook) : false; eval('$template[\'attachmentlistbits\'] .= "' . fetch_template('modifyattachmentsbit') . '";'); } $sorturl = 'profile.php?' . $vbulletin->session->vars['sessionurl'] . 'do=editattachments'; if ($userid != $vbulletin->userinfo['userid']) { $sorturl .= "&u={$userid}"; } if ($perpage != $defaultperpage) { $sorturl .= "&pp={$perpage}"; } if ($showthumbs) { $sorturl .= "&showthumbs=1"; } $pagenav = construct_page_nav($pagenumber, $perpage, $totalattachments, $sorturl); $totalattachments = vb_number_format($totalattachments); $show['attachlimit'] = $permissions['attachlimit']; $show['currentattachsize'] = $attachsize; $show['totalattachsize'] = $totalsize; $show['thumbnails'] = $showthumbs; } } $show['lightbox'] = ($vbulletin->options['lightboxenabled'] and $vbulletin->options['usepopups'] and $showthumbs); ($hook = vBulletinHook::fetch_hook('profile_editattachments_complete')) ? eval($hook) : false; if ($userid == $vbulletin->userinfo['userid']) { // show $vbulletin->userinfo's attachments in usercp construct_usercp_nav('attachments'); $navbits[''] = construct_phrase($vbphrase['attachments_posted_by_x'], $vbulletin->userinfo['username']); } else { // show some other user's attachments
$show['undelete'] = ($have_inlinemod and fetch_visitor_message_perm('canundeletevisitormessages', $userinfo2)); $show['approve'] = ($have_inlinemod and fetch_visitor_message_perm('canmoderatevisitormessages', $userinfo2)); $show['inlinemod'] = ($show['delete'] or $show['undelete'] or $show['approve']); // Only allow AJAX QC on the first page $show['quickcomment'] = ($vbulletin->userinfo['userid'] and $viewself and $vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_visitor_messaging'] and $userinfo['vm_enable'] and $userinfo['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canviewmembers'] and (!$userinfo['vm_contactonly'] or $userinfo['userid'] == $vbulletin->userinfo['userid'] or $userinfo['bbuser_iscontact_of_user'] or can_moderate(0, 'canmoderatevisitormessages')) and ($userinfo['userid'] == $vbulletin->userinfo['userid'] and $vbulletin->userinfo['permissions']['visitormessagepermissions'] & $vbulletin->bf_ugp_visitormessagepermissions['canmessageownprofile'] or $userinfo['userid'] != $vbulletin->userinfo['userid'] and $vbulletin->userinfo['permissions']['visitormessagepermissions'] & $vbulletin->bf_ugp_visitormessagepermissions['canmessageothersprofile'])); $show['post_visitor_message'] = $show['quickcomment']; $show['allow_ajax_qc'] = ($pagenumber == 1 and $messagetotal) ? 1 : 0; $pagenavbits = array("u={$userinfo['userid']}", "u2={$userinfo2['userid']}"); if ($perpage != $vbulletin->options['vm_perpage']) { $pagenavbits[] = "pp={$perpage}"; } if ($vbulletin->GPC['showignored']) { $pagenavbits[] = 'showignored=1'; } $pagenavurl = 'converse.php?' . $vbulletin->session->vars['sessionurl'] . implode('&', $pagenavbits); $block_data['pagenav'] = construct_page_nav($pagenumber, $perpage, $messagetotal, $pagenavurl, ''); if ($show['quickcomment']) { require_once DIR . '/includes/functions_editor.php'; $block_data['editorid'] = construct_edit_toolbar('', false, 'visitormessage', $vbulletin->options['allowsmilies'], true, false, 'qr_small', '', array(), 'content', 'vBForum_VisitorMessage', 0, $userinfo['userid']); $block_data['messagearea'] =& $messagearea; $block_data['clientscript'] = $vBeditTemplate['clientscript']; } $navbits = construct_navbits(array(fetch_seo_url('member', $userinfo) => $userinfo['username'], '' => construct_phrase($vbphrase['conversation_between_x_and_y'], $userinfo['username'], $userinfo2['username']))); $navbar = render_navbar_template($navbits); $usercss = construct_usercss($userinfo, $show['usercss_switch']); $show['usercss_switch'] = ($show['usercss_switch'] and $vbulletin->userinfo['userid'] != $userinfo['userid']); construct_usercss_switch($show['usercss_switch'], $usercss_switch_phrase); ($hook = vBulletinHook::fetch_hook('converse_complete')) ? eval($hook) : false; $templater = vB_Template::create('memberinfo_block_visitormessaging'); $templater->register('block_data', $block_data); $templater->register('prepared', $prepared);