vendor/pimcore/pimcore/bundles/EcommerceFrameworkBundle/EventListener/IndexUpdateListener.php line 34

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\EcommerceFrameworkBundle\EventListener;
  15. use Pimcore\Bundle\EcommerceFrameworkBundle\Factory;
  16. use Pimcore\Bundle\EcommerceFrameworkBundle\Model\IndexableInterface;
  17. use Pimcore\Event\DataObjectEvents;
  18. use Pimcore\Event\Model\DataObjectEvent;
  19. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  20. class IndexUpdateListener implements EventSubscriberInterface
  21. {
  22.     public static function getSubscribedEvents()
  23.     {
  24.         return [
  25.             DataObjectEvents::POST_ADD => 'onObjectUpdate',
  26.             DataObjectEvents::POST_UPDATE => 'onObjectUpdate',
  27.             DataObjectEvents::PRE_DELETE => 'onObjectDelete'
  28.         ];
  29.     }
  30.     public function onObjectUpdate(DataObjectEvent $event)
  31.     {
  32.         $object $event->getObject();
  33.         if ($object instanceof IndexableInterface && (!$event->hasArgument('saveVersionOnly') || !$event->getArgument('saveVersionOnly'))) {
  34.             $indexService Factory::getInstance()->getIndexService();
  35.             $indexService->updateIndex($object);
  36.         }
  37.     }
  38.     public function onObjectDelete(DataObjectEvent $event)
  39.     {
  40.         $object $event->getObject();
  41.         if ($object instanceof IndexableInterface) {
  42.             $indexService Factory::getInstance()->getIndexService();
  43.             $indexService->deleteFromIndex($object);
  44.         }
  45.         // Delete tokens when a a configuration object gets removed.
  46.         if ($object instanceof \Pimcore\Model\DataObject\OnlineShopVoucherSeries) {
  47.             $voucherService Factory::getInstance()->getVoucherService();
  48.             $voucherService->cleanUpVoucherSeries($object);
  49.         }
  50.     }
  51. }