ReindexAfterSourceItemsSavePlugin.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\InventoryIndexer\Plugin\InventoryApi;
  8. use Magento\InventoryApi\Api\Data\SourceItemInterface;
  9. use Magento\InventoryApi\Api\SourceItemsSaveInterface;
  10. use Magento\InventoryIndexer\Indexer\SourceItem\GetSourceItemIds;
  11. use Magento\InventoryIndexer\Indexer\SourceItem\SourceItemIndexer;
  12. /**
  13. * Reindex after source items save plugin
  14. */
  15. class ReindexAfterSourceItemsSavePlugin
  16. {
  17. /**
  18. * @var GetSourceItemIds
  19. */
  20. private $getSourceItemIds;
  21. /**
  22. * @var SourceItemIndexer
  23. */
  24. private $sourceItemIndexer;
  25. /**
  26. * @param GetSourceItemIds $getSourceItemIds
  27. * @param SourceItemIndexer $sourceItemIndexer
  28. */
  29. public function __construct(GetSourceItemIds $getSourceItemIds, SourceItemIndexer $sourceItemIndexer)
  30. {
  31. $this->getSourceItemIds = $getSourceItemIds;
  32. $this->sourceItemIndexer = $sourceItemIndexer;
  33. }
  34. /**
  35. * @param SourceItemsSaveInterface $subject
  36. * @param void $result
  37. * @param SourceItemInterface[] $sourceItems
  38. * @return void
  39. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  40. */
  41. public function afterExecute(
  42. SourceItemsSaveInterface $subject,
  43. $result,
  44. array $sourceItems
  45. ) {
  46. $sourceItemIds = $this->getSourceItemIds->execute($sourceItems);
  47. if (count($sourceItemIds)) {
  48. $this->sourceItemIndexer->executeList($sourceItemIds);
  49. }
  50. }
  51. }