]> BookStack Code Mirror - bookstack/blob - app/Http/Controllers/ReferenceController.php
b9b3e0eab9613e243a0dd7d67c718c1ef81fd8ec
[bookstack] / app / Http / Controllers / ReferenceController.php
1 <?php
2
3 namespace BookStack\Http\Controllers;
4
5 use BookStack\Entities\Models\Book;
6 use BookStack\Entities\Models\Bookshelf;
7 use BookStack\Entities\Models\Chapter;
8 use BookStack\Entities\Models\Page;
9 use BookStack\References\ReferenceFetcher;
10
11 class ReferenceController extends Controller
12 {
13     protected ReferenceFetcher $referenceFetcher;
14
15     public function __construct(ReferenceFetcher $referenceFetcher)
16     {
17         $this->referenceFetcher = $referenceFetcher;
18     }
19
20     /**
21      * Display the references to a given page.
22      */
23     public function page(string $bookSlug, string $pageSlug)
24     {
25         $page = Page::getBySlugs($bookSlug, $pageSlug);
26         $references = $this->referenceFetcher->getPageReferencesToEntity($page);
27
28         return view('pages.references', [
29             'page'       => $page,
30             'references' => $references,
31         ]);
32     }
33
34     /**
35      * Display the references to a given chapter.
36      */
37     public function chapter(string $bookSlug, string $chapterSlug)
38     {
39         $chapter = Chapter::getBySlugs($bookSlug, $chapterSlug);
40         $references = $this->referenceFetcher->getPageReferencesToEntity($chapter);
41
42         return view('chapters.references', [
43             'chapter'    => $chapter,
44             'references' => $references,
45         ]);
46     }
47
48     /**
49      * Display the references to a given book.
50      */
51     public function book(string $slug)
52     {
53         $book = Book::getBySlug($slug);
54         $references = $this->referenceFetcher->getPageReferencesToEntity($book);
55
56         return view('books.references', [
57             'book'       => $book,
58             'references' => $references,
59         ]);
60     }
61
62     /**
63      * Display the references to a given shelf.
64      */
65     public function shelf(string $slug)
66     {
67         $shelf = Bookshelf::getBySlug($slug);
68         $references = $this->referenceFetcher->getPageReferencesToEntity($shelf);
69
70         return view('shelves.references', [
71             'shelf'      => $shelf,
72             'references' => $references,
73         ]);
74     }
75 }