3 namespace BookStack\Entities\Tools;
5 use BookStack\Entities\EntityProvider;
6 use BookStack\Entities\Models\Book;
7 use BookStack\Entities\Models\Bookshelf;
8 use BookStack\Entities\Models\Chapter;
9 use BookStack\Entities\Models\Page;
10 use Illuminate\Support\Collection;
15 * Search among the siblings of the entity of given type and id.
17 public function fetch(string $entityType, int $entityId): Collection
19 $entity = (new EntityProvider())->get($entityType)->visible()->findOrFail($entityId);
23 if ($entity instanceof Page && $entity->chapter) {
24 $entities = $entity->chapter->getVisiblePages();
27 // Page in book or chapter
28 if (($entity instanceof Page && !$entity->chapter) || $entity instanceof Chapter) {
29 $entities = $entity->book->getDirectChildren();
33 // Gets just the books in a shelf if shelf is in context
34 if ($entity instanceof Book) {
35 $contextShelf = (new ShelfContext())->getContextualShelfForBook($entity);
37 $entities = $contextShelf->visibleBooks()->get();
39 $entities = Book::visible()->get();
44 if ($entity instanceof Bookshelf) {
45 $entities = Bookshelf::visible()->get();