/** * Constructor * @since Version 3.8.7 * @param int $id */ public function __construct($id = NULL) { parent::__construct(); $this->Module = new Module("events"); $this->namespace = $this->Module->namespace; if (!filter_var($id, FILTER_VALIDATE_INT)) { return; } if (!($row = $this->db->fetchRow("SELECT * FROM event_dates WHERE id = ?", $id))) { return; } $this->id = $id; $this->Event = Factory::CreateEvent($row['event_id']); $this->Date = new DateTime($row['date']); $this->meta = json_decode($row['meta'], true); $this->status = $row['status']; $this->url = new Url("/events?mode=event.date&event_id=" . $this->Event->id . "&date_id=" . $this->id); $this->url->approve = sprintf("/events?mode=event.date.setstatus&date_id=%d&status=%d", $this->id, self::STATUS_RUNNING); $this->url->reject = sprintf("/events?mode=event.date.setstatus&date_id=%d&status=%d", $this->id, self::STATUS_REJECTED); $this->url->cancel = sprintf("/events?mode=event.date.setstatus&date_id=%d&status=%d", $this->id, self::STATUS_CANCELLED); $this->url->export = sprintf("/events/export/date/%d.ics", $this->id); $this->setAuthor(UserFactory::CreateUser($row['user_id'])); if ($row['start'] != "00:00:00") { $this->Start = new DateTime($row['date'] . " " . $row['start']); } if ($row['end'] != "00:00:00") { $this->End = new DateTime($row['date'] . " " . $row['end']); } if (isset($this->meta['lat']) && empty($this->meta['lat'])) { unset($this->meta['lat']); } if (isset($this->meta['lon']) && empty($this->meta['lon'])) { unset($this->meta['lon']); } if (isset($this->meta['lat']) && isset($this->meta['lon'])) { $this->Place = Place::Factory($this->meta['lat'], $this->meta['lon']); } try { if ($this->Event->Place instanceof Place && !empty($this->Event->Place->Region->timezone)) { $this->Date->setTimezone(new DateTimeZone($this->Event->Place->Region->timezone)); if ($this->Start instanceof DateTime) { $this->Start->setTimezone(new DateTimeZone($this->Event->Place->Region->timezone)); } if ($this->End instanceof DateTime) { $this->End->setTimezone(new DateTimeZone($this->Event->Place->Region->timezone)); } } } catch (Exception $e) { printArray($e->getMessage()); printArray($this->Event->Place->Region->timezone); } }