123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Indexer\Setup\Patch\Data;
- use Magento\Framework\Encryption\Encryptor;
- use Magento\Framework\Encryption\EncryptorInterface;
- use Magento\Framework\Indexer\StateInterface;
- use Magento\Framework\Json\EncoderInterface;
- use Magento\Framework\Indexer\ConfigInterface;
- use Magento\Indexer\Model\ResourceModel\Indexer\State\CollectionFactory;
- use Magento\Indexer\Model\Indexer\State;
- use Magento\Indexer\Model\Indexer\StateFactory;
- use Magento\Framework\App\ResourceConnection;
- use Magento\Framework\Setup\Patch\DataPatchInterface;
- use Magento\Framework\Setup\Patch\PatchVersionInterface;
- /**
- * Class InitializeIndexerState
- * @package Magento\Indexer\Setup\Patch
- */
- class InitializeIndexerState implements DataPatchInterface, PatchVersionInterface
- {
- /**
- * @var \Magento\Framework\Setup\ModuleDataSetupInterface
- */
- private $moduleDataSetup;
- /**
- * @var CollectionFactory
- */
- private $statesFactory;
- /**
- * @var StateFactory
- */
- private $stateFactory;
- /**
- * @var ConfigInterface
- */
- private $config;
- /**
- * @var EncryptorInterface
- */
- private $encryptor;
- /**
- * @var EncoderInterface
- */
- private $encoder;
- /**
- * PatchInitial constructor.
- * @param \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup
- */
- public function __construct(
- \Magento\Framework\Setup\ModuleDataSetupInterface $moduleDataSetup,
- CollectionFactory $statesFactory,
- StateFactory $stateFactory,
- ConfigInterface $config,
- EncryptorInterface $encryptor,
- EncoderInterface $encoder
- ) {
- $this->moduleDataSetup = $moduleDataSetup;
- $this->statesFactory = $statesFactory;
- $this->stateFactory = $stateFactory;
- $this->config = $config;
- $this->encryptor = $encryptor;
- $this->encoder = $encoder;
- }
- /**
- * {@inheritdoc}
- */
- public function apply()
- {
- /** @var State[] $stateIndexers */
- $stateIndexers = [];
- $states = $this->statesFactory->create();
- foreach ($states->getItems() as $state) {
- /** @var State $state */
- $stateIndexers[$state->getIndexerId()] = $state;
- }
- foreach ($this->config->getIndexers() as $indexerId => $indexerConfig) {
- $hash = $this->encryptor->hash($this->encoder->encode($indexerConfig), Encryptor::HASH_VERSION_MD5);
- if (isset($stateIndexers[$indexerId])) {
- $stateIndexers[$indexerId]->setHashConfig($hash);
- $stateIndexers[$indexerId]->save();
- } else {
- /** @var State $state */
- $state = $this->stateFactory->create();
- $state->loadByIndexer($indexerId);
- $state->setHashConfig($hash);
- $state->setStatus(StateInterface::STATUS_INVALID);
- $state->save();
- }
- }
- }
- /**
- * {@inheritdoc}
- */
- public static function getDependencies()
- {
- return [];
- }
- /**
- * {@inheritdoc}
- */
- public static function getVersion()
- {
- return '2.1.0';
- }
- /**
- * {@inheritdoc}
- */
- public function getAliases()
- {
- return [];
- }
- }
|