diff --git a/app/code/Magento/Store/Api/Data/StoreConfigInterface.php b/app/code/Magento/Store/Api/Data/StoreConfigInterface.php index 48911db9c8134..8f6011f1ae56f 100644 --- a/app/code/Magento/Store/Api/Data/StoreConfigInterface.php +++ b/app/code/Magento/Store/Api/Data/StoreConfigInterface.php @@ -43,21 +43,6 @@ public function getCode(); */ public function setCode($code); - /** - * Get store name - * - * @return string - */ - public function getName(); - - /** - * Set store code - * - * @param string $name - * @return $this - */ - public function setName($name); - /** * Get website id of the store * diff --git a/app/code/Magento/Store/Model/Data/StoreConfig.php b/app/code/Magento/Store/Model/Data/StoreConfig.php index 16b38cf37e416..e68d98b162613 100644 --- a/app/code/Magento/Store/Model/Data/StoreConfig.php +++ b/app/code/Magento/Store/Model/Data/StoreConfig.php @@ -15,7 +15,6 @@ class StoreConfig extends \Magento\Framework\Api\AbstractExtensibleObject implem { const KEY_ID = 'id'; const KEY_CODE = 'code'; - const KEY_NAME = 'name'; const KEY_WEBSITE_ID = 'website_id'; const KEY_LOCALE = 'locale'; const KEY_BASE_CURRENCY_CODE = 'base_currency_code'; @@ -73,27 +72,6 @@ public function setCode($code) return $this->setData(self::KEY_CODE, $code); } - /** - * Get store name - * - * @return string - */ - public function getName() - { - return $this->_get(self::KEY_NAME); - } - - /** - * Get store name - * - * @param string $name - * @return $this - */ - public function setName($name) - { - return $this->setData(self::KEY_NAME, $name); - } - /** * Get website id of the store * diff --git a/app/code/Magento/Store/Model/ResourceModel/StoreWebsiteRelation.php b/app/code/Magento/Store/Model/ResourceModel/StoreWebsiteRelation.php index 4bfe713806174..2c066ff2e0f27 100644 --- a/app/code/Magento/Store/Model/ResourceModel/StoreWebsiteRelation.php +++ b/app/code/Magento/Store/Model/ResourceModel/StoreWebsiteRelation.php @@ -45,17 +45,17 @@ public function getStoreByWebsiteId($websiteId) } /** - * Get website store codes + * Get website store data * * @param string $websiteId * @param bool $available * @return array */ - public function getWebsiteStoreCodes(string $websiteId, bool $available = false): array + public function getWebsiteStores(string $websiteId, bool $available = false): array { $connection = $this->resource->getConnection(); $storeTable = $this->resource->getTableName('store'); - $storeSelect = $connection->select()->from($storeTable, ['code'])->where( + $storeSelect = $connection->select()->from($storeTable)->where( 'website_id = ?', $websiteId ); @@ -66,6 +66,6 @@ public function getWebsiteStoreCodes(string $websiteId, bool $available = false) ); } - return $connection->fetchCol($storeSelect); + return $connection->fetchAll($storeSelect); } } diff --git a/app/code/Magento/Store/Model/Service/StoreConfigManager.php b/app/code/Magento/Store/Model/Service/StoreConfigManager.php index 29f6a9c95d60b..ebc73036f7e37 100644 --- a/app/code/Magento/Store/Model/Service/StoreConfigManager.php +++ b/app/code/Magento/Store/Model/Service/StoreConfigManager.php @@ -94,8 +94,7 @@ protected function getStoreConfig($store) $storeConfig->setId($store->getId()) ->setCode($store->getCode()) - ->setWebsiteId($store->getWebsiteId()) - ->setName($store->getName()); + ->setWebsiteId($store->getWebsiteId()); foreach ($this->configPaths as $methodName => $configPath) { $configValue = $this->scopeConfig->getValue( diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php index 93c70c98051f5..647aa0372532f 100644 --- a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php +++ b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php @@ -66,7 +66,7 @@ public function __construct( public function getStoreConfigData(StoreInterface $store): array { $defaultStoreConfig = $this->storeConfigManager->getStoreConfigs([$store->getCode()]); - return $this->prepareStoreConfigData(current($defaultStoreConfig)); + return $this->prepareStoreConfigData(current($defaultStoreConfig), $store->getName()); } /** @@ -77,12 +77,15 @@ public function getStoreConfigData(StoreInterface $store): array */ public function getAvailableStoreConfig(string $websiteId): array { - $websiteStores = $this->storeWebsiteRelation->getWebsiteStoreCodes($websiteId, true); - $storeConfigs = $this->storeConfigManager->getStoreConfigs($websiteStores); + $websiteStores = $this->storeWebsiteRelation->getWebsiteStores($websiteId, true); + $storeCodes = array_column($websiteStores, 'code'); + + $storeConfigs = $this->storeConfigManager->getStoreConfigs($storeCodes); $storesConfigData = []; foreach ($storeConfigs as $storeConfig) { - $storesConfigData[] = $this->prepareStoreConfigData($storeConfig); + $key = array_search($storeConfig->getCode(), array_column($websiteStores, 'code'), true); + $storesConfigData[] = $this->prepareStoreConfigData($storeConfig, $websiteStores[$key]['name']); } return $storesConfigData; @@ -92,9 +95,10 @@ public function getAvailableStoreConfig(string $websiteId): array * Prepare store config data * * @param StoreConfigInterface $storeConfig + * @param string $storeName * @return array */ - private function prepareStoreConfigData(StoreConfigInterface $storeConfig): array + private function prepareStoreConfigData(StoreConfigInterface $storeConfig, string $storeName): array { return array_merge([ 'id' => $storeConfig->getId(), @@ -113,7 +117,7 @@ private function prepareStoreConfigData(StoreConfigInterface $storeConfig): arra 'secure_base_link_url' => $storeConfig->getSecureBaseLinkUrl(), 'secure_base_static_url' => $storeConfig->getSecureBaseStaticUrl(), 'secure_base_media_url' => $storeConfig->getSecureBaseMediaUrl(), - 'store_name' => $storeConfig->getName(), + 'store_name' => $storeName, ], $this->getExtendedConfigData((int)$storeConfig->getId())); } diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/AvailableStoreConfigTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/AvailableStoreConfigTest.php index d9d27ac9c462c..239f6886d8d2d 100644 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/AvailableStoreConfigTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/AvailableStoreConfigTest.php @@ -7,11 +7,11 @@ namespace Magento\GraphQl\Store; -use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\ObjectManagerInterface; use Magento\Store\Api\Data\StoreConfigInterface; use Magento\Store\Api\StoreConfigManagerInterface; -use Magento\Store\Model\ScopeInterface; +use Magento\Store\Model\ResourceModel\Store as StoreResource; +use Magento\Store\Model\Store; use Magento\TestFramework\Helper\Bootstrap; use Magento\TestFramework\TestCase\GraphQlAbstract; @@ -31,6 +31,11 @@ class AvailableStoreConfigTest extends GraphQlAbstract */ private $storeConfigManager; + /** + * @var StoreResource + */ + private $storeResource; + /** * @inheritDoc */ @@ -38,6 +43,7 @@ protected function setUp(): void { $this->objectManager = Bootstrap::getObjectManager(); $this->storeConfigManager = $this->objectManager->get(StoreConfigManagerInterface::class); + $this->storeResource = $this->objectManager->get(StoreResource::class); } /** @@ -140,6 +146,8 @@ public function testNonDefaultWebsiteAvailableStoreConfigs(): void */ private function validateStoreConfig(StoreConfigInterface $storeConfig, array $responseConfig): void { + $store = $this->objectManager->get(Store::class); + $this->storeResource->load($store, $storeConfig->getCode(), 'code'); $this->assertEquals($storeConfig->getId(), $responseConfig['id']); $this->assertEquals($storeConfig->getCode(), $responseConfig['code']); $this->assertEquals($storeConfig->getLocale(), $responseConfig['locale']); diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php index f91682de4aecf..6bbf07eeaf5fb 100644 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php @@ -75,7 +75,7 @@ public function testGetStoreConfig(): void QUERY; $response = $this->graphQlQuery($query); $this->assertArrayHasKey('storeConfig', $response); - $this->validateStoreConfig($defaultStoreConfig, $response['storeConfig']); + $this->validateStoreConfig($defaultStoreConfig, $response['storeConfig'], $store->getName()); } /** @@ -83,9 +83,13 @@ public function testGetStoreConfig(): void * * @param StoreConfigInterface $storeConfig * @param array $responseConfig + * @param string $storeName */ - private function validateStoreConfig($storeConfig, $responseConfig): void - { + private function validateStoreConfig( + StoreConfigInterface $storeConfig, + array $responseConfig, + string $storeName + ): void { $this->assertEquals($storeConfig->getId(), $responseConfig['id']); $this->assertEquals($storeConfig->getCode(), $responseConfig['code']); $this->assertEquals($storeConfig->getLocale(), $responseConfig['locale']);