CleanCache.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Indexer\Model\Processor;
  7. use \Magento\Framework\App\CacheInterface;
  8. class CleanCache
  9. {
  10. /**
  11. * @var \Magento\Framework\Indexer\CacheContext
  12. */
  13. protected $context;
  14. /**
  15. * @var \Magento\Framework\Event\Manager
  16. */
  17. protected $eventManager;
  18. /**
  19. * @var \Magento\Framework\App\CacheInterface
  20. */
  21. private $cache;
  22. /**
  23. * @param \Magento\Framework\Indexer\CacheContext $context
  24. * @param \Magento\Framework\Event\Manager $eventManager
  25. */
  26. public function __construct(
  27. \Magento\Framework\Indexer\CacheContext $context,
  28. \Magento\Framework\Event\Manager $eventManager
  29. ) {
  30. $this->context = $context;
  31. $this->eventManager = $eventManager;
  32. }
  33. /**
  34. * Update indexer views
  35. *
  36. * @param \Magento\Indexer\Model\Processor $subject
  37. * @return void
  38. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  39. */
  40. public function afterUpdateMview(\Magento\Indexer\Model\Processor $subject)
  41. {
  42. $this->eventManager->dispatch('clean_cache_after_reindex', ['object' => $this->context]);
  43. if (!empty($this->context->getIdentities())) {
  44. $this->getCache()->clean($this->context->getIdentities());
  45. }
  46. }
  47. /**
  48. * Clear cache after reindex all
  49. *
  50. * @param \Magento\Indexer\Model\Processor $subject
  51. * @return void
  52. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  53. */
  54. public function afterReindexAllInvalid(\Magento\Indexer\Model\Processor $subject)
  55. {
  56. $this->eventManager->dispatch('clean_cache_by_tags', ['object' => $this->context]);
  57. if (!empty($this->context->getIdentities())) {
  58. $this->getCache()->clean($this->context->getIdentities());
  59. }
  60. }
  61. /**
  62. * Get cache interface
  63. *
  64. * @return \Magento\Framework\App\CacheInterface
  65. * @deprecated 100.1.1
  66. */
  67. private function getCache()
  68. {
  69. if ($this->cache === null) {
  70. $this->cache = \Magento\Framework\App\ObjectManager::getInstance()->get(CacheInterface::class);
  71. }
  72. return $this->cache;
  73. }
  74. }