protected function getQueryFromRequest()
 {
     $query = new Query();
     $manager = $this->getFieldManager();
     $fields = $manager->getFieldsFromRequest($this->request->request->all());
     $provider = $this->getSearchProvider();
     $set = $provider->getBaseColumnSet();
     $available = $provider->getAvailableColumnSet();
     foreach ($this->request->request->get('column') as $key) {
         $set->addColumn($available->getColumnByKey($key));
     }
     $sort = $available->getColumnByKey($this->getRequestDefaultSort());
     $set->setDefaultSortColumn($sort, $this->getRequestDefaultSortDirection());
     $query->setFields($fields);
     $query->setColumns($set);
     return $query;
 }
 public function getSearchResultFromQuery(Query $query)
 {
     $list = $this->getItemList();
     foreach ($query->getFields() as $field) {
         $field->filterList($list);
     }
     if (!$list->getActiveSortColumn()) {
         $columns = $query->getColumns();
         if (is_object($columns)) {
             $column = $columns->getDefaultSortColumn();
             $list->sanitizedSortBy($column->getColumnKey(), $column->getColumnDefaultSortDirection());
         } else {
             $columns = $this->getDefaultColumnSet();
         }
     }
     $result = $this->createSearchResultObject($columns, $list);
     $result->setQuery($query);
     return $result;
 }
示例#3
0
 public function search($btID = 0)
 {
     $bt = BlockType::getByID($btID);
     if (is_object($bt)) {
         /**
          * @var $provider SearchProvider
          */
         $provider = $this->app->make('Concrete\\Core\\Page\\Search\\SearchProvider');
         $query = new Query();
         $field = new ContainsBlockTypeField(['btID' => $btID]);
         $query->setFields([$field]);
         $query->setColumns($provider->getDefaultColumnSet());
         $provider->setSessionCurrentQuery($query);
         $this->redirect('/dashboard/sitemap/search');
         exit;
     }
 }