Files
ltsecurityinc/app/code/Amasty/ElasticSearch/Plugin/Config/Model/Config.php
T

87 lines
2.6 KiB
PHP
Executable File

<?php
/**
* @author Amasty Team
* @copyright Copyright (c) Amasty (https://www.amasty.com)
* @package Elastic Search Base for Magento 2
*/
namespace Amasty\ElasticSearch\Plugin\Config\Model;
class Config
{
/**
* @var \Magento\Framework\Indexer\IndexerRegistry
*/
private $indexerRegistry;
/**
* @var \Amasty\ElasticSearch\Model\Config
*/
private $elasticConfig;
/**
* @var \Magento\Framework\App\Config\ScopeConfigInterface
*/
private $config;
public function __construct(
\Magento\Framework\Indexer\IndexerRegistry $indexerRegistry,
\Amasty\ElasticSearch\Model\Config $elasticConfig,
\Magento\Framework\App\Config\ScopeConfigInterface $config
) {
$this->indexerRegistry = $indexerRegistry;
$this->elasticConfig = $elasticConfig;
$this->config = $config;
}
/**
* @param \Magento\Config\Model\Config $subject
* @return array
*/
public function beforeSave(\Magento\Config\Model\Config $subject)
{
$groups = $subject->getGroups();
if ($this->isSpecialCharsOptionChanged($groups) || $this->isShowOutOfStockOptionChanged($groups)) {
$this->indexerRegistry->get(\Magento\CatalogSearch\Model\Indexer\Fulltext::INDEXER_ID)->invalidate();
}
return [];
}
/**
* @param array $groups
* @return bool
*/
private function isSpecialCharsOptionChanged($groups)
{
$result = false;
if (isset($groups['catalog']['fields']['long_tail']['value'])) {
$specialCharValue = $groups['catalog']['fields']['long_tail']['value'];
$specialCharValueOrigin = $this->elasticConfig->getModuleConfig('catalog/long_tail');
$result = $specialCharValue !== $specialCharValueOrigin;
}
return $result;
}
/**
* @param array $groups
* @return bool
*/
private function isShowOutOfStockOptionChanged($groups)
{
$result = false;
$outOfStockValue = false;
if (isset($groups['options']['fields']['show_out_of_stock']['value'])) {
$outOfStockValue = $groups['options']['fields']['show_out_of_stock']['value'];
} elseif (isset($groups['options']['fields']['show_out_of_stock']['inherit'])) {
$outOfStockValue = '0';
}
if ($outOfStockValue !== false) {
$outOfStockValueOrigin = $this->config->getValue('cataloginventory/options/show_out_of_stock');
$result = $outOfStockValue !== $outOfStockValueOrigin;
}
return $result;
}
}