Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.0 > vBulletin 3.0 Full Releases
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
vBindex v3.0.0 RC5 Details »»
vBindex v3.0.0 RC5
Version: 1.00, by NTLDR (Coder) NTLDR is offline
Developer Last Online: Oct 2004 Show Printable Version Email this Page

Version: 3.0.0 Rating:
Released: 01-02-2004 Last Update: 03-29-2004 Installs: 801
 
No support by the author.

[high]vBindex v3.0.0 RC5[/high]

I happy to announce the fith release of vBindex for vBulletin 3 here at vBulletin.org and also the first Offical vB3 Hack here . This is the 9th release of vBindex for vB3 and there are few known problems currently. This release works with vB 3.0.0 Gamma, vB 3.0.0 RC1, vB 3.0.0 RC2, vB 3.0.0 RC3, vB 3.0.0 RC4 and vB 3.0.0.

[high]Features[/high]

The following are the features that are presently avalible in vBindex, those marked [high]*NEW*[/high] have been updated since vBindex 2.1 and those marked [high]*NEW*[/high] have been updated since Pre-RC2 was released and those marked [high]*NEW*[/high] have been added since RC2 and those marked [high]*NEW*[/high] have been added since RC3.
  • News:
    • News (taken from a specified news forum), with vBcode, Smilies and optional news posters avatar;
    • [high]*NEW*[/high] Improved avatar system for news posts;
    • [high]*NEW*[/high] Option to have sticky threads in the news forum sticky on vBindex;
    • [high]*NEW*[/high] Option to limit the number of characters in news posts;
  • Side Blocks:
    • Easy Administration:
      • [high]*NEW*[/high] All side blocks can be moved from within the ACP, no template edits needed!;
      • [high]*NEW*[/high] Custom blocks, add unlimited custom side blocks and control them all from the ACP;
      • [high]*NEW*[/high] Support for right, left and dual side blocks;
      • [high]*NEW*[/high] Each side block can be expanded/contracted just like the forums, QRB, post rules etc on the forum;
        [high]*NEW*[/high] Dynamic side blocks via a special PHP Include type system (vbindex_customblock_php);
    • Latest Threads:
      • [high]*NEW*[/high] More functional and faster new threads and posts;
      • [high]*NEW*[/high] Link to first unread post if the user has not read the thread yet;
        [high]*NEW*[/high] Ability to have the latest threads under the news with more details;
    • [high]*NEW*[/high] Online user list, with buddies and invisible users marked:
      • [high]*NEW*[/high] Option to show users online in the past 24 hours;
      • [high]*NEW*[/high] Online users block can be switched off;
    • Integrated Welcome Panel:
      • [high]*NEW*[/high] Option for detault avatar in the Welcome Box for members without an avatar and Guests;
    • Fully integrated Shoutbox:
      • [high]*NEW*[/high] Scrolling shoutbox option;
      • [high]*NEW*[/high] Allow users to delete own shouts if option is turned on;
      • [high]*NEW*[/high] Select which usergroups can delete any users shouts;
      • [high]*NEW*[/high] View all shouts, a full page shoutbox built it;
      • [high]*NEW*[/high] Option to show disabled postshout area to unregistred users;
      • [high]*NEW*[/high] Order shouts in either direction;
        [high]*NEW*[/high] Limit the length of shouts;
    • Poll, with the option to select a random poll from a given set of forums;
    • [high]*NEW*[/high] Calendar:
      • [high]*NEW*[/high] Links to events;
      • [high]*NEW*[/high] Option to show weekends and dynmically adjust the side bars to the correct size;
    • [high]*NEW*[/high] Todays birthdays;
  • Templates & Phrases:
    • [high]*NEW*[/high] Fully phrased, both the vBindex Options and the front end are 100% phrased;
    • [high]*NEW*[/high] 100% Valid XHTML 1.0 Templates.
    • [high]*NEW*[/high] Templates/Phrases installed during install/upgrade;
  • General:
    • [high]*NEW*[/high] Thread subscription icons for news and latest threads;
    • [high]*NEW*[/high] Global and user specific ignore list throughout all items;
    • Will work 100% outside of your forums directory;
    • Fully integrated into the Admin CP, change all options there!
    • Very easy to customize, just edit/add templates;
    • Capable of operating a multi-paged site; (Extra Page Tutorial)
    • [high]*NEW*[/high] Dynamic PHP Driven Extra Pages via Templates; (Extra Dynamic Page Tutorial)
    • [high]*NEW*[/high] Optimised code;
    • [high]*NEW*[/high] Use date/time option (Today/Yesterday and Detailed) specified in vB Options;
    • Only 5 queries with everything switched off, and still only 13 with all options turned on, thats 5 queries less than our nearest competitor!
    • [high]*NEW*[/high] Improved install, easy onscreen instructions that even new hackers should be able to follow and have vBindex working quicky;
    • [high]*NEW*[/high] Compatible with vBwar for vB3 when its released.
    • [high]*NEW*[/high] Admin Help system, gives help with all the vBindex options in the ACP.
    • [high]*NEW*[/high] Uninstall/Re-Install System.

[high]Installation/Upgrade[/high]

See the README_1ST.htm file included in the zip for more detailed install instructions and details of where to upload the files. Then point your browser to http://www.mydomain.com/forums/admin/vbiupgrade.php.

Changes Since vBindex 3.0.0 RC4

vBindex 3.0.0 RC4 was released about a week ago, RC5 has just a few changes and is expected to be the last release before vBindex 3.0.0. Changes include fixing of an XHTML issue in the custom block templates; admin help system added; ability to restrict the length of shouts.

[high]Support[/high]

Support will be given here in this thread ONLY. [high]Support *WILL NOT* be given via PM/Email/IM.[/high]

[high]************************************************[/high]

vBindex is Copyright MMII - MMIV Winter Systems, you may not distribute in part or whole any portion of the source code (apart from in this thread) or any file included in the zip (Unless you are posting a language translation of vbindex_phrases.xml in this thread). Portions Copyright MM - MMIV Jelsoft Enterprises Limited. Both the Jelsoft vBulletin and the Winter Systems vBindex Copyright notice in the footer must stay in place for any page powered by vBindex.

[high]************************************************[/high]

[high]vBindex is *FREE*, please have the courtesy click install if you use this hack, thank you[/high]

RC3 Build 7: 719
RC3 Build 8: 377
RC3 Build 10: 486
RC4 Build 5: 107
RC5 Build 5: 87

Supporters / CoAuthors

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #2042  
Old 11-28-2004, 04:40 PM
oliwood oliwood is offline
 
Join Date: Feb 2002
Posts: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

oh, in my vbb 3.0.0 it writes "could not find 'vbindex_settings_saved' after i want to save the options with vbioptions.php.

in vbindex.php it states

Quote:
Datenbankfehler in vBulletin 3.0.0:

Ungueltige SQL-Abfrage:
## GET NEWS ##
SELECT thread.*,thread.iconid AS threadiconid, threadpost.pagetext AS pagetext,
threadpost.attach AS attachcount,
avatarpath, NOT ISNULL(avatardata) AS customavatar, user.avatarrevision, customavatar.dateline AS customdateline,
NOT ISNULL(subscribethread.subscribethreadid) AS issubscribed,
IF(user.displaygroupid = 0, user.usergroupid, user.displaygroupid) AS displaygroupid
FROM thread AS thread
LEFT JOIN user AS user ON (thread.postuserid = user.userid)
LEFT JOIN post AS threadpost ON (thread.firstpostid = threadpost.postid)
LEFT JOIN deletionlog AS deletionlog ON(thread.threadid = deletionlog.primaryid AND type = 'thread')

LEFT JOIN customavatar AS customavatar ON (customavatar.userid = user.userid)
LEFT JOIN avatar AS avatar ON (avatar.avatarid = user.avatarid)

LEFT JOIN subscribethread AS subscribethread ON(subscribethread.threadid = thread.threadid AND subscribethread.userid = 2)
WHERE forumid IN ()
AND deletionlog.primaryid IS NULL
AND forumid NOT IN (0)
AND thread.open <> 10
AND thread.visible = '1'

