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

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