Пример #1
0
 /**
  * @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);
 }
Пример #3
0
 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;
 }