function getListMostViewedProducts($perPage = NULL, $currentPage = 1) { /* Always set de $perPage, by template or by config if $perPage eq 0 (zero) not limit the list */ if ($perPage === NULL) { $perPage = (int) $this->_config['qty']; } /* Show all the product list in the current store */ $storeId = Mage::app()->getStore()->getStoreId(); $this->setStoreId($storeId); $this->_productCollection = Mage::getResourceModel('reports/product_collection')->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())->addMinimalPrice()->addFinalPrice()->addTaxPercents()->addViewsCount()->setStoreId($storeId)->addStoreFilter($storeId)->setPageSize($perPage); if ($this->_config['catsid']) { $this->addCategoryIdsFilter($this->_productCollection); } Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_productCollection); Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this->_productCollection); $this->_productCollection->setPageSize($perPage)->setCurPage($currentPage); if (method_exists($this->_productCollection, "setMaxSize")) { $this->_productCollection->setMaxSize($perPage); } if ($this->_productCollection && $this->_productCollection->getSize()) { if (method_exists($this->_productCollection, "setMaxSize")) { $this->_productCollection->setMaxSize($perPage); } } return $this->_productCollection; }
/** * Save an EAV collection, disabling the indexer if the collection is * larger than a configured size. * * @param Mage_Eav_Model_Entity_Collection_Abstract * @return self */ public function saveCollectionStubIndexer(Mage_Eav_Model_Entity_Collection_Abstract $collection) { $config = $this->getConfigModel(); $stubIndexer = $config->maxPartialReindexSkus < $collection->getSize(); if ($stubIndexer) { // Stub the indexer so no indexing can take place during massive saves. $indexerKey = '_singleton/index/indexer'; $oldIndexer = $this->reregister($indexerKey, $this->indexerStub); } $failureCount = 0; $logData = ['product_count' => $collection->getSize()]; $logMessage = 'Saving {product_count} products with stubbed indexer.'; $this->logger->info($logMessage, $this->context->getMetaData(__CLASS__, $logData)); $failMessage = 'Failed to save product with sku {sku}.'; foreach ($collection as $item) { try { $item->save(); } catch (Exception $e) { $failureCount++; $failLogData = ['sku' => $item->getSku(), 'exception' => $e]; $this->logger->logException($e, $this->context->getMetaData(__CLASS__, $failLogData))->error($failMessage, $this->context->getMetaData(__CLASS__, $failLogData)); } } $logMessage = 'Finished saving {product_count} products with {failure_count} failures.'; $logData['failure_count'] = $failureCount; $this->logger->info($logMessage, $this->context->getMetaData(__CLASS__, $logData)); if ($stubIndexer) { $this->reregister($indexerKey, $oldIndexer); } return $this; }