DataCollection.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Indexer\Ui\DataProvider\Indexer;
  7. use Magento\Framework\Data\Collection;
  8. use Magento\Framework\Data\Collection\EntityFactoryInterface;
  9. use Magento\Framework\Indexer\ConfigInterface;
  10. use Magento\Framework\Indexer\IndexerRegistry;
  11. class DataCollection extends Collection
  12. {
  13. /**
  14. * @var ConfigInterface
  15. */
  16. private $config;
  17. /**
  18. * @var IndexerRegistry
  19. */
  20. private $indexerRegistry;
  21. /**
  22. * @param EntityFactoryInterface $entityFactory
  23. * @param ConfigInterface $config
  24. * @param IndexerRegistry $indexerRegistry
  25. */
  26. public function __construct(
  27. EntityFactoryInterface $entityFactory,
  28. ConfigInterface $config,
  29. IndexerRegistry $indexerRegistry
  30. ) {
  31. $this->config = $config;
  32. $this->indexerRegistry = $indexerRegistry;
  33. parent::__construct($entityFactory);
  34. }
  35. /**
  36. * @inheritdoc
  37. *
  38. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  39. */
  40. public function loadData($printQuery = false, $logQuery = false)
  41. {
  42. if (!$this->isLoaded()) {
  43. foreach (array_keys($this->config->getIndexers()) as $indexerId) {
  44. $indexer = $this->indexerRegistry->get($indexerId);
  45. $item = $this->getNewEmptyItem();
  46. $data = [
  47. 'indexer_id' => $indexer->getId(),
  48. 'title' => $indexer->getTitle(),
  49. 'description' => $indexer->getDescription(),
  50. 'is_scheduled' => $indexer->isScheduled(),
  51. 'status' => $indexer->getStatus(),
  52. 'updated' => $indexer->getLatestUpdated(),
  53. ];
  54. $this->addItem($item->setData($data));
  55. }
  56. $this->_setIsLoaded(true);
  57. }
  58. return $this;
  59. }
  60. }