コード例 #1
0
 private function newUpdateTransactions(PhabricatorCalendarEvent $event, PhutilCalendarEventNode $node)
 {
     $xactions = array();
     $uid = $node->getUID();
     if (!$event->getID()) {
         $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorTransactions::TYPE_CREATE)->setNewValue(true);
     }
     $name = $node->getName();
     if (!strlen($name)) {
         if (strlen($uid)) {
             $name = pht('Unnamed Event "%s"', $uid);
         } else {
             $name = pht('Unnamed Imported Event');
         }
     }
     $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorCalendarEventNameTransaction::TRANSACTIONTYPE)->setNewValue($name);
     $description = $node->getDescription();
     $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorCalendarEventDescriptionTransaction::TRANSACTIONTYPE)->setNewValue((string) $description);
     $is_recurring = (bool) $node->getRecurrenceRule();
     $xactions[] = id(new PhabricatorCalendarEventTransaction())->setTransactionType(PhabricatorCalendarEventRecurringTransaction::TRANSACTIONTYPE)->setNewValue($is_recurring);
     return $xactions;
 }
コード例 #2
0
 private function didParseEventProperty(PhutilCalendarEventNode $node, $name, array $parameters, array $value)
 {
     switch ($name) {
         case 'UID':
             $text = $this->newTextFromProperty($parameters, $value);
             $node->setUID($text);
             break;
         case 'CREATED':
             $datetime = $this->newDateTimeFromProperty($parameters, $value);
             $node->setCreatedDateTime($datetime);
             break;
         case 'DTSTAMP':
             $datetime = $this->newDateTimeFromProperty($parameters, $value);
             $node->setModifiedDateTime($datetime);
             break;
         case 'SUMMARY':
             $text = $this->newTextFromProperty($parameters, $value);
             $node->setName($text);
             break;
         case 'DESCRIPTION':
             $text = $this->newTextFromProperty($parameters, $value);
             $node->setDescription($text);
             break;
         case 'DTSTART':
             $datetime = $this->newDateTimeFromProperty($parameters, $value);
             $node->setStartDateTime($datetime);
             break;
         case 'DTEND':
             $datetime = $this->newDateTimeFromProperty($parameters, $value);
             $node->setEndDateTime($datetime);
             break;
         case 'DURATION':
             $duration = $this->newDurationFromProperty($parameters, $value);
             $node->setDuration($duration);
             break;
     }
 }
コード例 #3
0
 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;
 }