| Current Path : /home/rtorresani/www/vendor/magento/module-catalog-rule/Model/Indexer/ |
| Current File : //home/rtorresani/www/vendor/magento/module-catalog-rule/Model/Indexer/AbstractIndexer.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\CatalogRule\Model\Indexer;
use Magento\Framework\Mview\ActionInterface as MviewActionInterface;
use Magento\Framework\Indexer\ActionInterface as IndexerActionInterface;
use Magento\Framework\DataObject\IdentityInterface;
use Magento\Framework\Indexer\CacheContext;
/**
* Abstract class for CatalogRule indexers.
*/
abstract class AbstractIndexer implements IndexerActionInterface, MviewActionInterface, IdentityInterface
{
/**
* @var IndexBuilder
*/
protected $indexBuilder;
/**
* Application Event Dispatcher
*
* @var \Magento\Framework\Event\ManagerInterface
*/
protected $_eventManager;
/**
* @var \Magento\Framework\App\CacheInterface
*/
private $cacheManager;
/**
* @var \Magento\Framework\Indexer\CacheContext
*/
protected $cacheContext;
/**
* @param IndexBuilder $indexBuilder
* @param \Magento\Framework\Event\ManagerInterface $eventManager
*/
public function __construct(
IndexBuilder $indexBuilder,
\Magento\Framework\Event\ManagerInterface $eventManager
) {
$this->indexBuilder = $indexBuilder;
$this->_eventManager = $eventManager;
}
/**
* Execute materialization on ids entities
*
* @param int[] $ids
* @return void
*/
public function execute($ids)
{
$this->executeList($ids);
}
/**
* Execute full indexation
*
* @return void
*/
public function executeFull()
{
$this->indexBuilder->reindexFull();
$this->_eventManager->dispatch('clean_cache_by_tags', ['object' => $this]);
$this->getCacheManager()->clean($this->getIdentities());
}
/**
* Get affected cache tags
*
* @return array
* @codeCoverageIgnore
*/
public function getIdentities()
{
return [
\Magento\Catalog\Model\Category::CACHE_TAG,
\Magento\Catalog\Model\Product::CACHE_TAG,
\Magento\Framework\App\Cache\Type\Block::CACHE_TAG
];
}
/**
* Execute partial indexation by ID list
*
* @param int[] $ids
* @throws \Magento\Framework\Exception\LocalizedException
* @return void
*/
public function executeList(array $ids)
{
if (!$ids) {
throw new \Magento\Framework\Exception\LocalizedException(
__('Could not rebuild index for empty products array')
);
}
$this->doExecuteList($ids);
}
/**
* Execute partial indexation by ID list. Template method
*
* @param int[] $ids
* @return void
*/
abstract protected function doExecuteList($ids);
/**
* Execute partial indexation by ID
*
* @param int $id
* @throws \Magento\Framework\Exception\LocalizedException
* @return void
*/
public function executeRow($id)
{
if (!$id) {
throw new \Magento\Framework\Exception\LocalizedException(
__('We can\'t rebuild the index for an undefined product.')
);
}
$this->doExecuteRow($id);
}
/**
* Execute partial indexation by ID. Template method
*
* @param int $id
* @throws \Magento\Framework\Exception\LocalizedException
* @return void
*/
abstract protected function doExecuteRow($id);
/**
* Get cache manager
*
* @return \Magento\Framework\App\CacheInterface|mixed
* @deprecated 100.0.7
*/
private function getCacheManager()
{
if ($this->cacheManager === null) {
$this->cacheManager = \Magento\Framework\App\ObjectManager::getInstance()->get(
\Magento\Framework\App\CacheInterface::class
);
}
return $this->cacheManager;
}
/**
* Get cache context
*
* @return \Magento\Framework\Indexer\CacheContext
* @deprecated 100.0.7
*/
protected function getCacheContext()
{
if (!($this->cacheContext instanceof CacheContext)) {
return \Magento\Framework\App\ObjectManager::getInstance()->get(CacheContext::class);
} else {
return $this->cacheContext;
}
}
}