18 use Magento\Indexer\Model\Indexer\StateFactory;
19 use Magento\Indexer\Model\ResourceModel\Indexer\State\CollectionFactory;
32 private $statesFactory;
52 private $stateFactory;
64 CollectionFactory $statesFactory,
65 StateFactory $stateFactory,
70 $this->statesFactory = $statesFactory;
71 $this->stateFactory = $stateFactory;
74 $this->encoder = $encoder;
84 $states = $this->statesFactory->create();
85 foreach ($states->getItems() as $state) {
87 $stateIndexers[$state->getIndexerId()] = $state;
90 foreach ($this->config->getIndexers() as $indexerId => $indexerConfig) {
91 $expectedHashConfig = $this->encryptor->hash(
92 $this->encoder->encode($indexerConfig),
96 if (isset($stateIndexers[$indexerId])) {
97 if ($stateIndexers[$indexerId]->getHashConfig() != $expectedHashConfig) {
99 $stateIndexers[$indexerId]->setHashConfig($expectedHashConfig);
100 $stateIndexers[$indexerId]->save();
104 $state = $this->stateFactory->create();
105 $state->loadByIndexer($indexerId);
106 $state->setHashConfig($expectedHashConfig);
install(SchemaSetupInterface $setup, ModuleContextInterface $context)
__construct(CollectionFactory $statesFactory, StateFactory $stateFactory, ConfigInterface $config, EncryptorInterface $encryptor, EncoderInterface $encoder)