3 namespace BookStack\Http\Controllers;
5 use Illuminate\Http\Request;
7 use BookStack\Http\Requests;
8 use BookStack\Http\Controllers\Controller;
9 use BookStack\Repos\BookRepo;
10 use BookStack\Repos\ChapterRepo;
11 use BookStack\Repos\PageRepo;
13 class SearchController extends Controller
17 protected $chapterRepo;
20 * SearchController constructor.
25 public function __construct(PageRepo $pageRepo, BookRepo $bookRepo, ChapterRepo $chapterRepo)
27 $this->pageRepo = $pageRepo;
28 $this->bookRepo = $bookRepo;
29 $this->chapterRepo = $chapterRepo;
30 parent::__construct();
34 * Searches all entities.
35 * @param Request $request
36 * @return \Illuminate\View\View
37 * @internal param string $searchTerm
39 public function searchAll(Request $request)
41 if (!$request->has('term')) {
42 return redirect()->back();
44 $searchTerm = $request->get('term');
45 $pages = $this->pageRepo->getBySearch($searchTerm);
46 $books = $this->bookRepo->getBySearch($searchTerm);
47 $chapters = $this->chapterRepo->getBySearch($searchTerm);
48 return view('search/all', ['pages' => $pages, 'books' => $books, 'chapters' => $chapters, 'searchTerm' => $searchTerm]);
52 * Searches all entities within a book.
53 * @param Request $request
54 * @param integer $bookId
55 * @return \Illuminate\View\View
56 * @internal param string $searchTerm
58 public function searchBook(Request $request, $bookId)
60 if (!$request->has('term')) {
61 return redirect()->back();
63 $searchTerm = $request->get('term');
64 $whereTerm = [['book_id', '=', $bookId]];
65 $pages = $this->pageRepo->getBySearch($searchTerm, $whereTerm);
66 $chapters = $this->chapterRepo->getBySearch($searchTerm, $whereTerm);
67 return view('search/book', ['pages' => $pages, 'chapters' => $chapters, 'searchTerm' => $searchTerm]);