vendor/coreshop/resource-bundle/EventListener/DeepCopySubscriber.php line 37

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * CoreShop
  5.  *
  6.  * This source file is available under two different licenses:
  7.  *  - GNU General Public License version 3 (GPLv3)
  8.  *  - CoreShop Commercial License (CCL)
  9.  * Full copyright and license information is available in
  10.  * LICENSE.md which is distributed with this source code.
  11.  *
  12.  * @copyright  Copyright (c) CoreShop GmbH (https://www.coreshop.org)
  13.  * @license    https://www.coreshop.org/license     GPLv3 and CCL
  14.  *
  15.  */
  16. namespace CoreShop\Bundle\ResourceBundle\EventListener;
  17. use DeepCopy\DeepCopy;
  18. use DeepCopy\Filter\Doctrine\DoctrineCollectionFilter;
  19. use DeepCopy\Matcher\PropertyTypeMatcher;
  20. use Pimcore\Event\SystemEvents;
  21. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  22. use Symfony\Component\EventDispatcher\GenericEvent;
  23. class DeepCopySubscriber implements EventSubscriberInterface
  24. {
  25.     public static function getSubscribedEvents(): array
  26.     {
  27.         return [
  28.             SystemEvents::SERVICE_PRE_GET_DEEP_COPY => 'addDoctrineCollectionFilter',
  29.         ];
  30.     }
  31.     public function addDoctrineCollectionFilter(GenericEvent $event): void
  32.     {
  33.         $context $event->getArgument('context');
  34.         //Only add if not already been added
  35.         if (!($context['defaultFilters'] ?? false)) {
  36.             /**
  37.              * @var DeepCopy $copier
  38.              */
  39.             $copier $event->getArgument('copier');
  40.             $copier->addFilter(
  41.                 new DoctrineCollectionFilter(),
  42.                 new PropertyTypeMatcher('Doctrine\Common\Collections\Collection'),
  43.             );
  44.             $event->setArgument('copier'$copier);
  45.         }
  46.     }
  47. }