<?php Prado::using('Application.dto.EventDTO'); Prado::using('Application.dto.GridEventDTO'); class CalendarGridDayDTO { public $Date; public $Events; public function __construct(DateTimeImmutable $date, array $events) { $this->Date = $date->format('Y-m-d'); $this->Events = array_filter($events, [$this, '_checkEventDate']); // initial sort (date and calendar name) // events are going to be re-sorted after assigning grid priorities usort($this->Events, ['EventDTO', '__compare']); } private function _checkEventDate(GridEventDTO $event) { if (!$this->Date) { return FALSE; } return ($this->Date >= $event->DateFrom) && ($this->Date <= $event->DateTo); } } ?>