3 namespace BookStack\Http\Controllers;
5 use BookStack\Auth\Permissions\PermissionApplicator;
6 use BookStack\Entities\Models\Page;
7 use Illuminate\Database\Eloquent\Relations\Relation;
9 class ReferenceController extends Controller
12 protected PermissionApplicator $permissions;
14 public function __construct(PermissionApplicator $permissions)
16 $this->permissions = $permissions;
20 * Display the references to a given page.
22 public function page(string $bookSlug, string $pageSlug)
24 /** @var Page $page */
25 $page = Page::visible()->whereSlugs($bookSlug, $pageSlug)->firstOrFail();
27 $baseQuery = $page->referencesTo()
28 ->where('from_type', '=', (new Page())->getMorphClass())
30 'from' => fn(Relation $query) => $query->select(Page::$listAttributes),
31 'from.book' => fn(Relation $query) => $query->scopes('visible'),
32 'from.chapter' => fn(Relation $query) => $query->scopes('visible')
35 $references = $this->permissions->restrictEntityRelationQuery(
42 return view('pages.references', [
44 'references' => $references,