1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
<?php
App::uses('AppController','Controller');
class SearchesController extends AppController{
public $uses = array('Training', 'Instruction');
public $components = array('Paginator');
public $paginate = array(
'limit' => 5,
/*'contain' => array('Category.name',
'Type.name',
'Type.shortcutname',
'Maturity.name',
'Maturity.shortcutname',
'Duration.name',
'Duration.shortcutname',
'Selftraining.name',
'Selftraining.shortcutname',
'User.firstname',
'User.lastname',
'User.username'),*/
'order' => array(
'Training.created' => 'desc'
)
);
public function index() {
$this->loadModel('Trainings'); //'Trainings',
$this->Training->recursive = 1;
//$this->Instruction->recursive = 1;
$this->Paginator->settings = $this->paginate;
$conditions = array();
//Transform POST into GET
if(($this->request->is('post') || $this->request->is('put')) && isset($this->data['Filter'])){
$filter_url['controller'] = $this->request->params['controller'];
$filter_url['action'] = $this->request->params['action'];
// We need to overwrite the page every time we change the parameters
$filter_url['page'] = 1;
// for each filter we will add a GET parameter for the generated url
foreach($this->data['Filter'] as $name => $value){
if($value){
// You might want to sanitize the $value here
// or even do a urlencode to be sure
$filter_url[$name] = urlencode($value);
}
}
// now that we have generated an url with GET parameters,
// we'll redirect to that page
return $this->redirect($filter_url);
}
//debug($this->request);
else {
// Inspect all the named parameters to apply the filters
foreach($this->params['named'] as $param_name => $value){
// Don't apply the default named parameters used for pagination
if(!in_array($param_name, array('page','sort','direction','limit'))){
// You may use a switch here to make special filters
// like "between dates", "greater than", etc
if($param_name == "searchInput"){
$conditions['OR'] = array(/*
array('Category.name LIKE' => '%' . $value . '%'),
array('Instruction.category_id LIKE' => '%' . $value . '%'),
array('Instruction.category_id LIKE' => '%' . $value . '%'),*/
array('Training.content LIKE' => '%' . $value . '%'),
array('Training.goal1 LIKE' => '%' . $value . '%'),
array('Training.goal2 LIKE' => '%' . $value . '%'),
array('Training.goal3 LIKE' => '%' . $value . '%'),
array('Training.goal4 LIKE' => '%' . $value . '%'),
// ceci marche array('Maturity.name LIKE' => '%' . $value . '%')//
array('Software.name LIKE' => '%' . $value . '%')
);
} //else {
// $conditions['Training.'.$param_name] = $value;
//}
$this->request->data['Filter'][$param_name] = $value;
}
}
}
//$searches = $this->Paginator->paginate('Instruction', $conditions);
$searches = $this->Paginator->paginate('Training', $conditions);
$this->set(compact('searches'));
// Pass the search parameter to highlight the text
$this->set('searchInput', isset($this->params['named']['searchInput']) ? $this->params['named']['searchInput'] : "");
}
}
?> |
Partager