'Week Range', 'pi_version' => '1.2.1', 'pi_author' => 'Brian Litzinger', 'pi_author_url' => 'http://www.brianlitzinger.com/ee/', 'pi_description' => 'Display a 1 week calendar', 'pi_usage' => Week_range::usage() ); class Week_range { var $return_data; var $week_start; var $week_end; var $current_date; var $format_month; var $format_day; var $format_day_of_week; var $format_year; var $separator; var $date; var $today_first; var $start_day = 'last sunday'; var $end_day = 'next saturday'; function Week_range() { global $TMPL; $this->increment = $TMPL->fetch_param('increment') ? $TMPL->fetch_param('increment') : 0; $this->date = $TMPL->fetch_param('date') ? $TMPL->fetch_param('date') : date('Y-m-d'); $this->format_month = $TMPL->fetch_param('format_month') ? $TMPL->fetch_param('format_month') : 'm'; $this->format_day = $TMPL->fetch_param('format_day') ? $TMPL->fetch_param('format_day') : 'd'; $this->format_day_of_week = $TMPL->fetch_param('format_day_of_week') ? $TMPL->fetch_param('format_day_of_week') : 'l'; $this->format_year = $TMPL->fetch_param('format_year') ? $TMPL->fetch_param('format_year') : 'Y'; $this->separator = $TMPL->fetch_param('separator') ? $TMPL->fetch_param('separator') : '–'; $this->today_first = $TMPL->fetch_param('today_first') ? $TMPL->fetch_param('today_first') : 'no'; if($this->today_first == 'yes') { $this->start_day = 'today'; $this->end_day = strtolower('next ' . date('l', strtotime($this->start_date . '+6 days'))); } list($this->start_date, $this->end_date) = $this->_get_range($this->date); } function days() { global $TMPL; for($i = 0; $i <= 6; $i++) { $tagdata = $TMPL->tagdata; foreach ($TMPL->var_single as $var) { if($var == 'count') { $tagdata = $TMPL->swap_var_single($var, $i, $tagdata); } else { $val = date($this->{'format_'.$var}, strtotime($this->start_date . '+' . $i .' days')); $tagdata = $TMPL->swap_var_single($var, $val, $tagdata); } } $this->return_data .= $tagdata; } return $this->return_data; } function day() { if($this->increment == '1') { $this->return_data = date($this->format_day, strtotime($this->start_date)); } else { $increment--; $this->return_data = date($this->format_day, strtotime($this->start_date . '+' . $this->increment .' days')); } return $this->return_data; } function month() { $this->return_data = date($this->format_month, strtotime($this->start_date)); return $this->return_data; } function year() { $this->return_data = date($this->format_year, strtotime($this->start_date)); return $this->return_data; } function day_of_week() { if($this->increment == '1') { $this->return_data = date($this->format_day_of_week, strtotime($this->start_date)); } else { $increment--; $this->return_data = date($this->format_day_of_week, strtotime($this->start_date . '+' . $this->increment .' days')); } return $this->return_data; } function full_date() { $month_start = date($this->format_month, strtotime($this->start_date)); $month_end = date($this->format_month, strtotime($this->end_date)); $day_start = date($this->format_day, strtotime($this->start_date)); $day_end = date($this->format_day, strtotime($this->end_date)); $year_start = date($this->format_year, strtotime($this->start_date)); $year_end = date($this->format_year, strtotime($this->end_date)); $week_title = $month_start . ' ' . $day_start; $week_title .= ($year_start != $year_end) ? ', ' . $year_start : ''; $week_title .= $this->separator; $week_title .= ($month_start != $month_end) ? $month_end . ' ' : ''; $week_title .= $day_end . ', '; $week_title .= ($year_start != $year_end) ? $year_end : $year_start; $this->return_data = $week_title; return $this->return_data; } function _get_range($date) { $ts = strtotime($date); $start = (date('w', $ts) == 0) ? $ts : strtotime($this->start_day, $ts); return array(date('Y-m-d', $start), date('Y-m-d', strtotime($this->end_day, $start))); } function usage() { ob_start(); ?> Print out a single week of a calendar, or get Month, Day, or Year values from a week range with a given date. Defaults to today's date. Loop through each day of the week, and print a calendar. {exp:week_range:days}