Skip to content

Commit a54a427

Browse files
committed
MC-18948: Switch default search engine from MySQL to ElasticSearch
- fixing admin to default to search engine if not valid
1 parent 725941e commit a54a427

File tree

3 files changed

+45
-5
lines changed
  • app/code/Magento

3 files changed

+45
-5
lines changed

app/code/Magento/CatalogSearch/Model/Adminhtml/System/Config/Backend/Engine.php

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
namespace Magento\CatalogSearch\Model\Adminhtml\System\Config\Backend;
77

8+
use Magento\Framework\App\ObjectManager;
9+
810
/**
911
* Backend model for catalog search engine system config
1012
*
@@ -18,6 +20,11 @@ class Engine extends \Magento\Framework\App\Config\Value
1820
*/
1921
protected $indexerRegistry;
2022

23+
/**
24+
* @var \Magento\Framework\Search\EngineResolverInterface
25+
*/
26+
private $engineResolver;
27+
2128
/**
2229
* @param \Magento\Framework\Model\Context $context
2330
* @param \Magento\Framework\Registry $registry
@@ -27,6 +34,7 @@ class Engine extends \Magento\Framework\App\Config\Value
2734
* @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
2835
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
2936
* @param array $data
37+
* @param \Magento\Framework\Search\EngineResolverInterface|null $engineResolver
3038
*/
3139
public function __construct(
3240
\Magento\Framework\Model\Context $context,
@@ -36,12 +44,29 @@ public function __construct(
3644
\Magento\Framework\Indexer\IndexerRegistry $indexerRegistry,
3745
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
3846
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
39-
array $data = []
47+
array $data = [],
48+
\Magento\Framework\Search\EngineResolverInterface $engineResolver = null
4049
) {
4150
$this->indexerRegistry = $indexerRegistry;
51+
$this->engineResolver = $engineResolver
52+
?? ObjectManager::getInstance()->get(\Magento\Framework\Search\EngineResolverInterface::class);
4253
parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
4354
}
4455

56+
/**
57+
* @inheritDoc
58+
*/
59+
public function beforeSave()
60+
{
61+
parent::beforeSave();
62+
$value = (string)$this->getValue();
63+
if (empty($value)) {
64+
$defaultCountry = $this->engineResolver->getCurrentSearchEngine();
65+
$this->setValue($defaultCountry);
66+
}
67+
return $this;
68+
}
69+
4570
/**
4671
* After save call
4772
*

app/code/Magento/CatalogSearch/etc/adminhtml/system.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<label>Catalog Search</label>
1919
<field id="engine" canRestore="1">
2020
<backend_model>Magento\CatalogSearch\Model\Adminhtml\System\Config\Backend\Engine</backend_model>
21+
<comment>If not specified, Default Search Engine will be used.</comment>
2122
</field>
2223
<field id="min_query_length" translate="label comment" type="text" sortOrder="5" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
2324
<label>Minimal Query Length</label>

app/code/Magento/Search/Model/Adminhtml/System/Config/Source/Engine.php

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
*/
66
namespace Magento\Search\Model\Adminhtml\System\Config\Source;
77

8+
use Magento\Framework\App\ObjectManager;
9+
use Magento\Framework\Search\EngineResolverInterface;
10+
811
/**
912
* All registered search adapters
1013
*
@@ -21,23 +24,34 @@ class Engine implements \Magento\Framework\Option\ArrayInterface
2124
private $engines;
2225

2326
/**
24-
* Construct
27+
* Engine Resolver
2528
*
29+
* @var EngineResolverInterface
30+
*/
31+
private $engineResolver;
32+
33+
/**
2634
* @param array $engines
35+
* @param EngineResolverInterface|null $engineResolver
2736
*/
2837
public function __construct(
29-
array $engines
38+
array $engines,
39+
EngineResolverInterface $engineResolver = null
3040
) {
3141
$this->engines = $engines;
42+
$this->engineResolver = $engineResolver ?? ObjectManager::getInstance()->get(EngineResolverInterface::class);
3243
}
3344

3445
/**
35-
* {@inheritdoc}
46+
* @inheritdoc
3647
*/
3748
public function toOptionArray()
3849
{
39-
$options = [];
50+
$options = [['value' => null, 'label' => __('--Please Select--')]];
4051
foreach ($this->engines as $key => $label) {
52+
if ($this->engineResolver->getCurrentSearchEngine() === $key) {
53+
$label = $label . ' ' . __('Default');
54+
}
4155
$options[] = ['value' => $key, 'label' => $label];
4256
}
4357
return $options;

0 commit comments

Comments
 (0)