]> BookStack Code Mirror - bookstack/blob - app/Http/Controllers/SearchController.php
Increased LDAP testing and fixed any Auth-based bugs found
[bookstack] / app / Http / Controllers / SearchController.php
1 <?php
2
3 namespace BookStack\Http\Controllers;
4
5 use Illuminate\Http\Request;
6
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;
12
13 class SearchController extends Controller
14 {
15     protected $pageRepo;
16     protected $bookRepo;
17     protected $chapterRepo;
18
19     /**
20      * SearchController constructor.
21      * @param $pageRepo
22      * @param $bookRepo
23      * @param $chapterRepo
24      */
25     public function __construct(PageRepo $pageRepo, BookRepo $bookRepo, ChapterRepo $chapterRepo)
26     {
27         $this->pageRepo = $pageRepo;
28         $this->bookRepo = $bookRepo;
29         $this->chapterRepo = $chapterRepo;
30         parent::__construct();
31     }
32
33     /**
34      * Searches all entities.
35      * @param Request $request
36      * @return \Illuminate\View\View
37      * @internal param string $searchTerm
38      */
39     public function searchAll(Request $request)
40     {
41         if (!$request->has('term')) {
42             return redirect()->back();
43         }
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]);
50     }
51
52     /**
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
58      */
59     public function searchBook(Request $request, $bookId)
60     {
61         if (!$request->has('term')) {
62             return redirect()->back();
63         }
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]);
69     }
70
71 }