Example #1
0
 public function validateSubscription(AW_Sarp_Model_Catalog_Product $product, Varien_Object $buyRequest)
 {
     if ($options = $buyRequest->getOptions()) {
         if (!isset($options['aw_sarp_subscription_start']) && !in_array(AW_Sarp_Model_Period::PERIOD_TYPE_NONE, explode(',', $product->getAwSarpPeriod()))) {
             if (!$buyRequest->getAwSarpSubscriptionStart()) {
                 return false;
             } else {
                 return true;
             }
         } else {
             return true;
         }
     }
     if (!$buyRequest->getAwSarpSubscriptionStart() && $buyRequest->getAwSarpSubscriptionStart() != '' && !in_array(AW_Sarp_Model_Period::PERIOD_TYPE_NONE, explode(',', $product->getAwSarpPeriod()))) {
         return false;
     } else {
         return true;
     }
 }
Example #2
0
 /**
  * Parse buyRequest into options values used by product
  *
  * @param  Varien_Object $buyRequest
  * @return Varien_Object
  */
 public function processBuyRequest(Varien_Object $buyRequest)
 {
     $options = new Varien_Object();
     /* add product custom options data */
     $customOptions = $buyRequest->getOptions();
     if (is_array($customOptions)) {
         foreach ($customOptions as $key => $value) {
             if ($value === '') {
                 unset($customOptions[$key]);
             }
         }
         $options->setOptions($customOptions);
     }
     /* add product type selected options data */
     $type = $this->getTypeInstance(true);
     $typeSpecificOptions = $type->processBuyRequest($this, $buyRequest);
     $options->addData($typeSpecificOptions);
     /* check correctness of product's options */
     $options->setErrors($type->checkProductConfiguration($this, $buyRequest));
     return $options;
 }
