117 lines
4.4 KiB
PHP
117 lines
4.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\DAV\Backend\CalDAV;
|
|
|
|
interface ICalDAVBackend
|
|
{
|
|
/**
|
|
* Returns a list of properties for a principal.
|
|
*
|
|
* Every project is an array with the following keys:
|
|
* * id, a unique id that will be used by other functions to modify the
|
|
* calendar. This can be the same as the uri or a database key.
|
|
* * uri, which is the basename of the uri with which the calendar is
|
|
* accessed.
|
|
* * principaluri. The owner of the calendar. Almost always the same as
|
|
* principalUri passed to this method.
|
|
*
|
|
* Furthermore it can contain webdav properties in clark notation. A very
|
|
* common one is '{DAV:}displayname'.
|
|
*
|
|
* Many clients also require:
|
|
* {urn:ietf:params:xml:ns:caldav}supported-calendar-component-set
|
|
* For this property, you can just return an instance of
|
|
* Sabre\CalDAV\Property\SupportedCalendarComponentSet.
|
|
*
|
|
* If you return {http://sabredav.org/ns}read-only and set the value to 1,
|
|
* ACL will automatically be put in read-only mode.
|
|
*
|
|
************************
|
|
* == From Subscription :
|
|
* Furthermore, all the subscription info must be returned too:
|
|
*
|
|
* 1. {DAV:}displayname
|
|
* 2. {http://apple.com/ns/ical/}refreshrate
|
|
* 3. {http://calendarserver.org/ns/}subscribed-strip-todos (omit if todos
|
|
* should not be stripped).
|
|
* 4. {http://calendarserver.org/ns/}subscribed-strip-alarms (omit if alarms
|
|
* should not be stripped).
|
|
* 5. {http://calendarserver.org/ns/}subscribed-strip-attachments (omit if
|
|
* attachments should not be stripped).
|
|
* 6. {http://calendarserver.org/ns/}source (Must be a
|
|
* Sabre\DAV\Property\Href).
|
|
* 7. {http://apple.com/ns/ical/}calendar-color
|
|
* 8. {http://apple.com/ns/ical/}calendar-order
|
|
* 9. {urn:ietf:params:xml:ns:caldav}supported-calendar-component-set
|
|
* (should just be an instance of
|
|
* Sabre\CalDAV\Property\SupportedCalendarComponentSet, with a bunch of
|
|
* default components).
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getDescription();
|
|
|
|
/**
|
|
* The getChanges method returns all the changes that have happened, since
|
|
* the specified syncToken in the specified calendar.
|
|
*
|
|
* @param string $syncToken
|
|
* @return array
|
|
*/
|
|
public function getChanges($syncToken);
|
|
|
|
/**
|
|
* Returns calendar object.
|
|
*
|
|
* It returns an array with the following keys:
|
|
* * calendardata - The iCalendar-compatible calendar data
|
|
* * uri - a unique key which will be used to construct the uri. This can
|
|
* be any arbitrary string, but making sure it ends with '.ics' is a
|
|
* good idea. This is only the basename, or filename, not the full
|
|
* path.
|
|
* * lastmodified - a timestamp of the last modification time
|
|
* * etag - An arbitrary string, surrounded by double-quotes. (e.g.:
|
|
* '"abcdef"')
|
|
* * size - The size of the calendar objects, in bytes.
|
|
* * component - optional, a string containing the type of object, such
|
|
* as 'vevent' or 'vtodo'. If specified, this will be used to populate
|
|
* the Content-Type header.
|
|
*
|
|
* Note that the etag is optional, but it's highly encouraged to return for
|
|
* speed reasons.
|
|
*
|
|
* @param mixed $obj
|
|
* @return array
|
|
*/
|
|
public function prepareData($obj);
|
|
|
|
/**
|
|
* Updates an existing calendarobject, based on it's uri.
|
|
*
|
|
* The object uri is only the basename, or filename and not a full path.
|
|
*
|
|
* It is possible return an etag from this function, which will be used in
|
|
* the response to this PUT request. Note that the ETag must be surrounded
|
|
* by double-quotes.
|
|
*
|
|
* However, you should only really return this ETag if you don't mangle the
|
|
* calendar-data. If the result of a subsequent GET to this object is not
|
|
* the exact same as this request body, you should omit the ETag.
|
|
*
|
|
* @param string $objectUri
|
|
* @param string $calendarData
|
|
* @return string|null
|
|
*/
|
|
public function updateOrCreateCalendarObject($objectUri, $calendarData): ?string;
|
|
|
|
/**
|
|
* Deletes an existing calendar object.
|
|
*
|
|
* The object uri is only the basename, or filename and not a full path.
|
|
*
|
|
* @param string $objectUri
|
|
* @return void
|
|
*/
|
|
public function deleteCalendarObject($objectUri);
|
|
}
|