index-0-0-0-0-310-0.php locké=================================================*\
|| #################################################################### ||
|| # vBulletin 3.8.0 RC 1
|| # ---------------------------------------------------------------- # ||
|| # Copyright ©2000-2008 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 # ||
|| #################################################################### ||
\*======================================================================*/
global $_CALENDAROPTIONS,
$_CALENDARHOLIDAYS,
$months,
$days,
$period,
$reminder;
// Defined constants used for calendars
$_CALENDAROPTIONS = array(
'showbirthdays' => 1,
'showholidays' => 2,
'showweekends' => 4,
'allowhtml' => 8,
'allowbbcode' => 16,
'allowimgcode' => 32,
'allowsmilies' => 64,
'weekly' => 128,
'yearly' => 256,
'showupcoming' => 512, # Display upcoming events from this calendar on the front page
);
// Defined constants for pre-defined holidays
$_CALENDARHOLIDAYS = array(
'easter' => 1,
'good_friday' => 2,
'palm_sunday' => 4,
'ash_wednesday' => 8,
'pentecost' => 16,
'mardi_gras' => 32,
'corpus_christi' => 64,
);
$months = array(
1 => 'january',
2 => 'february',
3 => 'march',
4 => 'april',
5 => 'may',
6 => 'june',
7 => 'july',
8 => 'august',
9 => 'september',
10 => 'october',
11 => 'november',
12 => 'december'
);
$days = array(
1 => 'sunday',
2 => 'monday',
3 => 'tuesday',
4 => 'wednesday',
5 => 'thursday',
6 => 'friday',
7 => 'saturday'
);
$period = array(
1 => 'date_first',
'second',
'third',
'fourth',
'date_last'
);
$reminders = array(
'3600' => 'one_hour',
'7200' => 'two_hours',
'10800' => 'three_hours',
'14400' => 'four_hours',
'21600' => 'six_hours',
'28800' => 'eight_hours',
'43200' => 'twelve_hours',
'64800' => 'eighteen_hours',
'86400' => 'one_day',
'172800' => 'two_days',
'259200' => 'three_days',
);
// ###################### Start setdatetime #######################
function fetch_event_date_time($info)
{
global $timerange, $vbulletin, $vbphrase, $months, $days, $day, $month, $year, $holiday, $eventdate;
global $titlecolor, $date1, $date2, $time1, $time2, $recurcriteria, $allday, $show;
require_once(DIR . '/includes/functions_misc.php');
$daterange = '';
$recurcriteria = '';
$show['recuroption'] = false;
$titlecolor = 'alt1';
$info['title'] = htmlspecialchars_uni($info['title']);
if ($wordwrap != 0)
{
$info['title'] = fetch_word_wrapped_string($info['title']);
}
$info['event'] = iif(empty($info['event']), ' ', parse_calendar_bbcode($info['event'], $info['allowsmilies']));
if (!$info['recurring'] AND !$info['singleday'])
{
$daystamp = gmmktime(0, 0, 0, $month, $day, $year);
$eventfirstday = gmmktime(0, 0, 0, gmdate('n', $info['dateline_from_user']), gmdate('j', $info['dateline_from_user']), gmdate('Y', $info['dateline_from_user']));
$eventlastday = gmmktime(0, 0, 0, gmdate('n', $info['dateline_to_user']), gmdate('j', $info['dateline_to_user']), gmdate('Y', $info['dateline_to_user']));
if ($info['dateline_from'] == $daystamp)
{
if ($eventfirstday == $daystamp)
{
if ($eventfirstday != $eventlastday)
{
if (vbdate('g:ia', $info['dateline_from_user'], false, false) == '12:00am')
{
$allday = true;
}
else
{
$time2 = vbgmdate($vbulletin->options['timeformat'], gmmktime(0, 0, 0, $month, $day, $year));
}
}
}
}
else if ($eventlastday == $daystamp)
{
$time1 = gmdate($vbulletin->options['timeformat'], gmmktime(0, 0, 0, $month, $day, $year));
$time1 = vbgmdate($vbulletin->options['timeformat'], gmmktime(0, 0, 0, $month, $day, $year));
}
else // A day in the middle of a multi-day event so event covers 24 hours
{
$allday = true; // Used in conditional
}
}
if ($info['holidayid'])
{
$eventdate = vbgmdate($vbulletin->options['dateformat'], gmmktime(0, 0, 0, $month, $day, $year));
}
else if ($info['singleday'])
{
$eventdate = vbgmdate($vbulletin->options['dateformat'], $info['dateline_from']);
}
else
{
$date1 = vbgmdate($vbulletin->options['dateformat'], $info['dateline_from_user']);
$date2 = vbgmdate($vbulletin->options['dateformat'], $info['dateline_to_user']);
$time1 = vbgmdate($vbulletin->options['timeformat'], $info['dateline_from_user']);
$time2 = vbgmdate($vbulletin->options['timeformat'], $info['dateline_to_user']);
if ($info['recurring'])
{
$recurcriteria = fetch_event_criteria($info);
$show['recuroption'] = true;
}
else
{
$show['daterange'] = iif($date1 != $date2, true, false);
$eventdate = vbgmdate($vbulletin->options['dateformat'], $info['dateline_from_user']);
}
}
return $info;
}
// ##################### Start cache_events_day #######################
function cache_events_day($month, $day, $year)
{
global $eventcache, $vbulletin;
$eventarray = array();
if (!empty($eventcache['holiday1']))
{
if (!empty($eventcache['holiday1']["$month|$day"]))
{
foreach($eventcache['holiday1']["$month|$day"] AS $index => $event)
{
$eventarray[] =& $eventcache['holiday1']["$month|$day"]["$index"];
}
}
}
if (!empty($eventcache['holiday2']))
{
$dayofweek = gmdate('w', gmmktime(0, 0, 0, $month, $day, $year)) + 1;
if (!empty($eventcache['holiday2']["$dayofweek|$month"]))
{
foreach($eventcache['holiday2']["$dayofweek|$month"] AS $index => $event)
{
if (cache_event_info($event, $month, $day, $year))
{
$eventarray[] =& $eventcache['holiday2']["$dayofweek|$month"]["$index"];
}
}
}
}
if (!empty($eventcache['singleday']))
{
// Check for single day events occuring on this date
$dateline_from = gmmktime(0, 0, 0, $month, $day, $year);
if (!empty($eventcache['singleday']["$dateline_from"]))
{
foreach($eventcache['singleday']["$dateline_from"] AS $index => $event)
{
$eventarray[] =& $eventcache['singleday']["$dateline_from"]["$index"];
}
}
}
if (!empty($eventcache['ranged']))
{
// Check for ranged events ocurring on this date
$todaystart = gmmktime(0, 0, 0, $month, $day, $year);
if (!empty($eventcache['ranged']["$todaystart"]))
{
foreach($eventcache['ranged']["$todaystart"] AS $index => $event)
{
$eventarray[] =& $eventcache['ranged']["$todaystart"]["$index"];
}
}
}
if (!empty($eventcache['recurring']))
{
foreach ($eventcache['recurring'] AS $index => $event)
{
if (cache_event_info($event, $month, $day, $year))
{
$eventarray[] =& $eventcache['recurring']["$index"];
}
}
}
$sortarray = array();
$finalarray = array();
foreach($eventarray AS $key => $event)
{
if (!$event['singleday'] AND !$event['recurring'] AND $event['dateline_from_user'] < gmmktime(0, 0, 0, $month, $day, $year))
{
$sortarray["$key"] = -3;
}
else if ($event['holidayid'])
{
$sortarray["$key"] = -2;
}
else if ($event['singleday'])
{
$sortarray["$key"] = -1;
}
else
{
$sortarray["$key"] = $event['dateline_from_user'] - (86400 * (intval($event['dateline_from_user'] / 86400)));
}
}
asort($sortarray);
foreach($sortarray AS $key => $time)
{
$finalarray[] =& $eventarray["$key"];
}
return $finalarray;
}
// ###################### Start getcalendarbits #######################
function construct_calendar_output($today, $usertoday, $calendarinfo, $fullcalendar = 0, $weekrange = '')
{
global $birthdaycache, $eventcache, $vbulletin, $vbphrase, $stylevar, $show, $colspan, $days, $months;
$calendarid = $calendarinfo['calendarid'];
$month = $usertoday['month'];
$year = $usertoday['year'];
$calendardaybits = '';
$calendarweekbits = '';
if ($calendarinfo['showweekends'])
{
$weeklength = 7;
$colspan = 8;
$daywidth = '14%';
$linkwidth = '2%';
}
else
{
$weeklength = 5;
$colspan = 6;
$daywidth = '19%';
$linkwidth = '5%';
}
// set up the controls for this month
$displaymonth['starttime'] = gmmktime(12, 0, 0, $month, 1, $year);
$displaymonth['numdays'] = gmdate('t', $displaymonth['starttime']);
$displaymonth['month'] = gmdate('n', $displaymonth['starttime']);
$displaymonth['year'] = gmdate('Y', $displaymonth['starttime']);
$todaylink = "$today[year]-$today[mon]-$today[mday]";
// get an array of days starting with the user's chosen week start
static $userweek;
if (!is_array($userweek))
{
$userweek = array();
$curday = $vbulletin->userinfo['startofweek'];
while (sizeof($userweek) < $weeklength)
{
if (!$calendarinfo['showweekends'] AND ($curday == 1 OR $curday == 7))
{
$curday++;
}
else
{
$userweek[] = $curday++;
}
if ($curday > 7)
{
$curday = 1;
}
}
}
// wind back the start day so we have the days preceeding the current month that will be displayed
$startday = 1;
while ($null++ < 31)
{
if ((gmdate('w', gmmktime(0, 0, 0, $displaymonth['month'], $startday, $displaymonth['year'])) + 1) == $userweek[0])
{
break;
}
else
{
$startday--;
}
}
if ($fullcalendar)
{
$template = array(
'day' => 'calendar_monthly_day',
'day_other' => 'calendar_monthly_day_other',
'week' => 'calendar_monthly_week',
'header' => 'calendar_monthly_header'
);
}
else
{
if ($startday == 1 AND $show['yearlyview'])
{
// wind back the start day by a week so we always end up with 6 rows for neatness
$startday -= 7;
}
$template = array(
'day' => 'calendar_smallmonth_day',
'day_other' => 'calendar_smallmonth_day_other',
'week' => 'calendar_smallmonth_week',
'header' => 'calendar_smallmonth_header'
);
}
// fetch special holiday events
$eastercache = fetch_easter_array($usertoday['year']);
if (!$fullcalendar)
{
// set up which days will be shown
for ($i = 0; $i < 7; $i++)
{
$dayvarname = 'day' . ($i + 1);
if ($userweek["$i"])
{
$$dayvarname = $vbphrase[ $days[ $userweek[$i] ] . '_short'];
$show["$dayvarname"] = true;
}
else
{
$show["$dayvarname"] = false;
}
}
}
// now start creating the week rows
$rows = 0;
while (++$rows <= 6)
{
if (!$show['yearlyview'] AND $startday > $displaymonth['numdays'])
{
break;
}
// run through the user's week days
$calendardaybits = '';
foreach ($userweek AS $daycount => $curday)
{
$datestamp = gmmktime(0, 0, 0, $displaymonth['month'], $startday++, $displaymonth['year']);
$dayname = $vbphrase["$days[$curday]_abbr"];
$year = gmdate('Y', $datestamp);
$month = gmdate('n', $datestamp);
$day = gmdate('j', $datestamp);
$daylink = "$year-$month-$day";
if (!$daycount)
{
$firstweek = gmmktime(0, 0, 0, $month, $day, $year);
}
// is this day today?
$show['highlighttoday'] = iif($daylink == $todaylink, true, false);
// is this day in our desired month?
if ($month != $displaymonth['month'])
{
$daytemplatename =& $template['day_other'];
}
else
{
$daytemplatename =& $template['day'];
// is this day in our desired week?
if (!$fullcalendar)
{
if (is_array($weekrange) AND $datestamp >= $weekrange['start'] AND $datestamp <= $weekrange['end'])
{
$show['highlightweek'] = true;
}
else
{
$show['highlightweek'] = false;
}
}
$show['birthdaylink'] = false;
$show['daylink'] = false;
$show['holiday'] = false;
$showholiday = false;
$show['eventlink'] = false;
$userbdays = '';
$userevents = '';
$eventdesc = '';
$eventtotal = 0;
// get this day's birthdays
if ($calendarinfo['showbirthdays'] AND $fullcalendar AND is_array($birthdaycache["$month"]["$day"]))
{
unset($userday);
unset($age);
unset($birthdaydesc);
$bdaycount = 0;
foreach ($birthdaycache["$month"]["$day"] AS $index => $value)
{
$userday = explode('-', $value['birthday']);
$bdaycount++;
$username = $value['username'];
$userid = $value['userid'];
if ($year > $userday[2] AND $userday[2] != '0000' AND $value['showbirthday'] == 2)
{
$age = '(' . ($year - $userday[2]) . ')';
}
else
{
unset($age);
}
$birthdaydesc .= iif($birthdaydesc, ', ') . $value['username'];
eval ('$userbdays .= "' . fetch_template('calendar_monthly_birthday') . '";');
}
if ($bdaycount > $calendarinfo['birthdaycount'])
{
$show['birthdaylink'] = true;
}
}
// get this day's holidays
if (!empty($eastercache["$month-$day-$year"]))
{
$eventtotal++;
$event['title'] =& $eastercache["$month-$day-$year"]['title'];
$event['preview'] = htmlspecialchars_uni(fetch_trimmed_title($eastercache["$month-$day-$year"]['event'], 300));
$show['daylink'] = true;
$eventdesc .= iif($eventdesc, "\r\n") . $event['title'];
if ($fullcalendar)
{
$show['holiday'] = true;
$showholiday = true;
($hook = vBulletinHook::fetch_hook('calendar_displaymonth_event')) ? eval($hook) : false;
eval ('$userevents .= "' . fetch_template('calendar_monthly_event') . '";');
}
}
// get this day's events
if (is_array($eventcache))
{
$eventarray = cache_events_day($month, $day, $year);
foreach($eventarray AS $index => $event)
{
$eventtotal++;
$show['daylink'] = true;
$eventdesc .= iif($eventdesc, "\r\n") . htmlspecialchars_uni($event['title']);
if ($fullcalendar)
{
$eventid = $event['eventid'];
$show['holiday'] = iif($event['holidayid'], true, false);
if ($show['holiday'])
{
$showholiday = true;
}
$show['subscribed'] = iif($event['subscribed'], true, false);
if ($calendarinfo['cutoff'] AND strlen($event['title']) > $calendarinfo['cutoff'] AND !$event['holidayid'])
{
$event['title'] = substr($event['title'], 0, $calendarinfo['cutoff']) . ' (...)';
}
$event['title'] = htmlspecialchars_uni($event['title']);
($hook = vBulletinHook::fetch_hook('calendar_displaymonth_event')) ? eval($hook) : false;
eval ('$userevents .= "' . fetch_template('calendar_monthly_event') . '";');
}
}
if ($eventtotal > $calendarinfo['eventcount'])
{
$show['eventlink'] = true;
}
}
}
$show['holiday'] = $showholiday;
($hook = vBulletinHook::fetch_hook('calendar_displaymonth_daybit')) ? eval($hook) : false;
eval('$calendardaybits .= "' . fetch_template($daytemplatename) . '";');
// if no weekends, bump on the counter to compensate
if (!$calendarinfo['showweekends'] AND $daycount >= 4)
{
$startday += 2;
}
}
($hook = vBulletinHook::fetch_hook('calendar_displaymonth_weekbit')) ? eval($hook) : false;
eval('$calendarrowbits .= "' . fetch_template($template['week']) . '";');
}
$year = $displaymonth['year'];
$month = $displaymonth['month'];
$monthname = $vbphrase["$months[$month]"];
($hook = vBulletinHook::fetch_hook('calendar_displaymonth_month')) ? eval($hook) : false;
eval('$calendarrowbits = "' . fetch_template($template['header']) . '";');
return $calendarrowbits;
}
// ###################### Start iscalmoderator #######################
function can_moderate_calendar($calendarid = 0, $do = '', $userid = -1)
{
global $vbulletin, $cmodcache;
if ($userid == -1)
{
$userid = $vbulletin->userinfo['userid'];
}
if ($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['ismoderator'])
{
DEVDEBUG(' USER IS A SUPER MODERATOR');
return true;
}
cache_calendar_moderators();
if ($calendarid == 0)
{ // just check to see if the user is a moderator of any calendar
DEVDEBUG('looping through cmodcache to find userid $userid');
$ismod = 0;
foreach($cmodcache AS $calendarmods)
{
if (!empty($calendarmods["$userid"]))
{
$ismod = 1;
break;
}
}
return $ismod;
}
else
{ // check to see if user is a moderator of specific calendar
$getmodperms = intval($cmodcache["$calendarid"]["$userid"]['permissions']);
if (empty($do) AND $getmodperms)
{
return true;
}
else
{ // check if user is a mod and has permissions to '$do'
if ($getmodperms & $vbulletin->bf_misc_calmoderatorpermissions["$do"])
{
return true;
}
else
{
return false;
} // if has perms for this action
}// if is mod for calendar and no action set
} // if calendarid=0
}
// ###################### Start getcmodcache #######################
function cache_calendar_moderators()
{
global $vbulletin, $cmodcache, $calmod;
if (!is_array($cmodcache))
{
$cmodcache = array();
$mod = array();
$calmoderators = $vbulletin->db->query_read_slave("
SELECT calendarmoderator.*, user.username
FROM " . TABLE_PREFIX . "calendarmoderator AS calendarmoderator
INNER JOIN " . TABLE_PREFIX . "user AS user USING(userid)
");
while ($moderator = $vbulletin->db->fetch_array($calmoderators))
{
$cmodcache["$moderator[calendarid]"]["$moderator[userid]"] = $moderator;
$calmod["$moderator[userid]"] = 1;
}
$vbulletin->db->free_result($calmoderators);
} // else we have already called cache_calendar_moderators()
}
// ###################### Start cacheevents #######################
function cache_events($range)
{
global $vbulletin, $calendarinfo, $vbphrase, $serveroffset;
$numdays = date('j', mktime(0, 0, 0, $range['nextmonth'] + 1, 1, $range['nextyear']) - 1);
$beginday = gmmktime(0, 0, 0, $range['frommonth'], 1, $range['fromyear']) + (-12 * 3600);
$endday = gmmktime(24, 0, 0, $range['nextmonth'], $numdays, $range['nextyear']) + (12 * 3600);
$event = array();
$eventids = array();
if ($calendarinfo['showholidays'])
{
// Holidays show across all calendars that a user has access to.
$holidays = $vbulletin->db->query_read_slave("
SELECT *
FROM " . TABLE_PREFIX . "holiday
");
if ($vbulletin->db->num_rows($holidays))
{
while ($ev = $vbulletin->db->fetch_array($holidays))
{
$ev['visible'] = 1;
$ev['title'] =& $vbphrase['holiday' . $ev['holidayid'] . '_title'];
$ev['event'] =& $vbphrase['holiday' . $ev['holidayid'] . '_desc'];
$ev['preview'] = strip_quotes($ev['event']);
$ev['preview'] = htmlspecialchars_uni(strip_bbcode(fetch_trimmed_title($ev['preview'], 300), false, true));
if ($ev['recurring'] == 6)
{
$event['holiday1']["$ev[recuroption]"][] = $ev;
}
else
{
$ev['dateline_from'] = $beginday;
$ev['dateline_to'] = $endday;
$offset = $vbulletin->userinfo['timezoneoffset'] ? $vbulletin->userinfo['tzoffset'] : $vbulletin->userinfo['timezoneoffset'];
$ev['dateline_from_user'] = $ev['dateline_from'] + $offset * 3600;
$ev['dateline_to_user'] = $ev['dateline_to'] + $offset * 3600;
$recuroption = substr($ev['recuroption'], 2);
$event['holiday2']["$recuroption"][] = $ev;
}
}
}
}
$events = $vbulletin->db->query_read_slave("
SELECT event.*,
user.username, IF(user.displaygroupid = 0, user.usergroupid, user.displaygroupid) AS displaygroupid,
IF(dateline_to = 0, 1, 0) AS singleday
" . iif($vbulletin->userinfo['userid'], ", subscribeevent.eventid AS subscribed") . "
FROM " . TABLE_PREFIX . "event AS event
LEFT JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = event.userid)
" . iif($vbulletin->userinfo['userid'], "LEFT JOIN " . TABLE_PREFIX . "subscribeevent AS subscribeevent ON (subscribeevent.eventid = event.eventid AND subscribeevent.userid = " . $vbulletin->userinfo['userid'] . ")") . "
WHERE calendarid = $calendarinfo[calendarid] AND
((dateline_to >= $beginday AND dateline_from < $endday) OR (dateline_to = 0 AND dateline_from >= $beginday AND dateline_from <= $endday )) AND
visible = 1
ORDER BY dateline_from
");
// Cache Events
if ($vbulletin->db->num_rows($events))
{
while ($ev = $vbulletin->db->fetch_array($events))
{
if ($ev['userid'] != $vbulletin->userinfo['userid'] AND !($vbulletin->userinfo['calendarpermissions']["$calendarinfo[calendarid]"] & $vbulletin->bf_ugp_calendarpermissions['canviewothersevent']))
{
continue;
}
$ev['preview'] = strip_quotes($ev['event']);
$ev['preview'] = htmlspecialchars_uni(strip_bbcode(fetch_trimmed_title($ev['preview'], 300), false, true));
$offset = $ev['dst'] ? $vbulletin->userinfo['timezoneoffset'] : $vbulletin->userinfo['tzoffset'];
$ev['dateline_from_user'] = $ev['dateline_from'] + $offset * 3600;
$ev['dateline_to_user'] = $ev['dateline_to'] + $offset * 3600;
fetch_musername($ev);
if (!$ev['recurring'])
{
if ($ev['singleday'])
{
$event['singleday']["$ev[dateline_from]"][] = $ev;
}
else
{
$found = false;
$date = explode('-', gmdate('n-j-Y', $ev['dateline_from_user']));
$beginday = gmmktime(0, 0, 0, $date[0], $date[1], $date[2]);
while ($beginday <= $ev['dateline_to_user'])
{
if (!$found)
{
$event['ranged']["$beginday"][] = $ev;
$count = count($event['ranged']["$beginday"]) - 1;
$tempevent =& $event['ranged']["$beginday"]["$count"];
$found = true;
}
else
{
// if event ends at the start of the day, don't display it for that day
if ($ev['dateline_to_user'] != $beginday)
{
$event['ranged']["$beginday"][] =& $tempevent;
}
}
$beginday += 86400;
}
}
}
else
{
$event['recurring'][] = $ev;
}
}
}
return $event;
}
// ###################### Start cachebirthdays #######################
function cache_birthdays($weekly = 0)
{
global $doublemonth, $vbulletin, $calendarinfo, $doublemonth1, $doublemonth2;
$birthday = array();
if ($calendarinfo['showbirthdays'])
{
// Load the birthdays for this month:
$ids = '0';
foreach($vbulletin->usergroupcache AS $usergroupid => $usergroup)
{
if ($usergroup['genericoptions'] & $vbulletin->bf_ugp_genericoptions['showbirthday'])
{
$ids .= ",$usergroupid";
}
}
if (!$weekly)
{ // cache birthdays for a single month
$birthdays = $vbulletin->db->query_read_slave("
SELECT birthday, username, userid, showbirthday
FROM " . TABLE_PREFIX . "user
WHERE birthday LIKE '$doublemonth-%' AND
usergroupid IN ($ids) AND
showbirthday IN (2, 3)
");
}
else
{ // cache for two months!
$birthdays = $vbulletin->db->query_read_slave("
SELECT birthday, username, userid, showbirthday
FROM " . TABLE_PREFIX . "user
WHERE (birthday LIKE '$doublemonth1-%' OR
birthday LIKE '$doublemonth2-%') AND
usergroupid IN ($ids) AND
showbirthday IN (2,3)
");
}
// Cache Birthdays
if ($vbulletin->db->num_rows($birthdays))
{
$birthday = array();
while ($bday = $vbulletin->db->fetch_array($birthdays))
{
$userday = explode('-', $bday['birthday']);
$month = intval($userday[0]);
$day = intval($userday[1]);
$birthday["$month"]["$day"][] = $bday;
}
}
}
return $birthday;
}
// ###################### Start makecalendarjump #######################
function construct_calendar_jump($currentcalendarid, $month, $year)
{
global $calendarcache, $vbulletin, $gobutton, $stylevar, $today, $vbphrase, $calendarinfo, $monthselected;
foreach ($calendarcache AS $calendarid => $title)
{
$calendarperms = $vbulletin->userinfo['calendarpermissions']["$calendarid"];
if (!($calendarperms & $vbulletin->bf_ugp_calendarpermissions['canviewcalendar']))
{
continue;
}
else
{
$optionvalue = $calendarid;
$optiontitle = $title;
if ($currentcalendarid == $optionvalue)
{
$optionselected = 'selected="selected"';
$optionclass = 'fjsel';
$selectedone = 1;
}
else
{
$optionselected = '';
$optionclass = '';
}
eval('$jumpcalendarbits .= "' . fetch_template('option') . '";');
}
}
for ($gyear = $calendarinfo['startyear']; $gyear <= $calendarinfo['endyear']; $gyear++)
{
$selected = iif($year == $gyear, 'selected="selected"');
$yearbits .= "\t\t\n";
}
eval('$calendarjump = "' . fetch_template('calendarjump') . '";');
return $calendarjump;
}
// ###################### Start getfirstday #######################
function fetch_first_day($daynum = 1, $fullcalendar, $showweekends)
{
global $vbphrase, $vbulletin;
if ($daynum > 7)
{
$daynum = $daynum - 7;
}
if (!$fullcalendar)
{
$header = '_short';
}
switch ($daynum)
{
case 1:
if (!$showweekends)
{
return -1;
}
else
{
return $vbphrase['sunday' . $header];
}
case 2:
return $vbphrase['monday' . $header];
case 3:
return $vbphrase['tuesday' . $header];
case 4:
return $vbphrase['wednesday' . $header];
case 5:
return $vbphrase['thursday' . $header];
case 6:
return $vbphrase['friday' . $header];
case 7:
if (!$showweekends)
{
return -1;
}
else
{
return $vbphrase['saturday' . $header];
}
}
}
// ###################### Start subtractdays #######################
function fetch_subtract_days($offset = 0, $dateVal)
{
// Takes number of days to subtract and the date to subtract from
// Returns an array containing month/day/year
return explode('-', gmdate('n-j-Y', $dateVal - 86400 * $offset));
}
// ###################### Start adddays #######################
function fetch_add_days($offset = 0, $dateVal)
{
// Takes number of days to add and the date to add from
// Returns an array containing month/day/year
return explode('-', gmdate('n-j-Y', $dateVal + 86400 * $offset));
}
// ###################### Start easter #######################
function fetch_easter_array($year)
{
global $vbphrase, $calendarinfo, $_CALENDARHOLIDAYS;
global $eastercache;
if ($eastercache)
{
return $eastercache;
}
// Calculates day that easter and it's accompanying holidays fall on.
$goldennum = ($year % 19) + 1;
$century = intval($year / 100) + 1;
$leapcent = intval(3 * $century / 4) - 12;
$lunarcorr = intval((8 * $century + 5) / 25) - 5;
$sundaycorr = intval(5 * $year / 4) - $leapcent - 10;
$epact = abs(11 * $goldennum + 20 + $lunarcorr - $leapcent) % 30;
if (($epact == 25 AND $goldennum > 11) OR ($epact == 24))
{
$epact++;
}
$fullmoon = 44 - $epact;
if ($fullmoon < 21)
{
$fullmoon = $fullmoon + 30;
}
$day = $fullmoon + 7 - (($sundaycorr + $fullmoon) % 7);
if ($day > 31)
{
$day = $day - 31;
$month = 4;
}
else
{
$month = 3;
}
$easterStamp = gmmktime(12, 0, 0, $month, $day, $year);
$eastercache = array();
foreach($_CALENDARHOLIDAYS AS $holiday => $value)
{
if ($calendarinfo["$holiday"])
{
unset($count);
switch($holiday)
{
case 'easter':
$count = 0;
break;
case 'good_friday':
$count = -2;
break;
case 'palm_sunday':
$count = -7;
break;
case 'ash_wednesday':
$count = -46;
break;
case 'pentecost':
$count = 49;
break;
case 'mardi_gras':
$count = -47;
break;
case 'corpus_christi':
$count = 60;
break;
}
if (isset($count))
{
$date = implode('-', fetch_add_days($count, $easterStamp));
$desc = $holiday . '_desc';
$eastercache["$date"] = array(
'title' => &$vbphrase["$holiday"],
'event' => &$vbphrase["$desc"]
);
}
}
}
return $eastercache;
}
// ###################### Start calcodeparse #######################
function parse_calendar_bbcode($bbcode, $smilies = true)
{
global $calendarinfo, $vbulletin;
require_once(DIR . '/includes/class_bbcode.php');
$bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
$bbcode = $bbcode_parser->parse($bbcode, 'calendar', $smilies);
return $bbcode;
}
// ###################### Start geteventcriteria #######################
function fetch_event_criteria($option)
{
global $vbphrase, $months, $days, $period;
$options = explode('|', $option['recuroption']);
if ($option['recurring'] == 1)
{ // Recurring Daily Event
$desc = construct_phrase($vbphrase['this_event_occurs_every_x_days'], $options[0]);
}
else if ($option['recurring'] == 2)
{ // Every Weekday
$desc = $vbphrase['this_event_occurs_every_weekday'];
}
else if ($option['recurring'] == 3)
{ // Weekly Recurring Event
if ($options[1] & 1)
{ // Sunday
$seldays = $vbphrase['sunday'];
}
if ($options[1] & 2)
{ // Monday
if ($seldays)
{
$seldays .= ", $vbphrase[monday]";
}
else
{
$seldays = $vbphrase['monday'];
}
}
if ($options[1] & 4)
{ // Tuesday
if ($seldays)
{
$seldays .= ", $vbphrase[tuesday]";
}
else
{
$seldays = $vbphrase['tuesday'];
}
}
if ($options[1] & 8)
{ // Wednesday
if ($seldays)
{
$seldays .= ", $vbphrase[wednesday]";
}
else
{
$seldays = $vbphrase['wednesday'];
}
}
if ($options[1] & 16)
{ // Thursday
if ($seldays)
{
$seldays .= ", $vbphrase[thursday]";
}
else
{
$seldays = $vbphrase['thursday'];
}
}
if ($options[1] & 32)
{ // Friday
if ($seldays)
{
$seldays .= ", $vbphrase[friday]";
}
else
{
$seldays = $vbphrase['friday'];
}
}
if ($options[1] & 64)
{ // Saturday
if ($seldays)
{
$seldays .= ", $vbphrase[saturday]";
}
else
{
$seldays = $vbphrase[saturday];
}
}
$desc = construct_phrase($vbphrase['this_event_occurs_every_x_weeks_on_y'], $options[0], $seldays);
}
else if ($option['recurring'] == 4)
{ // Monthly Event
$desc = construct_phrase($vbphrase['this_event_occurs_on_day_x_of_every_y_months'], $options[0], $options[1]);
}
else if ($option['recurring'] == 5)
{ // Monthly Event
$desc = construct_phrase($vbphrase['this_event_occurs_on_the_x_y_of_every_z_months'], $vbphrase["{$period["$options[0]"]}"], $vbphrase["{$days["$options[1]"]}"], $options[2]);
}
else if ($option['recurring'] == 6)
{ // Yearly Event
$desc = construct_phrase($vbphrase['this_event_occurs_every_x_y'], $vbphrase["{$months["$options[0]"]}"], $options[1]);
}
else if ($option['recurring'] == 7)
{ // Yearly Event
$desc = construct_phrase($vbphrase['this_event_occurs_on_every_x_y_of_z'], $vbphrase["{$period["$options[0]"]}"], $vbphrase["{$days["$options[1]"]}"], $vbphrase["{$months["$options[2]"]}"]);
}
return $desc;
}
// ###################### Start getevent #######################
function cache_event_info(&$event, $month, $day, $year, $adjust = 1, $cache = true)
{
static $foundday, $foundevent, $foundholiday, $e;
global $vbulletin;
$eventid = $event['eventid'];
if ($event['holidayid'] AND $foundholiday["$month-$day-$year"]["$event[holidayid]"] AND $cache)
{
return true;
}
else if ($eventid AND $foundevent["$month-$day-$year"]["$eventid"] AND $cache)
{
return true;
}
if ((empty($e["$eventid"]) OR !$cache) AND !$event['singleday'])
{
$e["$eventid"]['startday'] = gmmktime(0, 0, 0, gmdate('n', $event['dateline_from_user']), gmdate('j', $event['dateline_from_user']), gmdate('Y', $event['dateline_from_user']));
$e["$eventid"]['startmonth'] = gmmktime(0, 0, 0, gmdate('n', $event['dateline_from_user']), 1, gmdate('Y', $event['dateline_from_user']));
$e["$eventid"]['endday'] = gmmktime(0, 0, 0, gmdate('n', $event['dateline_to_user']), gmdate('j', $event['dateline_to_user']), gmdate('Y', $event['dateline_to_user']));
}
$todaystart = gmmktime(0, 0, 0, $month, $day, $year);
$todaymid = gmmktime(12, 0, 0, $month, $day, $year);
$todayend = gmmktime(23, 59, 59, $month, $day, $year);
$thismonth = gmmktime(0, 0, 0, $month, 1, $year);
if ($event['singleday'])
{
if ("$month-$day-$year" == gmdate('n-j-Y', $event['dateline_from']))
{
return true;
}
}
if ($event['dateline_to_user'] < $todaystart OR $event['dateline_from_user'] > $todayend)
{
return false;
}
if ($event['recurring'])
{ // this is a recurring event
if ($event['recurring'] == 1)
{
if ($event['recuroption'] == 0 OR ($todaystart - $e["$eventid"]['startday']) % (86400 * $event['recuroption']))
{
return false;
}
else
{
return true;
}
}
else if ($event['recurring'] == 2)
{
if (gmdate('w', $event['dateline_from_user']) != gmdate('w', $event['dateline_from'] + ($event['utc'] * 3600)) AND $adjust)
{
if ($event['dateline_from_user'] > $event['dateline_from'] + ($event['utc'] * 3600))
{
$todaymid -= 86400;
}
else
{
$todaymid += 86400;
}
}
if (gmdate('w', $todaymid) < 1 OR gmdate('w', $todaymid) > 5)
{
return false;
}
}
else if ($event['recurring'] == 3)
{
$monthbit = explode('|', $event['recuroption']);
$weekrep = $monthbit[0];
if ($weekrep == 0)
{
return false;
}
$daysfromstart = ($todaystart - $e["$eventid"]['startday']) / 86400;
$week = intval($daysfromstart / 7);
if ($week % $weekrep)
{
return false;
}
if ($monthbit[1] & 1)
{
$haveday[0] = 1;
}
else
{
unset($haveday[1]);
}
if ($monthbit[1] & 2)
{
$haveday[1] = 1;
}
else
{
unset($haveday[2]);
}
if ($monthbit[1] & 4)
{
$haveday[2] = 1;
}
else
{
unset($haveday[3]);
}
if ($monthbit[1] & 8)
{
$haveday[3] = 1;
}
else
{
unset($haveday[4]);
}
if ($monthbit[1] & 16)
{
$haveday[4] = 1;
}
else
{
unset($haveday[5]);
}
if ($monthbit[1] & 32)
{
$haveday[5] = 1;
}
else
{
unset($haveday[6]);
}
if ($monthbit[1] & 64)
{
$haveday[6] = 1;
}
else
{
unset($haveday[7]);
}
if (gmdate('w', $event['dateline_from_user']) != gmdate('w', $event['dateline_from'] + ($event['utc'] * 3600)) AND $adjust)
{
if ($event['dateline_from_user'] > $event['dateline_from'] + ($event['utc'] * 3600))
{
$todaymid -= 86400;
}
else
{
$todaymid += 86400;
}
}
$dayofweek = gmdate('w', $todaymid);
if (!$haveday["$dayofweek"])
{
return false;
}
}
else if ($event['recurring'] == 4)
{
$monthbit = explode('|', $event['recuroption']);
$monthrep = $monthbit[1];
if ($monthbit[0] == 0 OR $monthbit[1] == 0)
{
return false;
}
if (gmdate('w', $event['dateline_from_user']) != gmdate('w', $event['dateline_from'] + ($event['utc'] * 3600)) AND $adjust)
{
if ($event['dateline_from_user'] > $event['dateline_from'] + ($event['utc'] * 3600))
{
$monthbit[0]++;
if ($day == 1)
{
$todaymid -= 86400;
}
if ($monthbit[0] > gmdate('t', $todaymid))
{
$monthbit[0] = 1;
}
}
else
{
$monthbit[0]--;
if ($day == gmdate('t', $todaymid))
{
$todaymid += 86400;
}
if ($monthbit[0] == 0)
{
$monthbit[0] = gmdate('t', $todaymid);
}
}
}
if ($day != $monthbit[0])
{
return false;
}
if (empty($e["$eventid"]['currentmonth']))
{
if ($e["$eventid"]['startday'] > gmmktime(0, 0, 0, gmdate('n', $event['dateline_from_user']), $monthbit[0], gmdate('Y', $event['dateline_from_user'])))
{
$e["$eventid"]['currentmonth'] = gmmktime(0, 0, 0, gmdate('n', $event['dateline_from_user']) + 1, 1, gmdate('Y', $event['dateline_from_user']));
}
else
{
$e["$eventid"]['currentmonth'] = $e["$eventid"]['startmonth'];
}
}
while ($e["$eventid"]['currentmonth'] != $thismonth)
{
$e["$eventid"]['currentmonth'] = gmmktime(0, 0, 0, gmdate('n', $e["$eventid"]['currentmonth']) + 1, 1, gmdate('Y', $e["$eventid"]['currentmonth']));
$e["$eventid"]['monthcount']++;
}
if ($e["$eventid"]['monthcount'] % $monthrep)
{
return false;
}
}
else if ($event['recurring'] == 5)
{
if (gmdate('w', $event['dateline_from_user']) != gmdate('w', $event['dateline_from'] + ($event['utc'] * 3600)) AND $adjust)
{
if ($event['dateline_from_user'] > $event['dateline_from'] + ($event['utc'] * 3600))
{
$todaystart -= 86400;
}
else
{
$todaystart += 86400;
}
}
$monthbit = explode('|', $event['recuroption']);
$monthrep = $monthbit[2];
$monthday = $monthbit[1];
$monthweek = $monthbit[0];
if ($monthrep == 0 OR $monthweek < 1 OR $monthweek > 5 OR $monthday < 1 OR $monthday > 7)
{
return false;
}
$fromdate = $e["$eventid"]['startday'];
$todate = $e["$eventid"]['endday'];
if (!is_array($foundday["$eventid"]))
{
while ($fromdate <= $todate)
{
$stopday = false;
$tempday = gmdate('j', $fromdate);
$whatday = gmdate('w', $fromdate) + 1;
if ($monthday != $whatday)
{
$stopday = true;
}
else if ($tempday > ($monthweek * 7) OR $tempday < ($monthweek * 7 - 6))
{
$DaysInMonth = gmdate('t', $fromdate);
if ($monthweek != 5 OR $tempday + 7 <= $DaysInMonth)
{
$stopday = true;
}
}
if ($stopday)
{ // Add one day
$fromdate += 86400;
}
else
{
// We found a day this occurs on.
$foundday["$eventid"]["$fromdate"] = 1;
// Move to the next month depending on repetition
$temp = gmdate('n-j-Y', $fromdate);
$temp = explode('-', $temp);
$fromdate = gmmktime(0, 0, 0, $temp[0] + $monthrep, 1, $temp[2]);
}
}
}
if (!$foundday["$eventid"]["$todaystart"])
{
return false;
}
}
else if ($event['recurring'] == 6)
{
if (gmdate('w', $event['dateline_from_user']) != gmdate('w', $event['dateline_from'] + ($event['utc'] * 3600)) AND $adjust AND !$event['holidayid'])
{
if ($event['dateline_from_user'] > $event['dateline_from'] + ($event['utc'] * 3600))
{
$todaystart -= 86400;
}
else
{
$todaystart += 86400;
}
}
$monthbit = explode('|', $event['recuroption']);
if ($monthbit[0] < 1 OR $monthbit[0] > 12 OR $monthbit[1] < 1 OR $monthbit[1] > 31)
{
return false;
}
if ($todaystart != gmmktime(0, 0, 0, $monthbit[0], $monthbit[1], $year))
{
return false;
}
}
else if ($event['recurring'] == 7)
{
$monthbit = explode('|', $event['recuroption']);
if ($monthbit[0] < 1 OR $monthbit[0] > 5 OR $monthbit[1] < 1 OR $monthbit[1] > 7 OR $monthbit[2] < 1 OR $monthbit[2] > 12)
{
return false;
}
$tempmonth = $month;
$tempday = $day;
if (gmdate('w', $event['dateline_from_user']) != gmdate('w', $event['dateline_from'] + ($event['utc'] * 3600)) AND $adjust AND !$event['holidayid'])
{
if ($event['dateline_from_user'] < $event['dateline_from'] + ($event['utc'] * 3600))
{
$day++;
if ($day > gmdate('t', $todaymid))
{
$day = 1;
$month++;
if ($month == 13)
{
$month = 1;
}
}
$todaymid += 86400;
}
else
{
$todaymid -= 86400;
$day--;
if ($day == 0)
{
$day = gmdate('t', $todaymid);
$month--;
if ($month == 0)
{
$month = 12;
}
}
}
}
$dayofweek = gmdate('w', $todaymid) + 1;
if ($month != $monthbit[2] OR $dayofweek != $monthbit[1])
{
return false;
}
else if ($day > ($monthbit[0] * 7) OR $day < ($monthbit[0] * 7 - 6) )
{
// Now check to see if we aren't looking for the 'last' day of a month
// sometimes that is the 5th day and sometimes the 4th
$DaysInMonth = gmdate('t', $todaymid);
if ($monthbit[0] != 5 OR $day + 7 <= $DaysInMonth)
{
return false;
}
}
$day = $tempday;
$month = $tempmonth;
}
if ($event['holidayid'])
{
$foundholiday["$month-$day-$year"]["$event[holidayid]"] = true;
}
else
{
$foundevent["$month-$day-$year"]["$eventid"] = true;
}
return true;
}
else
{
$foundevent["$month-$day-$year"]["$eventid"] = true;
return true;
}
return false;
}
// ###################### Start fetch time options #######################
function fetch_time_options($giAH, $use24hour = false, &$customtime)
{
global $vbulletin, $stylevar, $vbphrase;
static $timearray;
if (!is_array($timearray))
{
$timearray = array();
if ($use24hour)
{
for ($hour = 0; $hour < 24; $hour++)
{
for ($mins = 0; $mins <= 30; $mins += 30)
{
$hh = str_pad($hour, 2, 0, STR_PAD_LEFT);
$mm = str_pad($mins, 2, 0, STR_PAD_LEFT);
$timearray["{$hour}_{$mm}"] = "$hh:$mm";
}
}
$timearray['0_00'] = $vbphrase['midnight'];
$timearray['12_00'] = $vbphrase['midday'];
}
else
{
$ampm_array = array(
'AM' => 'am',
'PM' => 'pm'
);
$hour_array = array(
12, 1, 2, 3,
4, 5, 6, 7,
8, 9, 10, 11
);
foreach ($ampm_array AS $AMPM => $ampm)
{
foreach ($hour_array AS $hour)
{
for ($mins = 0; $mins <= 30; $mins += 30)
{
$hh = str_pad($hour, 2, 0, STR_PAD_LEFT);
$mm = str_pad($mins, 2, 0, STR_PAD_LEFT);
$timearray["{$hour}_{$mm}_{$AMPM}"] = "$hh:$mm $ampm";
}
}
}
$timearray['12_00_AM'] = $vbphrase['midnight'];
$timearray['12_00_PM'] = $vbphrase['midday'];
}
}
if (is_array($giAH))
{
if ($giAH[1] != '00' AND $giAH[1] != '30')
{
if ($use24hour)
{
$customtime = "$giAH[3]:$giAH[1]";
}
else
{
$customtime = "$giAH[0]:$giAH[1] $giAH[2]";
}
}
else if ($use24hour)
{
$selectedindex = intval($giAH[3]) . '_' . $giAH[1];
}
else
{
$selectedindex = intval($giAH[0]) . '_' . $giAH[1] . '_' . $giAH[2];
}
}
else
{
$selectedindex = false;
}
$output = '';
eval('$output .= "' . fetch_template('option') . '";');
foreach ($timearray AS $optionvalue => $optiontitle)
{
$optionselected = iif($optionvalue == $selectedindex, 'selected="selected"', '');
eval('$output .= "' . fetch_template('option') . '";');
}
return $output;
}
// ###################### Start getevents #######################
function build_events()
{
global $vbulletin, $vbphrase, $_CALENDAROPTIONS;
if (!$vbulletin->options['showevents'])
{
return false;
}
$storeevents = array();
// Store timestamp 48 hours before the current time and 48 hours after the showevent period
$beginday = TIMENOW - 172800;
$endday = TIMENOW + 86400 + 86400 * $vbulletin->options['showevents'];
$storeevents['date'] = gmdate('n-j-Y' , $endday);
// check if we have at least one calendar with holidays enabled
if ($vbulletin->options['showholidays'])
{
$holiday_calendarids = array();
$holiday_calendars = $vbulletin->db->query_read_slave("
SELECT calendarid
FROM " . TABLE_PREFIX . "calendar
WHERE options & " . intval($_CALENDAROPTIONS['showholidays'])
);
while ($holiday_calendar = $vbulletin->db->fetch_array($holiday_calendars))
{
$holiday_calendarids[] = $holiday_calendar['calendarid'];
}
$holidays = $vbulletin->db->query_read_slave("
SELECT *
FROM " . TABLE_PREFIX . "holiday
");
while ($holiday = $vbulletin->db->fetch_array($holidays))
{
$holiday['dateline_from'] = $beginday;
$holiday['dateline_to'] = $endday;
$holiday['visible'] = 1;
$holiday['eventid'] = 'h' . $holiday['holidayid'];
$holiday['holiday_calendarids'] = $holiday_calendarids;
$storeevents["$holiday[eventid]"] = $holiday;
}
}
$events = $vbulletin->db->query_read_slave("
SELECT eventid, userid, event.title, recurring, recuroption, dateline_from, dateline_to, event.calendarid, IF (dateline_to = 0, 1, 0) AS singleday, customfields,
dateline_from AS dateline_from_user, dateline_to AS dateline_to_user, utc, dst
FROM " . TABLE_PREFIX . "event AS event
INNER JOIN " . TABLE_PREFIX . "calendar AS calendar USING (calendarid)
WHERE ((dateline_to >= $beginday AND dateline_from < $endday) OR (dateline_to = 0 AND dateline_from >= $beginday AND dateline_from <= $endday ))
AND visible = 1
AND calendar.options & " . intval($_CALENDAROPTIONS['showupcoming']) . "
ORDER BY dateline_from
");
while ($event = $vbulletin->db->fetch_array($events))
{
$event['title'] = htmlspecialchars_uni($event['title']);
$storeevents["$event[eventid]"] = $event;
}
build_datastore('eventcache', serialize($storeevents), 1);
return $storeevents;
}
/*======================================================================*\
|| ####################################################################
|| #
|| # CVS: $RCSfile$ - $Revision: 28583 $
|| ####################################################################
\*======================================================================*/
?>
Fatal error: Call to undefined function build_events() in /home/hosted/usersSpace/119/ftp/logitour-repdom.com/www/forum/index.php on line 174