Example #3
0
    /**
     * Run PEAR command with html output console style
     *
     * @param array|Varien_Object $runParams command, options, params,
     *        comment, success_callback, failure_callback
     */
    public function runHtmlConsole($runParams)
    {
        ob_implicit_flush();
        $fe = $this->getFrontend();
        $oldLogStream = $fe->getLogStream();
        $fe->setLogStream('stdout');
        if ($runParams instanceof Varien_Object) {
            $run = $runParams;
        } elseif (is_array($runParams)) {
            $run = new Varien_Object($runParams);
        } elseif (is_string($runParams)) {
            $run = new Varien_Object(array('title' => $runParams));
        } else {
            throw Varien_Exception("Invalid run parameters");
        }
        ?>
<html><head><style type="text/css">
body { margin:0px; padding:3px; background:black; color:white; }
pre { font:normal 11px Courier New, serif; color:#2EC029; }
</style></head><body>
<?php 
        echo "<pre>" . $run->getComment();
        if ($command = $run->getCommand()) {
            $result = $this->run($command, $run->getOptions(), $run->getParams());
            if ($result instanceof PEAR_Error) {
                echo "\r\n\r\nPEAR ERROR: " . $result->getMessage();
            }
            echo '</pre><script type="text/javascript">';
            if ($result instanceof PEAR_Error) {
                if ($callback = $run->getFailureCallback()) {
                    call_user_func_array($callback, array($result));
                }
            } else {
                if ($callback = $run->getSuccessCallback()) {
                    call_user_func_array($callback, array($result));
                }
            }
            echo '</script>';
        } else {
            $result = false;
            echo '</pre>';
        }
        ?>
<script type="text/javascript">
if (!auto_scroll) {
    var auto_scroll = window.setInterval("document.body.scrollTop+=2", 10);
}
</script>
</body></html>
<?php 
        $fe->setLogStream($oldLogStream);
        return $result;
    }
 /**
  * Initialize product(s) for add to cart process
  *
  * @param   Varien_Object $buyRequest
  * @return  array|string
  */
 public function prepareForCart(Varien_Object $buyRequest)
 {
     $product = $this->getProduct();
     /* @var Mage_Catalog_Model_Product $product */
     // try to add custom options
     $options = $this->_prepareOptionsForCart($buyRequest->getOptions());
     if (is_string($options)) {
         return $options;
     }
     // try to found super product configuration
     // (if product was buying within grouped product)
     $superProductConfig = $buyRequest->getSuperProductConfig();
     if (!empty($superProductConfig['product_id']) && !empty($superProductConfig['product_type'])) {
         $superProductId = (int) $superProductConfig['product_id'];
         if ($superProductId) {
             if (!($superProduct = Mage::registry('used_super_product_' . $superProductId))) {
                 $superProduct = Mage::getModel('catalog/product')->load($superProductId);
                 Mage::register('used_super_product_' . $superProductId, $superProduct);
             }
             if ($superProduct->getId()) {
                 $assocProductIds = $superProduct->getTypeInstance()->getAssociatedProductIds();
                 if (in_array($product->getId(), $assocProductIds)) {
                     $productType = $superProductConfig['product_type'];
                     $product->addCustomOption('product_type', $productType, $superProduct);
                     $buyRequest->setData('super_product_config', array('product_type' => $productType, 'product_id' => $superProduct->getId()));
                 }
             }
         }
     }
     $product->addCustomOption('info_buyRequest', serialize($buyRequest->getData()));
     if ($options) {
         $optionIds = array_keys($options);
         $product->addCustomOption('option_ids', implode(',', $optionIds));
         foreach ($options as $optionId => $optionValue) {
             $product->addCustomOption('option_' . $optionId, $optionValue);
         }
     }
     // set quantity in cart
     $product->setCartQty($buyRequest->getQty());
     return array($product);
 }
Example #5
0
 /**
  * Parse buyRequest into options values used by product
  *
  * @param  Varien_Object $buyRequest
  * @return Varien_Object
  */
 public function processBuyRequest(Varien_Object $buyRequest)
 {
     $options = new Varien_Object();
     /* add product custom options data */
     $customOptions = $buyRequest->getOptions();
     if (is_array($customOptions)) {
         $options->setOptions(array_diff($buyRequest->getOptions(), array('')));
     }
     /* add product type selected options data */
     $type = $this->getTypeInstance();
     $typeSpecificOptions = $type->processBuyRequest($this, $buyRequest);
     $options->addData($typeSpecificOptions);
     /* check correctness of product's options */
     $options->setErrors($type->checkProductConfiguration($this, $buyRequest));
     return $options;
 }
Example #6
0
 /**
  * Prepare product and its configuration to be added to some products list.
  * Perform standard preparation process and add logic specific to Grouped product type.
  *
  * Implemented for Magento 1.5+ CE.
  *
  * @param Varien_Object $buyRequest
  * @param Mage_Catalog_Model_Product $product
  * @param string $processMode
  * @return array|string
  */
 protected function _prepareProduct(Varien_Object $buyRequest, $product, $processMode)
 {
     $product = $this->getProduct($product);
     $productsInfo = $buyRequest->getSuperGroup();
     $isStrictProcessMode = $this->_isStrictProcessMode($processMode);
     if (!$isStrictProcessMode || !empty($productsInfo) && is_array($productsInfo)) {
         $products = array();
         $associatedProductsInfo = array();
         $associatedProducts = $this->getAssociatedProducts($product);
         if ($associatedProducts || !$isStrictProcessMode) {
             foreach ($associatedProducts as $subProduct) {
                 $subProductId = $subProduct->getId();
                 if (isset($productsInfo[$subProductId])) {
                     $qty = $productsInfo[$subProductId];
                     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();
                             if (array_key_exists($subProductId, $superAttr)) {
                                 $configBuyRequest->setSuperAttribute($superAttr[$subProductId]);
                             }
                             $configBuyRequest->setQty($qty);
                             if (!($superOptions = $buyRequest->getOptions())) {
                                 $superOptions = $buyRequest->getSuperOptions();
                             }
                             if (is_array($superOptions) && array_key_exists($subProductId, $superOptions)) {
                                 $optionIds = join(',', array_keys($superOptions[$subProductId]));
                                 $subProduct->addCustomOption('option_ids', $optionIds);
                                 foreach ($superOptions[$subProductId] as $id => $value) {
                                     if (is_array($value)) {
                                         $value = join(',', $value);
                                     }
                                     $subProduct->addCustomOption('option_' . $id, $value);
                                 }
                                 $configBuyRequest->setOptions($superOptions[$subProductId]);
                             }
                             $_result = $subProduct->getTypeInstance(true)->_prepareProduct($configBuyRequest, $subProduct, $processMode);
                         } 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)->_prepareProduct($clonedBuyRequest, $subProduct, $processMode);
                         }
                         if (is_string($_result) && !is_array($_result)) {
                             return $_result;
                         }
                         if (!isset($_result[0])) {
                             return Mage::helper('checkout')->__('Cannot process the item.');
                         }
                         /* BEGIN Brim Grouped-Options Customizations */
                         if ($isConfigurable) {
                             foreach ($_result as $item) {
                                 $products[] = $item;
                             }
                         } else {
                             /* END Brim Grouped-Options Customizations */
                             if ($isStrictProcessMode) {
                                 $_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];
                             } else {
                                 $associatedProductsInfo[] = array($subProductId => $qty);
                                 $product->addCustomOption('associated_product_' . $subProductId, $qty);
                             }
                         }
                     }
                 }
             }
         }
         if (!$isStrictProcessMode || count($associatedProductsInfo)) {
             $product->addCustomOption('product_type', self::TYPE_CODE, $product);
             $product->addCustomOption('info_buyRequest', serialize($buyRequest));
             $products[] = $product;
         }
         if (count($products)) {
             return $products;
         }
     }
     return Mage::helper('catalog')->__('Please specify the quantity of product(s).');
 }