BookStack\Http\Controllers\SearchController::searchEntitiesAjax PHP Method

searchEntitiesAjax() public method

Returns the most popular entities if no search is provided.
public searchEntitiesAjax ( Illuminate\Http\Request $request ) : mixed
$request Illuminate\Http\Request
return mixed
    public function searchEntitiesAjax(Request $request)
    {
        $entities = collect();
        $entityTypes = $request->has('types') ? collect(explode(',', $request->get('types'))) : collect(['page', 'chapter', 'book']);
        $searchTerm = $request->has('term') && trim($request->get('term')) !== '' ? $request->get('term') : false;
        // Search for entities otherwise show most popular
        if ($searchTerm !== false) {
            if ($entityTypes->contains('page')) {
                $entities = $entities->merge($this->pageRepo->getBySearch($searchTerm)->items());
            }
            if ($entityTypes->contains('chapter')) {
                $entities = $entities->merge($this->chapterRepo->getBySearch($searchTerm)->items());
            }
            if ($entityTypes->contains('book')) {
                $entities = $entities->merge($this->bookRepo->getBySearch($searchTerm)->items());
            }
            $entities = $entities->sortByDesc('title_relevance');
        } else {
            $entityNames = $entityTypes->map(function ($type) {
                return 'BookStack\\' . ucfirst($type);
            })->toArray();
            $entities = $this->viewService->getPopular(20, 0, $entityNames);
        }
        return view('search/entity-ajax-list', ['entities' => $entities]);
    }