X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FPeriod.class.php;h=8456bbee3d4f2bb1e8c3a38671466e1d0f391b53;hb=e897b5c63d2e36b018970e1305760fc14976d7d3;hp=492d864bbd78a680f2f7fe7ebe29affe0c917d82;hpb=993450e17195b87dc406c3135ee22dafe9b825fb;p=timetracker.git diff --git a/WEB-INF/lib/Period.class.php b/WEB-INF/lib/Period.class.php index 492d864b..8456bbee 100644 --- a/WEB-INF/lib/Period.class.php +++ b/WEB-INF/lib/Period.class.php @@ -33,37 +33,46 @@ define('INTERVAL_THIS_YEAR', 4); define('INTERVAL_ALL_TIME', 5); define('INTERVAL_LAST_WEEK', 6); define('INTERVAL_LAST_MONTH', 7); +define('INTERVAL_LAST_DAY', 8); class Period { - var $mBeginDate; - var $mEndDate; - - function Period($period_name=0, $date_point=null) { - global $user; - - if (!$date_point || !($date_point instanceof DateAndTime)) { - $date_point = new DateAndTime(); - } - $startWeek = $user->week_start; + var $startDate; + var $endDate; + + function __construct($period_type = 0, $date_point = null) { + + global $user; + + if (!$date_point || !($date_point instanceof DateAndTime)) + $date_point = new DateAndTime(); + + // TODO: refactoring ongoing down from here. Make code nicer, etc. + $weekStartDay = $user->week_start; $date_begin = new DateAndTime(); $date_begin->setFormat($date_point->getFormat()); - $date_end = new DateAndTime(); + $date_end = new DateAndTime(); $date_end->setFormat($date_point->getFormat()); $t_arr = localtime($date_point->getTimestamp()); $t_arr[5] = $t_arr[5] + 1900; - if ($t_arr[6] < $startWeek) { - $startWeekBias = $startWeek - 7; + if ($t_arr[6] < $weekStartDay) { + $startWeekBias = $weekStartDay - 7; } else { - $startWeekBias = $startWeek; + $startWeekBias = $weekStartDay; } - switch ($period_name) { + switch ($period_type) { case INTERVAL_THIS_DAY: - $date_begin->setTimestamp($date_point->getTimestamp()); - $date_end->setTimestamp($date_point->getTimestamp()); - break; + $date_begin->setTimestamp($date_point->getTimestamp()); + $date_end->setTimestamp($date_point->getTimestamp()); + break; + + case INTERVAL_LAST_DAY: + $date_begin->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-1,$t_arr[5])); + $date_end->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-1,$t_arr[5])); + break; + case INTERVAL_THIS_WEEK: $date_begin->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-$t_arr[6]+$startWeekBias,$t_arr[5])); $date_end->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-$t_arr[6]+6+$startWeekBias,$t_arr[5])); @@ -86,8 +95,8 @@ class Period { $date_end->setTimestamp(mktime(0, 0, 0, 12, 31, $t_arr[5])); break; } - $this->mBeginDate = &$date_begin; - $this->mEndDate = &$date_end; + $this->startDate = &$date_begin; + $this->endDate = &$date_end; } /** @@ -97,7 +106,7 @@ class Period { */ function getAllDays() { $ret_array = array(); - if ($this->mBeginDate->before($this->mEndDate)) { + if ($this->startDate->before($this->endDate)) { $d = $this->getBegin(); while ($d->before($this->getEnd())) { array_push($ret_array, $d); @@ -105,34 +114,34 @@ class Period { } array_push($ret_array, $d); } else { - array_push($ret_array, $this->mBeginDate); + array_push($ret_array, $this->startDate); } return $ret_array; } function setPeriod($b_date, $e_date) { - $this->mBeginDate = $b_date; - $this->mEndDate = $e_date; + $this->startDate = $b_date; + $this->endDate = $e_date; } // return date object function getBegin() { - return $this->mBeginDate; + return $this->startDate; } // return date object function getEnd() { - return $this->mEndDate; + return $this->endDate; } // return date string function getBeginDate($format="") { - return $this->mBeginDate->toString($format); + return $this->startDate->toString($format); } // return date string function getEndDate($format="") { - return $this->mEndDate->toString($format); + return $this->endDate->toString($format); } function getArray($format="") {