/** * @return ShiftPatternDate */ public function __construct(Template $template, DateTime $date, $templateFileName) { parent::__construct(null); $this->addRule(__CLASS__ . '::validatePattern', 'Shift pattern is invalid.'); $this->_template = $template; $this->_template->setFile(__DIR__ . "/{$templateFileName}"); $this->_template->registerHelper('dayName', function ($dayNumber) { return DateTime::dayName($dayNumber); }); $this->_template->registerHelper('padTime', function ($t) { if ($t < 10) { return '0' . $t; } return $t; }); $this->_template->registerHelper('selectOption', function ($timeUnit, $time, $type) { $timeUnit = (int) $timeUnit; list($hour, $minute) = explode(':', $time); $hour = (int) $hour; $minute = (int) $minute; if ($type === 'h') { return $timeUnit === $hour ? 'selected="selected"' : ''; } if ($type === 'm') { return $timeUnit === $minute ? 'selected="selected"' : ''; } }); // returns curren formated date and moves date one day forward $this->_template->registerHelper('day', function ($date) { $day = $date->format('j F'); $date->addDay(); return $day; }); $this->_date = $date; }