function update($data)
 {
     $uid = substr($data['uid'], strlen('event-'));
     $oldCalName = $data['oldCalName'];
     $calName = $data['calName'];
     $eventStart = $data['eventStart'];
     $eventEnd = $data['eventEnd'];
     $eventText = $data['eventText'];
     if ($calName == null) {
         throw new Exception("no calendar name");
     }
     if ($uid == '' && ($eventStart == null || $eventEnd == null)) {
         throw new Exception("no start/end date");
     }
     if ($uid == '' && $eventText == '') {
         throw new Exception("haven't created event because text is empty");
     }
     if ($oldCalName != null) {
         // we have an old calendar, so move event from that cal to $calName
         // possibly updating event summary as well
         $this->moveEvent($uid, $eventText, $oldCalName, $calName);
     } else {
         if ($uid == '') {
             // No UID so create a new event
             $event = new vevent();
             $event->setProperty('summary', $eventText);
             $event->setProperty('dtstart', $eventStart, array('VALUE' => 'DATE'));
             $event->setProperty('dtend', $eventEnd, array('VALUE' => 'DATE'));
             $uid = $event->getProperty('uid');
             $cal = new Calendar($calName);
             $cal->setComponent($event);
             $cal->save();
             return $uid;
         } else {
             if ($eventText === '') {
                 // Event text is now empty, so delete event
                 $cal = new Calendar($calName);
                 $cal->deleteComponent($uid);
                 $cal->save();
             } else {
                 // Update the event
                 $cal = new Calendar($calName);
                 $event = $cal->getComponent($uid);
                 if ($eventText != null) {
                     $event->setProperty('summary', $eventText);
                 }
                 if ($eventStart != null) {
                     $event->setProperty('dtstart', $eventStart, array('VALUE' => 'DATE'));
                 }
                 if ($eventEnd != null) {
                     $event->setProperty('dtend', $eventEnd, array('VALUE' => 'DATE'));
                 }
                 $cal->setComponent($event, $uid);
                 $cal->save();
             }
         }
     }
 }
Example #2
0
 /**
  * Returns modified ical uid for google recurring edited events.
  *
  * @param vevent $e Vevent object.
  *
  * @return string ICAL uid.
  */
 protected function _get_ical_uid($e)
 {
     $ical_uid = $e->getProperty('uid');
     $recurrence_id = $e->getProperty('recurrence-id');
     if (false !== $recurrence_id) {
         $ical_uid = implode('', array_values($recurrence_id)) . '-' . $ical_uid;
     }
     return $ical_uid;
 }