rendered paste body function search() {
uses('sanitize');
uses('set');
$this->allowed = true;
$this->set('states',$this->State->generateList());
$this->set('types',$this->Course->Type->generateList());
if(empty($this->data)) {
$this->render();
} else {
//cuida das palavras no assunto...
$words = Sanitize::paranoid($this->data['Search']['subject'], array(' '));
$wordsarray = explode(" ",$words);
array_unshift($wordsarray,$words);
$wordsarray = array_unique($wordsarray);
//cuida de procurar por um local específico
if(!empty($this->data['Search']['city'])) {
$this->Place->unbindModel(array('hasAndBelongsToMany' => array('Course')));
$placevals = $this->Place->findAll(array('Place.city' => array($this->data['Search']['city'])));
$places = Set::extract($placevals, '{n}.Place.id');
}
//cuida de procurar por alguma coisa nos módulos e nos dados do curso de acordo com as palavras
foreach($wordsarray as $word) {
$mod_conditions['OR'][] = "Module.body LIKE '%{$word}%'";
$course_conditions['OR'][] = "Course.title LIKE '%{$word}%'";
}
$modvals = $this->Module->findAll($mod_conditions);
$mods = Set::extract($modvals, '{n}.Module.id');
$coursevals = $this->Course->findAll($course_conditions);
$courses = Set::extract($coursevals, '{n}.Course.id');
//prepara a busca no modelo
$this->Course->recursive = 2;
$conditions = array();
(!empty($this->data['Search']['state'])) ? $conditions['Provider.state_id'] = $this->data['Search']['state'] : "";
(!empty($this->data['Search']['type'])) ? $conditions['Course.type_id'] = $this->data['Search']['type'] : "";
(!empty($placevals)) ? $conditions['CoursesPlace.place_id'] = $places : "";
(!empty($coursevals)) ? $conditions['Course.id'] = $courses : "";
(!empty($modvals)) ? $conditions['Module.id'] = $mods : "";
//$conditions['Course.moderated'] = 1;
/** /
pr($conditions);
die();
/**/
//envia os resultados
$this->Course->bindModel(array('hasOne'=>array('CoursesPlace'=>array()), 'hasMany' => array('Module' => array())));
$this->set('results', $this->Course->findAll($conditions,null,'Course.rank DESC'));
//mostra os resultados
$this->render();
}
}