vendor/pimcore/customer-management-framework-bundle/src/Event/TargetingEventListener.php line 66

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 CustomerManagementFrameworkBundle\Event;
  15. use CustomerManagementFrameworkBundle\ActionTrigger\Event\TargetGroupAssigned;
  16. use CustomerManagementFrameworkBundle\Targeting\DataProvider\Customer;
  17. use Pimcore\Event\Targeting\AssignDocumentTargetGroupEvent;
  18. use Pimcore\Event\Targeting\TargetingRuleEvent;
  19. use Pimcore\Model\Tool\Targeting\TargetGroup;
  20. use Pimcore\Targeting\DataLoaderInterface;
  21. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  22. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  23. class TargetingEventListener
  24. {
  25.     /**
  26.      * @var EventDispatcherInterface
  27.      */
  28.     protected $eventDispatcher;
  29.     protected $dataLoader;
  30.     protected $securityToken;
  31.     public function __construct(EventDispatcherInterface $eventDispatcherTokenStorageInterface $tokenDataLoaderInterface $dataLoader)
  32.     {
  33.         $this->eventDispatcher $eventDispatcher;
  34.         $this->securityToken $token;
  35.         $this->dataLoader $dataLoader;
  36.     }
  37.     public function onAssignDocumentTargetGroup(AssignDocumentTargetGroupEvent $event)
  38.     {
  39.         $visitorInfo $event->getVisitorInfo();
  40.         //get customer
  41.         $this->dataLoader->loadDataFromProviders($visitorInfo, [Customer::PROVIDER_KEY]);
  42.         $customer $visitorInfo->get(Customer::PROVIDER_KEY);
  43.         if (!$customer) {
  44.             return;
  45.         }
  46.         $event TargetGroupAssigned::create(
  47.             $customer,
  48.             TargetGroupAssigned::ASSIGNMENT_TYPE_DOCUMENT,
  49.             $event->getTargetGroup(),
  50.             $visitorInfo
  51.         );
  52.         $this->eventDispatcher->dispatch($event$event->getName());
  53.     }
  54.     public function onPostRuleActions(TargetingRuleEvent $event)
  55.     {
  56.         $visitorInfo $event->getVisitorInfo();
  57.         //get customer
  58.         $this->dataLoader->loadDataFromProviders($visitorInfo, [Customer::PROVIDER_KEY]);
  59.         $customer $visitorInfo->get(Customer::PROVIDER_KEY);
  60.         if (!$customer) {
  61.             return;
  62.         }
  63.         $rule $event->getRule();
  64.         foreach ($rule->getActions() as $action) {
  65.             if ($action['type'] == 'assign_target_group') {
  66.                 $targetGroup TargetGroup::getById($action['targetGroup']);
  67.                 if (null !== $targetGroup) {
  68.                     $event TargetGroupAssigned::create(
  69.                         $customer,
  70.                         TargetGroupAssigned::ASSIGNMENT_TYPE_TARGETING_RULE,
  71.                         $targetGroup,
  72.                         $visitorInfo
  73.                     );
  74.                     $this->eventDispatcher->dispatch($event$event->getName());
  75.                 }
  76.             }
  77.         }
  78.     }
  79. }