vendor/pimcore/pimcore/bundles/CoreBundle/EventListener/SearchBackendListener.php line 69

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Enterprise License (PEL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  * @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  * @license    http://www.pimcore.org/license     GPLv3 and PEL
  13.  */
  14. namespace Pimcore\Bundle\CoreBundle\EventListener;
  15. use Pimcore\Event\AssetEvents;
  16. use Pimcore\Event\DataObjectEvents;
  17. use Pimcore\Event\DocumentEvents;
  18. use Pimcore\Event\Model\ElementEventInterface;
  19. use Pimcore\Model\Search\Backend\Data;
  20. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  21. class SearchBackendListener implements EventSubscriberInterface
  22. {
  23.     /**
  24.      * @inheritDoc
  25.      */
  26.     public static function getSubscribedEvents()
  27.     {
  28.         return [
  29.             DataObjectEvents::POST_ADD => 'onPostAddElement',
  30.             DocumentEvents::POST_ADD => 'onPostAddElement',
  31.             AssetEvents::POST_ADD => 'onPostAddElement',
  32.             DataObjectEvents::PRE_DELETE => 'onPreDeleteElement',
  33.             DocumentEvents::PRE_DELETE => 'onPreDeleteElement',
  34.             AssetEvents::PRE_DELETE => 'onPreDeleteElement',
  35.             DataObjectEvents::POST_UPDATE => 'onPostUpdateElement',
  36.             DocumentEvents::POST_UPDATE => 'onPostUpdateElement',
  37.             AssetEvents::POST_UPDATE => 'onPostUpdateElement',
  38.         ];
  39.     }
  40.     /**
  41.      * @param ElementEventInterface $e
  42.      */
  43.     public function onPostAddElement(ElementEventInterface $e)
  44.     {
  45.         $searchEntry = new Data($e->getElement());
  46.         $searchEntry->save();
  47.     }
  48.     /**
  49.      * @param ElementEventInterface $e
  50.      */
  51.     public function onPreDeleteElement(ElementEventInterface $e)
  52.     {
  53.         $searchEntry Data::getForElement($e->getElement());
  54.         if ($searchEntry instanceof Data and $searchEntry->getId() instanceof Data\Id) {
  55.             $searchEntry->delete();
  56.         }
  57.     }
  58.     /**
  59.      * @param ElementEventInterface $e
  60.      */
  61.     public function onPostUpdateElement(ElementEventInterface $e)
  62.     {
  63.         $element $e->getElement();
  64.         $searchEntry Data::getForElement($element);
  65.         if ($searchEntry instanceof Data and $searchEntry->getId() instanceof Data\Id) {
  66.             $searchEntry->setDataFromElement($element);
  67.             $searchEntry->save();
  68.         } else {
  69.             $this->onPostAddElement($e);
  70.         }
  71.     }
  72. }