コード例 #1
0
ファイル: tags.php プロジェクト: holandacz/nb4
    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 $
|| ####################################################################
\*======================================================================*/
コード例 #2
0
ファイル: online.php プロジェクト: holandacz/nb4
    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 $
|| ####################################################################
\*======================================================================*/
コード例 #3
0
ファイル: private.php プロジェクト: holandacz/nb4
                        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 != '') {
コード例 #4
0
ファイル: memberlist.php プロジェクト: hungnv0789/vhtm
			$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();
		}
	}
コード例 #5
0
ファイル: moderation.php プロジェクト: holandacz/nb4
     $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') . '");');
コード例 #6
0
ファイル: album.php プロジェクト: holandacz/nb4
        } 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();
    }
コード例 #7
0
ファイル: search.php プロジェクト: holandacz/nb4
         } 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('&lt;/u&gt;&lt;/b&gt;-&lt;b&gt;&lt;u&gt;', '&lt;/u&gt; OR &lt;u&gt;'), 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 = '';
コード例 #8
0
ファイル: subscription.php プロジェクト: holandacz/nb4
             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&amp;pp={$perpage}&amp;folderid={$folderid}";
     $pagenav = construct_page_nav($pagenumber, $perpage, $totalallthreads, $sorturl . "&amp;sort={$sortfield}" . iif(!empty($vbulletin->GPC['sortorder']), "&amp;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') . '");');
コード例 #9
0
ファイル: projectmilestone.php プロジェクト: holandacz/nb4
         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&amp;milestoneid={$milestone['milestoneid']}" . ($vbulletin->GPC['filter'] ? '&amp;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' ? '&amp;sort=' . urlencode($issue_list->sort_field) : '') . ($issue_list->sort_order != 'desc' ? '&amp;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;
     }
 }
コード例 #10
0
ファイル: forumdisplay.php プロジェクト: holandacz/nb4
                $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']) ? "&amp;pp={$perpage}" : '') . (!empty($vbulletin->GPC['prefixid']) ? "&amp;prefixid=" . $vbulletin->GPC['prefixid'] : '') . (!empty($vbulletin->GPC['sortfield']) ? "&amp;sort={$sortfield}" : "") . (!empty($vbulletin->GPC['sortorder']) ? "&amp;order=" . $vbulletin->GPC['sortorder'] : '') . (!empty($vbulletin->GPC['daysprune']) ? "&amp;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;
コード例 #11
0
ファイル: comments.php プロジェクト: hungnv0789/vhtm
	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() ;
	}
コード例 #12
0
ファイル: groupsubscription.php プロジェクト: Kheros/MMOver
         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 ? "&amp;sort={$sortfield}" : '') . (!$desc ? '&amp;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 . '&amp;sort=replies' . ($sortfield == 'replies' ? '&amp;order=' . $oppositesort : ''), 'dateline' => $sorturl . '&amp;sort=dateline' . ($sortfield == 'dateline' ? '&amp;order=' . $oppositesort : ''), 'lastpost' => $sorturl . '&amp;sort=lastpost' . ($sortfield == 'lastpost' ? '&amp;order=' . $oppositesort : ''), 'subscription' => $sorturl . '&amp;sort=subscription' . ($sortfield == 'subscription' ? '&amp;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)) {
コード例 #13
0
ファイル: blog.php プロジェクト: Kheros/MMOver
     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&amp;u={$userinfo['userid']}&amp;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);
コード例 #14
0
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&amp;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);
            }
        }
    }
}
コード例 #15
0
ファイル: blog_search.php プロジェクト: hungnv0789/vhtm
		$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&amp;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);
