summaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/Connector/Sabre/FilesPlugin.php
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2016-07-26 13:15:12 +0200
committerRobin Appelman <robin@icewind.nl>2016-07-27 12:59:39 +0200
commit1fef5d3d06752f1a2a686681ae81fd13d88e535a (patch)
tree53ded6d6b8f6354f293160f7f1c114c89af10be1 /apps/dav/lib/Connector/Sabre/FilesPlugin.php
parent318d68a9a95cc710aa30c24a84d78da280327aef (diff)
downloadnextcloud-server-1fef5d3d06752f1a2a686681ae81fd13d88e535a.tar.gz
nextcloud-server-1fef5d3d06752f1a2a686681ae81fd13d88e535a.zip
add dav property to check if a file has a preview available
Diffstat (limited to 'apps/dav/lib/Connector/Sabre/FilesPlugin.php')
-rw-r--r--apps/dav/lib/Connector/Sabre/FilesPlugin.php17
1 files changed, 17 insertions, 0 deletions
diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php
index 203c0a4683f..c472f75b6bf 100644
--- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php
@@ -33,6 +33,7 @@ namespace OCA\DAV\Connector\Sabre;
use OC\Files\View;
use OCA\DAV\Upload\FutureFile;
use OCP\Files\ForbiddenException;
+use OCP\IPreview;
use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\IFile;
@@ -50,6 +51,7 @@ class FilesPlugin extends ServerPlugin {
// namespace
const NS_OWNCLOUD = 'http://owncloud.org/ns';
+ const NS_NEXTCLOUD = 'http://nextcloud.org/ns';
const FILEID_PROPERTYNAME = '{http://owncloud.org/ns}id';
const INTERNAL_FILEID_PROPERTYNAME = '{http://owncloud.org/ns}fileid';
const PERMISSIONS_PROPERTYNAME = '{http://owncloud.org/ns}permissions';
@@ -62,6 +64,7 @@ class FilesPlugin extends ServerPlugin {
const OWNER_DISPLAY_NAME_PROPERTYNAME = '{http://owncloud.org/ns}owner-display-name';
const CHECKSUMS_PROPERTYNAME = '{http://owncloud.org/ns}checksums';
const DATA_FINGERPRINT_PROPERTYNAME = '{http://owncloud.org/ns}data-fingerprint';
+ const HAS_PREVIEW_PROPERTYNAME = '{http://nextcloud.org/ns}has-preview';
/**
* Reference to main server object
@@ -104,10 +107,16 @@ class FilesPlugin extends ServerPlugin {
private $request;
/**
+ * @var IPreview
+ */
+ private $previewManager;
+
+ /**
* @param Tree $tree
* @param View $view
* @param IConfig $config
* @param IRequest $request
+ * @param IPreview $previewManager
* @param bool $isPublic
* @param bool $downloadAttachment
*/
@@ -115,6 +124,7 @@ class FilesPlugin extends ServerPlugin {
View $view,
IConfig $config,
IRequest $request,
+ IPreview $previewManager,
$isPublic = false,
$downloadAttachment = true) {
$this->tree = $tree;
@@ -123,6 +133,7 @@ class FilesPlugin extends ServerPlugin {
$this->request = $request;
$this->isPublic = $isPublic;
$this->downloadAttachment = $downloadAttachment;
+ $this->previewManager = $previewManager;
}
/**
@@ -139,6 +150,7 @@ class FilesPlugin extends ServerPlugin {
public function initialize(\Sabre\DAV\Server $server) {
$server->xml->namespaceMap[self::NS_OWNCLOUD] = 'oc';
+ $server->xml->namespaceMap[self::NS_NEXTCLOUD] = 'nc';
$server->protectedProperties[] = self::FILEID_PROPERTYNAME;
$server->protectedProperties[] = self::INTERNAL_FILEID_PROPERTYNAME;
$server->protectedProperties[] = self::PERMISSIONS_PROPERTYNAME;
@@ -149,6 +161,7 @@ class FilesPlugin extends ServerPlugin {
$server->protectedProperties[] = self::OWNER_DISPLAY_NAME_PROPERTYNAME;
$server->protectedProperties[] = self::CHECKSUMS_PROPERTYNAME;
$server->protectedProperties[] = self::DATA_FINGERPRINT_PROPERTYNAME;
+ $server->protectedProperties[] = self::HAS_PREVIEW_PROPERTYNAME;
// normally these cannot be changed (RFC4918), but we want them modifiable through PROPPATCH
$allowedProperties = ['{DAV:}getetag'];
@@ -316,6 +329,10 @@ class FilesPlugin extends ServerPlugin {
return $this->config->getSystemValue('data-fingerprint', '');
}
});
+
+ $propFind->handle(self::HAS_PREVIEW_PROPERTYNAME, function () use ($node) {
+ return json_encode($this->previewManager->isAvailable($node->getFileInfo()));
+ });
}
if ($node instanceof \OCA\DAV\Files\FilesHome) {