- $pages = $book->pages()->where('chapter_id', '=', 0)->get();
- $chapters = $book->chapters()->with('pages')->get();
- $children = $pages->merge($chapters);
+ $pageQuery = $book->pages()->where('chapter_id', '=', 0);
+ $pageQuery = $this->permissionService->enforcePageRestrictions($pageQuery, 'view');
+
+ if ($filterDrafts) {
+ $pageQuery = $pageQuery->where('draft', '=', false);
+ }
+
+ $pages = $pageQuery->get();
+
+ $chapterQuery = $book->chapters()->with(['pages' => function($query) use ($filterDrafts) {
+ $this->permissionService->enforcePageRestrictions($query, 'view');
+ if ($filterDrafts) $query->where('draft', '=', false);
+ }]);
+ $chapterQuery = $this->permissionService->enforceChapterRestrictions($chapterQuery, 'view');
+ $chapters = $chapterQuery->get();
+ $children = $pages->values();
+ foreach ($chapters as $chapter) {
+ $children->push($chapter);
+ }