All pastes #165750 Raw Edit

Someone

public text v1 · immutable
·published 2006-09-10 04:05 UTC
rendered paste body
<?php

if (isset($_GET['t']))
{
	print '<META HTTP-EQUIV=Refresh CONTENT="0; URL=/">' .
		  '<script type="text/javascript">' .
		  'document.location.reload();' .
		  '</script>';
	exit;
}

/*======================================================================*\
|| #################################################################### ||
|| # vBulletin 3.0.3 - Licence Number L76113e0
|| # ---------------------------------------------------------------- # ||
|| # Copyright ©2000–2004 Jelsoft Enterprises Ltd. All Rights Reserved. ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # http://www.vbulletin.com | http://www.vbulletin.com/license.html # ||
|| #################################################################### ||
\*======================================================================*/

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'index');

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array('holiday');

// get special data templates from the datastore
$specialtemplates = array(
	'userstats',
	'birthdaycache',
	'maxloggedin',
	'iconcache',
	'eventcache',
	'mailqueue',
	'todaymaxonline'
);

// pre-cache templates used by all actions
$globaltemplates = array(
	'FORUMHOME',
	'forumhome_event',
	'forumhome_forumbit_level1_nopost',
	'forumhome_forumbit_level1_post',
	'forumhome_forumbit_level2_nopost',
	'forumhome_forumbit_level2_post',
	'forumhome_lastpostby',
	'forumhome_loggedinuser',
	'forumhome_moderator',
	'forumhome_pmloggedin',
	'forumhome_subforumbit_nopost',
	'forumhome_subforumbit_post',
	'forumhome_subforumseparator_nopost',
	// [START HACK='Latest Threads On Forum Home' AUTHOR='NTLDR' VERSION='1.0.0' CHANGEID= 1 ]
'forumhome_subforumseparator_post',
'forumhome_latestthreadbit',
// [END HACK='Latest Threads On Forum Home' AUTHOR='NTLDR' VERSION='1.0.0' CHANGEID= 1 ],
	'forumhome_vbpopup',
	'forumhome_todayloggedinuser',
	'forumhome_todayloggedinusers',
      'linkhits'
);

// pre-cache templates used by specific actions
$actiontemplates = array();

// ######################### REQUIRE BACK-END ############################
require_once('./global.php');
require_once('./includes/functions_bigthree.php');
require_once('./includes/functions_forumlist.php');

// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################

// get permissions to view forumhome
if (!($permissions['forumpermissions'] & CANVIEW))
{
	print_no_permission();
}

// get forumid if set, otherwise set to -1
globalize($_REQUEST, array('forumid' => INT));

if (! is_array($foruminfo))
{
	$forumid = -1;
}
else
{
	// draw nav bar
	$navbits = array();
	$parentlist = array_reverse(explode(',', substr($foruminfo['parentlist'], 0, -3)));
	foreach ($parentlist AS $forumID)
	{
		$forumTitle = $forumcache["$forumID"]['title'];
		$navbits["forumdisplay.php?$session[sessionurl]f=$forumID"] = $forumTitle;
	}

	// pop the last element off the end of the $nav array so that we can show it without a link
	array_pop($navbits);

	$navbits[''] = $foruminfo['title'];
	$navbits = construct_navbits($navbits);
}

// ### WELCOME MESSAGE #################################################
if ($bbuserinfo['userid'])
{	// registered user
	$showmemberwelcome = true;
}
else
{	// guest
	$showmemberwelcome = false;
}

$today = vbdate('Y-m-d', TIMENOW, false, false);

// ### TODAY'S BIRTHDAYS #################################################
if ($vboptions['showbirthdays'])
{
	$birthdaystore = unserialize($datastore['birthdaycache']);
	if (!is_array($birthdaystore) OR ($today != $birthdaystore['day1'] AND $today != $birthdaystore['day2']))
	{
		// Need to update!
		require_once('./includes/functions_databuild.php');
		$birthdaystore = build_birthdays();
		DEVDEBUG('Updated Birthdays');
	}
	switch($today)
	{
		case $birthdaystore['day1']:
			$birthdays = $birthdaystore['users1'];
			break;

		case $birthdaystore['day2'];
			$birthdays = $birthdaystore['users2'];
			break;
	}
	// memory saving
	unset($birthdaystore);

	$show['birthdays'] = iif ($birthdays, true, false);
}
else
{
	$show['birthdays'] = false;
}

