This is not for DAV content storage, but for metadata storage.
protected function _postSave(Kronolith_Event $event) { global $registry; if (!$this->_dav->getInternalObjectId($this->_params['object'], $this->_calendar)) { $this->_dav->addObjectMap($event->id, $this->_params['object'], $this->_calendar); } // Send iTip messages if necessary. $type = Kronolith::ITIP_REQUEST; if ($event->organizer && !Kronolith::isUserEmail($event->creator, $event->organizer)) { $type = Kronolith::ITIP_REPLY; } $event_copy = clone $event; $event_copy->attendees = $event->attendees->without($this->_noItips); $notification = new Horde_Notification_Handler(new Horde_Notification_Storage_Object()); Kronolith::sendITipNotifications($event_copy, $notification, $type); // Send ITIP_CANCEL to any attendee that was removed, but only if this // is the ORGANZIER's copy of the event. if (empty($event->organizer) || $registry->getAuth() == $event->creator && Kronolith::isUserEmail($event->creator, $event->organizer)) { $removed_attendees = new Kronolith_Attendee_List(); foreach ($this->_oldAttendees as $old_attendee) { if (!$event->attendees->has($old_attendee)) { $removed_attendees->add($old_attendee); } } if (count($removed_attendees)) { $cancelEvent = clone $event; Kronolith::sendITipNotifications($cancelEvent, $notification, Kronolith::ITIP_CANCEL, null, null, $removed_attendees); } } }
/** * Returns the application that owns a certain calendar or task list. * * @param string $calendarId An external calendar or task list id. * * @return string The application that owns the calendar or task list. * @throws Sabre\DAV\Exception if the application cannot be found. */ protected function _interface($calendarId) { $interface = $this->_storage->getCollectionInterface($calendarId); if (!$interface || !isset($this->_interfaces[$interface])) { throw new DAV\Exception(sprintf('No interface found for calendar %s', $calendarId)); } return $this->_interfaces[$interface]; }