private function getEventNodeProperties(PhutilCalendarEventNode $event) { $properties = array(); $uid = $event->getUID(); if (!strlen($uid)) { throw new Exception(pht('Unable to write ICS document: event has no UID, but each event ' . 'MUST have a UID.')); } $properties[] = $this->newTextProperty('UID', $uid); $created = $event->getCreatedDateTime(); if ($created) { $properties[] = $this->newDateTimeProperty('CREATED', $event->getCreatedDateTime()); } $dtstamp = $event->getModifiedDateTime(); if (!$dtstamp) { throw new Exception(pht('Unable to write ICS document: event has no modified time, but ' . 'each event MUST have a modified time.')); } $properties[] = $this->newDateTimeProperty('DTSTAMP', $dtstamp); $dtstart = $event->getStartDateTime(); if ($dtstart) { $properties[] = $this->newDateTimeProperty('DTSTART', $dtstart); } $dtend = $event->getEndDateTime(); if ($dtend) { $properties[] = $this->newDateTimeProperty('DTEND', $event->getEndDateTime()); } $name = $event->getName(); if (strlen($name)) { $properties[] = $this->newTextProperty('SUMMARY', $name); } $description = $event->getDescription(); if (strlen($description)) { $properties[] = $this->newTextProperty('DESCRIPTION', $description); } $organizer = $event->getOrganizer(); if ($organizer) { $properties[] = $this->newUserProperty('ORGANIZER', $organizer); } $attendees = $event->getAttendees(); if ($attendees) { foreach ($attendees as $attendee) { $properties[] = $this->newUserProperty('ATTENDEE', $attendee); } } return $properties; }