Example #1
0
 protected function prepareResults()
 {
     $currentPage = input('page');
     $search = trim(input('search'));
     /** @var  Collection  $topics */
     $topics = TopicModel::filterAreas(AreaModel::getAccessibleIds())->with('area')->recentPosts()->search($search, false)->paginate(20, $currentPage);
     // Add url
     $postSearchTokens = SearchHelper::parseQuery($search, ['post'], ['post' => 'post', 'author' => 'author', 'by' => 'author']);
     $postSearch = SearchHelper::buildQuery($postSearchTokens, ['post']);
     $topics->each(function (TopicModel $topic) use($postSearch) {
         $topic->setUrl($this->topicPage, $this->controller, $postSearch ? ['search' => $postSearch] : null);
         $topic->area->setUrl($this->areaPage, $this->controller);
     });
     $this->page['topics'] = $this->topics = $topics;
     // Paginate
     if ($topics) {
         $query = [];
         $search and $query['search'] = $search;
         $query['page'] = '';
         $paginationUrl = Request::url() . '?' . http_build_query($query);
         if ($currentPage > ($lastPage = $topics->lastPage()) && $currentPage > 1) {
             return Redirect::to($paginationUrl . $lastPage);
         }
         $this->page['paginationUrl'] = $paginationUrl;
     }
 }