Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
128 lines (117 sloc) 3.96 KB
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Checkout
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
* API Resource class for product
*/
class Mage_Checkout_Model_Api_Resource_Product extends Mage_Checkout_Model_Api_Resource
{
/**
* Default ignored attribute codes
*
* @var array
*/
protected $_ignoredAttributeCodes = array('entity_id', 'attribute_set_id', 'entity_type_id');
/**
* Return loaded product instance
*
* @param int|string $productId (SKU or ID)
* @param int|string $store
* @param string $identifierType
* @return Mage_Catalog_Model_Product
*/
protected function _getProduct($productId, $store = null, $identifierType = null)
{
$product = Mage::helper('catalog/product')->getProduct($productId,
$this->_getStoreId($store),
$identifierType
);
return $product;
}
/**
* 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 QuoteItem by Product and request info
*
* @param Mage_Sales_Model_Quote $quote
* @param Mage_Catalog_Model_Product $product
* @param Varien_Object $requestInfo
* @return Mage_Sales_Model_Quote_Item
* @throw Mage_Core_Exception
*/
protected function _getQuoteItemByProduct(Mage_Sales_Model_Quote $quote,
Mage_Catalog_Model_Product $product,
Varien_Object $requestInfo)
{
$cartCandidates = $product->getTypeInstance(true)
->prepareForCartAdvanced($requestInfo,
$product,
Mage_Catalog_Model_Product_Type_Abstract::PROCESS_MODE_FULL
);
/**
* Error message
*/
if (is_string($cartCandidates)) {
throw Mage::throwException($cartCandidates);
}
/**
* If prepare process return one object
*/
if (!is_array($cartCandidates)) {
$cartCandidates = array($cartCandidates);
}
/** @var $item Mage_Sales_Model_Quote_Item */
$item = null;
foreach ($cartCandidates as $candidate) {
if ($candidate->getParentProductId()) {
continue;
}
$item = $quote->getItemByProduct($candidate);
}
if (is_null($item)) {
$item = Mage::getModel("sales/quote_item");
}
return $item;
}
}
You can’t perform that action at this time.