14 use Magento\Indexer\Model\ResourceModel\Indexer\State\CollectionFactory;
16 use Magento\Indexer\Model\Indexer\StateFactory;
30 private $moduleDataSetup;
35 private $statesFactory;
40 private $stateFactory;
63 CollectionFactory $statesFactory,
64 StateFactory $stateFactory,
69 $this->moduleDataSetup = $moduleDataSetup;
70 $this->statesFactory = $statesFactory;
71 $this->stateFactory = $stateFactory;
74 $this->encoder = $encoder;
80 public function apply()
84 $states = $this->statesFactory->create();
85 foreach ($states->getItems() as $state) {
87 $stateIndexers[$state->getIndexerId()] = $state;
90 foreach ($this->config->getIndexers() as $indexerId => $indexerConfig) {
92 if (isset($stateIndexers[$indexerId])) {
93 $stateIndexers[$indexerId]->setHashConfig($hash);
94 $stateIndexers[$indexerId]->save();
97 $state = $this->stateFactory->create();
98 $state->loadByIndexer($indexerId);
99 $state->setHashConfig($hash);
__construct(\Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup, CollectionFactory $statesFactory, StateFactory $stateFactory, ConfigInterface $config, EncryptorInterface $encryptor, EncoderInterface $encoder)