123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <?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;
- }
- }
- }
|