Merge pull request #31193 from nextcloud/enh/webdav-propfind-count-sub-elements

Add optional WebDav propfind properties to count sub elements
pull/31580/head
Julien Veyssier 2022-03-21 11:33:22 +07:00 committed by GitHub
commit b85bdf4427
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 1 deletions

@ -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::SUBFOLDER_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);
}
}
}