123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Store\Model;
- use Magento\Framework\App\Config\ScopeConfigInterface;
- use Magento\Framework\App\ScopeFallbackResolverInterface;
- class ScopeFallbackResolver implements ScopeFallbackResolverInterface
- {
- /**
- * @var StoreManagerInterface
- */
- protected $storeManager;
- /**
- * @var array
- */
- protected $fallback = [];
- /**
- * @param StoreManagerInterface $storeManager
- */
- public function __construct(
- StoreManagerInterface $storeManager
- ) {
- $this->storeManager = $storeManager;
- }
- /**
- * @inheritdoc
- */
- public function getFallbackScope($scope, $scopeId, $forConfig = true)
- {
- if (!isset($this->fallback[$scope][$scopeId][$forConfig])) {
- $fallback = [null, null];
- switch ($scope) {
- case ScopeInterface::SCOPE_WEBSITE:
- case ScopeInterface::SCOPE_WEBSITES:
- $fallback = [ScopeConfigInterface::SCOPE_TYPE_DEFAULT, null];
- break;
- case ScopeInterface::SCOPE_GROUP:
- $fallback = [
- ScopeInterface::SCOPE_WEBSITES,
- $this->storeManager->getGroup($scopeId)->getWebsiteId()
- ];
- break;
- case ScopeInterface::SCOPE_STORE:
- case ScopeInterface::SCOPE_STORES:
- $fallback = $forConfig
- ? [ScopeInterface::SCOPE_WEBSITES, $this->storeManager->getStore($scopeId)->getWebsiteId()]
- : [ScopeInterface::SCOPE_GROUP, $this->storeManager->getStore($scopeId)->getStoreGroupId()];
- }
- $this->fallback[$scope][$scopeId][$forConfig] = $fallback;
- }
- return $this->fallback[$scope][$scopeId][$forConfig];
- }
- }
|