AND thread.postuserid NOT IN (7681,7681)
ORDER BY thread.sticky DESC, thread.dateline DESC
LIMIT 0
mysql error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')
AND deletionlog.primaryid IS NULL
AND forumid NOT IN (0

mysql error number: 1064

Datum: 28.11.2004 19:36:14
Skript: http://www.testboard.planet-oliwood.to/vbb/vbindex.php
Reply With Quote
  #2043  
Old 11-30-2004, 07:50 PM
TheEnd's Avatar
TheEnd TheEnd is offline
 
Join Date: Mar 2003
Posts: 120
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Works GREAT.
I had a few questions though:

I was wondering if there was a way I could add a "Home" to the navbar on each style. If anyone knows how, please let me know.

Also, how could I replace the "News" section with a template on another page, (Like have the original news page, then like blah.php that has everything that vbindex.php has, but without the News, just link it to another template, basically just html inside it)
Heres an example.
Code:
               -Forums - Usercp - FAQ - Logout-

-Users Online-                     -blah-                       -Shoutbox-
                            blah content blah content
-VBindexCustom1-      blah content blah blah

                               -Latest Threads-
Reply With Quote
  #2044  
Old 11-30-2004, 07:53 PM
TheEnd's Avatar
TheEnd TheEnd is offline
 
Join Date: Mar 2003
Posts: 120
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by paulmjno
This doesnt show right for anyone but the admin...I have simply disabled users online...
Try hitting Refresh. I noticed it would say 0 users online, then I would refresh and then it would show me. I'm not clear on what your asking if thats not it.
Reply With Quote
  #2045  
Old 12-01-2004, 08:11 AM
chet chet is offline
 
Join Date: Feb 2004
Location: Nottingham (UK)
Posts: 220
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi all, I want to add this to the bottom of my portal, I guess just above "All times are GMT. The time now is" would be nice, could someone let me know how I would achieve this

Thanks

Chet
Reply With Quote
  #2046  
Old 12-01-2004, 11:00 AM
jmacieira's Avatar
jmacieira jmacieira is offline
 
Join Date: Sep 2004
Location: Portugal
Posts: 52
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Olá pessoal

ninguem fala Portugues por aqui ?
fiz a instalação do vBindex v3.0.0 RC5 e correu tudo bem (sem erros), mas agora que tenho eu de fazer para vizualizar no meu site as janelas laterais ?
Reply With Quote
  #2047  
Old 12-01-2004, 09:46 PM
jmacieira's Avatar
jmacieira jmacieira is offline
 
Join Date: Sep 2004
Location: Portugal
Posts: 52
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank´s ...I love this....

I resolve my problems
Reply With Quote
  #2048  
Old 12-02-2004, 06:29 PM
TheEnd's Avatar
TheEnd TheEnd is offline
 
Join Date: Mar 2003
Posts: 120
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Alright, well I edited out some of the news strings in the index.php and called it roster.php, and same with vbioptions.php, which i copied and made it vbioptions2.php. The settings are still set on both, which one = the other. Is there a way I can change the database where vbioptions2 is saved? Heres what I got (not much).
Roster.php
HTML Code:
<?php

// +--------------------------------------------------------------------+
// | vBindex Version 3.0.0 Release Candidate 5 (UK English)
// | Copyright (C) MMII - MMIV Winter Systems
// | This file may not be redistributed in whole or significant part.
// +--------------------------------------------------------------------+
// | vBindex, File v3.0.21
// |--------------------------------------------------------------------+
// | Support will only be given at Core Forums (http://www.coreforums.net)
// | to those who have confirmed they are licenced, or at vBulletin.org
// | via the vBindex 3.x thread listed bellow.
// +--------------------------------------------------------------------+
// | v1.x Release(s) by el3m3nt:
// |	(https://vborg.vbsupport.ru/showthread.php?threadid=37021)
// | v2.x Release(s) by NTLDR (aka Eldorado):
// | 	(https://vborg.vbsupport.ru/showthread.php?threadid=41916)
// | v3.x Release(s) by NTLDR (aka Eldorado):
// |    (http://www.coreforums.net/forums/showthread.core?threadid=93)
// |	(https://vborg.vbsupport.ru/showthread.php?threadid=59524)
// +--------------------------------------------------------------------+

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

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

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

// get special data templates from the datastore
$specialtemplates = array(
	'smiliecache',
	'bbcodecache',
	'iconcache',
	'userstats',
	'birthdaycache',
	'vbindex_setting',
	'vbindex_version',
	'vbindex_config'
);

// pre-cache templates used by all actions
$globaltemplates = array(
	// global templates
	'VBINDEX',
	'VBINDEX_SHELL',
	'vbindex_side',
	'vbindex_header',
	'vbindex_footer',
	'vbindex_onlineuser',
	'vbindex_onlineusers',
	'vbindex_pm_popup_script',
	'vbindex_navbar',
	'vbindex_headinclude',
	// roster
	'vbindex_roster',
	// latest threads
	'vbindex_latestthreads',
	'vbindex_latestthreadbit',
	'vbindex_centerthreadbit',
	// shoutbox
	'vbindex_shoutbox',
	'vbindex_shoutboxbit',
	// today's events
	'vbindex_event',
	'vbindex_eventbit',
	// bbocode
	'bbcode_code',
	'bbcode_html',
	'bbcode_php',
	'bbcode_quote',
	// bithdays
	'vbindex_birthdays',
	// calendar
	'vbindex_calendar',
	'calendar_smallmonth_day',
	'calendar_smallmonth_day_other',
	'calendar_smallmonth_header',
	'calendar_smallmonth_week',
	// poll
	'vbindex_poll',
	'vbindex_poll_option',
	'vbindex_poll_result',
	// custom boxes
	'vbindex_customblock_php',
	// default to 6 to prevent extra queries
	'vbindex_customblock_1',
	'vbindex_customblock_2',
	'vbindex_customblock_3',
	'vbindex_customblock_4',
	'vbindex_customblock_5',
	'vbindex_customblock_6',
);

// pre 4.1.0 don't have superglobals, so lets create the
// two indexs we're interested in before vB does
if (PHP_VERSION < '4.1.0') {
	$_REQUEST['page'] = &$HTTP_GET_VARS['page'];
	$_REQUEST['section'] = &$HTTP_GET_VARS['section'];
}

// pre-cache templates used by specific actions
// link the page we're requesting to the do var so that vB3 will
// pre-cache the template and save 1 query
if (!empty($_REQUEST['page'])) {
	$_REQUEST['do'] = &$_REQUEST['page'];
	define('EXTRA_PAGE', true);
}
// pre cache the phpinc template per extra page.
if (!empty($_REQUEST['section'])) {
	$_REQUEST['do'] = &$_REQUEST['section'];
	define('EXTRA_PAGE', true);
}
$actiontemplates = array(
	$_REQUEST['page'] => array(
		'vbindex_extra_'.$_REQUEST['page']
	),
	$_REQUEST['section'] => array(
		'vbindex_extra_'.$_REQUEST['section'],
		'vbindex_extra_php_'.$_REQUEST['section']
	)
);

if (!defined('EXTRA_PAGE')) {
	define('EXTRA_PAGE', false);
}

// ######################### REQUIRE BACK-END ############################
// this contains a few config vars for vBindex to make upgrades easier
require_once('./vbiconfig2.php');

if (!defined('SCRIPT_EXTENSION')) {
	// should the script extension not be defined assume .php
	define('SCRIPT_EXTENSION', '.php');
}

chdir(CHDIR_PATH);
require_once('./global'.SCRIPT_EXTENSION);
require_once('./includes/functions_bbcodeparse'.SCRIPT_EXTENSION);
require_once('./includes/functions_bigthree'.SCRIPT_EXTENSION);
require_once('./includes/functions_user'.SCRIPT_EXTENSION);

// ######################### vBindex OPTIONS #############################
$vbindex = unserialize($datastore['vbindex_setting']);
$vbindex['version'] = $datastore['vbindex_version'];
$ext = SCRIPT_EXTENSION;

// options bitfields
$_VBINDEX['options'] = array(
	'vbi_left_col'          => 1,
	'vbi_right_col'         => 2,
	'vbi_shownews'          => 4,
	'vbi_shownewsavatar'    => 8,
	'vbi_showthreads'       => 16,
	'vbi_showshoutbox'      => 32,
	'vbi_both_cols'         => 64,
	'vbi_wol'				=> 128,
	'vbi_subnews'			=> 256,
	'vbi_subthreads'		=> 512,
	'vbi_subnewposts'		=> 1024,
	'vbi_welcomeav'			=> 2048,
	'vbi_scrollshoutbox'	=> 4096,
	'vbi_allowshoutdelete'	=> 8192,
	'vbi_showcalendar'		=> 16384,
	'vbi_showbirthdays'		=> 32768,
	'vbi_showpoll'			=> 65536,
	'vbi_randompoll'		=> 131072,
	'vbi_disabledshout'		=> 262144,
	'vbi_shownewposts'		=> 524288,
	'vbi_stickynews'		=> 1048576,
	'vbi_24wol'				=> 2097152,
	'vbi_24woluser'			=> 4194304,
	'vbi_ascshout'			=> 8388608,
	'vbi_vbwar'				=> 16777216,
	'vbi_showweekends'		=> 33554432,
	//'vbi_newscharlimit'		=> 67108864, // needs to be added to vbioptions.php, as does $vbindex['newscharlimit'] for the number of chars
	'vbi_showcenterthreads'	=> 134217728,
);

// define all the options for on the spot checks
foreach($_VBINDEX['options'] AS $option => $bitfield) {
	define(strtoupper($option), $bitfield);
}
unset($option, $bitfield);

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

// ############################ INIT VARS ###############################

// user configured forumids to exclude
if (!empty($vbindex['limitfids'])) {
	$limitfids = array();
	$limitfids = explode(',', $vbindex['limitfids']);
	foreach($limitfids AS $key => $value) {
		$limitfids["$key"] = intval($value);
	}
} else {
	$limitfids = array(0);
}

$globalignore = ''; // global ignore list
$globalshoutignore = ''; // global ignore list as used in the shoutbox
$shoutignore = ''; // users ignore list as used in the shoutbox
$ignorelist = ''; // users ignore list
$onlineusers = '';
$previewfield = '';
$previewjoin = '';
$pollbits = '';
$home['subscribedthreads'] = 0;
$home['newposts'] = 0;
$home['newthreads'] = 0;
$avatarcache = array(); // avatar cache, saves 1 query if a avatar is returned from the cache
$threadids = array();
$iconcache = unserialize($datastore['iconcache']); // thread icon cache

// #################### PROCESS FORUM PERMISSIONS #######################

// 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)) {
		// forum pass? || !verify_forum_password($forum['forumid'], $foruminfo['password'], false);) {
		$limitfids[] = $forum['forumid'];
	}
}
unset($forum);

