<?php
namespace App\EventListener;
use App\Component\Configuration\Util\Config;
use App\Event\NewsletterEvent;
use App\Sendgrid\MailerInterface;
use App\Util\StringToEntityUtil;
use Gedmo\Translatable\TranslatableListener;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Routing\Generator\UrlGenerator;
use Symfony\Component\Routing\RouterInterface;
class RegisterEventListener extends FormSubmitEventListener
{
/**
* @var RouterInterface
*/
protected $router;
/**
* RegisterEventListener constructor.
*/
public function __construct(
RouterInterface $router,
MailerInterface $mailer,
ParameterBagInterface $parameterBag,
StringToEntityUtil $stringToEntityUtil,
?TranslatableListener $translatableListener,
Config $config
) {
$this->router = $router;
parent::__construct($mailer, $parameterBag, $stringToEntityUtil, $translatableListener, $config);
}
public function onRegister(NewsletterEvent $event)
{
$locale = $this->parameterBag->get('site_translation_default_locale');
if (null !== $event->getLocale()) {
$locale = $event->getLocale();
}
$params = ['_locale' => $locale, 'email' => urlencode($event->getEmail())];
if ($event->getCategory()) {
$params['category'] = $event->getCategory();
}
$activationLink = $this->router->generate(
'newsletter_subscribe',
$params,
UrlGenerator::ABSOLUTE_URL
);
if ($activationMail = $this->getMail('site_newsletter_activation_mail')) {
$this->mailer->mail(
$activationMail,
$this->getCompanyEmailSender(),
[$event->getEmail()],
['activationLink' => $activationLink]
);
}
}
}