You have a few things missing, I haven't really read over the rest of the script but try adding the code in red to see what happens (the $today variable is very important):
Code:
<?php
// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
// #################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT', 'clubslist'); // change this depending on your filename
// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(
'holiday'
);
// get special data templates from the datastore
$specialtemplates = array(
'birthdaycache',
'eventcache',
);
// pre-cache templates used by all actions
$globaltemplates = array(
'navigation',
'forumhome_event',
'forumhome_birthdaybit'
);
// pre-cache templates used by specific actions
$actiontemplates = array(
);
// ######################### REQUIRE BACK-END ############################
require_once('./global.php');
// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################
$navbits = array();
$navbits[$parent] = 'Club Listings';
$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
$today = vbdate('Y-m-d', TIMENOW, false, false);
// ### TODAY'S BIRTHDAYS #################################################
if ($vbulletin->options['showbirthdays'])
{
if (!is_array($vbulletin->birthdaycache)
OR ($today != $vbulletin->birthdaycache['day1'] AND $today !=
$vbulletin->birthdaycache['day2'])
OR !is_array($vbulletin->birthdaycache['users1'])
)
{
// Need to update!
require_once(DIR . '/includes/functions_databuild.php');
$birthdaystore = build_birthdays();
DEVDEBUG('Updated Birthdays');
}
else
{
$birthdaystore = $vbulletin->birthdaycache;
}
switch ($today)
{
case $birthdaystore['day1']:
$birthdaysarray = $birthdaystore['users1'];
break;
case $birthdaystore['day2']:
$birthdaysarray = $birthdaystore['users2'];
break;
default:
$birthdaysarray = array();
}
// memory saving
unset($birthdaystore);
$birthdaybits = array();
foreach ($birthdaysarray AS $birthday)
{
eval('$birthdaybits[] = "' . fetch_template('forumhome_birthdaybit')
. '";');
}
$birthdays = implode(', ', $birthdaybits);
if ($stylevar['dirmark'])
{
$birthdays = str_replace('<!--rlm-->', $stylevar['dirmark'],
$birthdays);
}
$show['birthdays'] = iif ($birthdays, true, false);
}
else
{
$show['birthdays'] = false;
}
// ### TODAY'S EVENTS #################################################
if ($vbulletin->options['showevents'])
{
require_once(DIR . '/includes/functions_calendar.php');
$future = gmdate('n-j-Y' , TIMENOW + 86400 + 86400 * $vbulletin->options
['showevents']);
if (!is_array($vbulletin->eventcache) OR $future != $vbulletin->eventcache
['date'])
{
// Need to update!
$eventstore = build_events();
DEVDEBUG('Updated Events');
}
else
{
$eventstore = $vbulletin->eventcache;
}
unset($eventstore['date']);
$events = array();
$eventcount = 0;
$holiday_calendarid = 0;
foreach ($eventstore AS $eventid => $eventinfo)
{
$offset = $eventinfo['dst'] ? $vbulletin->userinfo['timezoneoffset']
: $vbulletin->userinfo['tzoffset'];
$eventstore["$eventid"]['dateline_from_user'] = $eventinfo
['dateline_from_user'] = $eventinfo['dateline_from'] + $offset * 3600;
$eventstore["$eventid"]['dateline_to_user'] = $eventinfo
['dateline_to_user'] = $eventinfo['dateline_to'] + $offset * 3600;
$gettime = TIMENOW - $vbulletin->options['hourdiff'];
$iterations = 0;
$todaydate = getdate($gettime);
if (!$eventinfo['singleday'] AND !$eventinfo['recurring'] AND
$eventinfo['dateline_from_user'] < gmmktime(0, 0, 0, $todaydate['mon'], $todaydate
['mday'], $todaydate['year']))
{
$sub = -3;
}
else if ($eventinfo['holidayid'])
{
$sub = -2;
}
else if ($eventinfo['singleday'])
{
$sub = -1;
}
else
{
$sub = $eventinfo['dateline_from_user'] - (86400 * (intval
($eventinfo['dateline_from_user'] / 86400)));
}
if ($vbulletin->userinfo['calendarpermissions']["$eventinfo
[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar'] OR
($eventinfo['holidayid'] AND $vbulletin->options['showholidays']))
{
if ($eventinfo['holidayid'] AND $vbulletin->options
['showholidays'])
{
if (!$holiday_calendarid)
{
$holiday_calendarid = -1;
if (is_array($eventinfo
['holiday_calendarids']))
{
foreach ($eventinfo
['holiday_calendarids'] AS $potential_holiday_calendarid)
{
if ($vbulletin->userinfo
['calendarpermissions']["$potential_holiday_calendarid"] & $vbulletin->bf_ugp_calendarpermissions
['canviewcalendar'])
{
$holiday_calendarid =
$potential_holiday_calendarid;
break;
}
}
}
}
if ($holiday_calendarid < 0)
{
continue;
}
$eventstore["$eventid"]['calendarid'] = $holiday_calendarid;
$eventinfo['calendarid'] = $holiday_calendarid;
}
if ($eventinfo['userid'] == $vbulletin->userinfo['userid'] OR
$vbulletin->userinfo['calendarpermissions']["$eventinfo[calendarid]"] & $vbulletin-
>bf_ugp_calendarpermissions['canviewothersevent'] OR ($eventinfo['holidayid'] AND
$vbulletin->options['showholidays']))
{
if (!$eventinfo['recurring'] AND !$vbulletin->options['showeventtype'] AND !
$eventinfo['singleday'] AND cache_event_info
($eventinfo, $todaydate['mon'], $todaydate['mday'], $todaydate['year']))
{
$events["$eventid"][] = $gettime . "_$sub";
}
else
{
while ($iterations < $vbulletin->options
['showevents'])
{
$addcache = false;
$todaydate = getdate($gettime);
if ($eventinfo['holidayid'] AND
$eventinfo['recurring'] == 6)
{
if ($eventinfo['recuroption']
== "$todaydate[mon]|$todaydate[mday]")
{
$addcache = true;
}
}
else if (cache_event_info($eventinfo,
$todaydate['mon'], $todaydate['mday'], $todaydate['year']))
{
$addcache = true;
}
if ($addcache)
{
if (!$vbulletin->options
['showeventtype'])
{
$events["$eventid"][]
= $gettime . "_$sub";
}
else
{
$events["$gettime"][]
= $eventid;
}
$eventcount++;
}
$iterations++;
$gettime += 86400;
}
}
}
}
}
if (!empty($events))
{
if ($vbulletin->options['showeventtype'])
{
ksort($events, SORT_NUMERIC);
}
else
{
function groupbyevent($a, $b)
{
if ($a[0] == $b[0])
{
return 0;
}
else
{
$values1 = explode('_', $a[0]);
$values2 = explode('_', $b[0]);
if ($values1[0] != $values2[0])
{
return ($values1[0] < $values2[0]) ?
-1 : 1;
}
else
{
// Same day events. Check the event start time to order them properly
(compare number of seconds from 00:00)
return ($values1[1] < $values2[1]) ?
-1 : 1;
}
}
}
uasort($events, 'groupbyevent');
foreach($events AS $eventid => $times)
{
foreach ($times AS $key => $time)
{
$events["$eventid"]["$key"] = intval($time);
}
}
}
$upcomingevents = '';
foreach($events AS $index => $value)
{
$pastevent = 0;
$pastcount = 0;
$comma = $eventdates = $daysevents = '';
if (!$vbulletin->options['showeventtype'])
{ // Group by Event // $index = $eventid
$eventinfo = $eventstore["$index"];
if (empty($eventinfo['recurring']) AND empty
($eventinfo['singleday']))
{
$fromdate = vbdate($vbulletin->options
['dateformat'], $eventinfo['dateline_from_user'], false, true, false, true);
$todate = vbdate($vbulletin->options
['dateformat'], $eventinfo['dateline_to_user'], false, true, false, true);
if ($fromdate != $todate)
{
$eventdates = construct_phrase
($vbphrase['event_x_to_y'], $fromdate, $todate);
}
else
{
$eventdates = vbdate($vbulletin->options['dateformat'], $eventinfo
['dateline_from_user'], false, true, false, true);
}
$day = vbdate('Y-n-j', $eventinfo
['dateline_from_user'], false, false);
}
else
{
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($vbulletin->options
['dateformat'], $pastevent, false, true, false));
}
$pastcount = 0;
$pastevent = $dateline;
}
if (!$day)
{
$day = vbdate('Y-n-j',
$dateline, false, false, false);
}
$eventdates .= $comma . vbdate
($vbulletin->options['dateformat'], $dateline, false, true, false);
$comma = ', ';
}
if ($pastcount)
{
$eventdates = construct_phrase
($vbphrase['event_x_to_y'], $eventdates, vbdate($vbulletin->options['dateformat'],
$pastevent, false, true, false));
}
}
if ($eventinfo['holidayid'])
{
$callink = '<a href="calendar.php?' .
$vbulletin->session->vars['sessionurl'] . "do=getinfo&day=$day&c=$eventinfo
[calendarid]\">" . $vbphrase['holiday' . $eventinfo['holidayid'] . '_title'] .
"</a>";
}
else
{
$callink = '<a href="calendar.php?' .
$vbulletin->session->vars['sessionurl'] . "do=getinfo&day=$day&e=$eventinfo
[eventid]&c=$eventinfo[calendarid]\">$eventinfo[title]</a>";
}
}
else
{ // Group by Date
$eventdate = vbdate($vbulletin->options
['dateformat'], $index, false, true, false);
$day = vbdate('Y-n-j', $index, false, false, false);
foreach($value AS $key => $eventid)
{
$eventinfo = $eventstore["$eventid"];
if ($eventinfo['holidayid'])
{
$daysevents .= $comma . '<a
href="calendar.php?' . $vbulletin->session->vars['sessionurl'] .
"do=getinfo&day=$day&c=$eventinfo[calendarid]\">" . $vbphrase['holiday' .
$eventinfo['holidayid'] . '_title'] . "</a>";
}
else
{
$daysevents .= $comma . '<a
href="calendar.php?' . $vbulletin->session->vars['sessionurl'] .
"do=getinfo&day=$day&e=$eventinfo[eventid]&c=$eventinfo[calendarid]
\">$eventinfo[title]</a>";
}
$comma = ', ';
}
}
($hook = vBulletinHook::fetch_hook('forumhome_event')) ?
eval($hook) : false;
eval('$upcomingevents .= "' . fetch_template
('forumhome_event') . '";');
}
// memory saving
unset($events, $eventstore);
}
$show['upcomingevents'] = iif ($upcomingevents, true, false);
$show['todaysevents'] = iif ($vbulletin->options['showevents'] == 1, true,
false);
}
else
{
$show['upcomingevents'] = false;
}
//var_dump($upcomingevents);
$show['latestalbums'] = true;
eval('print_output("' . fetch_template('navigation') . '");');
?>
Looks like you defined the $specialtemplates variable twice. That's not good for business