Example #1
0
 public function searchByKey($keyword, $page = 1)
 {
     if (!$_GET['keyword']) {
         Yii::app()->user->setFlash('keyword', 'Keyword can not be blank');
         $this->redirect(array("/site/index"));
     }
     $limit = 10;
     $keyword = $_GET['keyword'];
     $model = new SearchForm();
     $criteria = array();
     $criteria['keyword'] = strtolower($keyword);
     $model->keyword = $keyword;
     $params = array('type', 'dataset_type', 'author_id', 'project', 'file_type', 'file_format', 'pubdate_from', 'pubdate_to', 'common_name', 'size_from', 'size_to', 'exclude', 'external_link_type', 'size_from_unit', 'size_to_unit');
     $dates = array('pubdate_from', 'pubdate_to');
     foreach ($_GET as $key => $value) {
         if (in_array($key, $params) && $value) {
             $model->{$key} = $value;
             if ($key == "pubdate_from" || $key == "pubdate_to") {
                 $model->{$key} = strftime("%Y-%m-%d", strtotime($value));
             }
         }
     }
     $criteria['filetypes'] = $model->file_type;
     $criteria['formats'] = $model->file_format;
     $criteria['size'] = array('min' => 0, 'max' => 0);
     if ($model->size_from) {
         $criteria['size']['min'] = $this->convert_size($model->size_from, $model->size_from_unit);
     }
     if ($model->size_to) {
         $criteria['size']['max'] = $this->convert_size($model->size_to, $model->size_to_unit);
     }
     $criteria['types'] = $model->dataset_type;
     $criteria['pubs'] = array('start' => $model->pubdate_from, 'end' => $model->pubdate_to);
     $criteria['links'] = $model->external_link_type;
     $criteria['projects'] = $model->project;
     $criteria['names'] = $model->common_name;
     $criteria['author_id'] = $model->author_id;
     $display = array('dataset', 'sample', 'file');
     if ($model->type) {
         $display = $model->type;
     }
     $criteria['display'] = $display;
     $model->criteria = CJSON::encode($model->attributes, true);
     $result = $this->search($criteria);
     $model->query_result = CJSON::encode($result);
     //Yii::log(print_r($result, true), 'debug');
     $total_page = ceil(count($result['datasets']) / $limit);
     $list_dataset_types = Dataset::getTypeList($result['datasets']);
     $list_projects = Dataset::getProjectList($result['datasets']);
     $list_ext_types = Dataset::getExtLinkList($result['datasets']);
     $list_common_names = Sample::getCommonList($result['samples']);
     $list_formats = File::getFormatList($result['files']);
     $list_filetypes = File::getTypeList($result['files']);
     return array('datasets' => array('data' => $result['datasets'], 'total' => count($result['datasets'])), 'samples' => array('data' => $result['samples'], 'total' => count($result['samples'])), 'files' => array('data' => $result['files'], 'total' => count($result['files'])), 'model' => $model, 'list_dataset_types' => $list_dataset_types, 'list_projects' => $list_projects, 'list_ext_types' => $list_ext_types, 'list_common_names' => $list_common_names, 'list_formats' => $list_formats, 'list_filetypes' => $list_filetypes, 'display' => $display, 'total_page' => $total_page, 'page' => 1, 'limit' => 10);
 }