vendor/elements/cache-helper-bundle/src/Elements/Bundle/CacheHelperBundle/EventListener/DocumentListener.php line 37

Open in your IDE?
  1. <?php
  2. namespace Elements\Bundle\CacheHelperBundle\EventListener;
  3. use Elements\Bundle\CacheHelperBundle\Service\CacheTagService;
  4. use Pimcore\Bundle\CoreBundle\EventListener\Traits\EnabledTrait;
  5. use Pimcore\Cache;
  6. use Pimcore\Event\DocumentEvents;
  7. use Pimcore\Event\Model\ElementEventInterface;
  8. use Pimcore\Model\Document\Page;
  9. use Pimcore\Model\Document\PageSnippet;
  10. use Pimcore\Model\Document\Snippet;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. class DocumentListener implements EventSubscriberInterface
  13. {
  14.     use EnabledTrait;
  15.     private $cacheTagService;
  16.     public function __construct(CacheTagService $cacheTagService)
  17.     {
  18.         $this->cacheTagService $cacheTagService;
  19.     }
  20.     public static function getSubscribedEvents()
  21.     {
  22.         return [
  23.             DocumentEvents::POST_ADD    => "onSave",
  24.             DocumentEvents::POST_UPDATE => "onSave",
  25.         ];
  26.     }
  27.     public function onSave(ElementEventInterface $event) {
  28.         if (!$this->hasPassedPrecondition($event)) {
  29.             return;
  30.         }
  31.         $defaultDocumentTag $this->cacheTagService->getDocumentCacheTag($event->getElement()->getId());
  32.         Cache::clearTag($defaultDocumentTag); //clear the cache for documents or snippets.
  33.     }
  34.     private function hasPassedPrecondition(ElementEventInterface $event) : bool {
  35.         $element $event->getElement();
  36.         if ($element instanceof Page || $element instanceof Snippet || $element instanceof PageSnippet) {
  37.             return true;
  38.         } else {
  39.             return false;
  40.         }
  41.     }
  42. }