| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <?php
- declare(strict_types=1);
- namespace Sabre\DAV\Sync;
- use Sabre\DAV;
- /**
- * If a class extends ISyncCollection, it supports WebDAV-sync.
- *
- * You are responsible for maintaining a changelist for this collection. This
- * means that if any child nodes in this collection was created, modified or
- * deleted in any way, you should maintain an updated changelist.
- *
- * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
- * @author Evert Pot (http://evertpot.com/)
- * @license http://sabre.io/license/ Modified BSD License
- */
- interface ISyncCollection extends DAV\ICollection
- {
- /**
- * This method returns the current sync-token for this collection.
- * This can be any string.
- *
- * If null is returned from this function, the plugin assumes there's no
- * sync information available.
- *
- * @return string|null
- */
- public function getSyncToken();
- /**
- * 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' => array(
- * '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|null
- */
- public function getChanges($syncToken, $syncLevel, $limit = null);
- }
|