' . ''; 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 = "" . $vbphrase['holiday_title_' . $eventinfo['varname']] . ""; } else { $callink = "$eventinfo[title]"; } } 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 . "" . $vbphrase['holiday_title_' . $eventinfo['varname']] . ""; } else { $daysevents .= $comma . "$eventinfo[title]"; } $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(=("|"|\'|).*\\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 $ || #################################################################### \*======================================================================*/ ?>