<?php
namespace App\Subscriber\Mail;
use App\Dictionary\MailPriority;
use App\Event\Mail\DirectLinkRequestEvent;
use App\Security\UserChecker;
use App\Service\Mail\MailService;
use App\Service\User\AccountService;
use App\Subscriber\AbstractMailSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Twig\Environment;
class DirectLinkRequestSubscriber extends AbstractMailSubscriber implements EventSubscriberInterface
{
protected UserChecker $userChecker;
public function __construct(AccountService $accountService, MailService $mailService, Environment $twig,
UserChecker $userChecker)
{
parent::__construct($accountService, $mailService, $twig);
$this->userChecker = $userChecker;
}
public static function getSubscribedEvents(): array
{
return [
DirectLinkRequestEvent::class => [
['onRequestDirectLinkSendEmail', 0],
],
];
}
/**
* @return void
*/
public function onRequestDirectLinkSendEmail(DirectLinkRequestEvent $event): bool
{
$account = $event->getAccount();
if ($account->isBlocked()) {
return false;
}
$member = $account->getMember();
if ($account->isDeleted() && !$this->userChecker->checkMemberPropertyReactivationPossible($member)) {
return false;
}
$mail = new \Swift_Message('Zugangs-Link, '.$member->getUsername());
$mail->addTo($account->getEmail());
$mail->setFrom('server@frivol.com', 'Frivol.com');
$mail->setBody($this->getTwigEnvironment()->render('emails/directlink.html.twig', [
'member' => $account->getMember(),
'login' => $this->getAccountService()->getAutologinParameter($account),
]), 'text/html');
return $this->getMailService()->queueMessage($mail, MailPriority::DIRECT_LINK_REQUEST);
}
}