diff options
author | Dariusz Olszewski <starypatyk@users.noreply.github.com> | 2022-10-10 21:20:07 +0200 |
---|---|---|
committer | Dariusz Olszewski <starypatyk@users.noreply.github.com> | 2022-10-10 21:20:07 +0200 |
commit | 2b4a11598dcd2730123ec208a0066dfb6f2ffed9 (patch) | |
tree | 3e35659162937cea0fe03846eb2c37e17ce685f0 /apps/dav | |
parent | f456989261c7f0f42be832513cbc6a4f53d87cff (diff) | |
download | nextcloud-server-2b4a11598dcd2730123ec208a0066dfb6f2ffed9.tar.gz nextcloud-server-2b4a11598dcd2730123ec208a0066dfb6f2ffed9.zip |
WebDAV - use file/folder name for dav:displayname
Signed-off-by: Dariusz Olszewski <starypatyk@users.noreply.github.com>
Diffstat (limited to 'apps/dav')
-rw-r--r-- | apps/dav/lib/Connector/Sabre/FilesPlugin.php | 17 |
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 e9d27d4e7f6..54919824864 100644 --- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php +++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php @@ -71,6 +71,7 @@ class FilesPlugin extends ServerPlugin { public const GETETAG_PROPERTYNAME = '{DAV:}getetag'; public const LASTMODIFIED_PROPERTYNAME = '{DAV:}lastmodified'; public const CREATIONDATE_PROPERTYNAME = '{DAV:}creationdate'; + public const DISPLAYNAME_PROPERTYNAME = '{DAV:}displayname'; public const OWNER_ID_PROPERTYNAME = '{http://owncloud.org/ns}owner-id'; public const OWNER_DISPLAY_NAME_PROPERTYNAME = '{http://owncloud.org/ns}owner-display-name'; public const CHECKSUMS_PROPERTYNAME = '{http://owncloud.org/ns}checksums'; @@ -379,6 +380,15 @@ class FilesPlugin extends ServerPlugin { $propFind->handle(self::CREATION_TIME_PROPERTYNAME, function () use ($node) { return $node->getFileInfo()->getCreationTime(); }); + /** + * Return file/folder name as displayname. The primary reason to + * implement it this way is to avoid costly fallback to + * CustomPropertiesBackend (esp. visible when querying all files + * in a folder). + */ + $propFind->handle(self::DISPLAYNAME_PROPERTYNAME, function () use ($node) { + return $node->getName(); + }); } if ($node instanceof \OCA\DAV\Connector\Sabre\File) { @@ -554,6 +564,13 @@ class FilesPlugin extends ServerPlugin { $node->setCreationTime((int) $time); return true; }); + /** + * Disable modification of the displayname property for files and + * folders via PROPPATCH. See PROPFIND for more information. + */ + $propPatch->handle(self::DISPLAYNAME_PROPERTYNAME, function ($displayName) { + return 403; + }); } /** |