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); } ?>