src/Subscriber/Mail/DirectLinkRequestSubscriber.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\Subscriber\Mail;
  3. use App\Dictionary\MailPriority;
  4. use App\Event\Mail\DirectLinkRequestEvent;
  5. use App\Security\UserChecker;
  6. use App\Service\Mail\MailService;
  7. use App\Service\User\AccountService;
  8. use App\Subscriber\AbstractMailSubscriber;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Twig\Environment;
  11. class DirectLinkRequestSubscriber extends AbstractMailSubscriber implements EventSubscriberInterface
  12. {
  13.     protected UserChecker $userChecker;
  14.     public function __construct(AccountService $accountServiceMailService $mailServiceEnvironment $twig,
  15.         UserChecker $userChecker)
  16.     {
  17.         parent::__construct($accountService$mailService$twig);
  18.         $this->userChecker $userChecker;
  19.     }
  20.     public static function getSubscribedEvents(): array
  21.     {
  22.         return [
  23.             DirectLinkRequestEvent::class => [
  24.                 ['onRequestDirectLinkSendEmail'0],
  25.             ],
  26.         ];
  27.     }
  28.     /**
  29.      * @return void
  30.      */
  31.     public function onRequestDirectLinkSendEmail(DirectLinkRequestEvent $event): bool
  32.     {
  33.         $account $event->getAccount();
  34.         if ($account->isBlocked()) {
  35.             return false;
  36.         }
  37.         $member $account->getMember();
  38.         if ($account->isDeleted() && !$this->userChecker->checkMemberPropertyReactivationPossible($member)) {
  39.             return false;
  40.         }
  41.         $mail = new \Swift_Message('Zugangs-Link, '.$member->getUsername());
  42.         $mail->addTo($account->getEmail());
  43.         $mail->setFrom('server@frivol.com''Frivol.com');
  44.         $mail->setBody($this->getTwigEnvironment()->render('emails/directlink.html.twig', [
  45.             'member' => $account->getMember(),
  46.             'login' => $this->getAccountService()->getAutologinParameter($account),
  47.         ]), 'text/html');
  48.         return $this->getMailService()->queueMessage($mailMailPriority::DIRECT_LINK_REQUEST);
  49.     }
  50. }