+ if ($componentType === 'VEVENT') {
+ /** @var Sabre\VObject\Component\VEvent $component */
+ /** @var Sabre\VObject\Property\DateTime $dtstart */
+ $dtstart = $component->__get("DTSTART");
+ $firstOccurence = $dtstart->getDateTime()->getTimeStamp();
+ // Finding the last occurence is a bit harder
+ if (!$component->__get("RRULE")) {
+ $lastOccurence = self::getDtEndTimeStamp($component);
+ } else {
+ $it = new Sabre\VObject\RecurrenceIterator($vObject, (string)$component->__get("UID"));
+ $maxDate = new DateTime(CALDAV_MAX_YEAR . "-01-01");
+ if ($it->isInfinite()) {
+ $lastOccurence = $maxDate->getTimeStamp();
+ } else {
+ $end = $it->getDtEnd();
+ while ($it->valid() && $end < $maxDate) {
+ $end = $it->getDtEnd();
+ $it->next();
+
+ }
+ $lastOccurence = $end->getTimeStamp();
+ }
+
+ }
+ }
+
+ return array(
+ 'etag' => md5($calendarData),
+ 'size' => strlen($calendarData),
+ 'componentType' => $componentType,
+ 'firstOccurence' => $firstOccurence,
+ 'lastOccurence' => $lastOccurence,
+ );