summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/php/dto/EventDTO.php47
1 files changed, 47 insertions, 0 deletions
diff --git a/app/php/dto/EventDTO.php b/app/php/dto/EventDTO.php
new file mode 100644
index 0000000..4a16505
--- /dev/null
+++ b/app/php/dto/EventDTO.php
@@ -0,0 +1,47 @@
+<?php
+
+Prado::using('Application.model.Entry');
+Prado::using('Application.dto.CalendarDTO');
+
+class EventDTO {
+
+ public $DateString;
+ public $Name;
+ public $Location;
+ public $Calendar;
+
+ public function loadRecord(Entry $event, array $calendars) {
+ $this->Name = $event->Name;
+ $this->Location = $event->Location;
+
+ $utc = new DateTimeZone('UTC');
+ $targetTz = new DateTimeZone(date_default_timezone_get());
+ $beginDate = new DateTime($event->BeginDate, $utc);
+ $endDate = new DateTime($event->EndDate, $utc);
+ if ($event->AllDay) {
+ $endDate = $endDate->modify('-1 day');
+ $this->DateString = $beginDate->format('Y-m-d');
+ if ($beginDate != $endDate) {
+ $this->DateString .= sprintf(
+ ' - %s',
+ $endDate->format('Y-m-d')
+ );
+ }
+ } else {
+ $beginDate = $beginDate->setTimezone($targetTz);
+ $this->DateString = $beginDate->format('Y-m-d H:i');
+ }
+
+ $calendars = array_filter(
+ $calendars,
+ function ($calendar) use($event) {
+ return $calendar->UID == $event->CalendarID;
+ }
+ );
+ $this->Calendar = new CalendarDTO();
+ $this->Calendar->loadRecord($calendars ? array_values($calendars)[0] : $event->Calendar);
+ }
+
+}
+
+?>