Skip to content

Commit f638a6a

Browse files
committed
Revert "[Mailer][TwigBridge] Add support for translatable subject"
This reverts commit 97eb49b.
1 parent e51607b commit f638a6a

File tree

9 files changed

+6
-87
lines changed

9 files changed

+6
-87
lines changed

src/Symfony/Bridge/Twig/CHANGELOG.md

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ CHANGELOG
66

77
* Add `is_granted_for_user()` Twig function
88
* Add `field_id()` Twig form helper function
9-
* Add `TemplatedEmail::getTranslatableSubject()` method
109

1110
7.2
1211
---

src/Symfony/Bridge/Twig/Mime/TemplatedEmail.php

+1-20
Original file line numberDiff line numberDiff line change
@@ -18,29 +18,11 @@
1818
*/
1919
class TemplatedEmail extends Email
2020
{
21-
private string|\Stringable|null $subject = null;
2221
private ?string $htmlTemplate = null;
2322
private ?string $textTemplate = null;
2423
private ?string $locale = null;
2524
private array $context = [];
2625

27-
/**
28-
* @return $this
29-
*/
30-
public function subject(string|\Stringable $subject): static
31-
{
32-
parent::subject($subject);
33-
34-
$this->subject = $subject;
35-
36-
return $this;
37-
}
38-
39-
public function getTranslatableSubject(): string|\Stringable|null
40-
{
41-
return $this->subject;
42-
}
43-
4426
/**
4527
* @return $this
4628
*/
@@ -118,7 +100,7 @@ public function markAsRendered(): void
118100
*/
119101
public function __serialize(): array
120102
{
121-
return [$this->htmlTemplate, $this->textTemplate, $this->context, parent::__serialize(), $this->locale, $this->subject];
103+
return [$this->htmlTemplate, $this->textTemplate, $this->context, parent::__serialize(), $this->locale];
122104
}
123105

124106
/**
@@ -128,7 +110,6 @@ public function __unserialize(array $data): void
128110
{
129111
[$this->htmlTemplate, $this->textTemplate, $this->context, $parentData] = $data;
130112
$this->locale = $data[4] ?? null;
131-
$this->subject = $data[5] ?? null;
132113

133114
parent::__unserialize($parentData);
134115
}

src/Symfony/Bridge/Twig/Tests/Mime/TemplatedEmailTest.php

-17
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@
2020
use Symfony\Component\Serializer\Normalizer\MimeMessageNormalizer;
2121
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
2222
use Symfony\Component\Serializer\Normalizer\PropertyNormalizer;
23-
use Symfony\Component\Serializer\Normalizer\TranslatableNormalizer;
2423
use Symfony\Component\Serializer\Serializer;
25-
use Symfony\Component\Translation\IdentityTranslator;
26-
use Symfony\Component\Translation\TranslatableMessage;
2724

2825
class TemplatedEmailTest extends TestCase
2926
{
@@ -47,22 +44,19 @@ public function testSerialize()
4744
->htmlTemplate('text.html.twig')
4845
->context($context = ['a' => 'b'])
4946
->locale($locale = 'fr_FR')
50-
->subject($subject = new TranslatableMessage('hello {{ name }}', ['name' => 'John'], 'greetings'))
5147
;
5248

5349
$email = unserialize(serialize($email));
5450
$this->assertEquals('text.txt.twig', $email->getTextTemplate());
5551
$this->assertEquals('text.html.twig', $email->getHtmlTemplate());
5652
$this->assertEquals($context, $email->getContext());
5753
$this->assertEquals($locale, $email->getLocale());
58-
$this->assertEquals($subject, $email->getTranslatableSubject());
5954
}
6055

6156
public function testSymfonySerialize()
6257
{
6358
// we don't add from/sender to check that validation is not triggered to serialize an email
6459
$e = new TemplatedEmail();
65-
$e->subject(new TranslatableMessage('hello.world'));
6660
$e->to('you@example.com');
6761
$e->textTemplate('email.txt.twig');
6862
$e->htmlTemplate('email.html.twig');
@@ -73,7 +67,6 @@ public function testSymfonySerialize()
7367

7468
$expectedJson = <<<EOF
7569
{
76-
"subject": "hello.world",
7770
"htmlTemplate": "email.html.twig",
7871
"textTemplate": "email.txt.twig",
7972
"locale": "en",
@@ -91,15 +84,6 @@ public function testSymfonySerialize()
9184
}
9285
],
9386
"headers": {
94-
"subject": [
95-
{
96-
"value": "hello.world",
97-
"name": "Subject",
98-
"lineLength": 76,
99-
"lang": null,
100-
"charset": "utf-8"
101-
}
102-
],
10387
"to": [
10488
{
10589
"addresses": [
@@ -124,7 +108,6 @@ public function testSymfonySerialize()
124108
$serializer = new Serializer([
125109
new ArrayDenormalizer(),
126110
new MimeMessageNormalizer($propertyNormalizer),
127-
new TranslatableNormalizer(new IdentityTranslator()),
128111
new ObjectNormalizer(null, null, null, $extractor),
129112
$propertyNormalizer,
130113
], [new JsonEncoder()]);

src/Symfony/Bundle/TwigBundle/Resources/config/mailer.php

+1-5
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,7 @@
1818
return static function (ContainerConfigurator $container) {
1919
$container->services()
2020
->set('twig.mailer.message_listener', MessageListener::class)
21-
->args([
22-
null,
23-
service('twig.mime_body_renderer'),
24-
'$translator' => service('translator')->ignoreOnInvalid(),
25-
])
21+
->args([null, service('twig.mime_body_renderer')])
2622
->tag('kernel.event_subscriber')
2723

2824
->set('twig.mime_body_renderer', BodyRenderer::class)

src/Symfony/Component/Mailer/CHANGELOG.md

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ CHANGELOG
99
* Add DSN param `source_ip` to allow binding to a (specific) IPv4 or IPv6 address.
1010
* Add DSN param `require_tls` to enforce use of TLS/STARTTLS
1111
* Add `DkimSignedMessageListener`, `SmimeEncryptedMessageListener`, and `SmimeSignedMessageListener`
12-
* Add support for translatable subject in `TemplatedEmail`
1312

1413
7.2
1514
---

src/Symfony/Component/Mailer/EventListener/MessageListener.php

+1-15
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
namespace Symfony\Component\Mailer\EventListener;
1313

14-
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
1514
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
1615
use Symfony\Component\Mailer\Event\MessageEvent;
1716
use Symfony\Component\Mailer\Exception\InvalidArgumentException;
@@ -20,11 +19,9 @@
2019
use Symfony\Component\Mime\Header\Headers;
2120
use Symfony\Component\Mime\Header\MailboxListHeader;
2221
use Symfony\Component\Mime\Message;
23-
use Symfony\Component\Translation\TranslatableMessage;
24-
use Symfony\Contracts\Translation\TranslatorInterface;
2522

2623
/**
27-
* Manipulates the headers, subject, and the body of a Message.
24+
* Manipulates the headers and the body of a Message.
2825
*
2926
* @author Fabien Potencier <fabien@symfony.com>
3027
*/
@@ -48,7 +45,6 @@ public function __construct(
4845
private ?Headers $headers = null,
4946
private ?BodyRendererInterface $renderer = null,
5047
array $headerRules = self::DEFAULT_RULES,
51-
private ?TranslatorInterface $translator = null,
5248
) {
5349
foreach ($headerRules as $headerName => $rule) {
5450
$this->addHeaderRule($headerName, $rule);
@@ -72,7 +68,6 @@ public function onMessage(MessageEvent $event): void
7268
}
7369

7470
$this->setHeaders($message);
75-
$this->translateSubject($message);
7671
$this->renderMessage($message);
7772
}
7873

@@ -120,15 +115,6 @@ private function setHeaders(Message $message): void
120115
}
121116
}
122117