// ### TODAY'S EVENTS #################################################
if ($vboptions['showevents'])
{
	require_once('./includes/functions_calendar.php');

	$future = gmdate('n-j-Y' , TIMENOW + 43200 + (86400 * ($vboptions['showevents'] - 1)));
	$eventstore = unserialize($datastore['eventcache']);

	if (!is_array($eventstore) OR $future != $eventstore['date'])
	{
		// Need to update!
		require_once('./includes/functions_databuild.php');
		$eventstore = build_events();
		DEVDEBUG('Updated Events');
	}

	unset($eventstore['date']);
	$events = array();
	$eventcount = 0;
	foreach ($eventstore AS $eventid => $eventinfo)
	{
		$offset = iif (!$eventinfo['utc'], $bbuserinfo['tzoffset'], $bbuserinfo['timezoneoffset']);
		$eventinfo['dateline_from_user'] = $eventinfo['dateline_from'] + $offset * 3600;
		$eventinfo['dateline_to_user'] = $eventinfo['dateline_to'] + $offset * 3600;
		$gettime = TIMENOW - $vboptions['hourdiff'];
		$iterations = 0;

		if ($bbuserinfo['calendarpermissions']["$eventinfo[calendarid]"] & CANVIEWCALENDAR OR $eventinfo['holidayid'])
		{
			if ($eventinfo['userid'] == $bbuserinfo['userid'] OR $bbuserinfo['calendarpermissions']["$eventinfo[calendarid]"] & CANVIEWOTHERSEVENT OR $eventinfo['holidayid'])
			{
				while ($iterations < $vboptions['showevents'])
				{
					$todaydate = getdate($gettime);
					if (cache_event_info($eventinfo, $todaydate['mon'], $todaydate['mday'], $todaydate['year']))
					{
						if (!$vboptions['showeventtype'])
						{
							$events["$eventinfo[eventid]"][] = $gettime;
						}
						else
						{
							$events["$gettime"][] = $eventinfo['eventid'];
						}
						$eventcount++;
					}
					$iterations++;
					$gettime += 86400;
				}
			}
		}
	}

	if (!empty($events))
	{
		ksort($events, SORT_NUMERIC);
		foreach($events AS $index => $value)
		{
			$pastevent = 0;
			$pastcount = 0;
			unset($eventdates, $comma, $daysevents);
			if (!$vboptions['showeventtype'])
			{	// Group by Event // $index = $eventid
				unset($day);
				foreach($value AS $key => $dateline)
				{
					if (($dateline - 86400) == $pastevent AND !$eventinfo['holidayid'])
					{
						$pastevent = $dateline;
						$pastcount++;
						continue;
					}
					else
					{
						if ($pastcount)
						{
							$eventdates = construct_phrase($vbphrase['event_x_to_y'], $eventdates, vbdate($vboptions['dateformat'], $pastevent, false, true, false));
						}
						$pastcount = 0;
						$pastevent = $dateline;
					}
					if (!$day)
					{
						$day = vbdate('Y-n-j', $dateline, false, false);
					}
					$eventdates .= $comma . vbdate($vboptions['dateformat'], $dateline, false, true, false);
					$comma = ', ';
					$eventinfo = $eventstore["$index"];
				}
				if ($pastcount)
				{
					$eventdates = construct_phrase($vbphrase['event_x_to_y'], $eventdates, vbdate($vboptions['dateformat'], $pastevent, false, true, false));
				}



				if ($eventinfo['holidayid'])
				{
					$callink = "<a href=\"calendar.php?$session[sessionurl]do=getinfo&amp;day=$day\">" . $vbphrase['holiday_title_' . $eventinfo['varname']] . "</a>";
				}
				else
				{
					$callink = "<a href=\"calendar.php?$session[sessionurl]do=getinfo&amp;day=$day&amp;e=$eventinfo[eventid]&amp;c=$eventinfo[calendarid]\">$eventinfo[title]</a>";
				}
			}
			else
			{	// Group by Date
				$eventdate = vbdate($vboptions['dateformat'], $index, false, true, false);
				$day = vbdate('Y-n-j', $index, false, false);
				foreach($value AS $key => $eventid)
				{
					$eventinfo = $eventstore["$eventid"];
					if ($eventinfo['holidayid'])
					{
						$daysevents .= $comma . "<a href=\"calendar.php?$session[sessionurl]do=getinfo&amp;day=$day\">" . $vbphrase['holiday_title_' . $eventinfo['varname']] . "</a>";
					}
					else
					{
						$daysevents .= $comma . "<a href=\"calendar.php?$session[sessionurl]do=getinfo&amp;day=$day&amp;e=$eventinfo[eventid]&amp;c=$eventinfo[calendarid]\">$eventinfo[title]</a>";
					}
					$comma = ', ';
				}
			}
			eval('$upcomingevents .= "' . fetch_template('forumhome_event') . '";');
		}
		// memory saving
		unset($events, $eventstore);
	}
	$show['upcomingevents'] = iif ($upcomingevents, true, false);
	$show['todaysevents'] = iif ($vboptions['showevents'] == 1, true, false);
}
else
{
	$show['upcomingevents'] = false;
}

