Skip to content

Commit 5ab033d

Browse files
committed
#28569: Missing store codes in relation to a group and website
- Refactored code to use getList
1 parent 1973c26 commit 5ab033d

File tree

2 files changed

+53
-18
lines changed

2 files changed

+53
-18
lines changed

app/code/Magento/Store/Model/Service/StoreConfigManager.php

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,33 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
67
namespace Magento\Store\Model\Service;
78

9+
use Magento\Framework\App\Config\ScopeConfigInterface;
10+
use Magento\Store\Api\Data\StoreConfigInterface;
11+
use Magento\Store\Api\Data\StoreInterface;
12+
use Magento\Store\Model\Data\StoreConfig;
13+
use Magento\Store\Model\Data\StoreConfigFactory;
14+
use Magento\Store\Model\ResourceModel\Store\CollectionFactory;
15+
use Magento\Store\Model\Store;
16+
817
class StoreConfigManager implements \Magento\Store\Api\StoreConfigManagerInterface
918
{
1019
/**
11-
* @var \Magento\Store\Model\ResourceModel\Store\CollectionFactory
20+
* @var CollectionFactory
1221
*/
1322
protected $storeCollectionFactory;
1423

1524
/**
16-
* @var \Magento\Store\Model\Data\StoreConfigFactory
25+
* @var StoreConfigFactory
1726
*/
1827
protected $storeConfigFactory;
1928

2029
/**
2130
* Core store config
2231
*
23-
* @var \Magento\Framework\App\Config\ScopeConfigInterface
32+
* @var ScopeConfigInterface
2433
*/
2534
protected $scopeConfig;
2635

@@ -38,23 +47,25 @@ class StoreConfigManager implements \Magento\Store\Api\StoreConfigManagerInterfa
3847
];
3948

4049
/**
41-
* @param \Magento\Store\Model\ResourceModel\Store\CollectionFactory $storeCollectionFactory
42-
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
43-
* @param \Magento\Store\Model\Data\StoreConfigFactory $storeConfigFactory
50+
* @param CollectionFactory $storeCollectionFactory
51+
* @param ScopeConfigInterface $scopeConfig
52+
* @param StoreConfigFactory $storeConfigFactory
4453
*/
4554
public function __construct(
46-
\Magento\Store\Model\ResourceModel\Store\CollectionFactory $storeCollectionFactory,
47-
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
48-
\Magento\Store\Model\Data\StoreConfigFactory $storeConfigFactory
55+
CollectionFactory $storeCollectionFactory,
56+
ScopeConfigInterface $scopeConfig,
57+
StoreConfigFactory $storeConfigFactory
4958
) {
5059
$this->storeCollectionFactory = $storeCollectionFactory;
5160
$this->scopeConfig = $scopeConfig;
5261
$this->storeConfigFactory = $storeConfigFactory;
5362
}
5463

5564
/**
65+
* Get store configurations
66+
*
5667
* @param string[] $storeCodes list of stores by store codes, will return all if storeCodes is not set
57-
* @return \Magento\Store\Api\Data\StoreConfigInterface[]
68+
* @return StoreConfigInterface[]
5869
*/
5970
public function getStoreConfigs(array $storeCodes = null)
6071
{
@@ -71,12 +82,14 @@ public function getStoreConfigs(array $storeCodes = null)
7182
}
7283

7384
/**
74-
* @param \Magento\Store\Model\Store $store
75-
* @return \Magento\Store\Api\Data\StoreConfigInterface
85+
* Get store specific configs
86+
*
87+
* @param Store|StoreInterface $store
88+
* @return StoreConfigInterface
7689
*/
77-
protected function getStoreConfig($store)
90+
public function getStoreConfig($store)
7891
{
79-
/** @var \Magento\Store\Model\Data\StoreConfig $storeConfig */
92+
/** @var StoreConfig $storeConfig */
8093
$storeConfig = $this->storeConfigFactory->create();
8194

8295
$storeConfig->setId($store->getId())

app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Magento\Framework\App\Config\ScopeConfigInterface;
1111
use Magento\Store\Api\Data\StoreConfigInterface;
1212
use Magento\Store\Api\StoreConfigManagerInterface;
13+
use Magento\Store\Api\StoreRepositoryInterface;
1314
use Magento\Store\Model\ScopeInterface;
1415
use Magento\Store\Api\Data\StoreInterface;
1516

@@ -33,19 +34,27 @@ class StoreConfigDataProvider
3334
*/
3435
private $extendedConfigData;
3536

37+
/**
38+
* @var StoreRepositoryInterface
39+
*/
40+
private $storeRepository;
41+
3642
/**
3743
* @param StoreConfigManagerInterface $storeConfigManager
3844
* @param ScopeConfigInterface $scopeConfig
45+
* @param StoreRepositoryInterface $storeRepository
3946
* @param array $extendedConfigData
4047
*/
4148
public function __construct(
4249
StoreConfigManagerInterface $storeConfigManager,
4350
ScopeConfigInterface $scopeConfig,
51+
StoreRepositoryInterface $storeRepository,
4452
array $extendedConfigData = []
4553
) {
4654
$this->storeConfigManager = $storeConfigManager;
4755
$this->scopeConfig = $scopeConfig;
4856
$this->extendedConfigData = $extendedConfigData;
57+
$this->storeRepository = $storeRepository;
4958
}
5059

5160
/**
@@ -56,11 +65,24 @@ public function __construct(
5665
*/
5766
public function getStoreConfigData(StoreInterface $store): array
5867
{
59-
$stores = $this->storeConfigManager->getStoreConfigs();
60-
$defaultStoreConfig = current($this->storeConfigManager->getStoreConfigs([$store->getCode()]));
68+
$defaultStoreConfig = $this->storeConfigManager->getStoreConfig($store);
6169
$defaultStoreConfigData = $this->prepareStoreConfigData($defaultStoreConfig);
6270

63-
foreach ($stores as $storeConfig) {
71+
return $this->addStores($defaultStoreConfigData);
72+
}
73+
74+
/**
75+
* Add all stores
76+
*
77+
* @param array $defaultStoreConfigData
78+
* @return mixed
79+
*/
80+
private function addStores($defaultStoreConfigData)
81+
{
82+
$stores = $this->storeRepository->getList();
83+
84+
foreach ($stores as $store) {
85+
$storeConfig = $this->storeConfigManager->getStoreConfig($store);
6486
$defaultStoreConfigData['stores'][] = $this->prepareStoreConfigData($storeConfig);
6587
}
6688

@@ -101,7 +123,7 @@ private function prepareStoreConfigData($storeConfig): array
101123
* @param int $storeId
102124
* @return array
103125
*/
104-
private function getExtendedConfigData(int $storeId)
126+
private function getExtendedConfigData(int $storeId): array
105127
{
106128
$extendedConfigData = [];
107129
foreach ($this->extendedConfigData as $key => $path) {

0 commit comments

Comments
 (0)