コード例 #16
0
ファイル: class_profileblock.php プロジェクト: 0hyeah/yurivn
 /**
  * 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;
 }
コード例 #17
0
ファイル: forumdisplay.php プロジェクト: hungnv0789/vhtm
		}
		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'])
コード例 #18
0
ファイル: showthread.php プロジェクト: holandacz/nb4
     $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']) ? "&amp;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'];
コード例 #19
0
/**
 * 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('&amp;', $pagenavbits);
    return construct_page_nav($pagenumber, $perpage, $messagetotal, $pagenavurl);
}
コード例 #20
0
ファイル: printthread.php プロジェクト: hungnv0789/vhtm
$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]",
	'&amp;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;
	}
コード例 #21
0
ファイル: joinrequests.php プロジェクト: 0hyeah/yurivn
         $optionselected = iif($optionvalue == $vbulletin->GPC['usergroupid'], 'selected="selected"', '');
         $optionclass = '';
         $usergroupbits .= render_option_template($optiontitle, $optionvalue, $optionselected, $optionclass);
     }
 }
 // set a shortcut to the vbulletin->usergroupcache entry for this group
 $usergroup =& $vbulletin->usergroupcache["{$vbulletin->GPC['usergroupid']}"];
 // initialize $joinrequestbits
 $joinrequestbits = '';
 $numrequests =& $usergroups["{$vbulletin->GPC['usergroupid']}"];
 // if there are some requests for this usergroup, display them
 if ($numrequests > 0) {
     // set defaults
     sanitize_pageresults($numrequests, $vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], 100, 20);
     $startat = ($vbulletin->GPC['pagenumber'] - 1) * $vbulletin->GPC['perpage'];
     $pagenav = construct_page_nav($vbulletin->GPC['pagenumber'], $vbulletin->GPC['perpage'], $numrequests, 'joinrequests.php?' . $vbulletin->session->vars['sessionurl'] . "usergroupid={$vbulletin->GPC['usergroupid']}&amp;pp=" . $vbulletin->GPC['perpage']);
     $requests = $db->query_read_slave("\n\t\t\tSELECT req.*, user.username, IF(user.displaygroupid = 0, user.usergroupid, user.displaygroupid) AS displaygroupid, infractiongroupid\n\t\t\tFROM " . TABLE_PREFIX . "usergrouprequest AS req\n\t\t\tINNER JOIN " . TABLE_PREFIX . "user AS user USING(userid)\n\t\t\tWHERE req.usergroupid = " . $vbulletin->GPC['usergroupid'] . "\n\t\t\tLIMIT {$startat}, " . $vbulletin->GPC['perpage'] . "\n\t\t");
     while ($request = $db->fetch_array($requests)) {
         fetch_musername($request);
         $request['date'] = vbdate($vbulletin->options['dateformat'], $request['dateline'], 1);
         $request['time'] = vbdate($vbulletin->options['timeformat'], $request['dateline']);
         exec_switch_bg();
         ($hook = vBulletinHook::fetch_hook('joinrequest_view_bit')) ? eval($hook) : false;
         $templater = vB_Template::create('joinrequestsbit');
         $templater->register('bgclass', $bgclass);
         $templater->register('request', $request);
         $joinrequestbits .= $templater->render();
     }
 }
 // end if ($numrequests > 0)
 $show['joinrequests'] = iif($joinrequestbits != '', true, false);
コード例 #22
0
ファイル: hospitalsDirectory.php プロジェクト: holandacz/nb4
    $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']) ? "&amp;pp={$perpage}" : "") . (!empty($sortorder) ? "&amp;order={$sortorder}" : "") . (!empty($sortfield) ? "&amp;sort={$sortfield}" : "") . (!empty($sortaddon) ? "&amp;{$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') . '";');
コード例 #23
0
ファイル: calendar.php プロジェクト: 0hyeah/yurivn
         $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&amp;pp={$perpage}";
     $pagenav = construct_page_nav($pagenumber, $perpage, $totalevents, $sorturl . "&amp;sort={$sortfield}" . (!empty($sortorder) ? "&amp;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);
コード例 #24
0
ファイル: usernote.php プロジェクト: Kheros/MMOver
 $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']}&amp;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);
コード例 #25
0
ファイル: showthread.php プロジェクト: 0hyeah/yurivn
         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'];
コード例 #26
0
ファイル: group.php プロジェクト: holandacz/nb4
     $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('&amp;', $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&amp;groupid=' . $group['groupid'] => $vbphrase['pictures'], '' => $vbphrase['view_picture']);
 $templatename = 'socialgroups_picture';
コード例 #27
0
ファイル: misc.php プロジェクト: holandacz/nb4
 $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
コード例 #28
0
ファイル: get_thread.php プロジェクト: 0hyeah/yurivn
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&amp;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;
}
コード例 #29
0
ファイル: profile.php プロジェクト: holandacz/nb4
                 $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 .= "&amp;u={$userid}";
         }
         if ($perpage != $defaultperpage) {
             $sorturl .= "&amp;pp={$perpage}";
         }
         if ($showthumbs) {
             $sorturl .= "&amp;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
コード例 #30
0
ファイル: converse.php プロジェクト: 0hyeah/yurivn
$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('&amp;', $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);