/** * Implement for compatibility with Magento pre 1.5.0 CE. * * @param Varien_Object $buyRequest * @param null $product * @return array|string */ public function prepareForCart(Varien_Object $buyRequest, $product = null) { $product = $this->getProduct($product); $productsInfo = $buyRequest->getSuperGroup(); if (!empty($productsInfo) && is_array($productsInfo)) { $products = array(); $associatedProducts = $this->getAssociatedProducts($product); if ($associatedProducts) { foreach ($associatedProducts as $subProduct) { if (isset($productsInfo[$subProduct->getId()])) { $qty = $productsInfo[$subProduct->getId()]; if (!empty($qty) && is_numeric($qty)) { /* BEGIN Brim Grouped-Options Customizations */ if ($subProduct->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) { $isConfigurable = true; $configBuyRequest = clone $buyRequest; $superAttr = $buyRequest->getSuperAttribute(); $configBuyRequest->setSuperAttribute($superAttr[$subProduct->getId()]); $configBuyRequest->setQty($qty); $_result = $subProduct->getTypeInstance(true)->prepareForCart($configBuyRequest, $subProduct); } else { /* END Brim Grouped-Options Customizations */ $isConfigurable = false; $clonedBuyRequest = clone $buyRequest; $superOptions = $buyRequest->getSuperOptions(); if ($superOptions && isset($superOptions[$subProduct->getId()])) { $clonedBuyRequest->setOptions($superOptions[$subProduct->getId()]); } if ($subProduct->getHasOptions() && count($subProduct->getOptions()) == 0) { foreach ($subProduct->getProductOptionsCollection() as $_option) { $subProduct->addOption($_option); } } $_result = $subProduct->getTypeInstance(true)->prepareForCart($clonedBuyRequest, $subProduct); } if (is_string($_result) && !is_array($_result)) { return $_result; } if (!isset($_result[0])) { return Mage::helper('checkout')->__('Cannot add the item to shopping cart.'); } /* BEGIN Brim Grouped-Options Customizations */ if ($isConfigurable) { foreach ($_result as $item) { $products[] = $item; } } else { /* END Brim Grouped-Options Customizations */ $_result[0]->setCartQty($qty); $_result[0]->addCustomOption('product_type', self::TYPE_CODE, $product); $newBuyRequest = array('super_product_config' => array('product_type' => self::TYPE_CODE, 'product_id' => $product->getId())); if (isset($clonedBuyRequest)) { if ($clonedBuyRequest->getOptions()) { $newBuyRequest['options'] = $clonedBuyRequest->getOptions(); } if ($clonedBuyRequest->getQty()) { $newBuyRequest['qty'] = $clonedBuyRequest->getQty(); } } $_result[0]->addCustomOption('info_buyRequest', serialize($newBuyRequest)); $products[] = $_result[0]; } } } } } if (count($products)) { return $products; } } return Mage::helper('catalog')->__('Please specify the quantity of product(s).'); }