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 $this->setPageTitle('Search For ' . $searchTerm);
49 return view('search/all', ['pages' => $pages, 'books' => $books, 'chapters' => $chapters, 'searchTerm' => $searchTerm]);
53 * Searches all entities within a book.
54 * @param Request $request
55 * @param integer $bookId
56 * @return \Illuminate\View\View
57 * @internal param string $searchTerm
59 public function searchBook(Request $request, $bookId)
61 if (!$request->has('term')) {
62 return redirect()->back();
64 $searchTerm = $request->get('term');
65 $searchWhereTerms = [['book_id', '=', $bookId]];
66 $pages = $this->pageRepo->getBySearch($searchTerm, $searchWhereTerms);
67 $chapters = $this->chapterRepo->getBySearch($searchTerm, $searchWhereTerms);
68 return view('search/book', ['pages' => $pages, 'chapters' => $chapters, 'searchTerm' => $searchTerm]);