diff --git a/lib/private/connector/sabre/filesplugin.php b/lib/private/connector/sabre/filesplugin.php index ac781825672cdbe28a5b2bac44ba0c27e6df6430..89444cb8d18a8b83f39646e94b749b86ee53c3cf 100644 --- a/lib/private/connector/sabre/filesplugin.php +++ b/lib/private/connector/sabre/filesplugin.php @@ -40,6 +40,8 @@ class OC_Connector_Sabre_FilesPlugin extends Sabre_DAV_ServerPlugin $this->server = $server; $this->server->subscribeEvent('beforeGetProperties', array($this, 'beforeGetProperties')); + $this->server->subscribeEvent('afterCreateFile', array($this, 'sendFileIdHeader')); + $this->server->subscribeEvent('afterWriteContent', array($this, 'sendFileIdHeader')); } /** @@ -70,4 +72,18 @@ class OC_Connector_Sabre_FilesPlugin extends Sabre_DAV_ServerPlugin } + /** + * @param $filePath + * @param Sabre_DAV_INode $node + * @throws Sabre_DAV_Exception_BadRequest + */ + public function sendFileIdHeader($filePath, Sabre_DAV_INode $node = null) { + if ($node instanceof OC_Connector_Sabre_Node) { + $fileId = $node->getFileId(); + if (!is_null($fileId)) { + $this->server->httpResponse->setHeader('OC-FileId', $fileId); + } + } + } + } diff --git a/lib/private/connector/sabre/node.php b/lib/private/connector/sabre/node.php index 76fbc251100d18543ed77dbc8fbee8ce74423f74..993aa73faeb15b54c0d9040572b98c49626b6d71 100644 --- a/lib/private/connector/sabre/node.php +++ b/lib/private/connector/sabre/node.php @@ -276,7 +276,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr if (isset($this->fileinfo_cache['fileid'])) { $instanceId = OC_Util::getInstanceId(); $id = sprintf('%08d', $this->fileinfo_cache['fileid']); - return $instanceId . $id; + return $id . $instanceId; } return null;