aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/Files/Cache/Cache.php28
-rw-r--r--lib/private/Files/View.php12
2 files changed, 39 insertions, 1 deletions
diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php
index 052b3c75ce8..9a831512bb7 100644
--- a/lib/private/Files/Cache/Cache.php
+++ b/lib/private/Files/Cache/Cache.php
@@ -258,6 +258,34 @@ class Cache implements ICache {
}
/**
+ * get the metadata of all files stored in $folder except hidden files
+ *
+ * @param int $fileId the file id of the folder
+ * @return ICacheEntry[]
+ */
+ public function getFolderContentsByIdExceptHidden($fileId) {
+ if ($fileId > -1) {
+ $query = $this->getQueryBuilder();
+ $query->selectFileCache()
+ ->whereParent($fileId)
+ ->andWhere($query->expr()->notlike('name', $query->createNamedParameter('.%')))
+ ->orderBy('name', 'ASC');
+
+ $metadataQuery = $query->selectMetadata();
+
+ $result = $query->execute();
+ $files = $result->fetchAll();
+ $result->closeCursor();
+
+ return array_map(function (array $data) use ($metadataQuery) {
+ $data['metadata'] = $metadataQuery?->extractMetadata($data)->asArray() ?? [];
+ return self::cacheEntryFromData($data, $this->mimetypeLoader);
+ }, $files);
+ }
+ return [];
+ }
+
+ /**
* insert or update meta data for a file or folder
*
* @param string $file
diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php
index 6eefb093795..ec978016b81 100644
--- a/lib/private/Files/View.php
+++ b/lib/private/Files/View.php
@@ -66,6 +66,7 @@ use OCP\Files\Mount\IMountPoint;
use OCP\Files\NotFoundException;
use OCP\Files\ReservedWordException;
use OCP\Files\Storage\IStorage;
+use OCP\IConfig;
use OCP\IUser;
use OCP\Lock\ILockingProvider;
use OCP\Lock\LockedException;
@@ -95,6 +96,9 @@ class View {
private UserManager $userManager;
private LoggerInterface $logger;
+ /** @var IConfig */
+ protected $config;
+
/**
* @throws \Exception If $root contains an invalid path
*/
@@ -103,6 +107,7 @@ class View {
throw new \Exception();
}
+ $this->config = \OC::$server->getConfig();
$this->fakeRoot = $root;
$this->lockingProvider = \OC::$server->getLockingProvider();
$this->lockingEnabled = !($this->lockingProvider instanceof \OC\Lock\NoopLockingProvider);
@@ -1454,7 +1459,12 @@ class View {
}
$folderId = $data->getId();
- $contents = $cache->getFolderContentsById($folderId); //TODO: mimetype_filter
+ $systemConfigHideHiddenFilesViaPublicShareAccess = $this->config->getSystemValueBool('hide_hidden_files_via_public_share_access', false);
+ if ( $_SERVER['REQUEST_URI'] === "/public.php/webdav/" && $systemConfigHideHiddenFilesViaPublicShareAccess ){
+ $contents = $cache->getFolderContentsByIdExceptHidden($folderId); //TODO: mimetype_filter
+ }else{
+ $contents = $cache->getFolderContentsById($folderId); //TODO: mimetype_filter
+ }
$sharingDisabled = \OCP\Util::isSharingDisabledForUser();