Example #1
0
 /**
  * Get request for product add to cart procedure
  *
  * @param   mixed $requestInfo
  * @return  Varien_Object
  */
 protected function _getProductRequest($requestInfo)
 {
     if ($requestInfo instanceof Varien_Object) {
         $request = $requestInfo;
     } elseif (is_numeric($requestInfo)) {
         $request = new Varien_Object();
         $request->setQty($requestInfo);
     } else {
         $request = new Varien_Object($requestInfo);
     }
     if (!$request->hasQty()) {
         $request->setQty(1);
     }
     return $request;
 }
Example #2
0
 /**
  * Get request for product add to cart procedure
  *
  * @see Mage_Checkout_Model_Cart::_getProductRequest()
  * @param mixed $requestInfo
  * @return Varien_Object
  */
 protected function _getProductRequest($info)
 {
     if ($info instanceof Varien_Object) {
         $request = $info;
     } else {
         if (is_numeric($info)) {
             $request = new Varien_Object(array('qty' => $info));
         } else {
             $request = new Varien_Object($info);
         }
     }
     if (!$request->hasQty()) {
         $request->setQty(1);
     }
     return $request;
 }
 /**
  * for old magento
  *
  * @param $itemId
  * @param null $requestInfo
  * @param null $updatingParams
  * @return Mage_Sales_Model_Quote_Item|string
  */
 protected function _updateItem($itemId, $requestInfo = null, $updatingParams = null)
 {
     $cart = $this->_getCart();
     try {
         $item = $cart->getQuote()->getItemById($itemId);
         if (!$item) {
             Mage::throwException(Mage::helper('checkout')->__('Quote item does not exist.'));
         }
         $productId = $item->getProduct()->getId();
         $product = $product = Mage::getModel('catalog/product')->setStoreId(Mage::app()->getStore()->getId())->load($productId);
         $currentWebsiteId = Mage::app()->getStore()->getWebsiteId();
         if (!$product->getId() || !is_array($product->getWebsiteIds()) || !in_array($currentWebsiteId, $product->getWebsiteIds())) {
             Mage::throwException(Mage::helper('checkout')->__('The product could not be found.'));
         }
         if ($requestInfo instanceof Varien_Object) {
             $request = $requestInfo;
         } elseif (is_numeric($requestInfo)) {
             $request = new Varien_Object(array('qty' => $requestInfo));
         } else {
             $request = new Varien_Object($requestInfo);
         }
         if (!$request->hasQty()) {
             $request->setQty(1);
         }
         if ($product->getStockItem()) {
             $minimumQty = $product->getStockItem()->getMinSaleQty();
             // If product was not found in cart and there is set minimal qty for it
             if ($minimumQty && $minimumQty > 0 && $request->getQty() < $minimumQty && !$cart->getQuote()->hasProductId($productId)) {
                 $request->setQty($minimumQty);
             }
         }
         if (method_exists($cart->getQuote(), 'updateItem')) {
             $result = $cart->getQuote()->updateItem($itemId, $request, $updatingParams);
         } else {
             $result = $this->_updateQuoteItem($itemId, $request, $updatingParams);
         }
     } catch (Mage_Core_Exception $e) {
         $cart->getCheckoutSession()->setUseNotice(false);
         $result = $e->getMessage();
     }
     /**
      * We can get string if updating process had some errors
      */
     if (is_string($result)) {
         if ($cart->getCheckoutSession()->getUseNotice() === null) {
             $cart->getCheckoutSession()->setUseNotice(true);
         }
         Mage::throwException($result);
     }
     Mage::dispatchEvent('checkout_cart_product_update_after', array('quote_item' => $result, 'product' => $product));
     $cart->getCheckoutSession()->setLastAddedProductId($productId);
     return $result;
 }