custom/plugins/mediameetsFbPixel/src/Storefront/Subscriber/HandleCustomerRegistration.php line 50

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace mediameets\mediameetsFbPixel\Storefront\Subscriber;
  3. use mediameets\mediameetsFbPixel\Components\ContextualConfigReader;
  4. use mediameets\mediameetsFbPixel\Components\Struct\DataStruct;
  5. use mediameets\mediameetsFbPixel\Components\Support\Helper;
  6. use mediameets\mediameetsFbPixel\Domain\MetaEvents;
  7. use mediameets\mediameetsFbPixel\Domain\Plugin;
  8. use mediameets\mediameetsFbPixel\Domain\PluginConfig;
  9. use Shopware\Core\Checkout\Customer\Event\CustomerRegisterEvent;
  10. use Shopware\Core\Checkout\Customer\Event\GuestCustomerRegisterEvent;
  11. use Shopware\Storefront\Event\StorefrontRenderEvent;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\HttpFoundation\RequestStack;
  14. class HandleCustomerRegistration implements EventSubscriberInterface
  15. {
  16.     protected string $eventSessionKey 'CustomerRegistered';
  17.     /**
  18.      * @readonly
  19.      */
  20.     private RequestStack $requestStack;
  21.     /**
  22.      * @readonly
  23.      */
  24.     private ContextualConfigReader $contextualConfigReader;
  25.     public function __construct(RequestStack $requestStackContextualConfigReader $contextualConfigReader)
  26.     {
  27.         $this->requestStack $requestStack;
  28.         $this->contextualConfigReader $contextualConfigReader;
  29.     }
  30.     public static function getSubscribedEvents(): array
  31.     {
  32.         return [
  33.             CustomerRegisterEvent::class => 'setSessionFlagWhenCustomerRegistered',
  34.             GuestCustomerRegisterEvent::class => 'setSessionFlagWhenGuestCustomerRegistered',
  35.             StorefrontRenderEvent::class => 'addExtensionDataWhenSessionFlagExists',
  36.         ];
  37.     }
  38.     public function addExtensionDataWhenSessionFlagExists(StorefrontRenderEvent $event): void
  39.     {
  40.         $session $this->requestStack->getCurrentRequest()->getSession();
  41.         if (! $session->has(Helper::generateSessionKey($this->eventSessionKey))) {
  42.             return;
  43.         }
  44.         $salesChannelContext $event->getSalesChannelContext();
  45.         $struct $salesChannelContext->getExtension(Plugin::EXTENSION_NAMESPACE);
  46.         if (! $struct instanceof DataStruct) {
  47.             $struct = new DataStruct();
  48.         }
  49.         $struct->addEvent(MetaEvents::COMPLETE_REGISTRATION);
  50.         $salesChannelContext->addExtension(Plugin::EXTENSION_NAMESPACE$struct);
  51.         $session->remove(Helper::generateSessionKey($this->eventSessionKey));
  52.     }
  53.     public function setSessionFlagWhenGuestCustomerRegistered(GuestCustomerRegisterEvent $event): void
  54.     {
  55.         $config $this->contextualConfigReader->get();
  56.         if (! \is_array($config)) {
  57.             return;
  58.         }
  59.         if (! \array_key_exists(PluginConfig::COMPLETE_REGISTRATION_EVENT_FOR_GUESTS$config) || $config[PluginConfig::COMPLETE_REGISTRATION_EVENT_FOR_GUESTS] === false) {
  60.             return;
  61.         }
  62.         $this->requestStack
  63.             ->getSession()
  64.             ->set(Helper::generateSessionKey($this->eventSessionKey), $event->getName());
  65.     }
  66.     public function setSessionFlagWhenCustomerRegistered(CustomerRegisterEvent $event): void
  67.     {
  68.         $this->requestStack
  69.             ->getSession()
  70.             ->set(Helper::generateSessionKey($this->eventSessionKey), $event->getName());
  71.     }
  72. }