RecurringData.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Indexer\Setup;
  7. use Magento\Framework\Indexer\IndexerInterfaceFactory;
  8. use Magento\Framework\Setup\InstallDataInterface;
  9. use Magento\Framework\Setup\ModuleContextInterface;
  10. use Magento\Framework\Setup\ModuleDataSetupInterface;
  11. use Magento\Framework\Indexer\ConfigInterface;
  12. /**
  13. * Recurring data upgrade for indexer module
  14. */
  15. class RecurringData implements InstallDataInterface
  16. {
  17. /**
  18. * @var IndexerInterfaceFactory
  19. */
  20. private $indexerFactory;
  21. /**
  22. * @var ConfigInterface
  23. */
  24. private $configInterface;
  25. /**
  26. * RecurringData constructor.
  27. *
  28. * @param IndexerInterfaceFactory $indexerFactory
  29. * @param ConfigInterface $configInterface
  30. */
  31. public function __construct(
  32. IndexerInterfaceFactory $indexerFactory,
  33. ConfigInterface $configInterface
  34. ) {
  35. $this->indexerFactory = $indexerFactory;
  36. $this->configInterface = $configInterface;
  37. }
  38. /**
  39. * {@inheritdoc}
  40. */
  41. public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
  42. {
  43. foreach (array_keys($this->configInterface->getIndexers()) as $indexerId) {
  44. $indexer = $this->indexerFactory->create()->load($indexerId);
  45. if ($indexer->isScheduled()) {
  46. $indexer->getView()->unsubscribe()->subscribe();
  47. }
  48. }
  49. }
  50. }