GridSyncInsertObserver.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Observer;
  7. use Magento\Framework\Event\ObserverInterface;
  8. /**
  9. * Sales entity grids indexing observer.
  10. *
  11. * Performs handling of events and cron jobs related to indexing
  12. * of Order, Invoice, Shipment and Creditmemo grids.
  13. */
  14. class GridSyncInsertObserver implements ObserverInterface
  15. {
  16. /**
  17. * Entity grid model.
  18. *
  19. * @var \Magento\Sales\Model\ResourceModel\GridInterface
  20. */
  21. protected $entityGrid;
  22. /**
  23. * Global configuration storage.
  24. *
  25. * @var \Magento\Framework\App\Config\ScopeConfigInterface
  26. */
  27. protected $globalConfig;
  28. /**
  29. * @param \Magento\Sales\Model\ResourceModel\GridInterface $entityGrid
  30. * @param \Magento\Framework\App\Config\ScopeConfigInterface $globalConfig
  31. */
  32. public function __construct(
  33. \Magento\Sales\Model\ResourceModel\GridInterface $entityGrid,
  34. \Magento\Framework\App\Config\ScopeConfigInterface $globalConfig
  35. ) {
  36. $this->entityGrid = $entityGrid;
  37. $this->globalConfig = $globalConfig;
  38. }
  39. /**
  40. * Handles synchronous insertion of the new entity into
  41. * corresponding grid on certain events.
  42. *
  43. * Used in the next events:
  44. *
  45. * - sales_order_save_after
  46. * - sales_order_invoice_save_after
  47. * - sales_order_shipment_save_after
  48. * - sales_order_creditmemo_save_after
  49. *
  50. * Works only if asynchronous grid indexing is disabled
  51. * in global settings.
  52. *
  53. * @param \Magento\Framework\Event\Observer $observer
  54. * @return void
  55. */
  56. public function execute(\Magento\Framework\Event\Observer $observer)
  57. {
  58. if (!$this->globalConfig->getValue('dev/grid/async_indexing')) {
  59. $this->entityGrid->refresh($observer->getObject()->getId());
  60. }
  61. }
  62. }