private function getSearchResultCollection() { $collection = new Varien_Data_Collection(); $index = Mage::helper('searchindex/index')->getIndex('mage_catalog_product'); $storeId = $this->getStoreId(); if (($query = $this->getRequest()->getParam('q')) && $index) { $engine = Mage::helper('searchindex')->getSearchEngine(); $start = microtime(true); try { $result = $engine->query($query, $storeId, $index); } catch (Exception $e) { try { $engine = Mage::getModel('searchsphinx/engine_fulltext'); $result = $engine->query($query, $storeId, $index); } catch (Exception $e) { Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); $result = array(); } } $end = microtime(true); $this->searchTime = round($end - $start, 4); foreach ($result as $productId => $relevance) { $varienObject = new Varien_Object(); $varienObject->addData(array('id' => $productId, 'relevance' => $relevance)); $collection->addItem($varienObject); } $this->resultSize = $collection->getSize(); } return $collection; }
/** * @param Varien_Data_Collection $collection * @throws Exception */ protected function _addPagingHeaderData(Varien_Data_Collection $collection) { $links = array(); $totalCount = $collection->getSize(); $pageSize = $collection->getPageSize(); $totalPageCount = ceil($totalCount / $pageSize); $currentPage = $collection->getCurPage(); if ($currentPage === null) { $currentPage = 1; } if ($currentPage > 1) { $links[] = $this->_getPageLink(1, 'first'); $links[] = $this->_getPageLink($currentPage - 1, 'prev'); } if ($currentPage < $totalPageCount) { $links[] = $this->_getPageLink($currentPage + 1, 'next'); $links[] = $this->_getPageLink($totalPageCount, 'last'); } $this->getResponse()->setHeader('Link', implode(", ", $links))->setHeader('X-Total-Count', $totalCount)->setHeader('X-Total-Pages', $totalPageCount)->setHeader('X-Current-Page', $currentPage); }
public function getSize() { return parent::getSize() ? parent::getSize() : count($this->_items); }