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

github.com/nextcloud/photos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2020-02-27 17:29:48 +0300
committerRoeland Jago Douma <roeland@famdouma.nl>2020-02-27 17:29:48 +0300
commitbcb0f07e43cea2297ecd11f0b713377c5d248b8e (patch)
treebbb2e634322e01f5d8a727dbb00e1276c77d3c0c /lib
parentc3b6a9c3a6f96b2b3468ae675ca4867d2fae1daa (diff)
Don't flatten out albums
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'lib')
-rw-r--r--lib/Controller/AlbumsController.php21
1 files changed, 12 insertions, 9 deletions
diff --git a/lib/Controller/AlbumsController.php b/lib/Controller/AlbumsController.php
index fa8cfed9..fc3044b5 100644
--- a/lib/Controller/AlbumsController.php
+++ b/lib/Controller/AlbumsController.php
@@ -116,8 +116,8 @@ class AlbumsController extends Controller {
yield $folder;
foreach ($nodes as $node) {
- if ($node instanceof Folder) {
- yield from $this->scanFolder($node, 0, $shared);
+ if ($node instanceof Folder && $this->scanFolder($node, 0, $shared)) {
+ yield $node;
} elseif ($node instanceof File) {
if ($this->validFile($node, $shared)) {
yield $node;
@@ -138,35 +138,38 @@ class AlbumsController extends Controller {
return $node->getStorage()->instanceOfStorage(SharedStorage::class);
}
- private function scanFolder(Folder $folder, int $depth, bool $shared): iterable {
+ private function scanFolder(Folder $folder, int $depth, bool $shared): bool {
if ($depth > 4) {
- return [];
+ return false;
}
try {
// Ignore folder with a .noimage or .nomedia node
if ($folder->nodeExists('.noimage') || $folder->nodeExists('.nomedia')) {
- return [];
+ return false;
}
$nodes = $folder->getDirectoryListing();
} catch (StorageNotAvailableException $e) {
- return [];
+ return false;
}
foreach ($nodes as $node) {
if ($node instanceof File) {
if ($this->validFile($node, $shared)) {
- yield $folder;
- return [];
+ return true;
}
}
}
foreach ($nodes as $node) {
if ($node instanceof Folder && $this->isShared($node) === $shared) {
- yield from $this->scanFolder($node, $depth + 1, $shared);
+ if ($this->scanFolder($node, $depth + 1, $shared)) {
+ return true;
+ }
}
}
+
+ return false;
}
}