X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FPeriod.class.php;h=0e901a8d6ebf5151e888f84cef3794b0605e926f;hb=75a1eedb8977b8f2db459128bab9aaf367e3b58b;hp=f159794a41f727b63491a52367a6b28c61cbdcc8;hpb=3655c5052140f504072336ec2d13dfc28dbd8957;p=timetracker.git diff --git a/WEB-INF/lib/Period.class.php b/WEB-INF/lib/Period.class.php index f159794a..0e901a8d 100644 --- a/WEB-INF/lib/Period.class.php +++ b/WEB-INF/lib/Period.class.php @@ -33,25 +33,48 @@ 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); + +/* +// Definitions for refactored code. TODO: uncomment when done. +define('INTERVAL_ALL_TIME', 0); +define('INTERVAL_CURRENT_YEAR', 10); +define('INTERVAL_PREVIOUS_YEAR', 14); +define('INTERVAL_SELECTED_YEAR', 18); +define('INTERVAL_CURRENT_MONTH', 20); +define('INTERVAL_PREVIOUS_MONTH', 24); +define('INTERVAL_SELECTED_MONTH', 28); +define('INTERVAL_CURRENT_WEEK', 30); +define('INTERVAL_PREVIOUS_WEEK', 34); +define('INTERVAL_SELECTED_WEEK', 38); +define('INTERVAL_CURRENT_DAY', 40); +define('INTERVAL_PREVIOUS_DAY', 44); +define('INTERVAL_SELECTED_DAY', 48); +*/ + +// TODO: Refactoring is needed for this class. Probably by refactoring DateAndTime first, as Period is +// basically a collection of 2 DateAndTime instances. +// +// Second problem is that "today" is (most likely?) server today, so reports may give incorrect dates +// for browser users in different time zones. Verify and fix this. class Period { - var $startDate; - var $endDate; + var $startDate; // DateAndTime object. + var $endDate; // DateAndTime object. function __construct($period_type = 0, $date_point = null) { global $user; if (!$date_point || !($date_point instanceof DateAndTime)) - $date_point = new DateAndTime(); + $date_point = new DateAndTime(); // Represents current date. TODO: verify this is needed, as this is server time, not browser today. // 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->setFormat($date_point->getFormat()); + $this->startDate = new DateAndTime(); + $this->startDate->setFormat($date_point->getFormat()); + $this->endDate = new DateAndTime(); + $this->endDate->setFormat($date_point->getFormat()); $t_arr = localtime($date_point->getTimestamp()); $t_arr[5] = $t_arr[5] + 1900; @@ -63,53 +86,37 @@ class Period { switch ($period_type) { case INTERVAL_THIS_DAY: - $date_begin->setTimestamp($date_point->getTimestamp()); - $date_end->setTimestamp($date_point->getTimestamp()); - break; + $this->startDate->setTimestamp($date_point->getTimestamp()); + $this->endDate->setTimestamp($date_point->getTimestamp()); + break; + + case INTERVAL_LAST_DAY: + $this->startDate->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-1,$t_arr[5])); + $this->endDate->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])); + $this->startDate->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-$t_arr[6]+$startWeekBias,$t_arr[5])); + $this->endDate->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-$t_arr[6]+6+$startWeekBias,$t_arr[5])); break; case INTERVAL_LAST_WEEK: - $date_begin->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-$t_arr[6]-7+$startWeekBias,$t_arr[5])); - $date_end->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-$t_arr[6]-1+$startWeekBias,$t_arr[5])); + $this->startDate->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-$t_arr[6]-7+$startWeekBias,$t_arr[5])); + $this->endDate->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-$t_arr[6]-1+$startWeekBias,$t_arr[5])); break; case INTERVAL_THIS_MONTH: - $date_begin->setTimestamp(mktime(0,0,0,$t_arr[4]+1,1,$t_arr[5])); - $date_end->setTimestamp(mktime(0,0,0,$t_arr[4]+2,0,$t_arr[5])); + $this->startDate->setTimestamp(mktime(0,0,0,$t_arr[4]+1,1,$t_arr[5])); + $this->endDate->setTimestamp(mktime(0,0,0,$t_arr[4]+2,0,$t_arr[5])); break; case INTERVAL_LAST_MONTH: - $date_begin->setTimestamp(mktime(0,0,0,$t_arr[4],1,$t_arr[5])); - $date_end->setTimestamp(mktime(0,0,0,$t_arr[4]+1,0,$t_arr[5])); + $this->startDate->setTimestamp(mktime(0,0,0,$t_arr[4],1,$t_arr[5])); + $this->endDate->setTimestamp(mktime(0,0,0,$t_arr[4]+1,0,$t_arr[5])); break; case INTERVAL_THIS_YEAR: - $date_begin->setTimestamp(mktime(0, 0, 0, 1, 1, $t_arr[5])); - $date_end->setTimestamp(mktime(0, 0, 0, 12, 31, $t_arr[5])); + $this->startDate->setTimestamp(mktime(0, 0, 0, 1, 1, $t_arr[5])); + $this->endDate->setTimestamp(mktime(0, 0, 0, 12, 31, $t_arr[5])); break; } - $this->startDate = &$date_begin; - $this->endDate = &$date_end; - } - - /** - * Return all days by period - * - * @return array - */ - function getAllDays() { - $ret_array = array(); - if ($this->startDate->before($this->endDate)) { - $d = $this->getBegin(); - while ($d->before($this->getEnd())) { - array_push($ret_array, $d); - $d = $d->nextDate(); - } - array_push($ret_array, $d); - } else { - array_push($ret_array, $this->startDate); - } - return $ret_array; } function setPeriod($b_date, $e_date) { @@ -117,18 +124,8 @@ class Period { $this->endDate = $e_date; } - // return date object - function getBegin() { - return $this->startDate; - } - - // return date object - function getEnd() { - return $this->endDate; - } - // return date string - function getBeginDate($format="") { + function getStartDate($format="") { return $this->startDate->toString($format); } @@ -136,14 +133,4 @@ class Period { function getEndDate($format="") { return $this->endDate->toString($format); } - - function getArray($format="") { - $result = array(); - $d = $this->getBegin(); - while ($d->before($this->getEnd())) { - $result[] = $d->toString($format); - $d = $d->nextDate(); - } - return $result; - } }