1
0
mirror of https://github.com/e107inc/e107.git synced 2025-02-13 11:04:38 +01:00
2006-12-02 04:36:16 +00:00

319 lines
10 KiB
PHP

<?php
/*
+ ----------------------------------------------------------------------------+
| e107 website system
|
| ©Steve Dunstan 2001-2002
| http://e107.org
| jalist@e107.org
|
| Released under the terms and conditions of the
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_plugins/calendar_menu/calendar.php,v $
| $Revision: 1.1.1.1 $
| $Date: 2006-12-02 04:34:46 $
| $Author: mcfly_e107 $
|
| 11.11.06 - steved - mods for next CVS release
|
+----------------------------------------------------------------------------+
*/
require_once("../../class2.php");
require_once(e_PLUGIN."calendar_menu/calendar_shortcodes.php");
if (isset($_POST['viewallevents']))
{
Header("Location: " . e_PLUGIN . "calendar_menu/event.php?" . $_POST['enter_new_val']);
}
if (isset($_POST['doit']))
{
Header("Location: " . e_PLUGIN . "calendar_menu/event.php?ne." . $_POST['enter_new_val']);
}
if (isset($_POST['subs']))
{
Header("Location: " . e_PLUGIN . "calendar_menu/subscribe.php");
}
@include_lan(e_PLUGIN."calendar_menu/languages/".e_LANGUAGE.".php");
define("PAGE_NAME", EC_LAN_121);
require_once('ecal_class.php');
$ecal_class = new ecal_class;
if (is_readable(THEME."calendar_template.php"))
{
require(THEME."calendar_template.php");
}
else
{
require(e_PLUGIN."calendar_menu/calendar_template.php");
}
$num = (isset($_POST['num']) && $_POST['num'] ? $_POST['num'] : "");
$category_filter = "";
if ((isset($_POST['event_cat_ids']) && $_POST['event_cat_ids'] != "all"))
{
$category_filter = " AND (e.event_category = '".$_POST['event_cat_ids']."') ";
}
require_once(HEADERF);
// get current date information ---------------------------------------------------------------------
$qs = explode(".", e_QUERY);
if($qs[0] == "")
{ // Show current month
$datearray = $ecal_class->cal_date;
}
else
{ // Get date from query
$datearray = getdate($qs[0]);
}
$month = $datearray['mon'];
$year = $datearray['year'];
// set up arrays for calender display ------------------------------------------------------------------
if($pref['eventpost_weekstart'] == 'sun') {
$week = Array(EC_LAN_25, EC_LAN_19, EC_LAN_20, EC_LAN_21, EC_LAN_22, EC_LAN_23, EC_LAN_24);
} else {
$week = Array(EC_LAN_19, EC_LAN_20, EC_LAN_21, EC_LAN_22, EC_LAN_23, EC_LAN_24, EC_LAN_25);
}
$months = Array(EC_LAN_0, EC_LAN_1, EC_LAN_2, EC_LAN_3, EC_LAN_4, EC_LAN_5, EC_LAN_6, EC_LAN_7, EC_LAN_8, EC_LAN_9, EC_LAN_10, EC_LAN_11);
$monthabb = Array(EC_LAN_JAN, EC_LAN_FEB, EC_LAN_MAR, EC_LAN_APR, EC_LAN_MAY, EC_LAN_JUN, EC_LAN_JUL, EC_LAN_AUG, EC_LAN_SEP, EC_LAN_OCT, EC_LAN_NOV, EC_LAN_DEC);
$days = array(EC_LAN_DAY_1, EC_LAN_DAY_2, EC_LAN_DAY_3, EC_LAN_DAY_4, EC_LAN_DAY_5, EC_LAN_DAY_6, EC_LAN_DAY_7, EC_LAN_DAY_8, EC_LAN_DAY_9, EC_LAN_DAY_10, EC_LAN_DAY_11, EC_LAN_DAY_12, EC_LAN_DAY_13, EC_LAN_DAY_14, EC_LAN_DAY_15, EC_LAN_DAY_16, EC_LAN_DAY_17, EC_LAN_DAY_18, EC_LAN_DAY_19, EC_LAN_DAY_20, EC_LAN_DAY_21, EC_LAN_DAY_22, EC_LAN_DAY_23, EC_LAN_DAY_24, EC_LAN_DAY_25, EC_LAN_DAY_26, EC_LAN_DAY_27, EC_LAN_DAY_28, EC_LAN_DAY_29, EC_LAN_DAY_30, EC_LAN_DAY_31);
// show events-------------------------------------------------------------------------------------------
$monthstart = mktime(0, 0, 0, $month, 1, $year); // Start of month to be shown
$firstdayarray = getdate($monthstart);
$monthend = mktime(0, 0, 0, $month + 1, 1, $year) - 1; // End of month to be shown
$prevmonth = ($month-1);
$prevyear = $year;
if ($prevmonth == 0)
{
$prevmonth = 12;
$prevyear = ($year-1);
}
$previous = mktime(0, 0, 0, $prevmonth, 1, $prevyear); // Used by nav
$nextmonth = ($month + 1);
$nextyear = $year;
if ($nextmonth == 13)
{
$nextmonth = 1;
$nextyear = ($year + 1);
}
$next = mktime(0, 0, 0, $nextmonth, 1, $nextyear);
$py = $year-1;
$prevlink = mktime(0, 0, 0, $month, 1, $py);
$ny = $year + 1;
$nextlink = mktime(0, 0, 0, $month, 1, $ny);
$prop = mktime(0, 0, 0, $month, 1, $year); // Sets start date for new event entry
$nowmonth = $ecal_class->cal_date['mon'];
$nowyear = $ecal_class->cal_date['year'];
$nowday = $ecal_class->cal_date['mday'];
// time switch buttons
$cal_text = $tp -> parseTemplate($CALENDAR_TIME_TABLE, FALSE, $calendar_shortcodes);
// navigation buttons
$nav_text = $tp -> parseTemplate($CALENDAR_NAVIGATION_TABLE, FALSE, $calendar_shortcodes);
// get events from selected
$qry = "SELECT e.*, ec.*
FROM #event as e
LEFT JOIN #event_cat as ec ON e.event_category = ec.event_cat_id
WHERE e.event_id != ''
AND ((e.event_start >= ".intval($monthstart)." AND e.event_start <= ".intval($monthend).")
OR (e.event_end >= ".intval($monthstart)." AND e.event_end <= ".intval($monthend).")
OR (e.event_start <= ".intval($monthstart)." AND e.event_end >= ".intval($monthend).")
OR (e.event_recurring = '1' AND e.event_rec_y = ".intval($month).")) {$category_filter}
{$ecal_class->extra_query}
ORDER BY e.event_start";
if ($sql->db_Select_gen($qry))
{
while ($row = $sql->db_Fetch())
{
// check for recurring events in this month
if($row['event_recurring']=='1')
{
if ($month == $row['event_rec_y'])
{ // Change it into an event that happens today
$row['event_start'] = mktime(0,0,0,$row['event_rec_y'],$row['event_rec_m'],$year);
$row['event_end'] = $row['event_start'];
}
else
{ // Effectively create a null event
$row['event_start'] = 0;
$row['event_end'] = 0;
}
}
$evf = getdate($row['event_start']);
$tmp = $evf['mday']; // Day of month for start
$eve = getdate($row['event_end']);
$tmp2 = $eve['mday']; // Day of month for end
$tmp3 = date("t", $monthstart); // number of days in this month
if ((($ecal_class->max_recent_show != 0) && (time() - $row['event_datestamp']) <= $ecal_class->max_recent_show)) $row['is_recent'] = TRUE;
//1) start in month, end in month
if(($row['event_start']>=$monthstart && $row['event_start']<=$monthend) && $row['event_end']<=$monthend)
{
$events[$tmp][] = $row;
for ($c=($tmp+1); $c<($tmp2+1); $c++)
{
$row['event_true_end'][$c] = ($c!=$tmp2 ? 1 : 2);
$events[$c][] = $row;
}
//2) start in month, end after month
}
elseif(($row['event_start']>=$monthstart && $row['event_start']<=$monthend) && $row['event_end']>=$monthend)
{
$events[$tmp][] = $row;
for ($c=($tmp+1); $c<=$tmp3; $c++)
{
$row['event_true_end'][$c] = 1;
$events[$c][] = $row;
}
//3) start before month, end in month
}
elseif($row['event_start']<=$monthstart && ($row['event_end']>=$monthstart && $row['event_end']<=$monthend))
{
for ($c=1; $c<=$tmp2; $c++)
{
$row['event_true_end'][$c] = ($c!=$tmp2 ? 1 : 2);
$events[$c][] = $row;
}
//4) start before month, end after month
}
elseif($row['event_start']<=$monthstart && $row['event_end']>=$monthend)
{
for ($c=1; $c<=$tmp3; $c++){
$row['event_true_end'][$c] = 1;
$events[$c][] = $row;
}
}
}
}
// ****** CAUTION - the category dropdown also used $sql object - take care to avoid interference!
$start = $monthstart;
$numberdays = date("t", $start); // number of days in this month
$text = "";
$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_START, FALSE, $calendar_shortcodes);
$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_HEADER_START, FALSE, $calendar_shortcodes);
foreach($week as $day)
{
$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_HEADER, FALSE, $calendar_shortcodes);
}
$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_HEADER_END, FALSE, $calendar_shortcodes);
$calmonth = $datearray['mon'];
$calday = $datearray['mday'];
$calyear = $datearray['year'];
if ($pref['eventpost_weekstart'] == 'mon')
{
$firstdayoffset = ($firstdayarray['wday'] == 0 ? $firstdayarray['wday']+6 : $firstdayarray['wday']-1);
}
else
{
$firstdayoffset = $firstdayarray['wday'] ;
}
for ($c=0; $c<$firstdayoffset; $c++)
{
$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_NON, FALSE, $calendar_shortcodes);
}
$loop = $firstdayoffset;
for ($c = 1; $c <= $numberdays; $c++)
{
$dayarray = getdate($start + (($c-1) * 86400));
$stopp = mktime(24, 0, 0, $calmonth, $c, $calyear);
$startt = mktime(0, 0, 0, $calmonth, $c, $calyear);
// Highlight the current day.
if ($dayarray['mon'] == $calmonth)
{
if ($nowday == $c && $calmonth == $nowmonth && $calyear == $nowyear)
{
//today
$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_TODAY, FALSE, $calendar_shortcodes);
}
elseif(isset($events[$c]) && is_array($events[$c]) && !empty($events[$c]) && count($events[$c]) > 0)
{
//day has events
$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_EVENT, FALSE, $calendar_shortcodes);
}
else
{
// no events and not today
$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_EMPTY, FALSE, $calendar_shortcodes);
}
// if there are events then list them
if (array_key_exists($c, $events))
{
foreach($events[$c] as $ev)
{
//if ($event_true_end[$c][$a]){
if(isset($ev['event_true_end']) && $ev['event_true_end'])
{
//$ev['indicat'] = ($ev['event_true_end']==1 ? "->" : "|");
$ev['indicat'] = "";
$ev['imagesize'] = "4";
$ev['fulltopic'] = FALSE;
$ev['startofevent'] = FALSE;
}
else
{
$ev['indicat'] = "";
$ev['imagesize'] = "8";
$ev['fulltopic'] = TRUE;
$ev['startofevent'] = TRUE;
}
$text .= $tp -> parseTemplate($CALENDAR_SHOWEVENT, FALSE, $calendar_shortcodes);
}
}
$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_END, FALSE, $calendar_shortcodes);
}
$loop++;
if ($loop == 7)
{
$loop = 0;
if($c != $numberdays)
{
$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_WEEKSWITCH, FALSE, $calendar_shortcodes);
}
}
}
//remainder cells to end the row properly with empty cells
if($loop!=0)
{
$remainder = 7-$loop;
for ($c=0; $c<$remainder; $c++)
{
$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_NON, FALSE, $calendar_shortcodes);
}
}
$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_END, FALSE, $calendar_shortcodes);
$caption = EC_LAN_79; // "Calendar View";
$nav = $cal_text . $nav_text . $text;
$ns->tablerender($caption, $nav);
require_once(FOOTERF);
?>