コード例 #1
0
 /**
  * Initialize and check product
  *
  * @return Mage_Catalog_Model_Product
  */
 protected function _initProduct()
 {
     AO::dispatchEvent('review_controller_product_init_before', array('controller_action' => $this));
     $categoryId = (int) $this->getRequest()->getParam('category', false);
     $productId = (int) $this->getRequest()->getParam('id');
     if (!$productId) {
         return false;
     }
     $product = AO::getModel('catalog/product')->setStoreId(AO::app()->getStore()->getId())->load($productId);
     /* @var $product Mage_Catalog_Model_Product */
     if (!$product->getId() || !$product->isVisibleInCatalog() || !$product->isVisibleInSiteVisibility()) {
         return false;
     }
     if ($categoryId) {
         $category = AO::getModel('catalog/category')->load($categoryId);
         AO::register('current_category', $category);
     }
     AO::register('current_product', $product);
     AO::register('product', $product);
     try {
         AO::dispatchEvent('review_controller_product_init', array('product' => $product));
         AO::dispatchEvent('review_controller_product_init_after', array('product' => $product, 'controller_action' => $this));
     } catch (Mage_Core_Exception $e) {
         AO::logException($e);
         return false;
     }
     return $product;
 }
コード例 #2
0
 /**
  * Initialize requested category object
  *
  * @return Mage_Catalog_Model_Category
  */
 protected function _initCatagory()
 {
     AO::dispatchEvent('catalog_controller_category_init_before', array('controller_action' => $this));
     $categoryId = (int) $this->getRequest()->getParam('id', false);
     if (!$categoryId) {
         return false;
     }
     $category = AO::getModel('catalog/category')->setStoreId(AO::app()->getStore()->getId())->load($categoryId);
     if (!AO::helper('catalog/category')->canShow($category)) {
         return false;
     }
     AO::getSingleton('catalog/session')->setLastVisitedCategoryId($category->getId());
     AO::register('current_category', $category);
     try {
         AO::dispatchEvent('catalog_controller_category_init_after', array('category' => $category, 'controller_action' => $this));
     } catch (Mage_Core_Exception $e) {
         AO::logException($e);
         return false;
     }
     return $category;
 }
コード例 #3
0
 /**
  * Initialize requested product object
  *
  * @return Mage_Catalog_Model_Product
  */
 protected function _initProduct()
 {
     AO::dispatchEvent('catalog_controller_product_init_before', array('controller_action' => $this));
     $categoryId = (int) $this->getRequest()->getParam('category', false);
     $productId = (int) $this->getRequest()->getParam('id');
     if (!$productId) {
         return false;
     }
     $product = AO::getModel('catalog/product')->setStoreId(AO::app()->getStore()->getId())->load($productId);
     if (!AO::helper('catalog/product')->canShow($product)) {
         return false;
     }
     if (!in_array(AO::app()->getStore()->getWebsiteId(), $product->getWebsiteIds())) {
         return false;
     }
     $category = null;
     if ($categoryId) {
         $category = AO::getModel('catalog/category')->load($categoryId);
         $product->setCategory($category);
         AO::register('current_category', $category);
     } elseif ($categoryId = AO::getSingleton('catalog/session')->getLastVisitedCategoryId()) {
         if ($product->canBeShowInCategory($categoryId)) {
             $category = AO::getModel('catalog/category')->load($categoryId);
             $product->setCategory($category);
             AO::register('current_category', $category);
         }
     }
     AO::register('current_product', $product);
     AO::register('product', $product);
     try {
         AO::dispatchEvent('catalog_controller_product_init', array('product' => $product));
         AO::dispatchEvent('catalog_controller_product_init_after', array('product' => $product, 'controller_action' => $this));
     } catch (Mage_Core_Exception $e) {
         AO::logException($e);
         return false;
     }
     return $product;
 }
コード例 #4
0
 /**
  * Multishipping checkout place order page
  */
 public function overviewAction()
 {
     if (!$this->_validateMinimumAmount()) {
         return $this;
     }
     $this->_getState()->setActiveStep(Mage_Checkout_Model_Type_Multishipping_State::STEP_OVERVIEW);
     try {
         $payment = $this->getRequest()->getPost('payment');
         $this->_getCheckout()->setPaymentMethod($payment);
         $this->_getCheckout()->getQuote()->getPayment()->importData($payment);
         $this->_getState()->setCompleteStep(Mage_Checkout_Model_Type_Multishipping_State::STEP_BILLING);
         $this->loadLayout();
         $this->_initLayoutMessages('checkout/session');
         $this->_initLayoutMessages('customer/session');
         $this->renderLayout();
     } catch (Mage_Core_Exception $e) {
         AO::getSingleton('checkout/session')->addError($e->getMessage());
         $this->_redirect('*/*/billing');
     } catch (Exception $e) {
         AO::logException($e);
         AO::getSingleton('checkout/session')->addException($e, $this->__('Can\'t open overview page'));
         $this->_redirect('*/*/billing');
     }
 }
