/** * converts events to calendar objects * * @param Calendar_Model_Event $event (from MSFacade atm.) */ protected function _convertCalendarObject($event) { $eventId = $event->getId(); $lastModified = $event->last_modified_time ? $event->last_modified_time : $event->creation_time; // we always use a event set to return exdates at once $eventSet = new Tinebase_Record_RecordSet('Calendar_Model_Event', array($event)); if ($event->rrule) { foreach ($event->exdate as $exEvent) { if (!$exEvent->is_deleted) { $eventSet->addRecord($exEvent); $event->exdate->removeRecord($exEvent); } } // remaining exdates are fallouts $event->exdate = $event->exdate->getOriginalDtStart(); } $exporter = new Calendar_Export_Ical(); $ics = $exporter->eventToIcal($eventSet); // work arround broken exdate handling in apple ical // -> not neccesary at the moment this is done generally in ics export return array('id' => $eventId, 'uri' => $eventId, 'lastmodified' => $lastModified->getTimeStamp(), 'calendardata' => $ics); }
public function testExportAlarm() { // alarm handling is ugly... $alarmTime = clone $this->_testEvent->dtstart; $alarmTime->sub(15, Tinebase_DateTime::MODIFIER_MINUTE); $this->_testEvent->alarms = new Tinebase_Record_RecordSet('Tinebase_Model_Alarm', array(new Tinebase_Model_Alarm(array('minutes_before' => 15, 'alarm_time' => $alarmTime), TRUE))); $exporter = new Calendar_Export_Ical(); $ics = $exporter->eventToIcal($this->_testEvent); // assert organizer $this->assertEquals(1, preg_match("/TRIGGER:-PT15M\r\n/", $ics), 'TRIGGER missing/broken'); }