コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
0
 /**
  * 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;
 }
コード例 #4
0
ファイル: Rule.php プロジェクト: buttasg/cowgirlk
 /**
  * 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);
         }
     }
 }
コード例 #5
0
ファイル: EntityAbstract.php プロジェクト: nemphys/magento2
 /**
  * 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;
 }
コード例 #6
0
 /**
  * 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;
 }
コード例 #7
0
ファイル: Notifications.php プロジェクト: buttasg/cowgirlk
 /**
  * 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;
 }
コード例 #8
0
ファイル: AppTest.php プロジェクト: nemphys/magento2
 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)));
 }
コード例 #9
0
 /**
  * @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());
     }
 }
コード例 #10
0
 /**
  * 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;
 }