summaryrefslogtreecommitdiff
path: root/lib/Kolab/DAV
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Kolab/DAV')
-rw-r--r--lib/Kolab/DAV/File.php71
1 files changed, 70 insertions, 1 deletions
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;
+ }
+
}