8000 Merge branch '6.4' into 7.2 · symfony/symfony@22db071 · GitHub
[go: up one dir, main page]

Skip to content

Commit 22db071

Browse files
committed
Merge branch '6.4' into 7.2
* 6.4: [Messenger] Filter out non-consumable receivers when registering 8000 `ConsumeMessagesCommand` [Mailer] fix multiple transports default injection [Mailer][Postmark] Set CID for attachments when it exists
2 parents a9f661e + f4081a4 commit 22db071

File tree

7 files changed

+51
-13
lines changed

7 files changed

+51
-13
lines changed

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

Lines changed: 8 additions & 5 deletions
< 8000 /div>
Original file line numberDiff line numberDiff line change
@@ -2256,13 +2256,17 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
22562256
$transportRateLimiterReferences = [];
22572257
foreach ($config['transports'] as $name => $transport) {
22582258
$serializerId = $transport['serializer'] ?? 'messenger.default_serializer';
2259+
$tags = [
2260+
'alias' => $name,
2261+
'is_failure_transport' => \in_array($name, $failureTransports, true),
2262+
];
2263+
if (str_starts_with($transport['dsn'], 'sync://')) {
2264+
$tags['is_consumable'] = false;
2265+
}
22592266
$transportDefinition = (new Definition(TransportInterface::class))
22602267
->setFactory([new Reference('messenger.transport_factory'), 'createTransport'])
22612268
->setArguments([$transport['dsn'], $transport['options'] + ['transport_name' => $name], new Reference($serializerId)])
2262-
->addTag('messenger.receiver', [
2263-
'alias' => $name,
2264-
'is_failure_transport' => \in_array($name, $failureTransports, true),
2265-
])
2269+
->addTag('messenger.receiver', $tags)
22662270
;
22672271
$container->setDefinition($transportId = 'messenger.transport.'.$name, $transportDefinition);
22682272
$senderAliases[$name] = $transportId;
@@ -2666,7 +2670,6 @@ private function registerMailerConfiguration(array $config, ContainerBuilder $co
26662670
}
26672671
$transports = $config['dsn'] ? ['main' => $config['dsn']] : $config['transports'];
26682672
$container->getDefinition('mailer.transports')->setArgument(0, $transports);
2669-
$container->getDefinition('mailer.default_transport')->setArgument(0, current($transports));
26702673

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

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,7 @@
4646
])
4747

4848
->set('mailer.default_transport', TransportInterface::class)
49-
->factory([service('mailer.transport_factory'), 'fromString'])
50-
->args([
51-
abstract_arg('env(MAILER_DSN)'),
52-
])
49+
->alias('mailer.default_transport', 'mailer.transports')
5350
->alias(TransportInterface::class, 'mailer.default_transport')
5451

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

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2105,8 +2105,7 @@ public function testMailer(string $configFile, array $expectedTransports, array
21052105
$this->assertTrue($container->hasAlias('mailer'));
21062106
$this->assertTrue($container->hasDefinition('mailer.transports'));
21072107
$this->assertSame($expectedTransports, $container->getDefinition('mailer.transports')->getArgument(0));
2108-
$this->assertTrue($container->hasDefinition('mailer.default_transport'));
2109-
$this->assertSame(current($expectedTransports), $container->getDefinition('mailer.default_transport')->getArgument(0));
2108+
$this->assertTrue($container->hasAlias('mailer.default_transport'));
21102109
$this->assertTrue($container->hasDefinition('mailer.envelope_listener'));
21112110
$l = $container->getDefinition('mailer.envelope_listener');
21122111
$this->assertSame('sender@example.org', $l->getArgument(0));

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

Lines 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

Lines 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

Lines 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

Lines 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