From 96b71f0e8b55bbc4ec76441041c23ce8a5a25974 Mon Sep 17 00:00:00 2001 From: Damien Couchez Date: Thu, 18 Sep 2025 17:52:56 +0200 Subject: [PATCH 1/3] MAGE-1404: refactor config.xml and create DefaultConfigProvider for integration tests --- .../Config/DefaultConfigProvider.php | 269 ++++++++++++++++++ Test/Integration/TestCase.php | 8 +- etc/config.xml | 111 ++++++-- 3 files changed, 364 insertions(+), 24 deletions(-) create mode 100644 Test/Integration/Config/DefaultConfigProvider.php diff --git a/Test/Integration/Config/DefaultConfigProvider.php b/Test/Integration/Config/DefaultConfigProvider.php new file mode 100644 index 000000000..6b6c1316b --- /dev/null +++ b/Test/Integration/Config/DefaultConfigProvider.php @@ -0,0 +1,269 @@ + '1', + 'algoliasearch_credentials/credentials/enable_frontend' => '1', + 'algoliasearch_credentials/credentials/application_id' => '', + 'algoliasearch_credentials/credentials/search_only_api_key' => '', + 'algoliasearch_credentials/credentials/api_key' => '', + 'algoliasearch_credentials/credentials/debug' => '0', + 'algoliasearch_credentials/credentials/index_prefix' => 'magento2_', + + 'algoliasearch_autocomplete/autocomplete/is_popup_enabled' => '1', + 'algoliasearch_autocomplete/autocomplete/nb_of_products_suggestions' => '6', + 'algoliasearch_autocomplete/autocomplete/nb_of_categories_suggestions' => '2', + 'algoliasearch_autocomplete/autocomplete/nb_of_queries_suggestions' => '0', + 'algoliasearch_autocomplete/autocomplete/min_popularity' => '1000', + 'algoliasearch_autocomplete/autocomplete/min_number_of_results' => '2', + 'algoliasearch_autocomplete/autocomplete/render_template_directives' => '1', + 'algoliasearch_autocomplete/autocomplete/debug' => '0', + + 'algoliasearch_instant/instant/is_instant_enabled' => '0', + 'algoliasearch_instant/instant/instant_selector' => '.columns', + 'algoliasearch_instant/instant/number_product_results' => '9', + 'algoliasearch_instant/instant/max_values_per_facet' => '10', + 'algoliasearch_instant/instant/show_suggestions_on_no_result_page' => '1', + 'algoliasearch_instant/instant/add_to_cart_enable' => '1', + 'algoliasearch_instant/instant/infinite_scroll_enable' => '0', + + 'algoliasearch_products/products/use_adaptive_image' => '0', + + 'algoliasearch_categories/categories/show_cats_not_included_in_navigation' => '0', + 'algoliasearch_categories/categories/index_empty_categories' => '0', + + 'algoliasearch_images/image/width' => '265', + 'algoliasearch_images/image/height' => '265', + 'algoliasearch_images/image/type' => 'image', + + 'algoliasearch_queue/queue/active' => '0', + 'algoliasearch_queue/queue/number_of_job_to_run' => '5', + 'algoliasearch_queue/queue/number_of_retries' => '3', + 'algoliasearch_queue/queue/use_tmp_index' => '1', + + 'algoliasearch_cc_analytics/cc_analytics_group/enable' => '0', + 'algoliasearch_cc_analytics/cc_analytics_group/is_selector' => '.ais-Hits-item a.result, .ais-InfiniteHits-item a.result', + 'algoliasearch_cc_analytics/cc_analytics_group/enable_conversion_analytics' => 'disabled', + 'algoliasearch_cc_analytics/cc_analytics_group/add_to_cart_selector' => '.action.primary.tocart', + + 'algoliasearch_analytics/analytics_group/enable' => '0', + 'algoliasearch_analytics/analytics_group/delay' => '3000', + 'algoliasearch_analytics/analytics_group/trigger_on_ui_interaction' => '1', + 'algoliasearch_analytics/analytics_group/push_initial_search' => '0', + + 'algoliasearch_synonyms/synonyms_group/enable_synonyms' => '0', + + 'algoliasearch_advanced/advanced/number_of_element_by_page' => '300', + 'algoliasearch_advanced/advanced/remove_words_if_no_result' => 'allOptional', + 'algoliasearch_advanced/advanced/partial_update' => '0', + 'algoliasearch_advanced/advanced/customer_groups_enable' => '0', + 'algoliasearch_advanced/advanced/remove_branding' => '0', + 'algoliasearch_autocomplete/autocomplete/autocomplete_selector' => '.algolia-search-input', + 'algoliasearch_advanced/advanced/index_product_on_category_products_update' => '1', + 'algoliasearch_advanced/advanced/prevent_backend_rendering' => '0', + 'algoliasearch_advanced/advanced/prevent_backend_rendering_display_mode' => 'all', + 'algoliasearch_advanced/advanced/backend_rendering_allowed_user_agents' => "Googlebot\nBingbot", + 'algoliasearch_advanced/queue/archive_clear_limit' => '30', + ]; + + /** + * @var string[][][] + */ + protected $defaultArrayConfigData = [ + 'algoliasearch_autocomplete/autocomplete/sections' => [ + [ + 'name' => 'pages', + 'label' => 'Pages', + 'hitsPerPage' => '2', + ], + ], + 'algoliasearch_autocomplete/autocomplete/excluded_pages' => [ + [ + 'attribute' => 'no-route', + ], + ], + + 'algoliasearch_instant/instant_facets/facets' => [ + [ + 'attribute' => 'price', + 'type' => 'slider', + 'label' => 'Price', + 'searchable' => '2', + 'create_rule' => '2', + ], + [ + 'attribute' => 'categories', + 'type' => 'conjunctive', + 'label' => 'Categories', + 'searchable' => '2', + 'create_rule' => '2', + ], + [ + 'attribute' => 'color', + 'type' => 'disjunctive', + 'label' => 'Colors', + 'searchable' => '1', + 'create_rule' => '2', + ], + ], + 'algoliasearch_instant/instant_sorts/sorts' => [ + [ + 'attribute' => 'price', + 'sort' => 'asc', + 'sortLabel' => 'Lowest price', + ], + [ + 'attribute' => 'price', + 'sort' => 'desc', + 'sortLabel' => 'Highest price', + ], + [ + 'attribute' => 'created_at', + 'sort' => 'desc', + 'sortLabel' => 'Newest first', + ], + ], + + 'algoliasearch_products/products/product_additional_attributes' => [ + [ + 'attribute' => 'name', + 'searchable' => '1', + 'order' => 'unordered', + 'retrievable' => '1', + ], + [ + 'attribute' => 'sku', + 'searchable' => '1', + 'order' => 'unordered', + 'retrievable' => '1', + ], + [ + 'attribute' => 'manufacturer', + 'searchable' => '1', + 'order' => 'unordered', + 'retrievable' => '1', + ], + [ + 'attribute' => 'categories', + 'searchable' => '1', + 'order' => 'unordered', + 'retrievable' => '1', + ], + [ + 'attribute' => 'color', + 'searchable' => '1', + 'order' => 'unordered', + 'retrievable' => '1', + ], + [ + 'attribute' => 'price', + 'searchable' => '2', + 'order' => 'unordered', + 'retrievable' => '1', + ], + [ + 'attribute' => 'rating_summary', + 'searchable' => '2', + 'order' => 'unordered', + 'retrievable' => '1', + ], + ], + 'algoliasearch_products/products/custom_ranking_product_attributes' => [ + [ + 'attribute' => 'in_stock', + 'order' => 'desc', + ], + [ + 'attribute' => 'ordered_qty', + 'order' => 'desc', + ], + [ + 'attribute' => 'created_at', + 'order' => 'desc', + ], + ], + + 'algoliasearch_categories/categories/category_additional_attributes' => [ + [ + 'attribute' => 'name', + 'searchable' => '1', + 'order' => 'unordered', + 'retrievable' => '1', + ], + [ + 'attribute' => 'path', + 'searchable' => '1', + 'order' => 'unordered', + 'retrievable' => '1', + ], + [ + 'attribute' => 'meta_title', + 'searchable' => '1', + 'order' => 'unordered', + 'retrievable' => '1', + ], + [ + 'attribute' => 'meta_keywords', + 'searchable' => '1', + 'order' => 'unordered', + 'retrievable' => '1', + ], + [ + 'attribute' => 'meta_description', + 'searchable' => '1', + 'order' => 'unordered', + 'retrievable' => '1', + ], + [ + 'attribute' => 'product_count', + 'searchable' => '2', + 'order' => 'unordered', + 'retrievable' => '1', + ], + ], + 'algoliasearch_categories/categories/custom_ranking_category_attributes' => [ + [ + 'attribute' => 'product_count', + 'order' => 'desc', + ], + ], + ]; + + public function __construct() + { + $this->serializeDefaultArrayConfigData(); + $this->mergeDefaultDataWithArrayData(); + } + + /** + * @return string[] + */ + public function getDefaultConfigData(): array + { + return $this->defaultConfigData; + } + + /** + * @return void + */ + protected function serializeDefaultArrayConfigData(): void + { + foreach ($this->defaultArrayConfigData as $path => $array) { + $this->defaultArrayConfigData[$path] = json_encode($array); + } + } + + /** + * @return void + */ + protected function mergeDefaultDataWithArrayData(): void + { + $this->defaultConfigData = array_merge($this->defaultConfigData, $this->defaultArrayConfigData); + } +} diff --git a/Test/Integration/TestCase.php b/Test/Integration/TestCase.php index 04153ed8a..8d1378067 100644 --- a/Test/Integration/TestCase.php +++ b/Test/Integration/TestCase.php @@ -8,11 +8,11 @@ use Algolia\AlgoliaSearch\Service\AlgoliaConnector; use Algolia\AlgoliaSearch\Service\IndexNameFetcher; use Algolia\AlgoliaSearch\Service\IndexOptionsBuilder; -use Algolia\AlgoliaSearch\Setup\Patch\Schema\ConfigPatch; use Algolia\AlgoliaSearch\Test\Integration\AssertValues\Magento246CE; use Algolia\AlgoliaSearch\Test\Integration\AssertValues\Magento246EE; use Algolia\AlgoliaSearch\Test\Integration\AssertValues\Magento247CE; use Algolia\AlgoliaSearch\Test\Integration\AssertValues\Magento247EE; +use Algolia\AlgoliaSearch\Test\Integration\Config\DefaultConfigProvider; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\App\ProductMetadataInterface; use Magento\Framework\ObjectManagerInterface; @@ -70,9 +70,9 @@ protected function getIndexName(string $storeIndexPart): string protected function resetConfigs($configs = []) { - /** @var ConfigPatch $installClass */ - $installClass = $this->getObjectManager()->get(ConfigPatch::class); - $defaultConfigData = $installClass->getDefaultConfigData(); + /** @var DefaultConfigProvider $defaultConfigProvider */ + $defaultConfigProvider = $this->getObjectManager()->get(DefaultConfigProvider::class); + $defaultConfigData = $defaultConfigProvider->getDefaultConfigData(); foreach ($configs as $config) { $value = (string) $defaultConfigData[$config]; diff --git a/etc/config.xml b/etc/config.xml index a454e0232..402cdc96b 100644 --- a/etc/config.xml +++ b/etc/config.xml @@ -7,17 +7,33 @@ --> + + + 1 + 0 + magento2_ + user_allowed_save_cookie #btn-cookie-allow 15552000000 + + 1 + .algolia-search-input + 6 + 2 + 0 + 1000 + 2 + 1 + 0 1 300 0 @@ -28,8 +44,12 @@ 0 + + 0 + .columns + 9 0 @@ -42,6 +62,9 @@ 1 + 1 + 1 + 0 0 @@ -49,29 +72,68 @@ 1,3 + + 0 0 categoryPageId 0 + + 0 + 0 /// + + + + + Frequently bought together + 6 + + + Related products + 6 + + + Trending items + 6 + + + Looking Similar + 6 + + + + + + + 265 + 265 + image + + + + 0 0 */5 * * * * + 5 + 3 1 + 1 @@ -88,6 +150,16 @@ 1 + + + + 0 + .ais-Hits-item a.result, .ais-InfiniteHits-item a.result + disable + .action.primary.tocart + + + @@ -99,28 +171,27 @@ - - - - Frequently bought together - 6 - - - Related products - 6 - - - Trending items - 6 - - - Looking Similar - 6 - - - + + + + 0 + 3000 + 1 + 0 + + + + allOptional + 0 + 0 + 0 + 0 + 1 + 0 + all + Googlebot\nBingbot 1000 10000 us From a33cd23db0deb4d5403bc0be2135fc7bc7d8967e Mon Sep 17 00:00:00 2001 From: Damien Couchez Date: Thu, 18 Sep 2025 17:56:51 +0200 Subject: [PATCH 2/3] MAGE-1404: removed ConfigPatch.php --- Setup/Patch/Schema/ConfigPatch.php | 365 ----------------------------- 1 file changed, 365 deletions(-) delete mode 100644 Setup/Patch/Schema/ConfigPatch.php diff --git a/Setup/Patch/Schema/ConfigPatch.php b/Setup/Patch/Schema/ConfigPatch.php deleted file mode 100644 index 8884a2f3f..000000000 --- a/Setup/Patch/Schema/ConfigPatch.php +++ /dev/null @@ -1,365 +0,0 @@ - '1', - 'algoliasearch_credentials/credentials/enable_frontend' => '1', - 'algoliasearch_credentials/credentials/application_id' => '', - 'algoliasearch_credentials/credentials/search_only_api_key' => '', - 'algoliasearch_credentials/credentials/api_key' => '', - 'algoliasearch_credentials/credentials/debug' => '0', - 'algoliasearch_credentials/credentials/index_prefix' => 'magento2_', - - 'algoliasearch_autocomplete/autocomplete/is_popup_enabled' => '1', - 'algoliasearch_autocomplete/autocomplete/nb_of_products_suggestions' => '6', - 'algoliasearch_autocomplete/autocomplete/nb_of_categories_suggestions' => '2', - 'algoliasearch_autocomplete/autocomplete/nb_of_queries_suggestions' => '0', - 'algoliasearch_autocomplete/autocomplete/min_popularity' => '1000', - 'algoliasearch_autocomplete/autocomplete/min_number_of_results' => '2', - 'algoliasearch_autocomplete/autocomplete/render_template_directives' => '1', - 'algoliasearch_autocomplete/autocomplete/debug' => '0', - - 'algoliasearch_instant/instant/is_instant_enabled' => '0', - 'algoliasearch_instant/instant/instant_selector' => '.columns', - 'algoliasearch_instant/instant/number_product_results' => '9', - 'algoliasearch_instant/instant/max_values_per_facet' => '10', - 'algoliasearch_instant/instant/show_suggestions_on_no_result_page' => '1', - 'algoliasearch_instant/instant/add_to_cart_enable' => '1', - 'algoliasearch_instant/instant/infinite_scroll_enable' => '0', - - 'algoliasearch_products/products/use_adaptive_image' => '0', - - 'algoliasearch_categories/categories/show_cats_not_included_in_navigation' => '0', - 'algoliasearch_categories/categories/index_empty_categories' => '0', - - 'algoliasearch_images/image/width' => '265', - 'algoliasearch_images/image/height' => '265', - 'algoliasearch_images/image/type' => 'image', - - 'algoliasearch_queue/queue/active' => '0', - 'algoliasearch_queue/queue/number_of_job_to_run' => '5', - 'algoliasearch_queue/queue/number_of_retries' => '3', - 'algoliasearch_queue/queue/use_tmp_index' => '1', - - 'algoliasearch_cc_analytics/cc_analytics_group/enable' => '0', - 'algoliasearch_cc_analytics/cc_analytics_group/is_selector' => '.ais-Hits-item a.result, .ais-InfiniteHits-item a.result', - 'algoliasearch_cc_analytics/cc_analytics_group/enable_conversion_analytics' => 'disabled', - 'algoliasearch_cc_analytics/cc_analytics_group/add_to_cart_selector' => '.action.primary.tocart', - - 'algoliasearch_analytics/analytics_group/enable' => '0', - 'algoliasearch_analytics/analytics_group/delay' => '3000', - 'algoliasearch_analytics/analytics_group/trigger_on_ui_interaction' => '1', - 'algoliasearch_analytics/analytics_group/push_initial_search' => '0', - - 'algoliasearch_synonyms/synonyms_group/enable_synonyms' => '0', - - 'algoliasearch_advanced/advanced/number_of_element_by_page' => '300', - 'algoliasearch_advanced/advanced/remove_words_if_no_result' => 'allOptional', - 'algoliasearch_advanced/advanced/partial_update' => '0', - 'algoliasearch_advanced/advanced/customer_groups_enable' => '0', - 'algoliasearch_advanced/advanced/remove_branding' => '0', - 'algoliasearch_autocomplete/autocomplete/autocomplete_selector' => '.algolia-search-input', - 'algoliasearch_advanced/advanced/index_product_on_category_products_update' => '1', - 'algoliasearch_advanced/advanced/prevent_backend_rendering' => '0', - 'algoliasearch_advanced/advanced/prevent_backend_rendering_display_mode' => 'all', - 'algoliasearch_advanced/advanced/backend_rendering_allowed_user_agents' => "Googlebot\nBingbot", - 'algoliasearch_advanced/queue/archive_clear_limit' => '30', - ]; - - /** - * @var string[][][] - */ - protected $defaultArrayConfigData = [ - 'algoliasearch_autocomplete/autocomplete/sections' => [ - [ - 'name' => 'pages', - 'label' => 'Pages', - 'hitsPerPage' => '2', - ], - ], - 'algoliasearch_autocomplete/autocomplete/excluded_pages' => [ - [ - 'attribute' => 'no-route', - ], - ], - - 'algoliasearch_instant/instant_facets/facets' => [ - [ - 'attribute' => 'price', - 'type' => 'slider', - 'label' => 'Price', - 'searchable' => '2', - 'create_rule' => '2', - ], - [ - 'attribute' => 'categories', - 'type' => 'conjunctive', - 'label' => 'Categories', - 'searchable' => '2', - 'create_rule' => '2', - ], - [ - 'attribute' => 'color', - 'type' => 'disjunctive', - 'label' => 'Colors', - 'searchable' => '1', - 'create_rule' => '2', - ], - ], - 'algoliasearch_instant/instant_sorts/sorts' => [ - [ - 'attribute' => 'price', - 'sort' => 'asc', - 'sortLabel' => 'Lowest price', - ], - [ - 'attribute' => 'price', - 'sort' => 'desc', - 'sortLabel' => 'Highest price', - ], - [ - 'attribute' => 'created_at', - 'sort' => 'desc', - 'sortLabel' => 'Newest first', - ], - ], - - 'algoliasearch_products/products/product_additional_attributes' => [ - [ - 'attribute' => 'name', - 'searchable' => '1', - 'order' => 'unordered', - 'retrievable' => '1', - ], - [ - 'attribute' => 'sku', - 'searchable' => '1', - 'order' => 'unordered', - 'retrievable' => '1', - ], - [ - 'attribute' => 'manufacturer', - 'searchable' => '1', - 'order' => 'unordered', - 'retrievable' => '1', - ], - [ - 'attribute' => 'categories', - 'searchable' => '1', - 'order' => 'unordered', - 'retrievable' => '1', - ], - [ - 'attribute' => 'color', - 'searchable' => '1', - 'order' => 'unordered', - 'retrievable' => '1', - ], - [ - 'attribute' => 'price', - 'searchable' => '2', - 'order' => 'unordered', - 'retrievable' => '1', - ], - [ - 'attribute' => 'rating_summary', - 'searchable' => '2', - 'order' => 'unordered', - 'retrievable' => '1', - ], - ], - 'algoliasearch_products/products/custom_ranking_product_attributes' => [ - [ - 'attribute' => 'in_stock', - 'order' => 'desc', - ], - [ - 'attribute' => 'ordered_qty', - 'order' => 'desc', - ], - [ - 'attribute' => 'created_at', - 'order' => 'desc', - ], - ], - - 'algoliasearch_categories/categories/category_additional_attributes' => [ - [ - 'attribute' => 'name', - 'searchable' => '1', - 'order' => 'unordered', - 'retrievable' => '1', - ], - [ - 'attribute' => 'path', - 'searchable' => '1', - 'order' => 'unordered', - 'retrievable' => '1', - ], - [ - 'attribute' => 'meta_title', - 'searchable' => '1', - 'order' => 'unordered', - 'retrievable' => '1', - ], - [ - 'attribute' => 'meta_keywords', - 'searchable' => '1', - 'order' => 'unordered', - 'retrievable' => '1', - ], - [ - 'attribute' => 'meta_description', - 'searchable' => '1', - 'order' => 'unordered', - 'retrievable' => '1', - ], - [ - 'attribute' => 'product_count', - 'searchable' => '2', - 'order' => 'unordered', - 'retrievable' => '1', - ], - ], - 'algoliasearch_categories/categories/custom_ranking_category_attributes' => [ - [ - 'attribute' => 'product_count', - 'order' => 'desc', - ], - ], - ]; - - /** - * @param ConfigInterface $config - * @param ProductMetadataInterface $productMetadata - * @param ModuleDataSetupInterface $moduleDataSetup Magento\Framework\App\ResourceConnection - */ - public function __construct( - ConfigInterface $config, - ProductMetadataInterface $productMetadata, - ModuleDataSetupInterface $moduleDataSetup - ) { - $this->config = $config; - $this->productMetadata = $productMetadata; - $this->moduleDataSetup = $moduleDataSetup; - - $this->serializeDefaultArrayConfigData(); - $this->mergeDefaultDataWithArrayData(); - } - - /** - * @return array|string[] - */ - public static function getDependencies() - { - return []; - } - - /** - * @return array|string[] - */ - public function getAliases() - { - return []; - } - - /** - * @return ConfigPatch|void - */ - public function apply() - { - $movedConfigDirectives = [ - 'algoliasearch_credentials/credentials/use_adaptive_image' => 'algoliasearch_products/products/use_adaptive_image', - 'algoliasearch_products/products/number_product_results' => 'algoliasearch_instant/instant/number_product_results', - 'algoliasearch_products/products/show_suggestions_on_no_result_page' => 'algoliasearch_instant/instant/show_suggestions_on_no_result_page', - 'algoliasearch_credentials/credentials/is_popup_enabled' => 'algoliasearch_autocomplete/autocomplete/is_popup_enabled', - 'algoliasearch_credentials/credentials/is_instant_enabled' => 'algoliasearch_instant/instant/is_instant_enabled', - ]; - - $this->moduleDataSetup->getConnection()->startSetup(); - $connection = $this->moduleDataSetup->getConnection(); - $table = $this->moduleDataSetup->getTable('core_config_data'); - foreach ($movedConfigDirectives as $from => $to) { - try { - $connection->query('UPDATE ' . $table . ' SET path = "' . $to . '" WHERE path = "' . $from . '"'); - } catch (\Magento\Framework\DB\Adapter\DuplicateException) { - // Skip - } - } - - /* SET DEFAULT CONFIG DATA */ - $alreadyInserted = $connection->getConnection() - ->query('SELECT path, value FROM ' . $table . ' WHERE path LIKE "algoliasearch_%"') - ->fetchAll(\PDO::FETCH_KEY_PAIR); - - foreach ($this->defaultConfigData as $path => $value) { - if (isset($alreadyInserted[$path])) { - continue; - } - $this->config->saveConfig($path, $value, 'default', 0); - } - - $this->moduleDataSetup->getConnection()->endSetup(); - } - - /** - * @return string[] - */ - public function getDefaultConfigData() - { - return $this->defaultConfigData; - } - - /** - * @return void - */ - protected function serializeDefaultArrayConfigData() - { - $serializeMethod = 'serialize'; - - $magentoVersion = $this->productMetadata->getVersion(); - if (version_compare($magentoVersion, '2.2.0-dev', '>=') === true) { - $serializeMethod = 'json_encode'; - } - - foreach ($this->defaultArrayConfigData as $path => $array) { - $this->defaultArrayConfigData[$path] = $serializeMethod($array); - } - } - - /** - * @return void - */ - protected function mergeDefaultDataWithArrayData() - { - $this->defaultConfigData = array_merge($this->defaultConfigData, $this->defaultArrayConfigData); - } -} From 68864504b35ed75b4091a9b41903d4b2c6741669 Mon Sep 17 00:00:00 2001 From: Damien Couchez Date: Wed, 24 Sep 2025 11:22:28 +0200 Subject: [PATCH 3/3] MAGE-1404: add data patch for legacy config migration --- Setup/Patch/Data/MigrateLegacyConfigPatch.php | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Setup/Patch/Data/MigrateLegacyConfigPatch.php diff --git a/Setup/Patch/Data/MigrateLegacyConfigPatch.php b/Setup/Patch/Data/MigrateLegacyConfigPatch.php new file mode 100644 index 000000000..41e30d563 --- /dev/null +++ b/Setup/Patch/Data/MigrateLegacyConfigPatch.php @@ -0,0 +1,64 @@ +moduleDataSetup->getConnection()->startSetup(); + + $this->moveIndexingSettings(); + + $this->moduleDataSetup->getConnection()->endSetup(); + + return $this; + } + + /** + * Migrate legacy configurations + * @return void + */ + protected function moveIndexingSettings(): void + { + $movedConfig = [ + 'algoliasearch_credentials/credentials/use_adaptive_image' => 'algoliasearch_products/products/use_adaptive_image', + 'algoliasearch_products/products/number_product_results' => 'algoliasearch_instant/instant/number_product_results', + 'algoliasearch_products/products/show_suggestions_on_no_result_page' => 'algoliasearch_instant/instant/show_suggestions_on_no_result_page', + 'algoliasearch_credentials/credentials/is_popup_enabled' => 'algoliasearch_autocomplete/autocomplete/is_popup_enabled', + 'algoliasearch_credentials/credentials/is_instant_enabled' => 'algoliasearch_instant/instant/is_instant_enabled', + ]; + + $this->migrateConfig($movedConfig); + } + + /** + * @inheritDoc + */ + public static function getDependencies(): array + { + return []; + } + + /** + * @inheritDoc + */ + public function getAliases(): array + { + return []; + } +}