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; //envia os resultados $this->Course->bindModel(array('hasOne'=>array('CoursesPlace'=>array()))); $this->Course->bindModel(array('hasOne' => array('Module' => array()))); $array = $this->Course->findAll($conditions,'DISTINCT Course.id','Course.rank DESC'); $array = Set::extract($array, '{n}.Course.id'); $this->set('results', $this->Course->findAll(array('Course.id' => $array))); //mostra os resultados $this->render(); } }