Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Veyssier <eneiluj@posteo.net>2022-02-15 18:18:41 +0300
committerJulien Veyssier <eneiluj@posteo.net>2022-03-18 16:42:54 +0300
commitbfc8edec4353775ea3c06c7533ddc2fc4695b022 (patch)
treeb5ca5ee07a0d7f31cbe87a9df1e62730d25014e7
parentf9c4c10848eee17fc5f339758888166de5ba5959 (diff)
add optional WebDav propfind properties to show number of folders/files inside a folderenh/webdav-propfind-count-sub-elements
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
-rw-r--r--apps/dav/lib/Connector/Sabre/FilesPlugin.php21
1 files changed, 20 insertions, 1 deletions
diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php
index 95f3db9a65b..a9006896633 100644
--- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php
@@ -77,6 +77,8 @@ 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 SUBFOLDER_COUNT_PROPERTYNAME = '{http://nextcloud.org/ns}contained-folder-count';
+ public const SUBFILE_COUNT_PROPERTYNAME = '{http://nextcloud.org/ns}contained-file-count';
/**
* Reference to main server object
@@ -435,7 +437,7 @@ class FilesPlugin extends ServerPlugin {
});
}
- if ($node instanceof \OCA\DAV\Connector\Sabre\Directory) {
+ if ($node instanceof Directory) {
$propFind->handle(self::SIZE_PROPERTYNAME, function () use ($node) {
return $node->getSize();
});
@@ -443,6 +445,23 @@ class FilesPlugin extends ServerPlugin {
$propFind->handle(self::IS_ENCRYPTED_PROPERTYNAME, function () use ($node) {
return $node->getFileInfo()->isEncrypted() ? '1' : '0';
});
+
+ $requestProperties = $propFind->getRequestedProperties();
+ if (in_array(self::SUBFILE_COUNT_PROPERTYNAME, $requestProperties, true)
+ || in_array(self::SUBFILE_COUNT_PROPERTYNAME, $requestProperties, true)) {
+ $nbFiles = 0;
+ $nbFolders = 0;
+ foreach ($node->getChildren() as $child) {
+ if ($child instanceof File) {
+ $nbFiles++;
+ } elseif ($child instanceof Directory) {
+ $nbFolders++;
+ }
+ }
+
+ $propFind->handle(self::SUBFILE_COUNT_PROPERTYNAME, $nbFiles);
+ $propFind->handle(self::SUBFOLDER_COUNT_PROPERTYNAME, $nbFolders);
+ }
}
}