vendor/abcpremium/data-object-quality-bundle/src/Event/Subscriber/InvalidateCacheOnConfigSave.php line 31

Open in your IDE?
  1. <?php
  2. namespace Abcpremium\DataObjectQualityBundle\Event\Subscriber;
  3. use Abcpremium\DataObjectQualityBundle\Cache\BundleCache;
  4. use Pimcore\Event\DataObjectEvents;
  5. use Pimcore\Event\Model\DataObjectEvent;
  6. use Pimcore\Model\DataObject\DataQualityConfig;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class InvalidateCacheOnConfigSave implements EventSubscriberInterface
  9. {
  10.     private BundleCache $cache;
  11.     public function __construct(
  12.         BundleCache $cache
  13.     ) {
  14.         $this->cache $cache;
  15.     }
  16.     /**
  17.      * {@inheritDoc}
  18.      */
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             DataObjectEvents::POST_UPDATE => 'invalidateCacheForClassId',
  23.         ];
  24.     }
  25.     public function invalidateCacheForClassId(DataObjectEvent $event): void
  26.     {
  27.         if (true === $this->isAutoSave($event->getArguments())) {
  28.             return;
  29.         }
  30.         $element $event->getElement();
  31.         if (!$element instanceof DataQualityConfig) {
  32.             return;
  33.         }
  34.         if (null === $element->getDataObjectClassId()) {
  35.             return;
  36.         }
  37.         $this->cache->deleteCachesByClassId($element->getDataObjectClassId());
  38.     }
  39.     private function isAutoSave(array $eventArguments): bool
  40.     {
  41.         if (isset($eventArguments['isAutoSave']) && true === $eventArguments['isAutoSave']) {
  42.             return true;
  43.         }
  44.         return false;
  45.     }
  46. }