Example #1
0
 /**
  * The getChanges method returns all the changes that have happened, since
  * the specified syncToken and the current collection.
  *
  * This function should return an array, such as the following:
  *
  * [
  *   'syncToken' => 'The current synctoken',
  *   'added'   => [
  *      'new.txt',
  *   ],
  *   'modified'   => [
  *      'modified.txt',
  *   ],
  *   'deleted' => [
  *      'foo.php.bak',
  *      'old.txt'
  *   ]
  * ];
  *
  * The syncToken property should reflect the *current* syncToken of the
  * collection, as reported getSyncToken(). This is needed here too, to
  * ensure the operation is atomic.
  *
  * If the syncToken is specified as null, this is an initial sync, and all
  * members should be reported.
  *
  * The modified property is an array of nodenames that have changed since
  * the last token.
  *
  * The deleted property is an array with nodenames, that have been deleted
  * from collection.
  *
  * The second argument is basically the 'depth' of the report. If it's 1,
  * you only have to report changes that happened only directly in immediate
  * descendants. If it's 2, it should also include changes from the nodes
  * below the child collections. (grandchildren)
  *
  * The third (optional) argument allows a client to specify how many
  * results should be returned at most. If the limit is not specified, it
  * should be treated as infinite.
  *
  * If the limit (infinite or not) is higher than you're willing to return,
  * you should throw a Sabre\DAV\Exception\TooMuchMatches() exception.
  *
  * If the syncToken is expired (due to data cleanup) or unknown, you must
  * return null.
  *
  * The limit is 'suggestive'. You are free to ignore it.
  *
  * @param string $syncToken
  * @param int $syncLevel
  * @param int $limit
  * @return array
  */
 function getChanges($syncToken, $syncLevel, $limit = null)
 {
     if (!$this->caldavBackend instanceof Backend\SyncSupport) {
         return null;
     }
     return $this->caldavBackend->getChangesForCalendar($this->calendarInfo['id'], $syncToken, $syncLevel, $limit);
 }
 /**
  * @depends testSimple
  */
 function testCreateExtendedCollection()
 {
     $mkCol = new MkCol(['{DAV:}collection', '{urn:ietf:params:xml:ns:caldav}calendar'], []);
     $result = $this->usercalendars->createExtendedCollection('newcalendar', $mkCol);
     $this->assertNull($result);
     $cals = $this->backend->getCalendarsForUser('principals/user1');
     $this->assertEquals(3, count($cals));
 }
Example #3
0
 /**
  * Performs a calendar-query on the contents of this calendar.
  *
  * The calendar-query is defined in RFC4791 : CalDAV. Using the
  * calendar-query it is possible for a client to request a specific set of
  * object, based on contents of iCalendar properties, date-ranges and
  * iCalendar component types (VTODO, VEVENT).
  *
  * This method should just return a list of (relative) urls that match this
  * query.
  *
  * The list of filters are specified as an array. The exact array is
  * documented by \Sabre\CalDAV\CalendarQueryParser.
  *
  * @param array $filters
  * @return array
  */
 function calendarQuery(array $filters)
 {
     $result = [];
     $validator = new CalDAV\CalendarQueryValidator();
     $objects = $this->caldavBackend->getSchedulingObjects($this->principalUri);
     foreach ($objects as $object) {
         $vObject = VObject\Reader::read($object['calendardata']);
         if ($validator->validate($vObject, $filters)) {
             $result[] = $object['uri'];
         }
     }
     return $result;
 }
Example #4
0
 /**
  * Performs a calendar-query on the contents of this calendar.
  *
  * The calendar-query is defined in RFC4791 : CalDAV. Using the
  * calendar-query it is possible for a client to request a specific set of
  * object, based on contents of iCalendar properties, date-ranges and
  * iCalendar component types (VTODO, VEVENT).
  *
  * This method should just return a list of (relative) urls that match this
  * query.
  *
  * The list of filters are specified as an array. The exact array is
  * documented by Sabre\CalDAV\CalendarQueryParser.
  *
  * @param array $filters
  * @return array
  */
 public function calendarQuery(array $filters)
 {
     return $this->caldavBackend->calendarQuery($this->calendarInfo['id'], $filters);
 }