Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 946883f

Browse filesBrowse files
committed
Merge branch '7.2' into 7.3
* 7.2: [Messenger] Filter out non-consumable receivers when registering `ConsumeMessagesCommand` [Mailer] fix multiple transports default injection [Mailer][Postmark] Set CID for attachments when it exists
2 parents 1f5ff48 + 22db071 commit 946883f
Copy full SHA for 946883f

File tree

7 files changed

+51
-13
lines changed
Filter options

7 files changed

+51
-13
lines changed

‎src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+8-5Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2361,13 +2361,17 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
23612361
$transportRateLimiterReferences = [];
23622362
foreach ($config['transports'] as $name => $transport) {
23632363
$serializerId = $transport['serializer'] ?? 'messenger.default_serializer';
2364+
$tags = [
2365+
'alias' => $name,
2366+
'is_failure_transport' => \in_array($name, $failureTransports, true),
2367+
];
2368+
if (str_starts_with($transport['dsn'], 'sync://')) {
2369+
$tags['is_consumable'] = false;
2370+
}
23642371
$transportDefinition = (new Definition(TransportInterface::class))
23652372
->setFactory([new Reference('messenger.transport_factory'), 'createTransport'])
23662373
->setArguments([$transport['dsn'], $transport['options'] + ['transport_name' => $name], new Reference($serializerId)])
2367-
->addTag('messenger.receiver', [
2368-
'alias' => $name,
2369-
'is_failure_transport' => \in_array($name, $failureTransports, true),
2370-
])
2374+
->addTag('messenger.receiver', $tags)
23712375
;
23722376
$container->setDefinition($transportId = 'messenger.transport.'.$name, $transportDefinition);
23732377
$senderAliases[$name] = $transportId;
@@ -2771,7 +2775,6 @@ private function registerMailerConfiguration(array $config, ContainerBuilder $co
27712775
}
27722776
$transports = $config['dsn'] ? ['main' => $config['dsn']] : $config['transports'];
27732777
$container->getDefinition('mailer.transports')->setArgument(0, $transports);
2774-
$container->getDefinition('mailer.default_transport')->setArgument(0, current($transports));
27752778

27762779
$mailer = $container->getDefinition('mailer.mailer');
27772780
if (false === $messageBus = $config['message_bus']) {

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.php
+1-4Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,7 @@
5252
])
5353

5454
->set('mailer.default_transport', TransportInterface::class)
55-
->factory([service('mailer.transport_factory'), 'fromString'])
56-
->args([
57-
abstract_arg('env(MAILER_DSN)'),
58-
])
55+
->alias('mailer.default_transport', 'mailer.transports')
5956
->alias(TransportInterface::class, 'mailer.default_transport')
6057

6158
->set('mailer.messenger.message_handler', MessageHandler::class)

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php
+1-2Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2156,8 +2156,7 @@ public function testMailer(string $configFile, array $expectedTransports, array
21562156
$this->assertTrue($container->hasAlias('mailer'));
21572157
$this->assertTrue($container->hasDefinition('mailer.transports'));
21582158
$this->assertSame($expectedTransports, $container->getDefinition('mailer.transports')->getArgument(0));
2159-
$this->assertTrue($container->hasDefinition('mailer.default_transport'));
2160-
$this->assertSame(current($expectedTransports), $container->getDefinition('mailer.default_transport')->getArgument(0));
2159+
$this->assertTrue($container->hasAlias('mailer.default_transport'));
21612160
$this->assertTrue($container->hasDefinition('mailer.envelope_listener'));
21622161
$l = $container->getDefinition('mailer.envelope_listener');
21632162
$this->assertSame('sender@example.org', $l->getArgument(0));

‎src/Symfony/Component/Mailer/Bridge/Postmark/Transport/PostmarkApiTransport.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Mailer/Bridge/Postmark/Transport/PostmarkApiTransport.php
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ private function getAttachments(Email $email): array
166166
];
167167

