/** * Retrieve field dependencies * * @param array $dependencies * @param string $storeCode * @param string $fieldPrefix * @return array */ public function getDependencies($dependencies, $storeCode, $fieldPrefix = '') { $output = array(); foreach ($dependencies as $depend) { /* @var array $depend */ $fieldId = $fieldPrefix . array_pop($depend['dependPath']); $depend['dependPath'][] = $fieldId; $dependentId = implode('_', $depend['dependPath']); $shouldAddDependency = true; $dependentValue = $depend['value']; if (isset($depend['separator'])) { $dependentValue = explode($depend['separator'], $dependentValue); } /** @var Mage_Backend_Model_Config_Structure_Element_Field $dependentField */ $dependentField = $this->_fieldLocator->getElement($depend['id']); /* * If dependent field can't be shown in current scope and real dependent config value * is not equal to preferred one, then hide dependence fields by adding dependence * based on not shown field (not rendered field) */ if (false == $dependentField->isVisible()) { $valueInStore = $this->_application->getStore($storeCode)->getConfig($dependentField->getPath($fieldPrefix)); if (is_array($dependentValue)) { $shouldAddDependency = !in_array($valueInStore, $dependentValue); } else { $shouldAddDependency = $dependentValue != $valueInStore; } } if ($shouldAddDependency) { $output[$dependentId] = $dependentValue; } } return $output; }
/** * @return Container */ private function _buildContainer() { $this->_generatorConfig->addCompilerPass($this->_storeConfigCompilerPass); $this->_generatorConfig->addCompilerPass($this->_injectableCompilerPass); $this->_mageApp->dispatchEvent('symfony_container_before_container_generator', ['generator_config' => $this->_generatorConfig]); $generator = new ContainerGenerator($this->_generatorConfig); return $this->_container = $generator->getContainer(); }
/** * @return Configuration */ public function build() { $servicesFormat = 'xml'; $cachedContainer = $this->_baseDir . '/' . self::CACHED_CONTAINER; $configuration = Configuration::fromParameters($cachedContainer, $this->_collectConfigFolders(), !$this->_mageApp->useCache(self::MODEL_ALIAS), $servicesFormat); $configuration->setTestEnvironment($this->_isTestEnvironment()); return $configuration; }
/** * @param array $tag * @param Definition $definition */ private function processTag($tag, Definition $definition) { foreach ($tag as $attribute) { if (isset($attribute['key'])) { $configValue = $this->_mageApp->getStore()->getConfig($attribute['key']); $definition->addArgument($configValue); } } }
protected function setUp() { /** Init all dependencies for SUT. */ $this->_storeMock = $this->getMockBuilder('Mage_Core_Model_Store')->disableOriginalConstructor()->getMock(); $this->_applicationMock = $this->getMockBuilder('Mage_Core_Model_App')->disableOriginalConstructor()->getMock(); $this->_applicationMock->expects($this->any())->method('getStore')->will($this->returnValue($this->_storeMock)); $this->_requestMock = $this->getMockBuilder('Mage_Webapi_Controller_Request_Soap')->disableOriginalConstructor()->getMock(); $this->_domDocumentFactory = $this->getMockBuilder('Magento_DomDocument_Factory')->disableOriginalConstructor()->getMock(); parent::setUp(); }
/** * @covers Mage_Sales_Block_Adminhtml_Report_Filter_Form_Coupon::_afterToHtml */ public function testAfterToHtml() { /** @var $block Mage_Sales_Block_Adminhtml_Report_Filter_Form_Coupon */ $block = $this->_application->getLayout()->createBlock('Mage_Sales_Block_Adminhtml_Report_Filter_Form_Coupon'); $block->setFilterData(new Varien_Object()); $html = $block->toHtml(); $expectedStrings = array('FormElementDependenceController', 'sales_report_rules_list', 'sales_report_price_rule_type'); foreach ($expectedStrings as $expectedString) { $this->assertContains($expectedString, $html); } }
/** * @param Mage_Core_Model_App|integer $store * * @return AW_Followupemail_Model_Mysql4_Unsubscribe_Collection */ public function addStoreFilter($store) { if ($store instanceof Mage_Core_Model_Store) { $storeId = $store->getId(); } elseif (is_numeric($store)) { $storeId = $store; } else { return $this; } $this->addFieldToFilter('store_id', $storeId); return $this; }
/** * Set the passed in address object to ignore validation only when * we are currently saving an order and ROM Address validation is not * needed. * * @param Mage_Customer_Model_Address_Abstract * @return self */ public function allowAddressValidation(Mage_Customer_Model_Address_Abstract $address) { /** @var Mage_Core_Controller_Request_Http */ $request = $this->app->getRequest(); /** @var bool */ $needValidation = $this->validator->shouldValidateAddress($address); // We only want to ignore address validation when we are actually creating an order. // The assumption is if we get to this point, then, validating the address is // unnecessary if it is already valid in ROM. if (!$needValidation && $request->getActionName() === 'saveOrder') { $address->setShouldIgnoreValidation(true); } return $this; }
/** * Shortcut for the application "is installed" getter * * @return bool * @throws Magento_Exception * * @todo Remove in favour of Mage_Core_Model_App::isInstalled() as soon as dependencies on application are injected */ public static function isInstalled() { if (!self::$_app) { throw new Magento_Exception('Application instance has not been initialized yet.'); } return self::$_app->isInstalled(); }
/** * Front end main entry point * * @param string $code * @param string $type * @param string|array $options */ public static function run($code = '', $type = 'store', $options = array()) { try { Magento_Profiler::start('mage'); self::setRoot(); if (isset($options['edition'])) { self::$_currentEdition = $options['edition']; } self::$_app = new Mage_Core_Model_App(); if (isset($options['request'])) { self::$_app->setRequest($options['request']); } if (isset($options['response'])) { self::$_app->setResponse($options['response']); } self::$_events = new Varien_Event_Collection(); self::_setIsInstalled($options); self::_setConfigModel($options); self::$_app->run(array('scope_code' => $code, 'scope_type' => $type, 'options' => $options)); Magento_Profiler::stop('mage'); } catch (Mage_Core_Model_Session_Exception $e) { header('Location: ' . self::getBaseUrl()); } catch (Mage_Core_Model_Store_Exception $e) { require_once self::getBaseDir() . '/pub/errors/404.php'; } catch (Exception $e) { self::printException($e); } }
/** * Add stores to collection * * @return Mage_Rating_Model_Resource_Rating_Collection */ public function addStoresToCollection() { if ($this->_app->isSingleStoreMode()) { return $this; } if (!$this->_isCollectionLoaded) { return $this; } $ratingIds = array(); foreach ($this as $item) { $ratingIds[] = $item->getId(); $item->setStores(array()); } if (!$ratingIds) { return $this; } $adapter = $this->getConnection(); $inCond = $adapter->prepareSqlCondition('rating_id', array('in' => $ratingIds)); $this->_select = $adapter->select()->from($this->getTable('rating_store'))->where($inCond); $data = $adapter->fetchAll($this->_select); if (is_array($data) && count($data) > 0) { foreach ($data as $row) { $item = $this->getItemById($row['rating_id']); $item->setStores(array_merge($item->getStores(), array($row['store_id']))); } } return $this; }
/** * Front end main entry point * * @param string $code * @param string $type * @param string|array $options */ public static function run($code = '', $type = 'store', $options = array()) { try { Varien_Profiler::start('mage'); self::setRoot(); self::$_app = new Mage_Core_Model_App(); self::$_events = new Varien_Event_Collection(); self::$_config = new Mage_Core_Model_Config($options); self::$_app->run(array('scope_code' => $code, 'scope_type' => $type, 'options' => $options)); Varien_Profiler::stop('mage'); } catch (Mage_Core_Model_Session_Exception $e) { header('Location: ' . self::getBaseUrl()); die; } catch (Mage_Core_Model_Store_Exception $e) { require_once self::getBaseDir() . DS . 'errors' . DS . '404.php'; die; } catch (Exception $e) { if (self::isInstalled() || self::$_isDownloader) { self::printException($e); exit; } try { self::dispatchEvent('mage_run_exception', array('exception' => $e)); if (!headers_sent()) { header('Location:' . self::getUrl('install')); } else { self::printException($e); } } catch (Exception $ne) { self::printException($ne, $e->getMessage()); } } }
/** * @return string */ protected function _toHtml() { if (!$this->_application->isSingleStoreMode()) { return parent::_toHtml(); } return ''; }
/** * Process redirect (R) and permanent redirect (RP) * * @return Mage_Core_Model_Url_Rewrite_Request */ protected function _processRedirectOptions() { $isPermanentRedirectOption = $this->_rewrite->hasOption('RP'); $external = substr($this->_rewrite->getTargetPath(), 0, 6); if ($external === 'http:/' || $external === 'https:') { $destinationStoreCode = $this->_app->getStore($this->_rewrite->getStoreId())->getCode(); $this->_setStoreCodeCookie($destinationStoreCode); $this->_sendRedirectHeaders($this->_rewrite->getTargetPath(), $isPermanentRedirectOption); } $targetUrl = $this->_request->getBaseUrl() . '/' . $this->_rewrite->getTargetPath(); $storeCode = $this->_app->getStore()->getCode(); if (Mage::getStoreConfig('web/url/use_store') && !empty($storeCode)) { $targetUrl = $this->_request->getBaseUrl() . '/' . $storeCode . '/' . $this->_rewrite->getTargetPath(); } if ($this->_rewrite->hasOption('R') || $isPermanentRedirectOption) { $this->_sendRedirectHeaders($targetUrl, $isPermanentRedirectOption); } $queryString = $this->_getQueryString(); if ($queryString) { $targetUrl .= '?' . $queryString; } $this->_request->setRequestUri($targetUrl); $this->_request->setPathInfo($this->_rewrite->getTargetPath()); return $this; }
/** * @magentoConfigFixture global/di/preferences/Mage_Core_Model_Url Mage_Backend_Model_Url * @magentoConfigFixture frontend/di/preferences/Mage_Core_Model_Url Mage_DesignEditor_Model_Url_NavigationMode */ public function testLoadDiConfiguration() { $objectManager = Mage::getObjectManager(); $this->_model = $objectManager->get('Mage_Core_Model_App'); $this->_model->loadDiConfiguration('frontend'); $testInstance = $objectManager->create('Mage_Backend_Block_Widget_Grid_ColumnSet'); $this->assertAttributeInstanceOf('Mage_DesignEditor_Model_Url_NavigationMode', '_urlBuilder', $testInstance); }
/** * Initialize stores data * * @param bool $withDefault * @return Mage_ImportExport_Model_Import_Entity_EavAbstract */ protected function _initStores($withDefault = false) { /** @var $store Mage_Core_Model_Store */ foreach ($this->_storeManager->getStores($withDefault) as $store) { $this->_storeCodeToId[$store->getCode()] = $store->getId(); } return $this; }
/** * Execute specified task * * @param array $task * @return bool */ public function execute($task) { $taskDetails = Zend_Json::decode($task['data']); if (isset($taskDetails['task_name'])) { try { $this->_config->loadEventObservers('workers'); $this->_app->addEventArea('workers'); $this->getReporter()->reportTaskProcessing($task['task_id']); $this->_dispatchEvent($taskDetails['task_name'], $taskDetails['params']); $this->getReporter()->reportTaskCompleted($task['task_id']); } catch (Exception $e) { $this->getReporter()->reportTaskFailed($task['task_id']); $this->_logger->logException($e); } } return true; }
/** * Prepare affected product */ protected function _prepareAffectedProduct() { /** @var $modelCondition Mage_Catalog_Model_Product_Condition */ $modelCondition = $this->_factory->getModel('catalog/product_condition'); $productCondition = $modelCondition->setTable($this->_resource->getTable('catalogrule/affected_product'))->setPkFieldName('product_id'); $this->_app->dispatchEvent('catalogrule_after_apply', array('product' => $this->_getProduct(), 'product_condition' => $productCondition)); $this->_connection->delete($this->_resource->getTable('catalogrule/affected_product')); }
/** * @param GetResponseEvent $event */ public function onKernelRequestSetStore(GetResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType() && $this->app) { $store = $this->storeResolver->resolve($event->getRequest()); if (false !== $store) { // keep default store in case manual override fails $defaultStore = $this->app->getStore()->getCode(); $this->app->setCurrentStore($store); try { // try to load the store $this->app->getStore(); } catch (\Mage_Core_Model_Store_Exception $e) { $this->app->setCurrentStore($defaultStore); } } } }
/** * Initialize website values * * @param bool $withDefault * @return Mage_ImportExport_Model_Export_EntityAbstract */ protected function _initWebsites($withDefault = false) { /** @var $website Mage_Core_Model_Website */ foreach ($this->_websiteManager->getWebsites($withDefault) as $website) { $this->_websiteIdToCode[$website->getId()] = $website->getCode(); } return $this; }
protected function _prepareColumns() { $this->addColumn('subscriber_id', array('header' => Mage::helper('Mage_Newsletter_Helper_Data')->__('ID'), 'index' => 'subscriber_id')); $this->addColumn('email', array('header' => Mage::helper('Mage_Newsletter_Helper_Data')->__('Email'), 'index' => 'subscriber_email')); $this->addColumn('type', array('header' => Mage::helper('Mage_Newsletter_Helper_Data')->__('Type'), 'index' => 'type', 'type' => 'options', 'options' => array(1 => Mage::helper('Mage_Newsletter_Helper_Data')->__('Guest'), 2 => Mage::helper('Mage_Newsletter_Helper_Data')->__('Customer')))); $this->addColumn('firstname', array('header' => Mage::helper('Mage_Newsletter_Helper_Data')->__('Customer First Name'), 'index' => 'customer_firstname', 'default' => '----')); $this->addColumn('lastname', array('header' => Mage::helper('Mage_Newsletter_Helper_Data')->__('Customer Last Name'), 'index' => 'customer_lastname', 'default' => '----')); $this->addColumn('status', array('header' => Mage::helper('Mage_Newsletter_Helper_Data')->__('Status'), 'index' => 'subscriber_status', 'type' => 'options', 'options' => array(Mage_Newsletter_Model_Subscriber::STATUS_NOT_ACTIVE => Mage::helper('Mage_Newsletter_Helper_Data')->__('Not Activated'), Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED => Mage::helper('Mage_Newsletter_Helper_Data')->__('Subscribed'), Mage_Newsletter_Model_Subscriber::STATUS_UNSUBSCRIBED => Mage::helper('Mage_Newsletter_Helper_Data')->__('Unsubscribed'), Mage_Newsletter_Model_Subscriber::STATUS_UNCONFIRMED => Mage::helper('Mage_Newsletter_Helper_Data')->__('Unconfirmed')))); if (!$this->_app->isSingleStoreMode()) { $this->addColumn('website', array('header' => Mage::helper('Mage_Newsletter_Helper_Data')->__('Website'), 'index' => 'website_id', 'type' => 'options', 'options' => $this->_getWebsiteOptions())); $this->addColumn('group', array('header' => Mage::helper('Mage_Newsletter_Helper_Data')->__('Store'), 'index' => 'group_id', 'type' => 'options', 'options' => $this->_getStoreGroupOptions())); $this->addColumn('store', array('header' => Mage::helper('Mage_Newsletter_Helper_Data')->__('Store View'), 'index' => 'store_id', 'type' => 'options', 'options' => $this->_getStoreOptions())); } $this->addExportType('*/*/exportCsv', Mage::helper('Mage_Customer_Helper_Data')->__('CSV')); $this->addExportType('*/*/exportXml', Mage::helper('Mage_Customer_Helper_Data')->__('Excel XML')); return parent::_prepareColumns(); }
/** * Render scope label * * @param Varien_Data_Form_Element_Abstract $element * @return string */ protected function _renderScopeLabel(Varien_Data_Form_Element_Abstract $element) { $html = '<td class="scope-label">'; if ($element->getScope() && false == $this->_application->isSingleStoreMode()) { $html .= $element->getScopeLabel(); } $html .= '</td>'; return $html; }
/** * Test maskException method with turned on developer mode. */ public function testMaskExceptionInDeveloperMode() { /** Mock app isDeveloperMode to return true. */ $this->_appMock->expects($this->once())->method('isDeveloperMode')->will($this->returnValue(true)); /** Init Logical exception. */ $logicalException = new LogicException(); /** Asser Webapi exception was not masked. */ $this->assertEquals($this->_errorProcessor->maskException($logicalException), $logicalException, 'Exception was masked wrong in developer mode.'); }
/** * Parse Request body into array of params. * * @param string $encodedBody Posted content from request. * @return array|null Return NULL if content is invalid. * @throws InvalidArgumentException * @throws Mage_Webapi_Exception If decoding error was encountered. */ public function interpret($encodedBody) { if (!is_string($encodedBody)) { throw new InvalidArgumentException(sprintf('Invalid data type "%s". String is expected.', gettype($encodedBody))); } try { /** @var Mage_Core_Helper_Data $jsonHelper */ $jsonHelper = $this->_helperFactory->get('Mage_Core_Helper_Data'); $decodedBody = $jsonHelper->jsonDecode($encodedBody); } catch (Zend_Json_Exception $e) { if (!$this->_app->isDeveloperMode()) { throw new Mage_Webapi_Exception($this->_helper->__('Decoding error.'), Mage_Webapi_Exception::HTTP_BAD_REQUEST); } else { throw new Mage_Webapi_Exception('Decoding error: ' . PHP_EOL . $e->getMessage() . PHP_EOL . $e->getTraceAsString(), Mage_Webapi_Exception::HTTP_BAD_REQUEST); } } return $decodedBody; }
/** * Inserts rule data into catalogrule/rule_product table * * @param Mage_CatalogRule_Model_Rule $rule * @param array $websiteIds * @param array $productIds */ public function insertRuleData(Mage_CatalogRule_Model_Rule $rule, array $websiteIds, array $productIds = array()) { /** @var $write Varien_Db_Adapter_Interface */ $write = $this->_getWriteAdapter(); $customerGroupIds = $rule->getCustomerGroupIds(); $fromTime = (int) strtotime($rule->getFromDate()); $toTime = (int) strtotime($rule->getToDate()); $toTime = $toTime ? $toTime + self::SECONDS_IN_DAY - 1 : 0; $sortOrder = (int) $rule->getSortOrder(); $actionOperator = $rule->getSimpleAction(); $actionAmount = (double) $rule->getDiscountAmount(); $subActionOperator = $rule->getSubIsEnable() ? $rule->getSubSimpleAction() : ''; $subActionAmount = (double) $rule->getSubDiscountAmount(); $actionStop = (int) $rule->getStopRulesProcessing(); /** @var $helper Mage_Catalog_Helper_Product_Flat */ $helper = $this->_factory->getHelper('catalog/product_flat'); if ($helper->isEnabled() && $helper->isBuiltAllStores()) { /** @var $store Mage_Core_Model_Store */ foreach ($this->_app->getStores(false) as $store) { if (in_array($store->getWebsiteId(), $websiteIds)) { /** @var $selectByStore Varien_Db_Select */ $selectByStore = $rule->getProductFlatSelect($store->getId())->joinLeft(array('cg' => $this->getTable('customer/customer_group')), $write->quoteInto('cg.customer_group_id IN (?)', $customerGroupIds), array('cg.customer_group_id'))->reset(Varien_Db_Select::COLUMNS)->columns(array(new Zend_Db_Expr($store->getWebsiteId()), 'cg.customer_group_id', 'p.entity_id', new Zend_Db_Expr($rule->getId()), new Zend_Db_Expr($fromTime), new Zend_Db_Expr($toTime), new Zend_Db_Expr("'" . $actionOperator . "'"), new Zend_Db_Expr($actionAmount), new Zend_Db_Expr($actionStop), new Zend_Db_Expr($sortOrder), new Zend_Db_Expr("'" . $subActionOperator . "'"), new Zend_Db_Expr($subActionAmount))); if (count($productIds) > 0) { $selectByStore->where('p.entity_id IN (?)', array_keys($productIds)); } $selects = $write->selectsByRange('entity_id', $selectByStore, self::RANGE_PRODUCT_STEP); foreach ($selects as $select) { $write->query($write->insertFromSelect($select, $this->getTable('catalogrule/rule_product'), array('website_id', 'customer_group_id', 'product_id', 'rule_id', 'from_time', 'to_time', 'action_operator', 'action_amount', 'action_stop', 'sort_order', 'sub_simple_action', 'sub_discount_amount'), Varien_Db_Adapter_Interface::INSERT_IGNORE)); } } } } else { if (count($productIds) == 0) { Varien_Profiler::start('__MATCH_PRODUCTS__'); $productIds = $rule->getMatchingProductIds(); Varien_Profiler::stop('__MATCH_PRODUCTS__'); } $rows = array(); foreach ($productIds as $productId => $validationByWebsite) { foreach ($websiteIds as $websiteId) { foreach ($customerGroupIds as $customerGroupId) { if (empty($validationByWebsite[$websiteId])) { continue; } $rows[] = array('rule_id' => $rule->getId(), 'from_time' => $fromTime, 'to_time' => $toTime, 'website_id' => $websiteId, 'customer_group_id' => $customerGroupId, 'product_id' => $productId, 'action_operator' => $actionOperator, 'action_amount' => $actionAmount, 'action_stop' => $actionStop, 'sort_order' => $sortOrder, 'sub_simple_action' => $subActionOperator, 'sub_discount_amount' => $subActionAmount); if (count($rows) == 1000) { $write->insertMultiple($this->getTable('catalogrule/rule_product'), $rows); $rows = array(); } } } } if (!empty($rows)) { $write->insertMultiple($this->getTable('catalogrule/rule_product'), $rows); } } }
/** * Restore locale of the initial store * * @param string $initialLocaleCode * @param string $initialArea * * @return Mage_Core_Model_App_Emulation */ protected function _restoreInitialLocale($initialLocaleCode, $initialArea = Mage_Core_Model_App_Area::AREA_ADMINHTML) { $currentLocaleCode = $this->_app->getLocale()->getLocaleCode(); if ($currentLocaleCode != $initialLocaleCode) { $this->_app->getLocale()->setLocaleCode($initialLocaleCode); $this->_factory->getSingleton('core/translate')->setLocale($initialLocaleCode)->init($initialArea, true); } return $this; }
/** * Get rate for current row, 1 by default * * @param $row * @return float|int */ protected function _getRate($row) { if ($rate = $this->getColumn()->getRate()) { return floatval($rate); } if ($rate = $row->getData($this->getColumn()->getRateField())) { return floatval($rate); } return $this->_app->getStore()->getBaseCurrency()->getRate($this->_getCurrencyCode($row)); }
/** * @see Mage_Core_Model_App::dispatchEvent($eventName, $args) */ public function dispatchEvent($eventName, $args) { $event = new Varien_Event($args); $event->setName($eventName); $observer = new Varien_Event_Observer(); $observer->setData(array('event' => $event)); $observer->addData($args); $this->_bar->update($observer->getEvent()); return parent::dispatchEvent($eventName, $args); }
/** * Retrieve default currency for selected store, website or website group * * @param Mage_Core_Controller_Request_Http $request * @return string */ public function getDefaultCurrency(Mage_Core_Controller_Request_Http $request) { if ($request->getParam('store')) { $store = $request->getParam('store'); $currencyCode = $this->_app->getStore($store)->getBaseCurrencyCode(); } else { if ($request->getParam('website')) { $website = $request->getParam('website'); $currencyCode = $this->_app->getWebsite($website)->getBaseCurrencyCode(); } else { if ($request->getParam('group')) { $group = $request->getParam('group'); $currencyCode = $this->_app->getGroup($group)->getWebsite()->getBaseCurrencyCode(); } else { $currencyCode = $this->_app->getStore()->getBaseCurrencyCode(); } } } return $currencyCode; }
/** * Listener for before product delete event. Deletes product custom redirects. * Needed because of http://bugs.mysql.com/bug.php?id=11472 * @param Varien_Event_Observer $observer */ public function deleteProductCustomRedirects(Varien_Event_Observer $observer) { if ((string) $this->_app->getConfig()->getNode(Enterprise_UrlRewrite_Model_Index_Observer::XML_PATH_REDIRECT_URL_SUFFIX_UPDATE_ON_SAVE)) { return; } /** @var Mage_Catalog_Model_Product $product */ $product = $observer->getProduct(); /** @var Enterprise_UrlRewrite_Model_Resource_Redirect $redirects */ $redirects = $this->_factory->getResourceModel('enterprise_urlrewrite/redirect'); $redirects->deleteByProductIds(array($product->getId())); }