vendor/pimcore/pimcore/bundles/CoreBundle/EventListener/ElementTagsListener.php line 44

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\DataObjectEvents;
  17. use Pimcore\Event\DocumentEvents;
  18. use Pimcore\Event\Model\AssetEvent;
  19. use Pimcore\Event\Model\ElementEventInterface;
  20. use Pimcore\Model\Element\Service;
  21. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  22. class ElementTagsListener implements EventSubscriberInterface
  23. {
  24.     /**
  25.      * @inheritDoc
  26.      */
  27.     public static function getSubscribedEvents()
  28.     {
  29.         return [
  30.             DataObjectEvents::POST_COPY => 'onPostCopy',
  31.             DocumentEvents::POST_COPY => 'onPostCopy',
  32.             AssetEvents::POST_COPY => 'onPostCopy',
  33.             AssetEvents::POST_DELETE => ['onPostAssetDelete', -9999]
  34.         ];
  35.     }
  36.     /**
  37.      * @param ElementEventInterface $e
  38.      */
  39.     public function onPostCopy(ElementEventInterface $e)
  40.     {
  41.         $elementType Service::getElementType($e->getElement());
  42.         /** @var \Pimcore\Model\Element\AbstractElement $copiedElement */
  43.         $copiedElement $e->getElement();
  44.         /** @var \Pimcore\Model\Element\AbstractElement $baseElement */
  45.         $baseElement $e->getArgument('base_element');
  46.         \Pimcore\Model\Element\Tag::setTagsForElement(
  47.             $elementType,
  48.             $copiedElement->getId(),
  49.             \Pimcore\Model\Element\Tag::getTagsForElement($elementType$baseElement->getId())
  50.         );
  51.     }
  52.     /**
  53.      * @param AssetEvent $e
  54.      */
  55.     public function onPostAssetDelete(AssetEvent $e)
  56.     {
  57.         $asset $e->getAsset();
  58.         \Pimcore\Model\Element\Tag::setTagsForElement('asset'$asset->getId(), []);
  59.     }
  60. }