77
88namespace Magento \StoreGraphQl \Model \Resolver \Store ;
99
10- use Magento \Store \ Api \ Data \ StoreConfigInterface ;
10+ use Magento \Framework \ App \ Config \ ScopeConfigInterface ;
1111use Magento \Store \Api \StoreConfigManagerInterface ;
12- use Magento \Store \Api \ StoreRepositoryInterface ;
13- use Magento \Store \Api \ StoreResolverInterface ;
12+ use Magento \Store \Model \ ScopeInterface ;
13+ use Magento \Store \Model \ StoreManagerInterface ;
1414
1515/**
1616 * StoreConfig field data provider, used for GraphQL request processing.
@@ -23,39 +23,60 @@ class StoreConfigDataProvider
2323 private $ storeConfigManager ;
2424
2525 /**
26- * @var StoreResolverInterface
26+ * @var StoreManagerInterface
2727 */
28- private $ storeResolver ;
28+ private $ storeManager ;
2929
3030 /**
31- * @var StoreRepositoryInterface
31+ * @var ScopeConfigInterface
3232 */
33- private $ storeRepository ;
33+ private $ scopeConfig ;
34+
35+ /**
36+ * @var array
37+ */
38+ private $ extendedConfigData ;
3439
3540 /**
3641 * @param StoreConfigManagerInterface $storeConfigManager
37- * @param StoreResolverInterface $storeResolver
38- * @param StoreRepositoryInterface $storeRepository
42+ * @param StoreManagerInterface $storeManager
43+ * @param ScopeConfigInterface $scopeConfig
44+ * @param array $extendedConfigData
3945 */
4046 public function __construct (
4147 StoreConfigManagerInterface $ storeConfigManager ,
42- StoreResolverInterface $ storeResolver ,
43- StoreRepositoryInterface $ storeRepository
48+ StoreManagerInterface $ storeManager ,
49+ ScopeConfigInterface $ scopeConfig ,
50+ array $ extendedConfigData = []
4451 ) {
4552 $ this ->storeConfigManager = $ storeConfigManager ;
46- $ this ->storeResolver = $ storeResolver ;
47- $ this ->storeRepository = $ storeRepository ;
53+ $ this ->storeManager = $ storeManager ;
54+ $ this ->scopeConfig = $ scopeConfig ;
55+ $ this ->extendedConfigData = $ extendedConfigData ;
56+ }
57+
58+ /**
59+ * Get store config data
60+ *
61+ * @return array
62+ */
63+ public function getStoreConfigData (): array
64+ {
65+ $ storeConfigData = array_merge (
66+ $ this ->getBaseConfigData (),
67+ $ this ->getExtendedConfigData ()
68+ );
69+ return $ storeConfigData ;
4870 }
4971
5072 /**
51- * Get store config for current store
73+ * Get base config data
5274 *
5375 * @return array
5476 */
55- public function getStoreConfig () : array
77+ private function getBaseConfigData () : array
5678 {
57- $ storeId = $ this ->storeResolver ->getCurrentStoreId ();
58- $ store = $ this ->storeRepository ->getById ($ storeId );
79+ $ store = $ this ->storeManager ->getStore ();
5980 $ storeConfig = current ($ this ->storeConfigManager ->getStoreConfigs ([$ store ->getCode ()]));
6081
6182 $ storeConfigData = [
@@ -78,4 +99,23 @@ public function getStoreConfig() : array
7899 ];
79100 return $ storeConfigData ;
80101 }
102+
103+ /**
104+ * Get extended config data
105+ *
106+ * @return array
107+ */
108+ private function getExtendedConfigData ()
109+ {
110+ $ store = $ this ->storeManager ->getStore ();
111+ $ extendedConfigData = [];
112+ foreach ($ this ->extendedConfigData as $ key => $ path ) {
113+ $ extendedConfigData [$ key ] = $ this ->scopeConfig ->getValue (
114+ $ path ,
115+ ScopeInterface::SCOPE_STORE ,
116+ $ store ->getId ()
117+ );
118+ }
119+ return $ extendedConfigData ;
120+ }
81121}
0 commit comments