diff options
author | Ferdinand Thiessen <opensource@fthiessen.de> | 2025-04-14 14:47:18 +0200 |
---|---|---|
committer | Ferdinand Thiessen <opensource@fthiessen.de> | 2025-04-16 20:38:20 +0200 |
commit | ba3c504812f9c53f98b0337785dc3a7f830fc5ec (patch) | |
tree | a76566a12b42272d5cad7593e830214f347de827 | |
parent | 85d2ee5262b7c5fde12c4f0b34552a5f017610b8 (diff) | |
download | nextcloud-server-ba3c504812f9c53f98b0337785dc3a7f830fc5ec.tar.gz nextcloud-server-ba3c504812f9c53f98b0337785dc3a7f830fc5ec.zip |
feat(files_sharing): add WebDAV property for the `hide-download` state of shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
-rw-r--r-- | apps/dav/lib/Connector/Sabre/FilesPlugin.php | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php index ec84486b556..34f48384e12 100644 --- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php +++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php @@ -15,6 +15,7 @@ use OCP\Constants; use OCP\Files\ForbiddenException; use OCP\Files\IFilenameValidator; use OCP\Files\InvalidPathException; +use OCP\Files\Storage\ISharedStorage; use OCP\Files\StorageNotAvailableException; use OCP\FilesMetadata\Exceptions\FilesMetadataException; use OCP\FilesMetadata\Exceptions\FilesMetadataNotFoundException; @@ -64,6 +65,7 @@ class FilesPlugin extends ServerPlugin { public const UPLOAD_TIME_PROPERTYNAME = '{http://nextcloud.org/ns}upload_time'; public const CREATION_TIME_PROPERTYNAME = '{http://nextcloud.org/ns}creation_time'; public const SHARE_NOTE = '{http://nextcloud.org/ns}note'; + public const SHARE_HIDE_DOWNLOAD_PROPERTYNAME = '{http://nextcloud.org/ns}hide-download'; public const SUBFOLDER_COUNT_PROPERTYNAME = '{http://nextcloud.org/ns}contained-folder-count'; public const SUBFILE_COUNT_PROPERTYNAME = '{http://nextcloud.org/ns}contained-file-count'; public const FILE_METADATA_PREFIX = '{http://nextcloud.org/ns}metadata-'; @@ -391,6 +393,19 @@ class FilesPlugin extends ServerPlugin { ); }); + $propFind->handle(self::SHARE_HIDE_DOWNLOAD_PROPERTYNAME, function () use ($node) { + $storage = $node->getNode()->getStorage(); + if ($storage->instanceOfStorage(ISharedStorage::class)) { + /** @var ISharedStorage $storage */ + return match($storage->getShare()->getHideDownload()) { + true => 'true', + false => 'false', + }; + } else { + return null; + } + }); + $propFind->handle(self::DATA_FINGERPRINT_PROPERTYNAME, function () { return $this->config->getSystemValue('data-fingerprint', ''); }); @@ -678,8 +693,6 @@ class FilesPlugin extends ServerPlugin { return IMetadataValueWrapper::EDIT_REQ_READ_PERMISSION; } - - /** * @param string $filePath * @param ?\Sabre\DAV\INode $node |