/** * @param Varien_Data_Collection_Db $collection * @param \stdClass|null $pager * * @return boolean */ public function applyPager($collection, $pager) { if ($pager->pageSize && $pager->page) { $collection->setCurPage($pager->page); $collection->setPageSize($pager->pageSize); if ($collection->getCurPage() != $pager->page) { return false; } } return true; }
/** * Set navigation parameters and apply filters from URL params * * @param Varien_Data_Collection_Db $collection * @return Mage_Api2_Model_Resource */ protected final function _applyCollectionModifiers(Varien_Data_Collection_Db $collection) { $pageNumber = $this->getRequest()->getPageNumber(); if ($pageNumber != abs($pageNumber)) { $this->_critical(self::RESOURCE_COLLECTION_PAGING_ERROR); } $pageSize = $this->getRequest()->getPageSize(); if (null == $pageSize) { $pageSize = self::PAGE_SIZE_DEFAULT; } else { if ($pageSize != abs($pageSize) || $pageSize > self::PAGE_SIZE_MAX) { $this->_critical(self::RESOURCE_COLLECTION_PAGING_LIMIT_ERROR); } } $orderField = $this->getRequest()->getOrderField(); if (null !== $orderField) { $operation = Mage_Api2_Model_Resource::OPERATION_ATTRIBUTE_READ; if (!is_string($orderField) || !array_key_exists($orderField, $this->getAvailableAttributes($this->getUserType(), $operation))) { $this->_critical(self::RESOURCE_COLLECTION_ORDERING_ERROR); } $collection->setOrder($orderField, $this->getRequest()->getOrderDirection()); } $collection->setCurPage($pageNumber)->setPageSize($pageSize); return $this->_applyFilter($collection); }
protected final function _applyCollectionModifiers(Varien_Data_Collection_Db $collection) { $pageNumber = $this->getRequest()->getPageNumber(); if ($pageNumber != abs($pageNumber)) { throw new Mage_Webapi_Exception($this->_translationHelper->__("Page number is invalid."), Mage_Webapi_Exception::HTTP_BAD_REQUEST); } $pageSize = $this->getRequest()->getPageSize(); if (null == $pageSize) { $pageSize = self::PAGE_SIZE_DEFAULT; } else { if ($pageSize != abs($pageSize) || $pageSize > self::PAGE_SIZE_MAX) { throw new Mage_Webapi_Exception($this->_translationHelper->__('The paging limit exceeds the allowed number.'), Mage_Webapi_Exception::HTTP_BAD_REQUEST); } } $orderField = $this->getRequest()->getOrderField(); if (null !== $orderField) { if (!is_string($orderField)) { throw new Mage_Webapi_Exception($this->_translationHelper->__('Collection "order" value is invalid.'), Mage_Webapi_Exception::HTTP_BAD_REQUEST); } $collection->setOrder($orderField, $this->getRequest()->getOrderDirection()); } $collection->setCurPage($pageNumber)->setPageSize($pageSize); return $collection; }