X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/f2ee95ca03a2bc1c0f80b5d775a340d920784bdb..refs/pull/3333/head:/app/Entities/Tools/SearchRunner.php diff --git a/app/Entities/Tools/SearchRunner.php b/app/Entities/Tools/SearchRunner.php index f6da871f4..a0a44f3a5 100644 --- a/app/Entities/Tools/SearchRunner.php +++ b/app/Entities/Tools/SearchRunner.php @@ -9,6 +9,7 @@ use BookStack\Entities\Models\BookChild; use BookStack\Entities\Models\Entity; use BookStack\Entities\Models\Page; use BookStack\Entities\Models\SearchTerm; +use Illuminate\Database\Connection; use Illuminate\Database\Eloquent\Builder as EloquentBuilder; use Illuminate\Database\Eloquent\Collection as EloquentCollection; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -56,6 +57,8 @@ class SearchRunner * Search all entities in the system. * The provided count is for each entity to search, * Total returned could be larger and not guaranteed. + * + * @return array{total: int, count: int, has_more: bool, results: Entity[]} */ public function searchEntities(SearchOptions $searchOpts, string $entityType = 'all', int $page = 1, int $count = 20, string $action = 'view'): array { @@ -142,13 +145,13 @@ class SearchRunner if ($entityModelInstance instanceof BookChild) { $relations['book'] = function (BelongsTo $query) { - $query->visible(); + $query->scopes('visible'); }; } if ($entityModelInstance instanceof Page) { $relations['chapter'] = function (BelongsTo $query) { - $query->visible(); + $query->scopes('visible'); }; } @@ -354,7 +357,9 @@ class SearchRunner // We have to do a raw sql query for this since otherwise PDO will quote the value and MySQL will // search the value as a string which prevents being able to do number-based operations // on the tag values. We ensure it has a numeric value and then cast it just to be sure. - $tagValue = (float) trim($query->getConnection()->getPdo()->quote($tagValue), "'"); + /** @var Connection $connection */ + $connection = $query->getConnection(); + $tagValue = (float) trim($connection->getPdo()->quote($tagValue), "'"); $query->whereRaw("value ${tagOperator} ${tagValue}"); } else { $query->where('value', $tagOperator, $tagValue);