From 7ce0de9bdcea3820828d7d8bbb1b194f38177cfa Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Fri, 5 Jul 2013 14:30:31 +0200 Subject: Implemented {DAV:}creationdate for WebDAV --- lib/Kolab/DAV/File.php | 71 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/lib/Kolab/DAV/File.php b/lib/Kolab/DAV/File.php index 0fb9bb3..8e402c4 100644 --- a/lib/Kolab/DAV/File.php +++ b/lib/Kolab/DAV/File.php @@ -25,11 +25,12 @@ namespace Kolab\DAV; use \rcube; use \Exception; +use \DateTime; /** * File class */ -class File extends Node implements \Sabre\DAV\IFile +class File extends Node implements \Sabre\DAV\IFile, \Sabre\DAV\IProperties { /** @@ -149,4 +150,72 @@ class File extends Node implements \Sabre\DAV\IFile { return $this->data['type']; } + + /** + * Updates properties on this node, + * + * The properties array uses the propertyName in clark-notation as key, + * and the array value for the property value. In the case a property + * should be deleted, the property value will be null. + * + * This method must be atomic. If one property cannot be changed, the + * entire operation must fail. + * + * If the operation was successful, true can be returned. + * If the operation failed, false can be returned. + * + * Deletion of a non-existent property is always successful. + * + * Lastly, it is optional to return detailed information about any + * failures. In this case an array should be returned with the following + * structure: + * + * array( + * 403 => array( + * '{DAV:}displayname' => null, + * ), + * 424 => array( + * '{DAV:}owner' => null, + * ) + * ) + * + * In this example it was forbidden to update {DAV:}displayname. + * (403 Forbidden), which in turn also caused {DAV:}owner to fail + * (424 Failed Dependency) because the request needs to be atomic. + * + * @param array $mutations + * @return bool|array + */ + function updateProperties($mutations) + { + // not supported + return false; + } + + /** + * Returns a list of properties for this node. + * + * The properties list is a list of propertynames the client requested, + * encoded in clark-notation {xmlnamespace}tagname + * + * If the array is empty, it means 'all properties' were requested. + * + * Note that it's fine to liberally give properties back, instead of + * conforming to the list of requested properties. + * The Server class will filter out the extra. + * + * @param array $properties + * @return void + */ + function getProperties($properties) + { + $result = array(); + + if ($this->data['created']) { + $result['{DAV:}creationdate'] = \Sabre\HTTP\Util::toHTTPDate(new DateTime('@'.$this->data['created'])); + } + + return $result; + } + } -- cgit v0.12