src/QuoteBundle/Listener/Mailer/QuoteSubjectListener.php line 28

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of SolidInvoice project.
  5.  *
  6.  * (c) Pierre du Plessis <open-source@solidworx.co>
  7.  *
  8.  * This source file is subject to the MIT license that is bundled
  9.  * with this source code in the file LICENSE.
  10.  */
  11. namespace SolidInvoice\QuoteBundle\Listener\Mailer;
  12. use SolidInvoice\QuoteBundle\Email\QuoteEmail;
  13. use SolidInvoice\SettingsBundle\SystemConfig;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. use Symfony\Component\Mailer\Event\MessageEvent;
  16. class QuoteSubjectListener implements EventSubscriberInterface
  17. {
  18.     public function __construct(
  19.         private readonly SystemConfig $config
  20.     ) {
  21.     }
  22.     public function __invoke(MessageEvent $event): void
  23.     {
  24.         /** @var QuoteEmail $message */
  25.         $message $event->getMessage();
  26.         if ($message instanceof QuoteEmail && null === $message->getSubject()) {
  27.             $message->subject(\str_replace('{id}', (string) $message->getQuote()->getQuoteId(), $this->config->get('quote/email_subject')));
  28.         }
  29.     }
  30.     public static function getSubscribedEvents(): array
  31.     {
  32.         return [
  33.             MessageEvent::class => '__invoke',
  34.         ];
  35.     }
  36. }