// ### LOGGED IN USERS #################################################
$activeusers = '';
if ($vboptions['displayloggedin'])
{
	$datecut = TIMENOW - $vboptions['cookietimeout'];
	$numbervisible = 0;
	$numberregistered = 0;
	$numberguest = 0;

	$forumusers = $DB_site->query("
		SELECT
			user.username, (user.options & $_USEROPTIONS[invisible]) AS invisible, user.usergroupid,
			session.userid, session.inforum, session.lastactivity,
			IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid
		FROM " . TABLE_PREFIX . "session AS session
		LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = session.userid)
		WHERE session.lastactivity > $datecut
		" . iif($vboptions['displayloggedin'] == 1, "ORDER BY username ASC") . "
	");

	if ($bbuserinfo['userid'])
	{
		// fakes the user being online for an initial page view of index.php
		$bbuserinfo['joingroupid'] = iif($bbuserinfo['displaygroupid'], $bbuserinfo['displaygroupid'], $bbuserinfo['usergroupid']);
		$userinfos = array
		(
			$bbuserinfo['userid'] => array
			(
				'userid' => $bbuserinfo['userid'],
				'username' => $bbuserinfo['username'],
				'invisible' => $bbuserinfo['invisible'],
				'inforum' => 0,
				'lastactivity' => TIMENOW,
				'usergroupid' => $bbuserinfo['usergroupid'],
				'displaygroupid' => $bbuserinfo['displaygroupid'],
			)
		);
	}
	else
	{
		$userinfos = array();
	}
	$inforum = array();

	while ($loggedin = $DB_site->fetch_array($forumusers))
	{
		$userid = $loggedin['userid'];
		if (!$userid)
		{	// Guest
			$numberguest++;
			$inforum["$loggedin[inforum]"]++;
		}
		else if (empty($userinfos["$userid"]) OR ($userinfos["$userid"]['lastactivity'] < $loggedin['lastactivity']))
		{
			$userinfos["$userid"] = $loggedin;
		}
	}

	foreach($userinfos AS $userid => $loggedin)
	{
		$numberregistered++;
		if ($userid != $bbuserinfo['userid'])
		{
			$inforum["$loggedin[inforum]"]++;
		}
		$loggedin['musername'] = fetch_musername($loggedin);

		if (fetch_online_status($loggedin))
		{
			$numbervisible++;
			eval('$activeusers .= ", ' . fetch_template('forumhome_loggedinuser') . '";');
		}
	}

	// memory saving
	unset($userinfos, $loggedin);

	$activeusers = substr($activeusers , 2); // get rid of initial comma

	$DB_site->free_result($loggedins);

	$totalonline = $numberregistered + $numberguest;
	$numberinvisible = $numberregistered - $numbervisible;

	// ### MAX LOGGEDIN USERS ################################
	$maxusers = unserialize($datastore['maxloggedin']);
	if (intval($maxusers['maxonline']) <= $totalonline)
	{
		$maxusers['maxonline'] = $totalonline;
		$maxusers['maxonlinedate'] = TIMENOW;
		build_datastore('maxloggedin', serialize($maxusers));
	}

	$recordusers = $maxusers['maxonline'];
	$recorddate = vbdate($vboptions['dateformat'], $maxusers['maxonlinedate'], true);
	$recordtime = vbdate($vboptions['timeformat'], $maxusers['maxonlinedate']);

	$show['loggedinusers'] = true;
}
else
{
	$show['loggedinusers'] = false;
}
// ### WHO WAS ONLINE TODAY ########################
if ((int)$maxusers['maxonline'] <= $totalonline)
{
	$time = time();
	$maxloggedin = "$totalonline " . $time . " " . $maxusers['maxonline'] . " " . $maxusers['maxonlinedate'];
	$maxusers[0] = $totalonline;
	$maxusers[1] = $time;
}

