]> BookStack Code Mirror - bookstack/commitdiff
Enabled type search filter in book search
authorDan Brown <redacted>
Sat, 15 Apr 2017 18:31:11 +0000 (19:31 +0100)
committerDan Brown <redacted>
Sat, 15 Apr 2017 18:31:11 +0000 (19:31 +0100)
app/Services/SearchService.php

index ec4889e50b1aee47345ad51cd94274c93ca1b320..a3186e8f4a38ceeb32d741b6803ab4699e621f8e 100644 (file)
@@ -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);
     }
 
     /**