vendor/pimcore/data-hub-simple-rest/src/EventSubscriber/ChangedEventSubscriber.php line 54

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under following license:
  6.  * - Pimcore Commercial License (PCL)
  7.  *
  8.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  9.  *  @license    http://www.pimcore.org/license     PCL
  10.  */
  11. namespace Pimcore\Bundle\DataHubSimpleRestBundle\EventSubscriber;
  12. use Pimcore\Bundle\DataHubSimpleRestBundle\Service\IndexService;
  13. use Pimcore\Event\AssetEvents;
  14. use Pimcore\Event\DataObjectEvents;
  15. use Pimcore\Event\Model\ElementEventInterface;
  16. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  17. class ChangedEventSubscriber implements EventSubscriberInterface
  18. {
  19.     /**
  20.      * @var IndexService
  21.      */
  22.     protected $indexService;
  23.     /**
  24.      * ChangedEventSubscriber constructor.
  25.      *
  26.      * @param IndexService $indexService
  27.      */
  28.     public function __construct(IndexService $indexService)
  29.     {
  30.         $this->indexService $indexService;
  31.     }
  32.     /**
  33.      * Returns an array of events this subscriber wants to listen to.
  34.      *
  35.      * @return string[]
  36.      */
  37.     public static function getSubscribedEvents()
  38.     {
  39.         return [
  40.             DataObjectEvents::POST_UPDATE => 'updateElement',
  41.             AssetEvents::POST_UPDATE => 'updateElement',
  42.             AssetEvents::POST_ADD => 'updateElement',
  43.             DataObjectEvents::POST_DELETE => 'deleteElement',
  44.             AssetEvents::POST_DELETE => 'deleteElement'
  45.         ];
  46.     }
  47.     public function updateElement(ElementEventInterface $event)
  48.     {
  49.         //do not update index when auto save or only saving version
  50.         if (
  51.             ($event->hasArgument('isAutoSave') && $event->getArgument('isAutoSave')) ||
  52.             ($event->hasArgument('saveVersionOnly') && $event->getArgument('saveVersionOnly'))
  53.         ) {
  54.             return;
  55.         }
  56.         $element $event->getElement();
  57.         $entityType $this->indexService->getEntityTypeForElement($element);
  58.         $this->indexService->addItemToQueue($element->getId(), $entityType);
  59.         $this->indexService->invalidateIndexByOriginalPath($element->getFullPath(), $entityType);
  60.     }
  61.     public function deleteElement(ElementEventInterface $event)
  62.     {
  63.         $element $event->getElement();
  64.         $entityType $this->indexService->getEntityTypeForElement($element);
  65.         $this->indexService->invalidateIndexByOriginalPath($element->getFullPath(), $entityType);
  66.     }
  67. }