diff options
Diffstat (limited to 'apps/dav/lib')
-rw-r--r-- | apps/dav/lib/Connector/Sabre/FilesPlugin.php | 17 | ||||
-rw-r--r-- | apps/dav/lib/Connector/Sabre/ServerFactory.php | 9 | ||||
-rw-r--r-- | apps/dav/lib/Server.php | 1 |
3 files changed, 26 insertions, 1 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) { diff --git a/apps/dav/lib/Connector/Sabre/ServerFactory.php b/apps/dav/lib/Connector/Sabre/ServerFactory.php index 9f142b996ee..55b967619d6 100644 --- a/apps/dav/lib/Connector/Sabre/ServerFactory.php +++ b/apps/dav/lib/Connector/Sabre/ServerFactory.php @@ -34,6 +34,7 @@ use OCP\Files\Mount\IMountManager; use OCP\IConfig; use OCP\IDBConnection; use OCP\ILogger; +use OCP\IPreview; use OCP\IRequest; use OCP\ITagManager; use OCP\IUserSession; @@ -54,6 +55,8 @@ class ServerFactory { private $tagManager; /** @var IRequest */ private $request; + /** @var IPreview */ + private $previewManager; /** * @param IConfig $config @@ -63,6 +66,7 @@ class ServerFactory { * @param IMountManager $mountManager * @param ITagManager $tagManager * @param IRequest $request + * @param IPreview $previewManager */ public function __construct( IConfig $config, @@ -71,7 +75,8 @@ class ServerFactory { IUserSession $userSession, IMountManager $mountManager, ITagManager $tagManager, - IRequest $request + IRequest $request, + IPreview $previewManager ) { $this->config = $config; $this->logger = $logger; @@ -80,6 +85,7 @@ class ServerFactory { $this->mountManager = $mountManager; $this->tagManager = $tagManager; $this->request = $request; + $this->previewManager = $previewManager; } /** @@ -145,6 +151,7 @@ class ServerFactory { $view, $this->config, $this->request, + $this->previewManager, false, !$this->config->getSystemValue('debug', false) ) diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php index c488feeb800..e80f9ae125a 100644 --- a/apps/dav/lib/Server.php +++ b/apps/dav/lib/Server.php @@ -158,6 +158,7 @@ class Server { $view, \OC::$server->getConfig(), $this->request, + \OC::$server->getPreviewManager(), false, !\OC::$server->getConfig()->getSystemValue('debug', false) ) |