/** * 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; }
/** * 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; }