Merge pull request #31640 from nextcloud/backport/31193/stable22

[stable22] Add optional WebDav propfind properties to count sub elements
This commit is contained in:
blizzz 2022-04-14 12:44:11 +02:00 committed by GitHub
commit 82891bcf86
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -76,6 +76,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
@ -429,7 +431,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();
});
@ -437,6 +439,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);
}
}
}