44
55use BookStack \Entities \Models \Entity ;
66use BookStack \Entities \Tools \SearchOptions ;
7+ use BookStack \Entities \Tools \SearchResultsFormatter ;
78use BookStack \Entities \Tools \SearchRunner ;
89use Illuminate \Http \Request ;
910
1011class SearchApiController extends ApiController
1112{
1213 protected $ searchRunner ;
14+ protected $ resultsFormatter ;
1315
1416 protected $ rules = [
1517 'all ' => [
@@ -19,9 +21,10 @@ class SearchApiController extends ApiController
1921 ],
2022 ];
2123
22- public function __construct (SearchRunner $ searchRunner )
24+ public function __construct (SearchRunner $ searchRunner, SearchResultsFormatter $ resultsFormatter )
2325 {
2426 $ this ->searchRunner = $ searchRunner ;
27+ $ this ->resultsFormatter = $ resultsFormatter ;
2528 }
2629
2730 /**
@@ -45,16 +48,22 @@ public function all(Request $request)
4548 $ count = min (intval ($ request ->get ('count ' , '0 ' )) ?: 20 , 100 );
4649
4750 $ results = $ this ->searchRunner ->searchEntities ($ options , 'all ' , $ page , $ count );
51+ $ this ->resultsFormatter ->format ($ results ['results ' ]->all (), $ options );
4852
4953 /** @var Entity $result */
5054 foreach ($ results ['results ' ] as $ result ) {
5155 $ result ->setVisible ([
5256 'id ' , 'name ' , 'slug ' , 'book_id ' ,
5357 'chapter_id ' , 'draft ' , 'template ' ,
5458 'created_at ' , 'updated_at ' ,
55- 'tags ' , 'type ' ,
59+ 'tags ' , 'type ' , ' preview_html ' , ' url ' ,
5660 ]);
5761 $ result ->setAttribute ('type ' , $ result ->getType ());
62+ $ result ->setAttribute ('url ' , $ result ->getUrl ());
63+ $ result ->setAttribute ('preview_html ' , [
64+ 'name ' => (string ) $ result ->getAttribute ('preview_name ' ),
65+ 'content ' => (string ) $ result ->getAttribute ('preview_content ' ),
66+ ]);
5867 }
5968
6069 return response ()->json ([
0 commit comments