diff -r 000000000000 -r 03b0d1493584 web/wp-content/plugins/event-calendar/date.php --- /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 @@ +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); +} + +?>