Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Processor.php
Go to the documentation of this file.
1 <?php
6 namespace Magento\Indexer\Model;
7 
10 use Magento\Framework\Indexer\IndexerInterfaceFactory;
12 
13 class Processor
14 {
18  protected $config;
19 
23  protected $indexerFactory;
24 
28  protected $indexersFactory;
29 
33  protected $mviewProcessor;
34 
41  public function __construct(
43  IndexerInterfaceFactory $indexerFactory,
44  Indexer\CollectionFactory $indexersFactory,
45  \Magento\Framework\Mview\ProcessorInterface $mviewProcessor
46  ) {
47  $this->config = $config;
48  $this->indexerFactory = $indexerFactory;
49  $this->indexersFactory = $indexersFactory;
50  $this->mviewProcessor = $mviewProcessor;
51  }
52 
58  public function reindexAllInvalid()
59  {
60  $sharedIndexesComplete = [];
61  foreach (array_keys($this->config->getIndexers()) as $indexerId) {
63  $indexer = $this->indexerFactory->create();
64  $indexer->load($indexerId);
65  $indexerConfig = $this->config->getIndexer($indexerId);
66  if ($indexer->isInvalid()) {
67  // Skip indexers having shared index that was already complete
68  if (!in_array($indexerConfig['shared_index'], $sharedIndexesComplete)) {
69  $indexer->reindexAll();
70  } else {
72  $state = $indexer->getState();
73  $state->setStatus(StateInterface::STATUS_VALID);
74  $state->save();
75  }
76  if ($indexerConfig['shared_index']) {
77  $sharedIndexesComplete[] = $indexerConfig['shared_index'];
78  }
79  }
80  }
81  }
82 
88  public function reindexAll()
89  {
91  $indexers = $this->indexersFactory->create()->getItems();
92  foreach ($indexers as $indexer) {
93  $indexer->reindexAll();
94  }
95  }
96 
102  public function updateMview()
103  {
104  $this->mviewProcessor->update('indexer');
105  }
106 
112  public function clearChangelog()
113  {
114  $this->mviewProcessor->clearChangelog('indexer');
115  }
116 }
__construct(ConfigInterface $config, IndexerInterfaceFactory $indexerFactory, Indexer\CollectionFactory $indexersFactory, \Magento\Framework\Mview\ProcessorInterface $mviewProcessor)
Definition: Processor.php:41