Files
ltsecurityinc/app/code/Amasty/ElasticSearch/Model/Indexer/RelevanceRule/AbstractIndexer.php
T

136 lines
3.3 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\Model\Indexer\RelevanceRule;
use Magento\Framework\Mview\ActionInterface as MviewActionInterface;
use Magento\Framework\Indexer\ActionInterface as IndexerActionInterface;
use Magento\Framework\DataObject\IdentityInterface;
abstract class AbstractIndexer implements IndexerActionInterface, MviewActionInterface, IdentityInterface
{
/**
* @var IndexBuilder
*/
private $indexBuilder;
/**
* @var \Magento\Framework\Event\ManagerInterface
*/
private $eventManager;
/**
* @var \Magento\Framework\App\CacheInterface
*/
private $cacheManager;
/**
* @var \Magento\Framework\Indexer\CacheContext
*/
private $cacheContext;
public function __construct(
IndexBuilder $indexBuilder,
\Magento\Framework\Event\ManagerInterface $eventManager,
\Magento\Framework\App\CacheInterface $cacheManager,
\Magento\Framework\Indexer\CacheContext $cacheContext
) {
$this->indexBuilder = $indexBuilder;
$this->eventManager = $eventManager;
$this->cacheManager = $cacheManager;
$this->cacheContext = $cacheContext;
}
/**
* @param int[] $ids
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function execute($ids)
{
$this->executeList($ids);
}
/**
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function executeFull()
{
$this->indexBuilder->reindexFull();
$this->eventManager->dispatch('clean_cache_by_tags', ['object' => $this]);
//was needed before MAGETWO-50668 was fixed
$this->cacheManager->clean($this->getIdentities());
}
/**
* @param int $productId
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function executeRow($id)
{
if (!$id) {
throw new \Magento\Framework\Exception\LocalizedException(
__('We can\'t rebuild the index for an undefined entity.')
);
}
$this->doExecuteRow($id);
}
/**
* @param int[] $ids
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function executeList(array $ids)
{
if (!$ids) {
throw new \Magento\Framework\Exception\LocalizedException(
__('Could not rebuild index for empty products array')
);
}
$this->doExecuteList($ids);
}
/**
* @return array
*/
public function getIdentities()
{
return [
\Magento\Catalog\Model\Category::CACHE_TAG,
\Magento\Catalog\Model\Product::CACHE_TAG,
\Magento\Framework\App\Cache\Type\Block::CACHE_TAG
];
}
/**
* @param int $id
*/
abstract protected function doExecuteRow($id);
/**
* @param int[] $ids
*/
abstract protected function doExecuteList($ids);
/**
* @return IndexBuilder
*/
protected function getIndexBuilder()
{
return $this->indexBuilder;
}
/**
* @return \Magento\Framework\Indexer\CacheContext
*/
protected function getCacheContext()
{
return $this->cacheContext;
}
}