src/EventListener/RegisterEventListener.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Component\Configuration\Util\Config;
  4. use App\Event\NewsletterEvent;
  5. use App\Sendgrid\MailerInterface;
  6. use App\Util\StringToEntityUtil;
  7. use Gedmo\Translatable\TranslatableListener;
  8. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  9. use Symfony\Component\Routing\Generator\UrlGenerator;
  10. use Symfony\Component\Routing\RouterInterface;
  11. class RegisterEventListener extends FormSubmitEventListener
  12. {
  13.     /**
  14.      * @var RouterInterface
  15.      */
  16.     protected $router;
  17.     /**
  18.      * RegisterEventListener constructor.
  19.      */
  20.     public function __construct(
  21.         RouterInterface $router,
  22.         MailerInterface $mailer,
  23.         ParameterBagInterface $parameterBag,
  24.         StringToEntityUtil $stringToEntityUtil,
  25.         ?TranslatableListener $translatableListener,
  26.         Config $config
  27.     ) {
  28.         $this->router $router;
  29.         parent::__construct($mailer$parameterBag$stringToEntityUtil$translatableListener$config);
  30.     }
  31.     public function onRegister(NewsletterEvent $event)
  32.     {
  33.         $locale $this->parameterBag->get('site_translation_default_locale');
  34.         if (null !== $event->getLocale()) {
  35.             $locale $event->getLocale();
  36.         }
  37.         $params = ['_locale' => $locale'email' => urlencode($event->getEmail())];
  38.         if ($event->getCategory()) {
  39.             $params['category'] = $event->getCategory();
  40.         }
  41.         $activationLink $this->router->generate(
  42.             'newsletter_subscribe',
  43.             $params,
  44.             UrlGenerator::ABSOLUTE_URL
  45.         );
  46.         if ($activationMail $this->getMail('site_newsletter_activation_mail')) {
  47.             $this->mailer->mail(
  48.                 $activationMail,
  49.                 $this->getCompanyEmailSender(),
  50.                 [$event->getEmail()],
  51.                 ['activationLink' => $activationLink]
  52.             );
  53.         }
  54.     }
  55. }