$todayloggedinusers = "";
$numbertodayonline = 0;
$numbertodayonlineinvisible = 0;
$todaynumberregistered = 0;

$todayusers=$DB_site->query("SELECT userid, username, usergroupid, lastactivity, options FROM ".TABLE_PREFIX."user 
							WHERE lastactivity > " . (mktime(0,0,0,date("m"),date("d"),date("Y")) + (($bbuserinfo['timezoneoffset']-$vboptions[timeoffset])*3600)) . " 
							ORDER BY username");
				
while ($todayuser=$DB_site->fetch_array($todayusers))
{
	$todayuser['options'] = intval($todayuser['options']);
	foreach($_USEROPTIONS AS $optionname => $optionval)
	{
		$todayuser["$optionname"] = iif($todayuser['options'] & $optionval, 1, 0);
	}

	$todaynumberregistered++;
	$numbertodayonline++;
	$invisibleuser = '';
	$userid = $todayuser['userid'];
	$lastactivetime = vbdate($vboptions['timeformat'], $todayuser[lastactivity]);
	
	if ($todayuser['invisible']==1 and $bbuserinfo['usergroupid']!=6)
	{
		$numbertodayonlineinvisible++;
		continue;
	}
	if ($todayuser['invisible'] == 1)
	{ // Invisible User but show to Admin
		$invisibleuser = '*';
	}

	$username = fetch_musername($todayuser);
	
	if (!$todayloggedinuser)
	{
		eval("\$todayloggedinuser = \"".fetch_template('forumhome_todayloggedinuser')."\";");
	}
	else
	{
		eval("\$todayloggedinuser .= \", ".fetch_template('forumhome_todayloggedinuser')."\";");
	}
}

$DB_site->free_result($todayusers);

if ($bbuserinfo[usergroupid] == 6) {
	$todayonline = $numbertodayonline;
} else {
	$todayonline = $numbertodayonline - $numbertodayonlineinvisible;
}

if ((int)$maxusers[2] <= $numbertodayonline) {
	$time = time();
	$maxloggedin = $maxusers[0] . " " . $maxusers[1] . " $numbertodayonline " . $time;
	$maxusers[2] = $numbertodayonline;
	$maxusers[3] = $time;
}

// ### MAX LOGGEDIN USERS TODAY ################################
$todaymaxusers = unserialize($datastore['todaymaxonline']);
if (intval($todaymaxusers['todaymaxonline']) <= $todaynumberregistered)
{
	$todaymaxusers['todaymaxonline'] = $todaynumberregistered;
	$todaymaxusers['todaymaxonlinedate'] = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
	$DB_site->query("REPLACE INTO " . TABLE_PREFIX . "datastore (title, data) VALUES ('todaymaxonline', '" . addslashes(serialize($todaymaxusers)) . "')");
}

$todayrecordusers = $todaymaxusers['todaymaxonline'];
$todayrecorddate = vbdate($vboptions['dateformat'], $todaymaxusers['todaymaxonlinedate'], 1);

eval("\$todayloggedinusers = \"".fetch_template('forumhome_todayloggedinusers')."\";");
// ### GET FORUMS & MODERATOR iCACHES ########################
cache_ordered_forums(1);
if ($vboptions['showmoderatorcolumn'])
{
	cache_moderators();
}
else
{
	$imodcache = array();
	$mod = array();
}

// define max depth for forums display based on $vboptions[forumhomedepth]
define('MAXFORUMDEPTH', $vboptions['forumhomedepth']);

$forumbits = construct_forum_bit($forumid);

// ### BOARD STATISTICS #################################################

// get total threads & posts from the forumcache
$totalthreads = 0;
$totalposts = 0;
if (is_array($forumcache))
{
	foreach ($forumcache AS $forum)
	{
		$totalthreads += $forum['threadcount'];
		$totalposts += $forum['replycount'];
	}
}
$totalthreads = vb_number_format($totalthreads);
$totalposts = vb_number_format($totalposts);

// get total members and newest member from template
$userstats = unserialize($datastore['userstats']);
$numbermembers = vb_number_format($userstats['numbermembers']);
$newusername = $userstats['newusername'];
$newuserid = $userstats['newuserid'];

// ### RANDOM QUOTES MOD ###################################################

$current_time = time();

// we must subtract the timezone offset to get GMT

$current_time -= date("Z");

if ( date("I") == 1 ){

	// now let's convert it to eastern by subtracting 5 hours

	$current_time -= (4*3600);

} else {

	// now let's convert it to eastern by subtracting 5 hours

	$current_time -= (5*3600);

}

// we want the time of today at 00:00:01 

$current_time = mktime(0,0,0,date("n",$current_time),date("j",$current_time),date("Y",$current_time));

$quote_sql = "SELECT quote_text FROM tbl_quotes WHERE quote_date >= ".$current_time." ORDER BY quote_date ASC LIMIT 0,1";
$root = dirname(__FILE__);
require_once($root.'/quotes/config.php');
$conn = @mysql_connect($INFO['host'],$INFO['username'],$INFO['password']);
@mysql_select_db($INFO['database'],$conn);

// now let's select the quote that is the closest to our current time

$quote = @mysql_query($quote_sql,$conn);
$quote = @mysql_fetch_array($quote,MYSQL_ASSOC);

if ( isset($quote['quote_text']) ){
	$quote = nl2br(stripslashes($quote['quote_text']));
} else {
	$quote = 'Error reading quote...';
}

@mysql_close($conn);

// ### END RANDOM QUOTES MOD #############################################
// ### Registered Today ##
$newusers = $DB_site->query_first('
SELECT COUNT(*) AS count
FROM ' . TABLE_PREFIX . 'user
WHERE joindate >= "' . strtotime("-1day") . '"
');
$newmembers = number_format($newusers['count']);
// ### Registered Today ## 
// ### Anzeige aller Hits START ###	
$totalhits = $DB_site->query_first("
		SELECT COUNT(*) ,
		SUM(views) AS hits
		FROM " . TABLE_PREFIX . " thread
			");
			
	$totalhits = vb_number_format($totalhits['hits']);
// ### Anzeige aller Hits ENDE ###
// [START HACK='Latest Threads On Forum Home' AUTHOR='NTLDR' VERSION='1.0.0' CHANGEID= 2 ]
// #################### PROCESS LATEST THREADS #######################
// fetch the permissions for each forum
$forumperms = array();
foreach($forumcache AS $forum) {

	$forumperms["$forum[forumid]"] = fetch_permissions($forum['forumid']);

	// ## HIDE FORUMS WITHOUT THE CANVIEW OR CANVIEWOTHERS PERMISSION ##
	if (!($forumperms["$forum[forumid]"] & CANVIEW) || !($forumperms["$forum[forumid]"] & CANVIEWOTHERS)) {
		$limitfids .= ','.$forum['forumid'];
	}
}
unset($forum);

if ($vboptions['threadpreview'] > 0) {
	$previewfield = ', post.pagetext AS preview';
	$previewjoin = 'LEFT JOIN '.TABLE_PREFIX.'post AS post ON(post.postid = thread.firstpostid)';
}

$getthreads = $DB_site->query("
	## GET LATEST THREADS ##
	SELECT thread.*,thread.iconid AS threadiconid $previewfield
	FROM ".TABLE_PREFIX."thread AS thread
	LEFT JOIN ".TABLE_PREFIX."deletionlog AS deletionlog ON(thread.threadid = deletionlog.primaryid AND type = 'thread')
	$previewjoin
	WHERE open = '1'
	AND forumid NOT IN (0$limitfids)
	AND thread.visible = '1'
	AND deletionlog.primaryid IS NULL
	ORDER BY lastpost
	DESC LIMIT 5");

while($thread = $DB_site->fetch_array($getthreads)) {

	$threads = true;
	$thread['title'] = fetch_censored_text(fetch_trimmed_title(unhtmlspecialchars($thread['title']), 22));
	$thread['date'] = vbdate($vboptions['dateformat'], $thread['lastpost'], 1);
	$thread['time'] = vbdate($vboptions['timeformat'], $thread['lastpost']);
	$thread['preview'] = preg_replace('#\[quote(=(&quot;|"|\'|).*\\2)?\](.*)\[/quote\]#siU', '', $thread['preview']);
	$thread['preview'] = htmlspecialchars_uni(fetch_trimmed_title(strip_bbcode(fetch_censored_text($thread['preview']), false, true), $vboptions['threadpreview']));
	$thread['replycount'] = vb_number_format($thread['replycount']);
	$thread['views'] = vb_number_format($thread['views']);

	// thread icon
	$show['icon'] = false;
  $icon = fetch_iconinfo($thread['iconid']);

  if (is_array($icon)) {
      $show['icon'] = true;
      $thread['threadiconpath'] = $icon['iconpath'];
      $thread['threadicontitle'] = $icon['title'];
  }

	// show goto new post
	$show['firstnew'] = false;
	$bbforumview = fetch_bbarray_cookie('forum_view', $thread['forumid']);

	if ($bbforumview > $bbuserinfo['lastvisit']) {
		$lastread = $bbforumview;
	} else {
		$lastread = $bbuserinfo['lastvisit'];
	}

	if ($thread['lastpost'] > $lastread) {

		$threadview = fetch_bbarray_cookie('thread_lastview', $thread['threadid']);

		if ($thread['lastpost'] > $threadview) {
			$show['firstnew'] = true;
			$show['icon'] = false;
		}
	}

	exec_switch_bg();

	eval("\$threadbits .= \"".fetch_template('forumhome_latestthreadbit')."\";");
}
if ($threads) {
	$show['latestthreads'] = true;
}
// memory saving
unset($thread, $threads);
$DB_site->free_result($getthreads);
// [END HACK='Latest Threads On Forum Home' AUTHOR='NTLDR' VERSION='1.0.0' CHANGEID= 2 ]
// ### ALL DONE! SPIT OUT THE HTML AND LET'S GET OUTA HERE... ###
eval('$vbpopup = "' . fetch_template('forumhome_vbpopup') . '";');
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('FORUMHOME') . '");');

/*======================================================================*\
|| ####################################################################
|| # Downloaded: 22:52, Tue Aug 3rd 2004
|| # CVS: $RCSfile: index.php,v $ - $Revision: 1.132 $
|| ####################################################################
\*======================================================================*/
?>