add admin timetable
This commit is contained in:
@@ -17,6 +17,9 @@ use DateTime;
|
||||
class EventInterval
|
||||
{
|
||||
|
||||
public $year;
|
||||
public $month;
|
||||
|
||||
public $countOfActiveDays = 14;
|
||||
public $daysToDisplay = 21;
|
||||
|
||||
@@ -26,19 +29,27 @@ class EventInterval
|
||||
public $firstDisplayDate;
|
||||
public $lastDisplayDate;
|
||||
|
||||
private function __construct()
|
||||
private function __construct($today = null, $countOfActiveDays = 14,$daysToDisplay = 21)
|
||||
{
|
||||
|
||||
$firstActiveDay = new DateTime();
|
||||
$this->countOfActiveDays = $countOfActiveDays;
|
||||
$this->daysToDisplay = $daysToDisplay;
|
||||
|
||||
if ( !isset($today)){
|
||||
$today = new DateTime();
|
||||
}
|
||||
$today->setTime(0, 0);
|
||||
|
||||
$firstActiveDay = clone $today;
|
||||
$firstActiveDay->setTime(0, 0);
|
||||
$this->firstActiveDate = $firstActiveDay;
|
||||
|
||||
$lastActiveDay = new DateTime();
|
||||
$lastActiveDay = clone $firstActiveDay;
|
||||
$lastActiveDay->setTime(0, 0);
|
||||
$lastActiveDay->modify('+' . $this->countOfActiveDays . ' day');
|
||||
$this->lastActiveDate = $lastActiveDay;
|
||||
|
||||
$firstDisplayDate = new DateTime();
|
||||
$firstDisplayDate = clone $firstActiveDay;
|
||||
$firstDisplayDate->modify('this week');
|
||||
$firstDisplayDate->setTime(0, 0);
|
||||
$this->firstDisplayDate = $firstDisplayDate;
|
||||
@@ -50,7 +61,37 @@ class EventInterval
|
||||
|
||||
}
|
||||
|
||||
public static function createInterval(){
|
||||
return new EventInterval();
|
||||
}
|
||||
public static function createInterval($today = null,$countOfActiveDays = 14,$daysToDisplay = 21)
|
||||
{
|
||||
return new EventInterval($today,$countOfActiveDays,$daysToDisplay);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DateTime $day
|
||||
* @return bool true if active, otherwise false
|
||||
*/
|
||||
public function isActive($day)
|
||||
{
|
||||
$afterFirstActiveDay = $this->firstActiveDate < $day || $this->firstActiveDate == $day;
|
||||
$beforeLastActiveDay = $this->lastActiveDate > $day || $this->lastActiveDate == $day;
|
||||
|
||||
return ($afterFirstActiveDay && $beforeLastActiveDay);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return DateTime[]
|
||||
*/
|
||||
public function getAllDisplayDates()
|
||||
{
|
||||
$dates = array();
|
||||
for ($i = 0; $i < $this->daysToDisplay; $i++) {
|
||||
$date = clone $this->firstDisplayDate;
|
||||
$date = $date->modify('+' . $i . ' day');
|
||||
$dates[] = $date;
|
||||
}
|
||||
return $dates;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user