vendor/pimcore/advanced-object-search/src/EventListener/IndexUpdateListener.php line 58

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 Commercial License (PCL)
  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 PCL
  13.  */
  14. namespace AdvancedObjectSearchBundle\EventListener;
  15. use AdvancedObjectSearchBundle\Service;
  16. use Pimcore\Event\Model\DataObject\ClassDefinitionEvent;
  17. use Pimcore\Event\Model\DataObjectEvent;
  18. use Pimcore\Logger;
  19. use Pimcore\Model\DataObject\AbstractObject;
  20. use Pimcore\Model\DataObject\Concrete;
  21. class IndexUpdateListener
  22. {
  23.     /**
  24.      * @var Service
  25.      */
  26.     protected $service;
  27.     public function __construct(Service $service)
  28.     {
  29.         $this->service $service;
  30.     }
  31.     public function updateObject(DataObjectEvent $event)
  32.     {
  33.         //do not update index when auto save or only saving version
  34.         if (
  35.             ($event->hasArgument('isAutoSave') && $event->getArgument('isAutoSave')) ||
  36.             ($event->hasArgument('saveVersionOnly') && $event->getArgument('saveVersionOnly'))
  37.         ) {
  38.             return;
  39.         }
  40.         $inheritanceBackup AbstractObject::getGetInheritedValues();
  41.         AbstractObject::setGetInheritedValues(true);
  42.         $object $event->getObject();
  43.         if ($object instanceof Concrete) {
  44.             $this->service->doUpdateIndexData($object);
  45.         }
  46.         AbstractObject::setGetInheritedValues($inheritanceBackup);
  47.     }
  48.     public function deleteObject(DataObjectEvent $event)
  49.     {
  50.         $object $event->getObject();
  51.         if ($object instanceof Concrete) {
  52.             $this->service->doDeleteFromIndex($object);
  53.         }
  54.     }
  55.     public function updateMapping(ClassDefinitionEvent $event)
  56.     {
  57.         $classDefinition $event->getClassDefinition();
  58.         $this->service->updateMapping($classDefinition);
  59.     }
  60.     public function deleteIndex(ClassDefinitionEvent $event)
  61.     {
  62.         $classDefinition $event->getClassDefinition();
  63.         try {
  64.             $this->service->deleteIndex($classDefinition);
  65.         } catch (\Exception $e) {
  66.             Logger::err($e);
  67.         }
  68.     }
  69. }