--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-content/plugins/event-calendar/date.php Wed Dec 23 17:55:33 2009 +0000
@@ -0,0 +1,248 @@
+<?php
+/*
+Copyright (c) 2005, Alex Tingle. $Revision: 287 $
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+/** Calendar class. Encapsulates all functionality concerning the calendar -
+ * how many days in each month, leap years, days of the week, locale
+ * names etc. */
+class ec3_Date
+{
+ var $year_num =0;
+ var $month_num=0;
+ var $day_num =1;
+ var $_unixdate =0;
+ var $_days_in_month =0;
+
+ function ec3_Date($year_num=0,$month_num=0,$day_num=0)
+ {
+ global $ec3;
+ if($year_num>0)
+ {
+ $this->year_num =$year_num;
+ $this->month_num=$month_num;
+ $this->day_num =$day_num;
+ }
+ if(0==$this->year_num && is_single())
+ $this->from_single();
+ if(0==$this->year_num && $ec3->is_date_range)
+ $this->from_date_range();
+ if(0==$this->year_num)
+ $this->from_date(); // Falls back to today.
+ }
+
+ function from_single()
+ {
+ global $wp_query;
+ if($wp_query->posts && $wp_query->posts[0]->ec3_schedule)
+ {
+ $this->year_num=
+ intval(mysql2date('Y',$wp_query->posts[0]->ec3_schedule[0]->start));
+ $this->month_num=
+ intval(mysql2date('m',$wp_query->posts[0]->ec3_schedule[0]->start));
+ }
+ }
+
+ function from_date_range()
+ {
+ global $wp_query;
+ if('' != $wp_query->query_vars['ec3_from'])
+ {
+ $c=explode('_',$wp_query->query_vars['ec3_from']);
+ $this->year_num=intval($c[0]);
+ $this->month_num=intval($c[1]);
+ }
+ }
+
+ /** Utility function. Calculates the value of month/year for the current
+ * page. Code block from wp-includes/template-functions-general.php
+ * (get_calendar function). */
+ function from_date()
+ {
+ global
+ $m,
+ $monthnum,
+ $wpdb,
+ $year;
+
+ if (isset($_GET['w'])) {
+ $w = ''.intval($_GET['w']);
+ }
+
+ // Let's figure out when we are
+ if (!empty($monthnum) && !empty($year)) {
+ $thismonth = ''.zeroise(intval($monthnum), 2);
+ $thisyear = ''.intval($year);
+ } elseif (!empty($w)) {
+ // We need to get the month from MySQL
+ $thisyear = ''.intval(substr($m, 0, 4));
+ $d = (($w - 1) * 7) + 6; //it seems MySQL's weeks disagree with PHP's
+ $thismonth = $wpdb->get_var("SELECT DATE_FORMAT((DATE_ADD('${thisyear}0101', INTERVAL $d DAY) ), '%m')");
+ } elseif (!empty($m)) {
+// $calendar = substr($m, 0, 6);
+ $thisyear = ''.intval(substr($m, 0, 4));
+ if (strlen($m) < 6) {
+ $thismonth = '01';
+ } else {
+ $thismonth = ''.zeroise(intval(substr($m, 4, 2)), 2);
+ }
+ } else {
+ $thisyear=ec3_strftime("%Y");
+ $thismonth=ec3_strftime("%m");
+ }
+
+ $this->year_num =intval($thisyear);
+ $this->month_num=intval($thismonth);
+ $this->day_num =1;
+ }
+
+ /** Month arithmetic. Returns a new date object. */
+ function plus_months($month_count)
+ {
+ $result=new ec3_Date($this->year_num,$this->month_num,$this->day_num);
+ $result->month_num += $month_count;
+ if($month_count>0)
+ {
+ while($result->month_num>12)
+ {
+ $result->month_num -= 12;
+ $result->year_num++;
+ }
+ }
+ else
+ {
+ while($result->month_num<1)
+ {
+ $result->month_num += 12;
+ $result->year_num--;
+ }
+ }
+ return $result;
+ }
+ /** Convenience function for accessing plus_months(). */
+ function prev_month() { return $this->plus_months(-1); }
+ function next_month() { return $this->plus_months( 1); }
+
+ /** Modifies the current object to be one day in the future. */
+ function increment_day()
+ {
+ $this->day_num++;
+ if($this->day_num > $this->days_in_month())
+ {
+ $this->day_num=1;
+ $this->month_num++;
+ if($this->month_num>12)
+ {
+ $this->month_num=1;
+ $this->year_num++;
+ }
+ $this->_days_in_month=0;
+ }
+ $this->_unixdate=0;
+ }
+
+ function month_id() // e.g. ec3_2005_06
+ {
+ return 'ec3_' . $this->year_num . '_' . $this->month_num;
+ }
+ function day_id() // e.g. ec3_2005_06_25
+ {
+ $result='ec3_'.$this->year_num.'_'.$this->month_num.'_'.$this->day_num;
+ global $ec3_today_id;
+ if($result==$ec3_today_id)
+ return 'today';
+ else
+ return $result;
+ }
+ function day_link()
+ {
+ global $ec3;
+ if($ec3->show_only_events)
+ {
+ return get_option('home') . '/?m='
+ . $this->year_num
+ . zeroise($this->month_num, 2)
+ . zeroise($this->day_num, 2)
+ . "&cat=" . $ec3->event_category;
+ }
+ else
+ return get_day_link($this->year_num,$this->month_num,$this->day_num);
+ }
+ function month_name() // e.g. June
+ {
+ global $month;
+ return $month[zeroise($this->month_num,2)];
+ }
+ function month_abbrev() // e.g. Jun
+ {
+ global $month_abbrev;
+ return $month_abbrev[ $this->month_name() ];
+ }
+ function month_link()
+ {
+ global $ec3;
+ if($ec3->show_only_events)
+ {
+ return get_option('home') . '/?m='
+ . $this->year_num
+ . zeroise($this->month_num, 2)
+ . "&cat=" . $ec3->event_category;
+ }
+ else
+ return get_month_link($this->year_num,$this->month_num);
+ }
+ function days_in_month()
+ {
+ if(0==$this->_days_in_month)
+ $this->_days_in_month=intval(date('t', $this->to_unixdate()));
+ return $this->_days_in_month;
+ }
+ function week_day()
+ {
+ return intval(date('w', $this->to_unixdate()));
+ }
+ function to_unixdate()
+ {
+ if(0==intval($this->_unixdate))
+ {
+ $this->_unixdate =
+ mktime(0,0,0, $this->month_num,$this->day_num,$this->year_num);
+ }
+ return $this->_unixdate;
+ }
+} // end class ec3_Date
+
+
+/** Converts a MySQL date object into an EC3 date object. */
+function ec3_mysql2date(&$mysqldate)
+{
+ $as_str=mysql2date('Y,n,j',$mysqldate);
+ $as_arr=explode(',',$as_str);
+ return new ec3_Date($as_arr[0],$as_arr[1],$as_arr[2]);
+}
+
+/** Converts a day or month Id to a PHP date. */
+function ec3_dayid2php(&$id)
+{
+ $parts=explode('_',$id);
+ $year =intval($parts[1]);
+ $month=intval($parts[2]);
+ $day =(count($parts)>=4? intval($parts[3]): 1);
+ return mktime( 0,0,0, $month,$day,$year);
+}
+
+?>