コード例 #5
0
 public function quickCreateAction()
 {
     $result = array();
     /* @var $configurableProduct Mage_Catalog_Model_Product */
     $configurableProduct = AO::getModel('catalog/product')->setStoreId(0)->load($this->getRequest()->getParam('product'));
     if (!$configurableProduct->isConfigurable()) {
         // If invalid parent product
         $this->_redirect('*/*/');
         return;
     }
     /* @var $product Mage_Catalog_Model_Product */
     $product = AO::getModel('catalog/product')->setStoreId(0)->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_SIMPLE)->setAttributeSetId($configurableProduct->getAttributeSetId());
     foreach ($product->getTypeInstance()->getEditableAttributes() as $attribute) {
         if ($attribute->getIsUnique() || $attribute->getFrontend()->getInputType() == 'gallery' || $attribute->getFrontend()->getInputType() == 'media_image' || !$attribute->getIsVisible()) {
             continue;
         }
         $product->setData($attribute->getAttributeCode(), $configurableProduct->getData($attribute->getAttributeCode()));
     }
     $product->addData($this->getRequest()->getParam('simple_product', array()));
     $product->setWebsiteIds($configurableProduct->getWebsiteIds());
     $autogenerateOptions = array();
     $result['attributes'] = array();
     foreach ($configurableProduct->getTypeInstance()->getConfigurableAttributes() as $attribute) {
         $value = $product->getAttributeText($attribute->getProductAttribute()->getAttributeCode());
         $autogenerateOptions[] = $value;
         $result['attributes'][] = array('label' => $value, 'value_index' => $product->getData($attribute->getProductAttribute()->getAttributeCode()), 'attribute_id' => $attribute->getProductAttribute()->getId());
     }
     if ($product->getNameAutogenerate()) {
         $product->setName($configurableProduct->getName() . '-' . implode('-', $autogenerateOptions));
     }
     if ($product->getSkuAutogenerate()) {
         $product->setSku($configurableProduct->getSku() . '-' . implode('-', $autogenerateOptions));
     }
     if (is_array($product->getPricing())) {
         $result['pricing'] = $product->getPricing();
         $additionalPrice = 0;
         foreach ($product->getPricing() as $pricing) {
             if (empty($pricing['value'])) {
                 continue;
             }
             if (!empty($pricing['is_percent'])) {
                 $pricing['value'] = $pricing['value'] / 100 * $product->getPrice();
             }
             $additionalPrice += $pricing['value'];
         }
         $product->setPrice($product->getPrice() + $additionalPrice);
         $product->unsPricing();
     }
     try {
         $product->validate();
         $product->save();
         $result['product_id'] = $product->getId();
         $this->_getSession()->addSuccess(AO::helper('catalog')->__('Product was successfully created.'));
         $this->_initLayoutMessages('adminhtml/session');
         $result['messages'] = $this->getLayout()->getMessagesBlock()->getGroupedHtml();
     } catch (Mage_Core_Exception $e) {
         $result['error'] = array('message' => $e->getMessage(), 'fields' => array('sku' => $product->getSku()));
     } catch (Exception $e) {
         AO::logException($e);
         $result['error'] = array('message' => $this->__('Product saving error. ') . $e->getMessage());
     }
     $this->getResponse()->setBody(Zend_Json::encode($result));
 }
コード例 #6
0
ファイル: Layout.php プロジェクト: ronseigel/agent-ohm
 /**
  * Block Factory
  *
  * @param     string $type
  * @param     string $blockName
  * @param     array $attributes
  * @return    Mage_Core_Block_Abstract
  */
 public function createBlock($type, $name = '', array $attributes = array())
 {
     try {
         $block = $this->_getBlockInstance($type, $attributes);
     } catch (Exception $e) {
         AO::logException($e);
         return false;
     }
     if (empty($name) || '.' === $name[0]) {
         $block->setIsAnonymous(true);
         if (!empty($name)) {
             $block->setAnonSuffix(substr($name, 1));
         }
         $name = 'ANONYMOUS_' . sizeof($this->_blocks);
     } elseif (isset($this->_blocks[$name])) {
         AO::throwException(AO::helper('core')->__('Block with name "%s" already exists', $name));
     }
     $block->setType($type);
     $block->setNameInLayout($name);
     $block->addData($attributes);
     $block->setLayout($this);
     $this->_blocks[$name] = $block;
     return $this->_blocks[$name];
 }
