diff options
author | John Molakvoæ <skjnldsv@users.noreply.github.com> | 2020-02-28 12:16:39 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-28 12:16:39 +0300 |
commit | c413c80949b9b74a590a24b962d56f405d3c66ba (patch) | |
tree | 226d32b23aec73936896023e93199df145386b41 | |
parent | 80a17d902484ddb957ecd93062392582a4912516 (diff) | |
parent | 7848b3e06a54df4065abec3881915563c25255a5 (diff) |
Merge pull request #213 from nextcloud/backport/212/stable18v18.0.2RC2v18.0.2RC1v18.0.2
[stable18] Don't flatten out albums
-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; } } |