/** * Implement logic of custom rewrites * * @return bool */ protected function _rewriteDb() { if (null === $this->_rewrite->getStoreId() || false === $this->_rewrite->getStoreId()) { $this->_rewrite->setStoreId($this->_app->getStore()->getId()); } $requestCases = $this->_getRequestCases(); $this->_rewrite->loadByRequestPath($requestCases); $fromStore = $this->_request->getQuery('___from_store'); if (!$this->_rewrite->getId() && $fromStore) { $stores = $this->_app->getStores(false, true); if (!empty($stores[$fromStore])) { /** @var $store Mage_Core_Model_Store */ $store = $stores[$fromStore]; $fromStoreId = $store->getId(); } else { return false; } $this->_rewrite->setStoreId($fromStoreId)->loadByRequestPath($requestCases); if (!$this->_rewrite->getId()) { return false; } // Load rewrite by id_path $currentStore = $this->_app->getStore(); $this->_rewrite->setStoreId($currentStore->getId())->loadByIdPath($this->_rewrite->getIdPath()); $this->_setStoreCodeCookie($currentStore->getCode()); $targetUrl = $currentStore->getBaseUrl() . $this->_rewrite->getRequestPath(); $this->_sendRedirectHeaders($targetUrl, true); } if (!$this->_rewrite->getId()) { return false; } $this->_request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $this->_rewrite->getRequestPath()); $this->_processRedirectOptions(); return true; }
/** * Get configuration for stores base urls. * * array( * $index => array( * 'store_id' => $storeId, * 'base_url' => $url, * 'cookie' => $cookie * ) * ) * * @return array */ public function getStoresInfo() { $baseUrls = array(); foreach ($this->_app->getStores() as $store) { /** @var $store Mage_Core_Model_Store */ $website = $this->_app->getWebsite($store->getWebsiteId()); if ($website->getIsStaging() || Mage::helper('enterprise_websiterestriction')->getIsRestrictionEnabled($store)) { continue; } $baseUrl = $this->_app->getStore($store)->getBaseUrl(); $defaultCurrency = $this->_app->getStore($store)->getDefaultCurrencyCode(); $defaultWebsiteStore = $website->getDefaultStore(); $defaultWebsiteBaseUrl = $defaultWebsiteStore->getBaseUrl(); $cookie = ''; if ($baseUrl == $defaultWebsiteBaseUrl && $defaultWebsiteStore->getId() != $store->getId()) { $cookie = 'store=' . $store->getCode() . ';'; } $baseUrls[] = array('store_id' => $store->getId(), 'base_url' => $baseUrl, 'cookie' => $cookie); if ($store->getConfig(self::XML_PATH_CRAWL_MULTICURRENCY) && $store->getConfig(Enterprise_PageCache_Model_Processor::XML_PATH_CACHE_MULTICURRENCY)) { $currencies = $store->getAvailableCurrencyCodes(true); foreach ($currencies as $currencyCode) { if ($currencyCode != $defaultCurrency) { $baseUrls[] = array('store_id' => $store->getId(), 'base_url' => $baseUrl, 'cookie' => $cookie . 'currency=' . $currencyCode . ';'); } } } } return $baseUrls; }
/** * 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; }
/** * 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); } } }
/** * Initialize stores hash * * @return Mage_ImportExport_Model_Export_EntityAbstract */ protected function _initStores() { /** @var $store Mage_Core_Model_Store */ foreach ($this->_storeManager->getStores(true) as $store) { $this->_storeIdToCode[$store->getId()] = $store->getCode(); } ksort($this->_storeIdToCode); // to ensure that 'admin' store (ID is zero) goes first return $this; }
/** * Return stores grouped by assigned themes * * @return array */ public function getStoresByThemes() { $storesByThemes = array(); $stores = $this->_app->getStores(); /** @var $store Mage_Core_Model_Store */ foreach ($stores as $store) { $themeId = $this->_design->getConfigurationDesignTheme(Mage_Core_Model_App_Area::AREA_FRONTEND, array('store' => $store)); if (!isset($storesByThemes[$themeId])) { $storesByThemes[$themeId] = array(); } $storesByThemes[$themeId][] = $store; } return $storesByThemes; }
/** * Return list of store names where tax discount settings are compatible. * Return true if settings are wrong for default store. * * @return bool|array */ public function getWebsitesWithWrongDiscountSettings() { $defaultStoreId = Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID; //check default store first if (!$this->_factory->getSingleton('tax/config')->checkDiscountSettings($defaultStoreId)) { return true; } $storeNames = array(); $stores = $this->_app->getStores(); foreach ($stores as $store) { if (!$this->_factory->getSingleton('tax/config')->checkDiscountSettings($store)) { $website = $store->getWebsite(); $storeNames[] = $website->getName() . '(' . $store->getName() . ')'; } } return $storeNames; }
public function testGetStores() { $this->assertNotEmpty($this->_mageModel->getStores()); $this->assertNotContains(Mage_Core_Model_App::ADMIN_STORE_ID, array_keys($this->_mageModel->getStores())); $this->assertContains(Mage_Core_Model_App::ADMIN_STORE_ID, array_keys($this->_mageModel->getStores(true))); }
/** * @deprecated since version 1.13.2 * Regenerate fulltext search index */ protected function _rebuildIndex() { foreach ($this->_app->getStores() as $store) { /** @var $store Mage_Core_Model_Store */ $this->_rebuildStoreIndex($store->getId()); } }
/** * Reindex category/product index by store * * @return Enterprise_Catalog_Model_Index_Action_Catalog_Category_Product_Refresh */ protected function _reindex() { $this->_beforeReindex(); $this->_createTmpTable(); $rootCatIds = array(); foreach ($this->_app->getStores() as $store) { /** @var $store Mage_Core_Model_Store */ $rootCatIds[] = $store->getRootCategoryId(); if ($this->_getPathFromCategoryId($store->getRootCategoryId())) { $this->_reindexNonAnchorCategories($store); $this->_reindexAnchorCategories($store); $this->_reindexRootCategory($store); } } $this->_publishData(); $this->_removeUnnecessaryData($rootCatIds); $this->_clearTmpData(); $this->_afterReindex(); return $this; }