コード例 #7
0
 public function saveOrderAction()
 {
     $this->_expireAjax();
     $result = array();
     try {
         if ($requiredAgreements = AO::helper('checkout')->getRequiredAgreementIds()) {
             $postedAgreements = array_keys($this->getRequest()->getPost('agreement', array()));
             if ($diff = array_diff($requiredAgreements, $postedAgreements)) {
                 $result['success'] = false;
                 $result['error'] = true;
                 $result['error_messages'] = $this->__('Please agree to all Terms and Conditions before placing the order.');
                 $this->getResponse()->setBody(Zend_Json::encode($result));
                 return;
             }
         }
         if ($data = $this->getRequest()->getPost('payment', false)) {
             $this->getOnepage()->getQuote()->getPayment()->importData($data);
         }
         $this->getOnepage()->saveOrder();
         $redirectUrl = $this->getOnepage()->getCheckout()->getRedirectUrl();
         $result['success'] = true;
         $result['error'] = false;
     } catch (Mage_Core_Exception $e) {
         AO::logException($e);
         AO::helper('checkout')->sendPaymentFailedEmail($this->getOnepage()->getQuote(), $e->getMessage());
         $result['success'] = false;
         $result['error'] = true;
         $result['error_messages'] = $e->getMessage();
         $this->getOnepage()->getQuote()->save();
     } catch (Exception $e) {
         AO::logException($e);
         AO::helper('checkout')->sendPaymentFailedEmail($this->getOnepage()->getQuote(), $e->getMessage());
         $result['success'] = false;
         $result['error'] = true;
         $result['error_messages'] = $this->__('There was an error processing your order. Please contact us or try again later.');
         $this->getOnepage()->getQuote()->save();
     }
     /**
      * when there is redirect to third party, we don't want to save order yet.
      * we will save the order in return action.
      */
     if (isset($redirectUrl)) {
         $result['redirect'] = $redirectUrl;
     }
     $this->getResponse()->setBody(Zend_Json::encode($result));
 }
コード例 #8
0
 /**
  * Multiple calls of resource functionality
  *
  * @param string $sessionId
  * @param array $calls
  * @param array $options
  * @return array
  */
 public function multiCall($sessionId, array $calls = array(), $options = array())
 {
     $this->_startSession($sessionId);
     if (!$this->_getSession()->isLoggedIn($sessionId)) {
         return $this->_fault('session_expired');
     }
     $result = array();
     $resourcesAlias = $this->_getConfig()->getResourcesAlias();
     $resources = $this->_getConfig()->getResources();
     foreach ($calls as $call) {
         if (!isset($call[0])) {
             $result[] = $this->_faultAsArray('resource_path_invalid');
             if (isset($options['break']) && $options['break'] == 1) {
                 break;
             } else {
                 continue;
             }
         }
         $apiPath = $call[0];
         $args = isset($call[1]) ? $call[1] : array();
         list($resourceName, $methodName) = explode('.', $apiPath);
         if (empty($resourceName) || empty($methodName)) {
             $result[] = $this->_faultAsArray('resource_path_invalid');
             if (isset($options['break']) && $options['break'] == 1) {
                 break;
             } else {
                 continue;
             }
         }
         if (isset($resourcesAlias->{$resourceName})) {
             $resourceName = (string) $resourcesAlias->{$resourceName};
         }
         if (!isset($resources->{$resourceName}) || !isset($resources->{$resourceName}->methods->{$methodName})) {
             $result[] = $this->_faultAsArray('resource_path_invalid');
             if (isset($options['break']) && $options['break'] == 1) {
                 break;
             } else {
                 continue;
             }
         }
         if (!isset($resources->{$resourceName}->public) && isset($resources->{$resourceName}->acl) && !$this->_isAllowed((string) $resources->{$resourceName}->acl)) {
             $result[] = $this->_faultAsArray('access_denied');
             if (isset($options['break']) && $options['break'] == 1) {
                 break;
             } else {
                 continue;
             }
         }
         if (!isset($resources->{$resourceName}->methods->{$methodName}->public) && isset($resources->{$resourceName}->methods->{$methodName}->acl) && !$this->_isAllowed((string) $resources->{$resourceName}->methods->{$methodName}->acl)) {
             $result[] = $this->_faultAsArray('access_denied');
             if (isset($options['break']) && $options['break'] == 1) {
                 break;
             } else {
                 continue;
             }
         }
         $methodInfo = $resources->{$resourceName}->methods->{$methodName};
         try {
             $method = isset($methodInfo->method) ? (string) $methodInfo->method : $methodName;
             $modelName = $this->_prepareResourceModelName((string) $resources->{$resourceName}->model);
             try {
                 $model = AO::getModel($modelName);
             } catch (Exception $e) {
                 throw new Mage_Api_Exception('resource_path_not_callable');
             }
             if (is_callable(array(&$model, $method))) {
                 if (isset($methodInfo->arguments) && (string) $methodInfo->arguments == 'array') {
                     $result[] = $model->{$method}(is_array($args) ? $args : array($args));
                 } elseif (!is_array($args)) {
                     $result[] = $model->{$method}($args);
                 } else {
                     $result[] = call_user_func_array(array(&$model, $method), $args);
                 }
             } else {
                 throw new Mage_Api_Exception('resource_path_not_callable');
             }
         } catch (Mage_Api_Exception $e) {
             $result[] = $this->_faultAsArray($e->getMessage(), $resourceName, $e->getCustomMessage());
             if (isset($options['break']) && $options['break'] == 1) {
                 break;
             } else {
                 continue;
             }
         } catch (Exception $e) {
             AO::logException($e);
             $result[] = $this->_faultAsArray('internal');
             if (isset($options['break']) && $options['break'] == 1) {
                 break;
             } else {
                 continue;
             }
         }
     }
     return $result;
 }