vendor/sulu/sulu/src/Sulu/Bundle/MarkupBundle/Listener/MailerListener.php line 51

  1. <?php
  2. /*
  3.  * This file is part of Sulu.
  4.  *
  5.  * (c) Sulu GmbH
  6.  *
  7.  * This source file is subject to the MIT license that is bundled
  8.  * with this source code in the file LICENSE.
  9.  */
  10. namespace Sulu\Bundle\MarkupBundle\Listener;
  11. use Sulu\Bundle\MarkupBundle\Markup\MarkupParserInterface;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\HttpFoundation\RequestStack;
  14. use Symfony\Component\Mailer\Event\MessageEvent;
  15. use Symfony\Component\Mime\Email;
  16. class MailerListener implements EventSubscriberInterface
  17. {
  18.     public function __construct(
  19.         private MarkupParserInterface $markupParser,
  20.         private RequestStack $requestStack,
  21.         private string $defaultLocale,
  22.     ) {
  23.     }
  24.     public static function getSubscribedEvents()
  25.     {
  26.         return [
  27.             MessageEvent::class => 'onMessage',
  28.         ];
  29.     }
  30.     public function onMessage(MessageEvent $event): void
  31.     {
  32.         $message $event->getMessage();
  33.         if (!$message instanceof Email) {
  34.             return;
  35.         }
  36.         $html $message->getHtmlBody();
  37.         if (!$html || !\is_string($html)) {
  38.             return;
  39.         }
  40.         $currentRequest $this->requestStack->getCurrentRequest();
  41.         if (null !== $currentRequest) {
  42.             $locale $currentRequest->getLocale();
  43.         } else {
  44.             $locale $this->defaultLocale;
  45.         }
  46.         $message->html($this->markupParser->parse($html$locale));
  47.     }
  48. }