pimcore/lib/Pimcore/Bundle/CoreBundle/EventListener/UUIDListener.php line 63

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