| 
									
										
										
										
											2022-08-19 20:14:43 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-18 00:56:55 +08:00
										 |  |  | namespace BookStack\References; | 
					
						
							| 
									
										
										
										
											2022-08-19 20:14:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-08 00:37:36 +08:00
										 |  |  | use BookStack\Entities\Queries\EntityQueries; | 
					
						
							| 
									
										
										
										
											2023-05-19 03:53:39 +08:00
										 |  |  | use BookStack\Http\Controller; | 
					
						
							| 
									
										
										
										
											2022-08-19 20:14:43 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | class ReferenceController extends Controller | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2023-12-19 00:23:40 +08:00
										 |  |  |     public function __construct( | 
					
						
							| 
									
										
										
										
											2024-02-08 00:37:36 +08:00
										 |  |  |         protected ReferenceFetcher $referenceFetcher, | 
					
						
							|  |  |  |         protected EntityQueries $queries, | 
					
						
							| 
									
										
										
										
											2023-12-19 00:23:40 +08:00
										 |  |  |     ) { | 
					
						
							| 
									
										
										
										
											2022-08-19 20:14:43 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Display the references to a given page. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function page(string $bookSlug, string $pageSlug) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2024-02-08 00:37:36 +08:00
										 |  |  |         $page = $this->queries->pages->findVisibleBySlugsOrFail($bookSlug, $pageSlug); | 
					
						
							| 
									
										
										
										
											2023-12-19 00:23:40 +08:00
										 |  |  |         $references = $this->referenceFetcher->getReferencesToEntity($page); | 
					
						
							| 
									
										
										
										
											2022-08-19 20:14:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-20 05:40:44 +08:00
										 |  |  |         return view('pages.references', [ | 
					
						
							| 
									
										
										
										
											2022-08-30 00:46:41 +08:00
										 |  |  |             'page'       => $page, | 
					
						
							| 
									
										
										
										
											2022-08-20 05:40:44 +08:00
										 |  |  |             'references' => $references, | 
					
						
							|  |  |  |         ]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Display the references to a given chapter. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function chapter(string $bookSlug, string $chapterSlug) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2024-02-08 00:37:36 +08:00
										 |  |  |         $chapter = $this->queries->chapters->findVisibleBySlugsOrFail($bookSlug, $chapterSlug); | 
					
						
							| 
									
										
										
										
											2023-12-19 00:23:40 +08:00
										 |  |  |         $references = $this->referenceFetcher->getReferencesToEntity($chapter); | 
					
						
							| 
									
										
										
										
											2022-08-20 05:40:44 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return view('chapters.references', [ | 
					
						
							| 
									
										
										
										
											2022-08-30 00:46:41 +08:00
										 |  |  |             'chapter'    => $chapter, | 
					
						
							| 
									
										
										
										
											2022-08-20 05:40:44 +08:00
										 |  |  |             'references' => $references, | 
					
						
							|  |  |  |         ]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Display the references to a given book. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function book(string $slug) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2024-02-08 00:37:36 +08:00
										 |  |  |         $book = $this->queries->books->findVisibleBySlugOrFail($slug); | 
					
						
							| 
									
										
										
										
											2023-12-19 00:23:40 +08:00
										 |  |  |         $references = $this->referenceFetcher->getReferencesToEntity($book); | 
					
						
							| 
									
										
										
										
											2022-08-20 05:40:44 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return view('books.references', [ | 
					
						
							| 
									
										
										
										
											2022-08-30 00:46:41 +08:00
										 |  |  |             'book'       => $book, | 
					
						
							| 
									
										
										
										
											2022-08-20 05:40:44 +08:00
										 |  |  |             'references' => $references, | 
					
						
							|  |  |  |         ]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Display the references to a given shelf. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function shelf(string $slug) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2024-02-08 00:37:36 +08:00
										 |  |  |         $shelf = $this->queries->shelves->findVisibleBySlugOrFail($slug); | 
					
						
							| 
									
										
										
										
											2023-12-19 00:23:40 +08:00
										 |  |  |         $references = $this->referenceFetcher->getReferencesToEntity($shelf); | 
					
						
							| 
									
										
										
										
											2022-08-20 05:40:44 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return view('shelves.references', [ | 
					
						
							| 
									
										
										
										
											2022-08-30 00:46:41 +08:00
										 |  |  |             'shelf'      => $shelf, | 
					
						
							| 
									
										
										
										
											2022-08-20 05:40:44 +08:00
										 |  |  |             'references' => $references, | 
					
						
							|  |  |  |         ]); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-08-19 20:14:43 +08:00
										 |  |  | } |