diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2020-02-27 17:29:48 +0300 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2020-02-27 17:29:48 +0300 |
commit | bcb0f07e43cea2297ecd11f0b713377c5d248b8e (patch) | |
tree | bbb2e634322e01f5d8a727dbb00e1276c77d3c0c /lib | |
parent | c3b6a9c3a6f96b2b3468ae675ca4867d2fae1daa (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.php | 21 |
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; } } |