]> BookStack Code Mirror - bookstack/blobdiff - app/References/ReferenceFetcher.php
Fixed OIDC Logout
[bookstack] / app / References / ReferenceFetcher.php
index fef2744d7dd7d01011e515eaa5381c45d7266916..c4a7d31b60b451632de5ecdb5756d460da1c08ec 100644 (file)
@@ -2,9 +2,10 @@
 
 namespace BookStack\References;
 
-use BookStack\Auth\Permissions\PermissionApplicator;
 use BookStack\Entities\Models\Entity;
 use BookStack\Entities\Models\Page;
+use BookStack\Permissions\PermissionApplicator;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Collection;
 use Illuminate\Database\Eloquent\Relations\Relation;
 
@@ -23,12 +24,11 @@ class ReferenceFetcher
      */
     public function getPageReferencesToEntity(Entity $entity): Collection
     {
-        $baseQuery = $entity->referencesTo()
-            ->where('from_type', '=', (new Page())->getMorphClass())
+        $baseQuery = $this->queryPageReferencesToEntity($entity)
             ->with([
-                'from' => fn(Relation $query) => $query->select(Page::$listAttributes),
-                'from.book' => fn(Relation $query) => $query->scopes('visible'),
-                'from.chapter' => fn(Relation $query) => $query->scopes('visible')
+                'from'         => fn (Relation $query) => $query->select(Page::$listAttributes),
+                'from.book'    => fn (Relation $query) => $query->scopes('visible'),
+                'from.chapter' => fn (Relation $query) => $query->scopes('visible'),
             ]);
 
         $references = $this->permissions->restrictEntityRelationQuery(
@@ -47,11 +47,8 @@ class ReferenceFetcher
      */
     public function getPageReferenceCountToEntity(Entity $entity): int
     {
-        $baseQuery = $entity->referencesTo()
-            ->where('from_type', '=', (new Page())->getMorphClass());
-
         $count = $this->permissions->restrictEntityRelationQuery(
-            $baseQuery,
+            $this->queryPageReferencesToEntity($entity),
             'references',
             'from_id',
             'from_type'
@@ -59,4 +56,12 @@ class ReferenceFetcher
 
         return $count;
     }
-}
\ No newline at end of file
+
+    protected function queryPageReferencesToEntity(Entity $entity): Builder
+    {
+        return Reference::query()
+            ->where('to_type', '=', $entity->getMorphClass())
+            ->where('to_id', '=', $entity->id)
+            ->where('from_type', '=', (new Page())->getMorphClass());
+    }
+}