Example #1
0
 /**
  * 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).');
 }