168168
if ('inline' === $disposition) {
169-
$att['ContentID'] = 'cid:'.$filename;
169+
$att['ContentID'] = 'cid:'.($attachment->hasContentId() ? $attachment->getContentId() : $filename);
170170
}
171171

172172
$attachments[] = $att;

‎src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php
+6Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,12 @@ protected function interact(InputInterface $input, OutputInterface $output): voi
143143
}
144144

145145
if ($this->receiverNames && !$input->getArgument('receivers')) {
146+
if (1 === \count($this->receiverNames)) {
147+
$input->setArgument('receivers', $this->receiverNames);
148+
149+
return;
150+
}
151+
146152
$io->block('Which transports/receivers do you want to consume?', null, 'fg=white;bg=blue', ' ', true);
147153

148154
$io->writeln('Choose which receivers you want to consume messages from in order of priority.');

‎src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php
+5-1Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ private function registerReceivers(ContainerBuilder $container, array $busIds):
254254
}
255255
}
256256

257+
$consumableReceiverNames = [];
257258
foreach ($container->findTaggedServiceIds('messenger.receiver') as $id => $tags) {
258259
$receiverClass = $this->getServiceClass($container, $id);
259260
if (!is_subclass_of($receiverClass, ReceiverInterface::class)) {
@@ -269,6 +270,9 @@ private function registerReceivers(ContainerBuilder $container, array $busIds):
269270
$failureTransportsMap[$tag['alias']] = $receiverMapping[$id];
270271
}
271272
}
273+
if (!isset($tag['is_consumable']) || $tag['is_consumable'] !== false) {
274+
$consumableReceiverNames[] = $tag['alias'] ?? $id;
275+
}
272276
}
273277
}
274278

@@ -294,7 +298,7 @@ private function registerReceivers(ContainerBuilder $container, array $busIds):
294298
$consumeCommandDefinition->replaceArgument(0, new Reference('messenger.routable_message_bus'));
295299
}
296300

297-
$consumeCommandDefinition->replaceArgument(4, array_values($receiverNames));
301+
$consumeCommandDefinition->replaceArgument(4, $consumableReceiverNames);
298302
try {
299303
$consumeCommandDefinition->replaceArgument(6, $busIds);
300304
} catch (OutOfBoundsException) {

‎src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Tests/DependencyInjection/MessengerPassTest.php
+29Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Component\Messenger\Tests\DependencyInjection;
1313

1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\Console\Command\Command;
1516
use Symfony\Component\DependencyInjection\ChildDefinition;
1617
use Symfony\Component\DependencyInjection\Compiler\AttributeAutoconfigurationPass;
1718
use Symfony\Component\DependencyInjection\Compiler\ResolveChildDefinitionsPass;
@@ -471,6 +472,34 @@ public function testItSetsTheReceiverNamesOnTheSetupTransportsCommand()
471472
$this->assertSame(['amqp', 'dummy'], $container->getDefinition('console.command.messenger_setup_transports')->getArgument(1));
472473
}
473474

475+
public function testOnlyConsumableTransportsAreAddedToConsumeCommand()
476+
{
477+
$container = new ContainerBuilder();
478+
479+
$container->register('messenger.transport.async', DummyReceiver::class)
480+
->addTag('messenger.receiver', ['alias' => 'async']);
481+
$container->register('messenger.transport.sync', DummyReceiver::class)
482+
->addTag('messenger.receiver', ['alias' => 'sync', 'is_consumable' => false]);
483+
$container->register('messenger.receiver_locator', ServiceLocator::class)
484+
->setArguments([[]]);
485+
486+
$container->register('console.command.messenger_consume_messages', Command::class)
487+
->setArguments([
488+
null,
489+
null,
490+
null,
491+
null,
492+
[],
493+
]);
494+
495+
(new MessengerPass())->process($container);
496+
497+
$this->assertSame(
498+
['async'],
499+
$container->getDefinition('console.command.messenger_consume_messages')->getArgument(4)
500+
);
501+
}
502+
474503
public function testItRegistersHandlersOnDifferentBuses()
475504
{
476505
$container = $this->getContainerBuilder($eventsBusId = 'event_bus');

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.