123-
private function translateSubject(Message $message): void
124-
{
125-
if (!$message instanceof TemplatedEmail || !$this->translator || !$message->getTranslatableSubject() instanceof TranslatableMessage) {
126-
return;
127-
}
128-
129-
$message->subject($message->getTranslatableSubject()->trans($this->translator, $message->getLocale()));
130-
}
131-
132118
private function renderMessage(Message $message): void
133119
{
134120
if (!$this->renderer) {

src/Symfony/Component/Mailer/Tests/EventListener/MessageListenerTest.php

-24
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
namespace Symfony\Component\Mailer\Tests\EventListener;
1313

1414
use PHPUnit\Framework\TestCase;
15-
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
1615
use Symfony\Component\Mailer\Envelope;
1716
use Symfony\Component\Mailer\Event\MessageEvent;
1817
use Symfony\Component\Mailer\EventListener\MessageListener;
@@ -21,8 +20,6 @@
2120
use Symfony\Component\Mime\Header\MailboxListHeader;
2221
use Symfony\Component\Mime\Header\UnstructuredHeader;
2322
use Symfony\Component\Mime\Message;
24-
use Symfony\Component\Translation\TranslatableMessage;
25-
use Symfony\Contracts\Translation\TranslatorInterface;
2623

2724
class MessageListenerTest extends TestCase
2825
{
@@ -117,25 +114,4 @@ public static function provideHeaders(): iterable
117114
];
118115
yield 'Capitalized header rule (case-insensitive), replace if set' => [$initialHeaders, $defaultHeaders, $defaultHeaders, $rules];
119116
}
120-
121-
public function testTranslatableSubject()
122-
{
123-
$message = new TemplatedEmail();
124-
$message->subject(new TranslatableMessage('hello.world'));
125-
$listener = new MessageListener(translator: new class implements TranslatorInterface {
126-
public function trans(string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string
127-
{
128-
return 'Hello World';
129-
}
130-
131-
public function getLocale(): string
132-
{
133-
return 'en';
134-
}
135-
});
136-
$event = new MessageEvent($message, new Envelope(new Address('sender@example.com'), [new Address('recipient@example.com')]), 'smtp');
137-
$listener->onMessage($event);
138-
139-
$this->assertSame('Hello World', $message->getSubject());
140-
}
141117
}

src/Symfony/Component/Mailer/composer.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,13 @@
2121
"psr/event-dispatcher": "^1",
2222
"psr/log": "^1|^2|^3",
2323
"symfony/event-dispatcher": "^6.4|^7.0",
24-
"symfony/mime": "^7.3",
24+
"symfony/mime": "^7.2",
2525
"symfony/service-contracts": "^2.5|^3"
2626
},
2727
"require-dev": {
2828
"symfony/console": "^6.4|^7.0",
2929
"symfony/http-client": "^6.4|^7.0",
3030
"symfony/messenger": "^6.4|^7.0",
31-
"symfony/translation": "^6.4|^7.0",
3231
"symfony/twig-bridge": "^6.4|^7.0"
3332
},
3433
"conflict": {

src/Symfony/Component/Mime/Email.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ class Email extends Message
5858
/**
5959
* @return $this
6060
*/
61-
public function subject(string|\Stringable $subject): static
61+
public function subject(string $subject): static
6262
{
63-
return $this->setHeaderBody('Text', 'Subject', (string) $subject);
63+
return $this->setHeaderBody('Text', 'Subject', $subject);
6464
}
6565

6666
public function getSubject(): ?string

0 commit comments

Comments
 (0)