// ####################### PROCESS IGNORE LISTS #########################
// ## GLOBAL IGNORE ##
if ($Coventry = fetch_coventry('string')) {
	$globalignore = "AND thread.postuserid NOT IN ($Coventry) ";
	$globalshoutignore = "AND shoutbox.userid NOT IN ($Coventry)";
}
// ## USERS IGNORE ##
if (trim($bbuserinfo['ignorelist'])) {
	$ignorelist = 'AND thread.postuserid NOT IN ('.str_replace(' ', ',', $bbuserinfo['ignorelist']).')';
	$shoutignore = 'AND shoutbox.userid NOT IN ('.str_replace(' ', ',', $bbuserinfo['ignorelist']).')';
}

// ################ PROCESS SPECIFIC GET/POST ACTIONS ###################
// ## START INSERT NEW SHOUT ##
if (($vbindex['options'] & VBI_SHOWSHOUTBOX) && trim(!empty($_POST['shout'])) && $bbuserinfo['userid']) {

	// needed for convert_url_to_bbcode();
	require_once('./includes/functions_newpost'.SCRIPT_EXTENSION);

	// check length of shout
	if (!empty($vbindex['max_shout_length']) && vbstrlen($_POST['shout']) > $vbindex['max_shout_length']) {
		eval(print_standard_error('error_vbi_shout_too_long'));
	}

	$DB_site->query("	## INSERT NEW SHOUT ##
						INSERT INTO ".TABLE_PREFIX."vbindex_shoutbox
						(shoutid, userid, shout, dateline)
						VALUES
						(NULL, '$bbuserinfo[userid]', '".addslashes(convert_url_to_bbcode($_POST['shout']))."',
                     	'".TIMENOW."')");

			$url = "$_SERVER[PHP_SELF]?$session[sessionurl]";
			eval(print_standard_redirect('redirect_vbi_shoutadded'));
}
// ## START DELETE SHOUT ##
if ($_REQUEST['action'] == 'deleteshout') {

	$shoutid = intval($_REQUEST['shoutid']);

    if (in_array($bbuserinfo['usergroupid'], $vbindex['global_shout_delete'])) {
		// global shout delete group so delete it
		$deleteshout = true;
	} else {
		$deleteshout = false;
	}

	if (($vbindex['options'] & VBI_ALLOWSHOUTDELETE) && !$deleteshout) {

		// check user is the shouter
		$shout = $DB_site->query_first("## DELETE SHOUT ##
										SELECT userid, shoutid
										FROM ".TABLE_PREFIX."vbindex_shoutbox
										WHERE shoutid = '$shoutid'");

		if ($shout['userid'] == $bbuserinfo['userid']) {
			// delete shout as user is shouter
			$deleteshout = true;
		} else {
			$deleteshout = false;
			// error user isn't shouter
			eval(print_standard_error('error_vbi_cant_delete_others_shouts'));
		}
	}

	if ($deleteshout === true) {
		$DB_site->query("DELETE FROM ".TABLE_PREFIX."vbindex_shoutbox WHERE shoutid = '$shoutid'");
		$url = "$_SERVER[PHP_SELF]?$session[sessionurl]";
		eval(print_standard_redirect('redirect_vbi_shoutdeleted'));
	}
}

// #################### GET NEW POSTS/THREAD INFO #######################
if ($bbuserinfo['userid'] > 0 && ($vbindex['options'] & VBI_SHOWNEWPOSTS)) {
	if (!empty($bbuserinfo['lastvisit'])) {
		$datecut = $bbuserinfo['lastvisit'];
	} else {
		$datecut = TIMENOW - (24 * 60 * 60 * 1);
	}

	$getnew = $DB_site->query("
			## GET NEW POSTS / THREADS ##
			SELECT post.postid, post.threadid
			".iif(($vbindex['options'] & VBI_SUBNEWPOSTS) AND $bbuserinfo['userid'], ', NOT ISNULL(subscribethread.subscribethreadid) AS issubscribed')."
			FROM ".TABLE_PREFIX."post AS post
			".iif(($vbindex['options'] & VBI_SUBNEWPOSTS) AND $bbuserinfo['userid'], "
			LEFT JOIN ".TABLE_PREFIX."subscribethread AS subscribethread ON(subscribethread.threadid = post.threadid AND subscribethread.userid = $bbuserinfo[userid])"
			)."
			WHERE dateline >= $datecut
			AND visible = '1'");

	while($new = $DB_site->fetch_array($getnew)) {
		$home['newposts']++;
		if (!in_array($new['threadid'], $threadids)) {
			$home['newthreads']++;
			$threadids[] = $new['threadid'];
			if ($new['issubscribed']) {
				$home['subscribedthreads']++;
			}
		}
	}
	$home['newposts'] = vb_number_format($home['newposts']);
	$home['newthreads'] = vb_number_format($home['newthreads']);
	// memory saving
	unset($new, $datecut, $threadids);
	$DB_site->free_result($getnew);
}

// user statistics
$userstats = unserialize($datastore['userstats']);
$home['numbermembers'] = vb_number_format($userstats['numbermembers']);
$home['newusername'] = $userstats['newusername'];
$home['newuserid'] = $userstats['newuserid'];
unset($userstats);

// ####################### PROCESS vBindex WOL ##########################
if ($vbindex['options'] & VBI_WOL) {
	$online['datecut'] = TIMENOW - $vboptions['cookietimeout'];
	$buddies = explode(' ', $bbuserinfo['buddylist']);

	$onlineusers = $DB_site->query("
						## GET ONLINE USERS ##
						SELECT user.username, (user.options & $_USEROPTIONS[invisible]) AS invisible,
						user.usergroupid, session.userid, 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 > $online[datecut]
						ORDER BY ".iif($permissions['genericpermissions'] & CANSEEHIDDEN, 'invisible ASC, ')."username ASC");

	$home['onlinetotal'] = 0;
	$home['onlineguesttotal'] = 0;
	$home['onlinemembertotal'] = 0;
	$done = array();
	while($onlineuser = $DB_site->fetch_array($onlineusers)) {

		if ($onlineuser['userid'] && !$done["$onlineuser[userid]"]) {

			$done["$onlineuser[userid]"] = true;

			$home['onlinetotal']++;
			$home['onlinemembertotal']++;

			// do invisible users
			if (($permissions['genericpermissions'] & CANSEEHIDDEN) && $onlineuser['invisible']) {
				$onlineuser['invisiblemark'] = '*';
			} elseif ($onlineuser['invisible']) {
				$home['onlineguesttotal']++;
				$home['onlinemembertotal']--;
				break 1;
			}

			// do buddies
			if (in_array($onlineuser['userid'], $buddies)) {
				$onlineuser['buddymark'] = '+';
			}

			$onlineuser['musername'] = fetch_musername($onlineuser);
			eval("\$home[onlineusers] .= \", ".fetch_template('vbindex_onlineuser')."\";");

		} elseif ($onlineuser['userid'] == 0) {
			$home['onlineguesttotal']++;
			$home['onlinetotal']++;
		}
	}

	if ($vbindex['options'] & VBI_24WOL) {
		// show users from the last 24 hours
		$show['last24'] = true;
		unset($onlineuser);
		$starttime = mktime(0, 0, 0, date('m'), date('d'), date('Y'));


		if ($vbindex['options'] & VBI_24WOLUSER) {

			// show user names and count
			$show['last24user'] = true;

			$fetchusers = $DB_site->query("
						## USERS IN PAST 24HRS ##
						SELECT username, userid, usergroupid,
						(user.options & $_USEROPTIONS[invisible]) AS invisible,
						IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid
						FROM ".TABLE_PREFIX."user AS user
						WHERE lastactivity >= $starttime
						ORDER BY username ASC
			");

			while($onlineuser = $DB_site->fetch_array($fetchusers)) {

				$home['last24count']++;
				$onlineuser['musername'] = fetch_musername($onlineuser);

				if (($permissions['genericpermissions'] & CANSEEHIDDEN) && $onlineuser['invisible']) {
					$onlineuser['invisiblemark'] = '*';
				} elseif ($onlineuser['invisible']) {
					$onlineuser['musername'] = '';
					$home['last24count']--;
				}

				eval("\$home[last24] .= \", ".fetch_template('vbindex_onlineuser')."\";");
			}
			// removed inital comma in online list
			$home['last24'] = substr($home['last24'], 2);
			// memory saving
			unset($user);
			$DB_site->free_result($fetchusers);

		} else {

			// show count only
			$show['last24user'] = false;
			$onlinetoday = $DB_site->query_first("  ## USERS IN LAST 24HRS COUNT ##
													SELECT COUNT(*) AS count
													FROM ".TABLE_PREFIX."user
													WHERE lastactivity >= $starttime
									");
			$home['last24count'] = $onlinetoday['count'];
		}
	}

	// removed inital comma in online list
	$home['onlineusers'] = substr($home['onlineusers'], 2);
	eval("\$side[onlineusers] .= \"".fetch_template('vbindex_onlineusers')."\";");
	// memory saving
	unset($onlineuser, $done, $online, $buddies);
	$DB_site->free_result($onlineusers);
}

// ######################### PROCESS NEWS ############################
// standard news block
if (($vbindex['options'] & VBI_SHOWNEWS) && !($vbindex['options'] & VBI_VBWAR) && !EXTRA_PAGE && $_REQUEST['action'] != 'shoutbox') {

	$getnews = $DB_site->query("
		## GET NEWS ##
		SELECT thread.*,thread.iconid AS threadiconid, threadpost.pagetext AS pagetext,
		threadpost.attach AS attachcount,
		".iif($vbindex['options'] & VBI_SHOWNEWSAVATAR, 'avatarpath, NOT ISNULL(avatardata) AS customavatar, user.avatarrevision, customavatar.dateline AS customdateline,')."
		".iif(($vbindex['options'] & VBI_SUBNEWS) AND $bbuserinfo['userid'], 'NOT ISNULL(subscribethread.subscribethreadid) AS issubscribed,')."
		IF(user.displaygroupid = 0, user.usergroupid, user.displaygroupid) AS displaygroupid
		FROM ".TABLE_PREFIX."thread AS thread
		LEFT JOIN ".TABLE_PREFIX."user AS user ON (thread.postuserid = user.userid)
		LEFT JOIN ".TABLE_PREFIX."post AS threadpost ON (thread.firstpostid = threadpost.postid)
		LEFT JOIN ".TABLE_PREFIX."deletionlog AS deletionlog ON(thread.threadid = deletionlog.primaryid AND type = 'thread')
		".iif($vbindex['options'] & VBI_SHOWNEWSAVATAR, '
		LEFT JOIN '.TABLE_PREFIX.'customavatar AS customavatar ON (customavatar.userid = user.userid)
		LEFT JOIN '.TABLE_PREFIX.'avatar AS avatar ON (avatar.avatarid = user.avatarid)'
		)."
		".iif(($vbindex['options'] & VBI_SUBNEWS) AND $bbuserinfo['userid'], "
		LEFT JOIN ".TABLE_PREFIX."subscribethread AS subscribethread ON(subscribethread.threadid = thread.threadid AND subscribethread.userid = $bbuserinfo[userid])"
		)."
		WHERE forumid IN ($vbindex[newsfid])
		AND deletionlog.primaryid IS NULL
		AND forumid NOT IN (".implode(',', $limitfids).")
		AND thread.open <> 10
		AND thread.visible = '1'
		$globalignore
		$ignorelist
		ORDER BY ".iif($vbindex['options'] & VBI_STICKYNEWS, 'thread.sticky DESC,', '')." thread.dateline DESC
		LIMIT $vbindex[newsposts]");

	while($news = $DB_site->fetch_array($getnews)) {

  		$news['title'] = fetch_censored_text($news['title']);
  		$news['time'] = vbdate($vboptions['timeformat'], $news['dateline']);
  		$news['date'] = vbdate($vboptions['dateformat'], $news['dateline'], 1);
  		$news['musername'] = fetch_musername($news, 'displaygroupid', 'postusername');
  		$news['attachcount'] = vb_number_format($news['attachcount']);
  		$news['replycount'] = vb_number_format($news['replycount']);

  		if ($news['iconid']) {
			$news['showicon'] = true;
			$news['threadiconpath'] = &$iconcache["$news[threadiconid]"]['iconpath'];
			$news['threadicontitle'] = &$iconcache["$news[threadiconid]"]['title'];
		} elseif (!empty($vboptions['showdeficon'])) {
			$news['showicon'] = true;
			$news['threadiconpath'] = $vboptions['showdeficon'];
			$news['threadicontitle'] = $vbphrase['default'];
		}

  		// ## CENSOR NEWS AND PARSE vB CODE ##
  		if (!empty($vbindex['newscharlimit']) && (vbstrlen(strip_bbcode($news['pagetext'])) > $vbindex['newscharlimit'])) {
  		  	$news['pagetext'] = fetch_censored_text(strip_bbcode(parse_bbcode(fetch_trimmed_title($news['pagetext'], $vbindex['newscharlimit']), true, true), $news['forumid'], 1));
  		  	$show['readmore'] = true;
		} else {
			$news['pagetext'] = fetch_censored_text(parse_bbcode($news['pagetext'], $news['forumid'], 1));
			$show['readmore'] = false;
		}

		// ## GET POSTERS AVATAR ##
		$news['avatar'] = false;
		if ($vbindex['options'] & VBI_SHOWNEWSAVATAR) {

			if (!isset($avatarcache["$news[postuserid]"])) {

				if (!empty($news['customavatar'])) {

					if ($vboptions['usefileavatar']) {
						$news['avatarurl'] = "$vboptions[avatarurl]/avatar$news[postuserid]_$news[avatarrevision].gif";
					} else {
						$news['avatarurl'] = "$vboptions[bburl]/image".SCRIPT_EXTENSION."?userid=$news[postuserid]&amp;dateline=$news[customdateline]";
					}

					$news['avatar'] = true;
					$avatarcache["$news[postuserid]"] = $news['avatarurl'];
					DEVDEBUG("cached avatar for userid $news[postuserid]");
				} elseif (!empty($news['avatarpath'])) {
					$news['avatarurl'] = $vboptions['bburl'].'/'.$news['avatarpath'];
					$news['avatar'] = true;
					$avatarcache["$news[postuserid]"] = $news['avatarurl'];
					DEVDEBUG("cached avatar for userid $news[postuserid]");
				} elseif (!empty($vbindex['useravatar'])) { // we have a default av specified
					$news['avatarurl'] = $vbindex['useravatar'];
					$avatarcache["$bbuserinfo[userid]"] = $news['avatarurl'];
					$news['avatar'] = true;
				}

  			} else {
				$news['avatar'] = true;
				$news['avatarurl'] = $avatarcache["$news[postuserid]"];
			}
		}

  		eval("\$home[roster] .= \"".fetch_template('vbindex_roster')."\";");
	}
  	// memory saving
	unset($news);
	$DB_site->free_result($getnews);
}

// if vBwar is enabled then show that instead
if ((($vbindex['options'] & VBI_VBWAR) && !($vbindex['options'] & VBI_SHOWNEWS)) && !EXTRA_PAGE && $_REQUEST['action'] != 'shoutbox') {

	require_once('./vnews.php');

}

// ######################## CREATE WELCOME BOX ###########################
// moved bellow news as it creates the posibility of one less query
// if the users avatar has been cached from a news post
$showavatar = false;

// if we are a member
if ($bbuserinfo['userid']) {

	// show members welcome
	$showmemberwelcome = true;

	// ## GET & CACHE AV ##
	if ($vbindex['options'] & VBI_WELCOMEAV) {

		if (!isset($avatarcache["$bbuserinfo[userid]"])) {

			if (trim($vboptions['templateversion']) == '3.0.0 Gamma') {
				$avatarurl = $vboptions['bburl'].'/'.fetch_avatar_url($bbuserinfo['userid']);
			} else {
				if ($vboptions['usefileavatar']) {
					$avatarurl = "$vboptions[avatarurl]/avatar$bbuserinfo[userid]_$bbuserinfo[avatarrevision].gif";
				} else {
					$avatarurl = $vboptions['bburl']."/image".SCRIPT_EXTENSION."?userid=$bbuserinfo[userid]&amp;dateline=$bbuserinfo[customdateline]";
				}
			}
			$avatarcache["$bbuserinfo[userid]"] = $avatarurl;
			DEVDEBUG("cached avatar for userid $bbuserinfo[userid]");
		} else {
			$avatarurl = $avatarcache["$bbuserinfo[userid]"];
		}

		if ($avatarurl != $vboptions['bburl'].'/') {
			$showavatar = true;
		} elseif (!empty($vbindex['useravatar'])) { // we have a default av specified
			$avatarurl = $vbindex['useravatar'];
			$avatarcache["$bbuserinfo[userid]"] = $avatarurl;
			$showavatar = true;
		}
	}

} else {
	// a guest is viewing
	if (!empty($vbindex['guestavatar'])) {
		$avatarurl = $vbindex['guestavatar'];
		$showavatar = true;
		$home['welcomemessage'] = construct_phrase($vbphrase['vbi_welcome_guest_message'], $vboptions['bbtitle'], $vboptions['bburl'], SCRIPT_EXTENSION.'?'.$session['sessionurl']);
	}
  	$showmemberwelcome = false;
}

// #################### PROCESS LATEST THREADS #######################
if ($vbindex['options'] & VBI_SHOWTHREADS) {

	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
		".iif(($vbindex['options'] & VBI_SUBTHREADS) AND $bbuserinfo['userid'], ', NOT ISNULL(subscribethread.subscribethreadid) AS issubscribed')."
		".iif($vbindex['options'] & VBI_SHOWCENTERTHREADS, ',forum.title AS forumtitle')."
		FROM ".TABLE_PREFIX."thread AS thread
		LEFT JOIN ".TABLE_PREFIX."deletionlog AS deletionlog ON(thread.threadid = deletionlog.primaryid AND type = 'thread')
		".iif(($vbindex['options'] & VBI_SUBTHREADS) AND $bbuserinfo['userid'], "
		LEFT JOIN " . TABLE_PREFIX . "subscribethread AS subscribethread ON(subscribethread.threadid = thread.threadid AND subscribethread.userid = $bbuserinfo[userid])"
		)."
		".iif($vbindex['options'] & VBI_SHOWCENTERTHREADS, "LEFT JOIN ".TABLE_PREFIX."forum AS forum ON(forum.forumid = thread.forumid)")."
		$previewjoin
		WHERE open = '1'
		AND thread.open <> 10
		AND thread.forumid NOT IN (".iif(is_numeric($vbindex['newsfid']), "$vbindex[newsfid],").implode(',', $limitfids).")
		AND thread.visible = '1'
		AND deletionlog.primaryid IS NULL
		$globalignore
		$ignorelist
		ORDER BY lastpost
		DESC LIMIT $vbindex[maxlthreads]");

	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;
	    if ($thread['iconid']) {
			$show['icon'] = true;
			$thread['threadiconpath'] = &$iconcache["$thread[threadiconid]"]['iconpath'];
			$thread['threadicontitle'] = &$iconcache["$thread[threadiconid]"]['title'];
		} elseif (!empty($vboptions['showdeficon'])) {
			$show['icon'] = true;
			$thread['threadiconpath'] = $vboptions['showdeficon'];
			$thread['threadicontitle'] = $vbphrase['default'];
		}

		// 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('vbindex_latestthreadbit')."\";");
	    if ($vbindex['options'] & VBI_SHOWCENTERTHREADS) {
	    	// prepare center threads block
	    	eval("\$centerthreadbits .= \"".fetch_template('vbindex_centerthreadbit')."\";");
		}
	}
	if ($threads) {
		eval("\$side[latestthreads] = \"".fetch_template('vbindex_latestthreads')."\";");
	}
	// memory saving
	unset($thread, $threads);
	$DB_site->free_result($getthreads);
}

// ######################### PROCESS POLL ###############################
if ($vbindex['options'] & VBI_SHOWPOLL) {

	// the $pollinfo query here is experimental, to save one query later on I have joined
	// the pollvote table if the bbuser is registed, this seems to work fine from my testing

	$pollinfo = $DB_site->query_first("
			## GET POLL ##
			SELECT thread.pollid, thread.forumid, open, threadid, replycount, question, poll.dateline,
			options, votes, active, numberoptions, timeout, multiple, voters,
			pollvote.voteoption, pollvote.userid AS voteuserid
			FROM ".TABLE_PREFIX."thread AS thread
			LEFT JOIN ".TABLE_PREFIX."poll AS poll ON (thread.pollid = poll.pollid)
			LEFT JOIN ".TABLE_PREFIX."deletionlog AS deletionlog ON(thread.threadid = deletionlog.primaryid AND type = 'thread')
			LEFT JOIN ".TABLE_PREFIX."pollvote AS pollvote ON(thread.pollid = pollvote.pollid AND pollvote.userid = $bbuserinfo[userid])
			WHERE forumid NOT IN (".implode(',', $limitfids).")
			AND deletionlog.primaryid IS NULL
			AND thread.pollid <> 0
			AND thread.open <> 10
			AND thread.visible = '1'
			".iif(strtoupper($vbindex['pollsforumid']) != 'ALL', "AND thread.forumid IN ($vbindex[pollsforumid])")."
			$globalignore
			$ignorelist
			ORDER BY ".iif($vbindex['options'] & VBI_RANDOMPOLL, 'RAND()', 'thread.threadid')." DESC
			LIMIT 1");

	if ($pollinfo['pollid']) {

		$pollinfo['question'] = fetch_censored_text($pollinfo['question']);

		$splitoptions = explode('|||', $pollinfo['options']);
		$splitvotes = explode('|||', $pollinfo['votes']);

		$showresults = '';
		$uservoted = '';

		if (!$pollinfo['active'] || !$pollinfo['open'] || ($pollinfo['dateline'] + ($pollinfo['timeout'] * 86400) < TIMENOW && $pollinfo['timeout'])) {
			// poll closed
			$showresults = true;
		} elseif (!($forumperms["$pollinfo[forumid]"] & CANVOTE)) {
			// user cannot vote on this poll
			$nopermission = true;
		} elseif (fetch_bbarray_cookie('poll_voted', $pollinfo['pollid'])) {
			// cookie shows user has voted
			$uservoted = true;
		} elseif ($bbuserinfo['userid'] == $pollinfo['voteuserid'] && !empty($pollinfo['voteoption'])) {
			// pollinfo query shows user has voted
			$uservoted = true;
		}

		$i = 0;

		while($i++ < $pollinfo['numberoptions']) {
			$pollinfo['numbervotes'] += $splitvotes[$i - 1];
		}

		$i = 0;
		$option = array();

		while($i++ < $pollinfo['numberoptions']) {

			exec_switch_bg();

			$option['question'] = fetch_censored_text(parse_bbcode($splitoptions[$i - 1], $pollinfo['forumid'], $pollinfo['allowsmilies']));
			$option['votes'] = $splitvotes[$i - 1];
			$option['number'] = $i;

			if ($showresults || $uservoted || $nopermission) {
				if ($showresults) {
					$status = $vbphrase['this_poll_is_closed'];
				} elseif ($uservoted) {
					$status = $vbphrase['you_have_already_voted_on_this_poll'];
				} elseif ($nopermission) {
					$status = $vbphrase['you_may_not_vote_on_this_poll'];
				}

				$percent = 0;
				if ($option['votes']) {
					$percent = vb_number_format($option['votes'] / $pollinfo['numbervotes'] * 100, 2);
				}

				$option['graphicnumber'] = $option['number'] % 6 + 1;
				$option['barnumber'] = round($percent) * 1.3;

				$showform = false;
				eval("\$home[pollbits] .= \"".fetch_template('vbindex_poll_result')."\";");
			} elseif ($pollinfo['multiple']) {
				// mutiple choice poll
				$multiple = true;
				$showform = true;
				eval("\$home[pollbits] .= \"".fetch_template('vbindex_poll_option')."\";");
			} else {
				// single choice poll
				$multiple = false;
				$showform = true;
				eval("\$home[pollbits] .= \"".fetch_template('vbindex_poll_option')."\";");
			}
		}
		eval("\$side[poll] = \"".fetch_template('vbindex_poll')."\";");
	}
}

// ####################### PROCESS CAlENDAR & EVENTS ##########################
if ($vbindex['options'] & VBI_SHOWCALENDAR) {

	// lets prevent hacking and do our own calendar permissions checking
	$cpermscache = array();
	$calendarcache = array();

    // fetch the membergroupids
    $membergroupids = fetch_membergroupids_array($bbuserinfo);

    $calendarpermissions = $DB_site->query("
        ## CALENDAR PERMS & OPTIONS QUERY (userid: $bbuserinfo[userid], membergroupids: $bbuserinfo[membergroupids]) ##
        SELECT calendarpermission.usergroupid, calendarpermission.calendarpermissions,
        calendar.calendarid,calendar.title, calendar.options, calendar.startofweek, displayorder
        FROM ".TABLE_PREFIX."calendar AS calendar
        LEFT JOIN ".TABLE_PREFIX."calendarpermission AS calendarpermission ON (calendarpermission.calendarid=calendar.calendarid AND usergroupid IN(".implode(',', $membergroupids)."))
        ORDER BY displayorder ASC");

	while($calendarpermission = $DB_site->fetch_array($calendarpermissions)) {
		if (!empty($calendarpermission['displayorder'])) {
			// leave permissions at 0 for calendars that aren't being displayed
			$cpermscache["$calendarpermission[calendarid]"]["$calendarpermission[usergroupid]"] = intval($calendarpermission['calendarpermissions']);
			$calendarcache["$calendarpermission[calendarid]"]['title'] = $calendarpermission['title'];
			$calendarcache["$calendarpermission[calendarid]"]['options'] = $calendarpermission['options'];
			$calendarcache["$calendarpermission[calendarid]"]['startofweek'] = $calendarpermission['startofweek'];
		}
	}
	// memory saving
	unset($calendarpermission);
	$DB_site->free_result($calendarpermissions);

	// Combine the calendar permissions for all member groups
	foreach($cpermscache AS $calendarid => $cpermissions) {
		$user['calendarpermissions']["$calendarid"] = 0;
		foreach($membergroupids AS $usergroupid) {
			if (isset($cpermissions["$usergroupid"])) {
				$bbuserinfo['calendarpermissions']["$calendarid"] |= $cpermissions["$usergroupid"];
			} else {
				$bbuserinfo['calendarpermissions']["$calendarid"] |= $usergroupcache["$usergroupid"]['calendarpermissions'];
			}
		}
	}

	// require the calendar functions
	require_once('./includes/functions_calendar'.SCRIPT_EXTENSION);

	// get the first viewable calendarid
	$showcalendar = false;
	foreach ($calendarcache AS $id => $value) {
		if ($bbuserinfo['calendarpermissions']["$id"] & CANVIEWCALENDAR) {

			$calendarinfo = array(
				'options' 		=> $value['options'],
				'title'			=> $value['title'],
				'startofweek'	=> $value['startofweek'],
				'calendarid'	=> $id
			);

			$startofweek = $value['startofweek'];
			$calendarid = $id;
			$showcalendar = true;
			break;
		}
	}

	if ($showcalendar) {

		// bbuser has access to a calendar, so lets process it
		if ($bbuserinfo['startofweek'] > 7 || $bbuserinfo['startofweek'] < 1) {
			$bbuserinfo['startofweek'] = $calendarinfo['startofweek'];
		}

		$today = getdate(TIMENOW - $vboptions['hourdiff']);
		$today['month'] = $vbphrase[strtolower($today['month'])];

		$usertoday = array(
			'firstday' => gmdate('w', gmmktime(0, 0, 0, $today['mon'], 1, $today['year'])),
			'month' => $today['mon'], 'year' => $today['year']
		);

		$getoptions = convert_bits_to_array($calendarinfo['options'], $_CALENDAROPTIONS);
		$calendarinfo = array_merge($calendarinfo, $getoptions);
		$calendarinfo['showweekends'] = iif($vbindex['options'] & VBI_SHOWWEEKENDS, 1, 0);

		// events
		//$eventarray = unserialize($datastore['vbi_eventcache']);
		//$eventcache = $eventarray["$calendarinfo[calendarid]"];
		//unset($eventarray);echo '<pre>';print_r($eventcache);exit;
		$erange = array(
			'frommonth' => $today['mon'],
			'fromyear'  => $today['year'],
			'nextmonth' => $today['mon'],
			'nextyear'  => $today['year']
		);
		$eventcache = cache_events($erange);

		if (is_array($eventcache)) {
			// only process events if we have an array of them
			$i = 0;
			foreach($eventcache AS $event) {
				if (!($bbuserinfo['calendarpermissions']["$calendarinfo[calendarid]"] & CANVIEWOTHERSEVENT) && $bbuserinfo['userid'] != $event['userid']) {
					unset($eventcache["$i"]);
				}
				$i++;
			}
		}

		$calendarbits = str_replace('calendar'.SCRIPT_EXTENSION, "$vboptions[bburl]/calendar".SCRIPT_EXTENSION, construct_calendar_output($today, $usertoday, $calendarinfo, 0));
		eval("\$side[calendar] = \"".fetch_template('vbindex_calendar')."\";");
	} else {
		$side['calendar'] = '';
	}
}

// #################### PROCESS TODAYS BIRTHDAYS #######################
if ($vbindex['options'] & VBI_SHOWBIRTHDAYS) {

	// birthdays
	$birthdays = unserialize($datastore['birthdaycache']);
	$birthdaydate = vbdate('Y-m-d', TIMENOW);

	if (!is_array($birthdays) || ($birthdaydate != $birthdays['day1'] && $birthdaydate != $birthdays['day2'])) {
		// update the cache
		require_once('./includes/functions_databuild'.SCRIPT_EXTENSION);
		$birthdays = build_birthdays();
		DEVDEBUG('Updated Birthday Cache');
	}

	if ($birthdays['day1'] == $birthdaydate && !empty($birthdays['users1'])) {
		// process day1
		$home['birthdaybit'] = str_replace('member'.SCRIPT_EXTENSION.'?u', "$vboptions[bburl]/member".SCRIPT_EXTENSION.'?userid', $birthdays['users1']);
		eval("\$side[birthdays] = \"".fetch_template('vbindex_birthdays')."\";");
	} elseif ($birthdays['day2'] == $birthdaydate && !empty($birthdays['users2'])) {
		// process day2
		$home['birthdaybit'] = str_replace('member'.SCRIPT_EXTENSION.'?u', "$vboptions[bburl]/member".SCRIPT_EXTENSION.'?userid', $birthdays['users2']);
		eval("\$side[birthdays] = \"".fetch_template('vbindex_birthdays')."\";");
	} else {
		$side['birthdays'] = '';
	}
	unset($birthdays, $birthdaydate);
}

// ######################## PROCESS SHOUTBOX ############################
if ($vbindex['options'] & VBI_SHOWSHOUTBOX) {

	if ($_REQUEST['action'] == 'shoutbox') {
		$pagenumber = intval($_REQUEST['pagenumber']);
		$perpage = intval($_REQUEST['perpage']);
		$mainpage = true;

		$total = $DB_site->query_first("## COUNT SHOUTS ##
										SELECT COUNT(*) AS shouts
										FROM ".TABLE_PREFIX."vbindex_shoutbox
										WHERE 1 = 1
										$globalshoutignore
	  									$shoutignore");

		// set defaults
		sanitize_pageresults($total['shouts'], $pagenumber, $perpage, 100, 25);

		$limitlower = ($pagenumber - 1) * $perpage+1;
		$limitupper = ($pagenumber) * $perpage;
		$counter = 0;

		if ($limitupper > $total['shouts']) {
			$limitupper = $total['shouts'];
			if ($limitlower > $total['shouts']) {
				$limitlower = $total['shouts']-$perpage;
			}
		}
		if ($limitlower <= 0) {
			$limitlower = 1;
		}

		// limit for mysql query when full page is selected
		$limit = ($limitlower - 1).", $perpage";


		$navarray = array(
			'' => 'Shoutbox'
		);
		$navbits = construct_navbits($navarray);
		$pagenav = str_replace('&amp;page=', '&amp;pagenumber=', construct_page_nav($total['shouts'], "$_SERVER[PHP_SELF]?$session[sessionurl]action=shoutbox&amp;perpage=$perpage"));
	} else {
		// limit for mysql query when only side box is show
		$limit = $vbindex['maxshouts'];
		$pagenav = '';
	}

	$getshouts = $DB_site->query("	## GET SHOUTS ##
	  								SELECT user.username, user.userid,
	  								shoutbox.shoutid, shoutbox.shout, shoutbox.dateline,
	  								IF(user.displaygroupid = 0, user.usergroupid, user.displaygroupid) AS displaygroupid
	  								FROM ".TABLE_PREFIX."vbindex_shoutbox AS shoutbox
	  								LEFT JOIN ".TABLE_PREFIX."user AS user USING (userid)
	  								WHERE 1 = 1
	  								$globalshoutignore
	  								$shoutignore
	  								ORDER BY shoutbox.dateline DESC
	  								LIMIT $limit");

	$i = 0;
	while ($shout = $DB_site->fetch_array($getshouts)) {
		$i++;
		$shouts = true;
		$shout['shout'] = fetch_censored_text(parse_bbcode($shout['shout']));
		// lets word wrap the shouts to prevent an expanded column
		if (!empty($vbindex['shout_wrap_length'])) {
			$shout['shout'] = preg_replace("#([^\n\r ?&./<>\"\\-\[\]]{".$vbindex['shout_wrap_length'].'})#i', "\\1  ", $shout['shout']);
		}
		$shout['musername'] = fetch_musername($shout);
		$shout['date'] = vbdate($vboptions['dateformat'], $shout['dateline'], 1);
	    $shout['time'] = vbdate($vboptions['timeformat'], $shout['dateline']);
		exec_switch_bg();

		if (in_array($bbuserinfo['usergroupid'], $vbindex['global_shout_delete']) || (($vbindex['options'] & VBI_ALLOWSHOUTDELETE) && $shout['userid'] == $bbuserinfo['userid'])) {
			$shoutdelete = true;
		} else {
			$shoutdelete = false;
		}

		// prevent the side box showing more than the defined number of shouts
		// if we are viewing the full page one
		if ($i <= $vbindex['maxshouts']) {

			if ($vbindex['options'] & VBI_ASCSHOUT) {
				// asc order
				eval("\$sbox[$shout[timestamp]] .= \"".fetch_template('vbindex_shoutboxbit')."\";");
			} else {
				// default desc order
				eval("\$shoutbox[shoutbits] .= \"".fetch_template('vbindex_shoutboxbit')."\";");
			}
		}

		if ($_REQUEST['action'] == 'shoutbox') {
			eval("\$shoutbox[main_shoutbits] .= \"".fetch_template('vbindex_shoutboxbit')."\";");
		}
	}

	if (($vbindex['options'] & VBI_ASCSHOUT) && is_array($sbox)) {
		// asc sort
		krsort($sbox);
		foreach($sbox AS $sarea) {
			$shoutbox['shoutbits'] .= $sarea;
		}
	}

	if ($bbuserinfo['userid'] || ($vbindex['options'] & VBI_DISABLEDSHOUT)) {
		exec_switch_bg();
		if (!$bbuserinfo['userid']) {
			$shoutbox['postdisabled'] = true;
		} else {
			$shoutbox['postdisabled'] = false;
		}
		$shoutbox['postshout'] = true;
	} else {
		$shoutbox['postshout'] = false;
	}

	if ($shouts || $shoutbox['postshout']) {
		if ($_REQUEST['action'] == 'shoutbox') {
			$main = true;
			eval("\$home[news] .= \"".fetch_template('vbindex_shoutbox')."\";");
			$pagenav = '';
			$main = false;
			eval("\$side[shoutbox] .= \"".fetch_template('vbindex_shoutbox')."\";");
		} else {
			$main = false;
			eval("\$side[shoutbox] .= \"".fetch_template('vbindex_shoutbox')."\";");
		}
	}
	// memory saving
	unset($shout, $sbox, $sarea);
	$DB_site->free_result($getshouts);
}

// #############################################################################
// unset vB's default template vars, do this at the end so any standard error
// or redirect calls still have the vars for use in the templates.
unset($header, $footer, $navbar, $headinclude);

// ####################### GENERATE SIDE BAR ##########################
// ## CUSTOM BLOCKS
if (!empty($vbindex['customboxes'])) {
	for($box = 1; $box <= $vbindex['customboxes']; $box++) {
		$collapseobj_vbindex_customblock = $vbcollapse['collapseobj_vbindex_customblock'.$box];
		$collapseimg_vbindex_customblock = $vbcollapse['collapseimg_vbindex_customblock'.$box];

		if (!is_demo_mode()) {
			@ob_start();
			eval(fetch_template('vbindex_customblock_php', -1, 0));
			// this is the var to use in the template for the dynamic content
			$contvar = 'box'.$box.'_php';
			$$contvar = @ob_get_contents();
			@ob_end_clean();
		}

		eval("\$side[customblock_".$box."] .= \"".fetch_template("vbindex_customblock_{$box}")."\";");
	}
}

// ## LEFT
if (($vbindex['options'] & VBI_BOTH_COLS) || ($vbindex['options'] & VBI_LEFT_COL)) {
	for($box = 1; $box < ($vbindex['totalboxes'] + 1 + $vbindex['customboxes']); $box++) {
		$leftright = $vbindex["left_{$box}"];
		$home['left']["$box"] = $side["$leftright"];
	}
	foreach($home['left'] AS $box => $content) {
		$home['leftblocks'] .= $content;
	}
}

// ## RIGHT
if (($vbindex['options'] & VBI_BOTH_COLS) || ($vbindex['options'] & VBI_RIGHT_COL)) {
	for($box = 1; $box < ($vbindex['totalboxes'] + 1 + $vbindex['customboxes']); $box++) {
		$leftright = $vbindex["right_{$box}"];
		$home['right']["$box"] = $side["$leftright"];
	}
	foreach($home['right'] AS $box => $content) {
		$home['rightblocks'] .= $content;
	}
}

if ($vbindex['options'] & VBI_BOTH_COLS) {
	$currentside = 'left';
	eval("\$home[leftside] = \"".fetch_template('vbindex_side')."\";");
	$currentside = 'right';
	eval("\$home[rightside] = \"".fetch_template('vbindex_side')."\";");
} elseif ($vbindex['options'] & VBI_LEFT_COL) {
	$currentside = 'left';
	eval("\$home[leftside] = \"".fetch_template('vbindex_side')."\";");
} elseif ($vbindex['options'] & VBI_RIGHT_COL) {
	$currentside = 'right';
	eval("\$home[rightside] = \"".fetch_template('vbindex_side')."\";");
}

// #################### EVAL GLOBAL TEMPLATES #######################
$vbphrase['copyright'] = construct_phrase($vbphrase['vbi_copyright'], $vboptions['templateversion'], $vbindex['version']);
eval("\$home[footer] = \"".fetch_template('vbindex_footer')."\";");
$footer = &$home['footer'];
eval("\$home[header] = \"".fetch_template('vbindex_header')."\";");
$header = &$home['header'];
eval("\$headinclude = \"".fetch_template('vbindex_headinclude')."\";");
$home['headinclude'] = &$headinclude;

$home['footer'] = str_replace('cron'.SCRIPT_EXTENSION, "$vboptions[bburl]/cron".SCRIPT_EXTENSION, $home['footer']);
// ## PM POPUP
if ($shownewpm) {
	eval("\$home[footer] = \"".fetch_template('vbindex_pm_popup_script')."\";");
}

$navbits = array('', $vboptions['hometitle']);
$navbits = construct_navbits($navbits);
eval("\$home[navbar] = \"".fetch_template('vbindex_navbar')."\";");

eval($datastore['vbindex_config']);

if (trim($vboptions['templateversion']) != '3.0.0 Gamma') {
	$headinclude = str_replace('link rel="stylesheet" type="text/css" href="clientscript/vbulletin_css', 'link rel="stylesheet" type="text/css" href="'.$vboptions['bburl'].'/clientscript/vbulletin_css', $headinclude);
}

// #################### SELECT OUTPUT TEMPLATE #######################
if (!EXTRA_PAGE) {
	eval("print_output(\"".fetch_template('VBINDEX')."\");");
} elseif (!empty($_REQUEST['page'])) {
	eval("\$home[content] = \"".fetch_template("vbindex_extra_{$_REQUEST[page]}")."\";");
	eval("print_output(\"".fetch_template('VBINDEX_SHELL')."\");");
} elseif (!empty($_REQUEST['section'])) {
	// we're using a PHP special extra page, so lets parse the PHP Include
	if (!is_demo_mode()) {
		@ob_start();
		eval(fetch_template("vbindex_extra_php_{$_REQUEST[section]}", -1, 0));
		// this is the var to use in the template for the dynamic content
		$php_output = @ob_get_contents();
		@ob_end_clean();

	}
	eval("\$home[content] = \"".fetch_template("vbindex_extra_{$_REQUEST[section]}")."\";");
	eval("print_output(\"".fetch_template('VBINDEX_SHELL')."\");");
}

?>
(Continued Below)
Reply With Quote
  #2049  
Old 12-02-2004, 06:30 PM
TheEnd's Avatar
TheEnd TheEnd is offline
 
Join Date: Mar 2003
Posts: 120
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

vbioptions2.php
HTML Code:
<?php

// +--------------------------------------------------------------------+
// | vBindex Version 3.0.0 Release Candidate 5 (UK English)
// | Copyright (C) MMII - MMIV Winter Systems
// +--------------------------------------------------------------------+
// | vbioptions.php, v3.0.4
// |--------------------------------------------------------------------+
// | Support will only be given at Core Forums (http://www.coreforums.net)
// | to those who have confirmed they are licenced, or at vBulletin.org
// | via the vBindex 3.x thread listed bellow.
// +--------------------------------------------------------------------+
// | v1.x Release(s) by el3m3nt:
// |	(https://vborg.vbsupport.ru/showthread.php?threadid=37021)
// | v2.x Release(s) by NTLDR (aka Eldorado):
// | 	(https://vborg.vbsupport.ru/showthread.php?threadid=41916)
// | v3.x Release(s) by NTLDR (aka Eldorado):
// |    (http://www.coreforums.net/forums/showthread.core?threadid=93)
// |	(https://vborg.vbsupport.ru/showthread.php?threadid=59524)
// +--------------------------------------------------------------------+

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

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


// #################### PRE-CACHE TEMPLATES AND DATA ######################
$phrasegroups = array(
	'vbindex_cp'
);
$specialtemplates = array(
	'vbindex_setting'
);

// ########################## REQUIRE BACK-END ############################
if (@file_exists('../vbiconfig.php')) {
	require_once('../vbiconfig.php');
	$configpath = '../vbiconfig.php';
} elseif (@file_exists('../../vbiconfig.php')) {
	$configpath = '../../vbiconfig.php';
	require_once('../../vbiconfig.php');
}

if (!defined('SCRIPT_EXTENSION')) {
	// vbiconfig.php couldn't be found, assume .php extension
	define('SCRIPT_EXTENSION', '.php');
}

require_once('./global'.SCRIPT_EXTENSION);

// ############################# LOG ACTION ###############################
log_admin_action();

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

print_cp_header($vbphrase['vbindex_options']);

if (empty($_REQUEST['do'])) {
	$_REQUEST['do'] = 'edit';
}

$vbindex = unserialize($datastore['vbindex_setting']);

// ###################### Start edit #######################
if ($_REQUEST['do'] == 'edit') {

	print_form_header('vbioptions', 'update');

	$coloptions = array(
		'0'  => $vbphrase['neither'],
		'1'  => $vbphrase['left'],
		'2 ' => $vbphrase['right'],
		'64' => $vbphrase['both']
	);
	if ($vbindex['options'] & 1) {
		$col = 1;
	} elseif ($vbindex['options'] & 2) {
		$col = 2;
	} elseif ($vbindex['options'] & 64) {
		$col = 64;
	}
	$colnames = array(
		'0'				=> $vbphrase['leave_unused'],
		'latestthreads' => $vbphrase['latest_threads'],
		'onlineusers' 	=> $vbphrase['online_users'],
		'shoutbox' 		=> $vbphrase['shoutbox'],
		'calendar' 		=> $vbphrase['calendar'],
		'birthdays'		=> $vbphrase['birthdays'],
		'poll'			=> $vbphrase['poll']
	);
	for($box = 1; $box <= $vbindex['customboxes']; $box++) {
		$colnames["customblock_$box"] = construct_phrase($vbphrase['custom_block_x'], $box);
	}

	$totalboxes = 6;

	// side options
	print_table_header($vbphrase['side_columns']);
	print_select_row($vbphrase['columns_to_show'], 'vbi_bit[cols]', $coloptions, $col);
	print_input_row($vbphrase['number_of_custom_blocks'], 'vbi_int[customboxes]', $vbindex['customboxes'], 1, 2);
	construct_hidden_code('vbi[totalboxes]', $totalboxes);
	// left
	for($box = 1; $box < ($totalboxes + 1 + $vbindex['customboxes']); $box++) {
		print_select_row(construct_phrase($vbphrase['x_box_x'], $vbphrase['left'], $box), "vbi[left_{$box}]", $colnames, $vbindex["left_{$box}"]);
	}
	// right
	for($box = 1; $box < ($totalboxes + 1 + $vbindex['customboxes']); $box++) {
		print_select_row(construct_phrase($vbphrase['x_box_x'], $vbphrase['right'], $box), "vbi[right_{$box}]", $colnames, $vbindex["right_{$box}"]);
	}
	print_table_break();

	// news
	print_table_header($vbphrase['news']);
	print_checkbox_row($vbphrase['news_enabled'], 'vbi_bit[shownews]', iif($vbindex['options'] & 4, 1, 0), 4);
	print_checkbox_row($vbphrase['enable_vbwar'], 'vbi_bit[vbwar]', iif($vbindex['options'] & 16777216, 1, 0), 16777216);
	print_checkbox_row($vbphrase['news_posters_avatar'], 'vbi_bit[shownewsavatar]', iif($vbindex['options'] & 8, 1, 0), 8);
	print_input_row($vbphrase['news_forumid'], 'vbi[newsfid]', $vbindex['newsfid']);
	print_input_row($vbphrase['news_posts_to_show'], 'vbi_int[newsposts]', $vbindex['newsposts']);
	print_input_row($vbphrase['news_chars_to_show'], 'vbi_int[newscharlimit]', $vbindex['newscharlimit']);
	print_checkbox_row($vbphrase['show_subscribed_icon'], 'vbi_bit[subnews]', iif($vbindex['options'] & 256, 1, 0), 256);
	print_checkbox_row($vbphrase['show_sticky_news_threads'], 'vbi_bit[stickynews]', iif($vbindex['options'] & 1048576, 1, 0), 1048576);
	print_table_break();

	// latest threads
	print_table_header($vbphrase['latest_threads']);
	print_checkbox_row($vbphrase['latest_threads_enabled'], 'vbi_bit[showthreads]', iif($vbindex['options'] & 16, 1, 0), 16);
	print_checkbox_row($vbphrase['enable_center_threads'], 'vbi_bit[showcenterthreads]', iif($vbindex['options'] & 134217728, 1, 0), 134217728);
	print_input_row($vbphrase['recent_threads_to_show'], 'vbi_int[maxlthreads]', $vbindex['maxlthreads']);
	print_checkbox_row($vbphrase['show_subscribed_icon'], 'vbi_bit[subthreads]', iif($vbindex['options'] & 512, 1, 0), 512);
	print_table_break();

	// poll
	print_table_header($vbphrase['poll']);
	print_checkbox_row($vbphrase['poll_enabled'], 'vbi_bit[pollnews]', iif($vbindex['options'] & 65536, 1, 0), 65536);
	print_checkbox_row($vbphrase['random_poll_enabled'], 'vbi_bit[randompoll]', iif($vbindex['options'] & 131072, 1, 0), 131072);
	print_input_row($vbphrase['poll_forumid'], 'vbi[pollsforumid]', $vbindex['pollsforumid']);
	print_table_break();

	// shoutbox
	print_table_header($vbphrase['shoutbox']);
	print_checkbox_row($vbphrase['shoutbox_enabled'], 'vbi_bit[showshoutbox]', iif($vbindex['options'] & 32, 1, 0), 32);
	print_input_row($vbphrase['shouts_to_show'], 'vbi_int[maxshouts]', $vbindex['maxshouts']);
	print_checkbox_row($vbphrase['asc_order_shoutbox'], 'vbi_bit[ascshout]', iif($vbindex['options'] & 8388608, 1, 0), 8388608);
	print_input_row($vbphrase['shout_wrap_length'], 'vbi_int[shout_wrap_length]', $vbindex['shout_wrap_length']);
	print_input_row($vbphrase['max_shout_length'], 'vbi_int[max_shout_length]', $vbindex['max_shout_length']);
	print_checkbox_row($vbphrase['scrollable_shoutbox'], 'vbi_bit[shoutbox_type]', iif($vbindex['options'] & 4096, 1, 0), 4096);
	print_checkbox_row($vbphrase['shoutbox_showdisabled'], 'vbi_bit[shoutbox_postdisabled]', iif($vbindex['options'] & 262144, 1, 0), 262144);
	print_checkbox_row($vbphrase['shout_deletion'], 'vbi_bit[member_shout_delete]', iif($vbindex['options'] & 8192, 1, 0), 8192);
	// implode the global shout deletion groups into $vbindex['membergroupids'] so that print_memebergroup_row will check the usergroup boxes
	if (is_array($vbindex['global_shout_delete'])) {
		$vbindex['membergroupids'] = implode(',', $vbindex['global_shout_delete']);
	} else {
		$vbindex['membergroupids'] = array(0);
	}
	print_membergroup_row($vbphrase['global_shout_delete'], 'vbi_ug[global_shout_delete]', 0, $vbindex);
	// add 0 to the above array so that the foreach in the update allways has an array to create
	construct_hidden_code('vbi_ug[global_shout_delete][]', '0');
	print_table_break();

	// welcome box
	print_table_header($vbphrase['welcome_box']);
	print_checkbox_row($vbphrase['enable_new_posts'],'vbi_bit[shownewposts]', iif($vbindex['options'] & 524288, 1, 0), 524288);
	print_checkbox_row($vbphrase['show_users_avatar'], 'vbi_bit[showwavatar]', iif($vbindex['options'] & 2048, 1, 0), 2048);
	print_input_row($vbphrase['default_guest_avatar'], 'vbi[guestavatar]', $vbindex['guestavatar']);
	print_input_row($vbphrase['default_user_avatar'], 'vbi[useravatar]', $vbindex['useravatar']);
	print_checkbox_row($vbphrase['new_subscribed_threads'], 'vbi_bit[subnewposts]', iif($vbindex['options'] & 1024, 1, 0), 1024);
	print_table_break();

	// calendar
	print_table_header($vbphrase['calendar']);
	print_checkbox_row($vbphrase['enable_calendar'], 'vbi_bit[showcalendar]', iif($vbindex['options'] & 16384, 1, 0), 16384);
	print_checkbox_row($vbphrase['enable_todays_birthdays'], 'vbi_bit[showbirthdays]', iif($vbindex['options'] & 32768, 1, 0), 32768);
	print_checkbox_row($vbphrase['show_weekends'], 'vbi_bit[showweekends]', iif($vbindex['options'] & 33554432, 1, 0), 33554432);
	print_table_break();

	// wol
	print_table_header($vbphrase['whos_online']);
	print_checkbox_row($vbphrase['enable_online_users'], 'vbi_bit[wol]', iif($vbindex['options'] & 128, 1, 0), 128);
	print_checkbox_row($vbphrase['enable_online_today'], 'vbi_bit[24wol]', iif($vbindex['options'] & 2097152, 1, 0), 2097152);
	print_checkbox_row($vbphrase['enable_online_today_usernames'], 'vbi_bit[24woluser]', iif($vbindex['options'] & 4194304, 1, 0), 4194304);
	print_table_break();

	// misc
	print_table_header($vbphrase['misc']);
	print_input_row($vbphrase['exclude_forumids'], 'vbi[limitfids]', $vbindex['limitfids']);
	print_table_break();

	// save options row
	print_submit_row($vbphrase['save']);
}

// ###################### Start insert #######################
if ($_POST['do'] == 'update') {

	$_vbindex = array();
	$_vbindex['options'] = 0;

	// process bitfield options
	foreach($_POST['vbi_bit'] AS $value) {
		$_vbindex['options'] += intval($value);
	}
	unset($key, $value);

	// process int vals
	foreach($_POST['vbi_int'] AS $key => $value) {
		$_vbindex["$key"] = intval($value);
	}
	unset($key, $value);

	// process string vals
	foreach($_POST['vbi'] AS $key => $value) {
		$_vbindex["$key"] = trim($value);
	}
	unset($key, $value);

	// process usergroup options
	$is_array = false;
	foreach($_POST['vbi_ug'] AS $key => $array) {
		foreach($array AS $value) {
			if (intval($value) != 0) {
				$_vbindex["$key"][] = intval($value);
				$is_array = true;
			} elseif (!$is_array) {
				$_vbindex["$key"] = array();
			}
		}
	}
	unset($key, $value, $array, $is_array);

	$DB_site->query("UPDATE ".TABLE_PREFIX."datastore SET data = '".addslashes(serialize($_vbindex))."' WHERE title = 'vbindex_setting'");

	define('CP_REDIRECT', 'vbioptions'.SCRIPT_EXTENSION.'?do=edit');
	print_stop_message('vbindex_settings_saved');
	if ($debug) {
		echo '<pre>';
		print_r($_vbindex);
		echo '</pre>';
	}

}

print_cp_footer();

?>
Reply With Quote
  #2050  
Old 12-03-2004, 08:24 PM
dreck's Avatar
dreck dreck is offline
 
Join Date: Nov 2004
Location: Pickens SC
Posts: 182
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I installed this great hack earlier today. Nice work, thanks!

I clicked the install button.

I have a few very minor things that I would like to fix:

1.) From the admin cpanel the Forum home page link at top of page has been changed. Which the link is from my computer, I just not sure which template to edit & where? or why?
Code:
file:///C|/DOCUME%7E1/64/LOCALS%7E1/index.php?
2.) My avatar doesnt show up on the welcome screen? My path to the image is:
Any help with these minor things would be great!

Great stuff!!!!

Thanks, dreck
Reply With Quote
  #2051  
Old 12-04-2004, 03:47 AM
flstreetscene flstreetscene is offline
 
Join Date: Sep 2003
Posts: 68
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Plz someone help me. :disappointed:

I've been at this basic problem for a while now...

Most links on my front page (navbar/login) is missing the /forums part of the url and therefore dont work. What do I need to edit for this?

Thank you.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 12:15 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.07004 seconds
  • Memory Usage 2,460KB
  • Queries Executed 26 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (3)bbcode_code
  • (2)bbcode_html
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (4)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete