&$row) { switch ($row['type']) { case 'Faq': $page = Qs_SiteMap::findFirst(array(), array('type' => 'Faq_', 'idGroup' => 1)); $row['url'] = $page['url'] . '#tabs-' . $row['idCategory']; break; default: break; } Qs_Text_Mark::setWordSplitters(array()); $row['searchContent'] = Qs_Text_Mark::markSearchWords($row['searchContent'], trim($_REQUEST['query'])); $row['title'] = Qs_Text_Mark::markSearchWords($row['question'], trim($_REQUEST['query'])); } return true; } public function getListSelect($options = array()) { $query = $this->_filter['query']; $faqSelect = $this->_db->select() ->from($this->_getPair('Faq', false), array('id', 'idCategory', 'question', 'searchContent', 'type' => new Zend_Db_Expr('"Faq"'))); $faqSelect ->join( $this->_getPair('FaqCategory', false), 'Faq.idCategory = FaqCategory.id', array('category' => 'title')); $anyWordResultFaq = clone $faqSelect; $simpleResultFaq = clone $faqSelect; Qs_Db_Filter::match($faqSelect, $this->_filterFields, $query, true); Qs_Db_Filter::match($anyWordResultFaq, $this->_filterFields, $query); Qs_Db_Filter::where($simpleResultFaq, $this->_filterFields, $query); $this->select->reset()->union(array( $faqSelect, $anyWordResultFaq, $simpleResultFaq, )); $this->_prepareListOptions($options); return $this->select; } public function getList($options = array()) { $stmt = $this->getListStatement($options); $list = $stmt->fetchAll(); $this->_prepareList($list); if (is_array($list) && count($list)) { $session = new Qs_Session_Namespace('JC_SEARCH'); $session->flagContent = true; } return $list; } public function getPaginatorAdapter() { $select = $this->_getSelect()->reset(Zend_Db_Select::LIMIT_COUNT)->reset(Zend_Db_Select::LIMIT_OFFSET); return $select; } protected function _filterWhere(Zend_Db_Select $select) { if (!empty($this->_filterFields) && array_key_exists('query', $this->_filter)) { Qs_Db_Filter::where($select, $this->_filterFields, $this->_filter['query']); } return $select; } }