From: Dan Brown Date: Sat, 15 Apr 2017 18:31:11 +0000 (+0100) Subject: Enabled type search filter in book search X-Git-Tag: v0.16.0~1^2~12^2~2 X-Git-Url: http://source.bookstackapp.com/bookstack/commitdiff_plain/73844b9eeb7d193236dc44fa8f86991ffed8301d?ds=inline;hp=--cc Enabled type search filter in book search --- 73844b9eeb7d193236dc44fa8f86991ffed8301d diff --git a/app/Services/SearchService.php b/app/Services/SearchService.php index ec4889e50..a3186e8f4 100644 --- a/app/Services/SearchService.php +++ b/app/Services/SearchService.php @@ -97,10 +97,16 @@ class SearchService public function searchBook($bookId, $searchString) { $terms = $this->parseSearchString($searchString); + $entityTypes = ['page', 'chapter']; + $entityTypesToSearch = isset($terms['filters']['type']) ? explode('|', $terms['filters']['type']) : $entityTypes; + $results = collect(); - $pages = $this->buildEntitySearchQuery($terms, 'page')->where('book_id', '=', $bookId)->take(20)->get(); - $chapters = $this->buildEntitySearchQuery($terms, 'chapter')->where('book_id', '=', $bookId)->take(20)->get(); - return $results->merge($pages)->merge($chapters)->sortByDesc('score')->take(20); + foreach ($entityTypesToSearch as $entityType) { + if (!in_array($entityType, $entityTypes)) continue; + $search = $this->buildEntitySearchQuery($terms, $entityType)->where('book_id', '=', $bookId)->take(20)->get(); + $results = $results->merge($search); + } + return $results->sortByDesc('score')->take(20); } /**