vendor/pimcore/pimcore/bundles/CoreBundle/EventListener/UUIDListener.php line 68

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 Pimcore\Bundle\CoreBundle\EventListener;
  15. use Pimcore\Config;
  16. use Pimcore\Event\AssetEvents;
  17. use Pimcore\Event\DataObjectClassDefinitionEvents;
  18. use Pimcore\Event\DataObjectEvents;
  19. use Pimcore\Event\DocumentEvents;
  20. use Pimcore\Event\Model\DataObject\ClassDefinitionEvent;
  21. use Pimcore\Event\Model\ElementEventInterface;
  22. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  23. use Symfony\Contracts\EventDispatcher\Event;
  24. /**
  25.  * @internal
  26.  */
  27. class UUIDListener implements EventSubscriberInterface
  28. {
  29.     /**
  30.      * {@inheritdoc}
  31.      */
  32.     public static function getSubscribedEvents(): array
  33.     {
  34.         return [
  35.             DataObjectEvents::POST_ADD => 'onPostAdd',
  36.             DocumentEvents::POST_ADD => 'onPostAdd',
  37.             AssetEvents::POST_ADD => 'onPostAdd',
  38.             DataObjectClassDefinitionEvents::POST_ADD => 'onPostAdd',
  39.             DataObjectEvents::POST_DELETE => 'onPostDelete',
  40.             DocumentEvents::POST_DELETE => 'onPostDelete',
  41.             AssetEvents::POST_DELETE => 'onPostDelete',
  42.             DataObjectClassDefinitionEvents::POST_DELETE => 'onPostDelete',
  43.         ];
  44.     }
  45.     /**
  46.      * @param Event $e
  47.      */
  48.     public function onPostAdd(Event $e)
  49.     {
  50.         if ($this->isEnabled()) {
  51.             $element $this->extractElement($e);
  52.             if ($element) {
  53.                 \Pimcore\Model\Tool\UUID::create($element);
  54.             }
  55.         }
  56.     }
  57.     /**
  58.      * @param Event $e
  59.      */
  60.     public function onPostDelete(Event $e)
  61.     {
  62.         if ($this->isEnabled()) {
  63.             $element $this->extractElement($e);
  64.             if ($element) {
  65.                 $uuidObject \Pimcore\Model\Tool\UUID::getByItem($element);
  66.                 if ($uuidObject instanceof \Pimcore\Model\Tool\UUID) {
  67.                     $uuidObject->delete();
  68.                 }
  69.             }
  70.         }
  71.     }
  72.     /**
  73.      * @return bool
  74.      */
  75.     protected function isEnabled()
  76.     {
  77.         $config Config::getSystemConfiguration('general');
  78.         if (!empty($config['instance_identifier'])) {
  79.             return true;
  80.         }
  81.         return false;
  82.     }
  83.     /**
  84.      * @param Event $event
  85.      *
  86.      * @return null|\Pimcore\Model\Element\ElementInterface|\Pimcore\Model\DataObject\ClassDefinition
  87.      */
  88.     protected function extractElement(Event $event)
  89.     {
  90.         $element null;
  91.         if ($event instanceof ElementEventInterface) {
  92.             $element $event->getElement();
  93.         }
  94.         if ($event instanceof ClassDefinitionEvent) {
  95.             $element $event->getClassDefinition();
  96.         }
  97.         return $element;
  98.     }
  99. }