Example #1
0
 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;
 }
Example #2
0
 /**
  * @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);
 }
Example #3
0
 public function getSize()
 {
     return parent::getSize() ? parent::getSize() : count($this->_items);
 }