From fcccb196b7a2dc1662aafc94452a018c53e88533 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 29 Nov 2023 13:25:17 +0100 Subject: [PATCH 01/13] do not overwrite an application's default serialization context --- DependencyInjection/FrameworkExtension.php | 18 ++++++++++-------- .../Serializer/CircularReferenceHandler.php | 19 +++++++++++++++++++ Tests/Fixtures/Serializer/MaxDepthHandler.php | 19 +++++++++++++++++++ Tests/Functional/app/Serializer/config.yml | 6 ++++++ 4 files changed, 54 insertions(+), 8 deletions(-) create mode 100644 Tests/Fixtures/Serializer/CircularReferenceHandler.php create mode 100644 Tests/Fixtures/Serializer/MaxDepthHandler.php diff --git a/DependencyInjection/FrameworkExtension.php b/DependencyInjection/FrameworkExtension.php index da60eeabb..00abd6080 100644 --- a/DependencyInjection/FrameworkExtension.php +++ b/DependencyInjection/FrameworkExtension.php @@ -1848,21 +1848,23 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder $container->getDefinition('serializer.name_converter.metadata_aware')->setArgument(1, new Reference($config['name_converter'])); } + $defaultContext = $config['default_context'] ?? []; + + if ($defaultContext) { + $container->setParameter('serializer.default_context', $defaultContext); + } + if (isset($config['circular_reference_handler']) && $config['circular_reference_handler']) { $arguments = $container->getDefinition('serializer.normalizer.object')->getArguments(); - $context = ($arguments[6] ?? []) + ['circular_reference_handler' => new Reference($config['circular_reference_handler'])]; + $context = ($arguments[6] ?? $defaultContext) + ['circular_reference_handler' => new Reference($config['circular_reference_handler'])]; $container->getDefinition('serializer.normalizer.object')->setArgument(5, null); $container->getDefinition('serializer.normalizer.object')->setArgument(6, $context); } if ($config['max_depth_handler'] ?? false) { - $defaultContext = $container->getDefinition('serializer.normalizer.object')->getArgument(6); - $defaultContext += ['max_depth_handler' => new Reference($config['max_depth_handler'])]; - $container->getDefinition('serializer.normalizer.object')->replaceArgument(6, $defaultContext); - } - - if (isset($config['default_context']) && $config['default_context']) { - $container->setParameter('serializer.default_context', $config['default_context']); + $arguments = $container->getDefinition('serializer.normalizer.object')->getArguments(); + $context = ($arguments[6] ?? $defaultContext) + ['max_depth_handler' => new Reference($config['max_depth_handler'])]; + $container->getDefinition('serializer.normalizer.object')->setArgument(6, $context); } } diff --git a/Tests/Fixtures/Serializer/CircularReferenceHandler.php b/Tests/Fixtures/Serializer/CircularReferenceHandler.php new file mode 100644 index 000000000..b4e402a04 --- /dev/null +++ b/Tests/Fixtures/Serializer/CircularReferenceHandler.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer; + +class CircularReferenceHandler +{ + public function __invoke() + { + } +} diff --git a/Tests/Fixtures/Serializer/MaxDepthHandler.php b/Tests/Fixtures/Serializer/MaxDepthHandler.php new file mode 100644 index 000000000..f76fb3db8 --- /dev/null +++ b/Tests/Fixtures/Serializer/MaxDepthHandler.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer; + +class MaxDepthHandler +{ + public function __invoke() + { + } +} diff --git a/Tests/Functional/app/Serializer/config.yml b/Tests/Functional/app/Serializer/config.yml index e9620ede4..f023f6341 100644 --- a/Tests/Functional/app/Serializer/config.yml +++ b/Tests/Functional/app/Serializer/config.yml @@ -4,6 +4,8 @@ imports: framework: serializer: enabled: true + circular_reference_handler: Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer\CircularReferenceHandler + max_depth_handler: Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer\MaxDepthHandler default_context: enable_max_depth: true fake_context_option: foo @@ -57,3 +59,7 @@ services: serializer.encoder.csv.alias: alias: serializer.encoder.csv public: true + + Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer\CircularReferenceHandler: ~ + + Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer\MaxDepthHandler: ~ From 11fe295f13dd7bf4b5a6e4f8bd466a5a3764f843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20DECOOL?= Date: Thu, 7 Dec 2023 10:39:29 +0100 Subject: [PATCH 02/13] Avoid incompatibility with symfony/console 7 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 24a28dee9..8479f1d88 100644 --- a/composer.json +++ b/composer.json @@ -75,7 +75,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/asset": "<5.3", - "symfony/console": "<5.2.5", + "symfony/console": "<5.2.5|>=7.0", "symfony/dotenv": "<5.1", "symfony/dom-crawler": "<4.4", "symfony/http-client": "<4.4", From 933123f0d79712e33e3e8bb79dd9db13f0ec264e Mon Sep 17 00:00:00 2001 From: Jules Pietri Date: Sat, 9 Dec 2023 12:34:14 +0100 Subject: [PATCH 03/13] [FrameworkBundle] Fix profiling command in web context --- EventListener/ConsoleProfilerListener.php | 11 ++++++++++- Resources/config/profiling.php | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/EventListener/ConsoleProfilerListener.php b/EventListener/ConsoleProfilerListener.php index d3fc38106..869bd73c8 100644 --- a/EventListener/ConsoleProfilerListener.php +++ b/EventListener/ConsoleProfilerListener.php @@ -42,6 +42,7 @@ public function __construct( private readonly Profiler $profiler, private readonly RequestStack $requestStack, private readonly Stopwatch $stopwatch, + private readonly bool $cliMode, private readonly UrlGeneratorInterface $urlGenerator, ) { $this->profiles = new \SplObjectStorage(); @@ -59,6 +60,10 @@ public static function getSubscribedEvents(): array public function initialize(ConsoleCommandEvent $event): void { + if (!$this->cliMode) { + return; + } + $input = $event->getInput(); if (!$input->hasOption('profile') || !$input->getOption('profile')) { $this->profiler->disable(); @@ -78,12 +83,16 @@ public function initialize(ConsoleCommandEvent $event): void public function catch(ConsoleErrorEvent $event): void { + if (!$this->cliMode) { + return; + } + $this->error = $event->getError(); } public function profile(ConsoleTerminateEvent $event): void { - if (!$this->profiler->isEnabled()) { + if (!$this->cliMode || !$this->profiler->isEnabled()) { return; } diff --git a/Resources/config/profiling.php b/Resources/config/profiling.php index ec764d837..d863cd8b1 100644 --- a/Resources/config/profiling.php +++ b/Resources/config/profiling.php @@ -43,6 +43,7 @@ service('profiler'), service('.virtual_request_stack'), service('debug.stopwatch'), + param('kernel.runtime_mode.cli'), service('router'), ]) ->tag('kernel.event_subscriber') From d61db2b0aafdcd5bd402cbf2d3449c323d8e064d Mon Sep 17 00:00:00 2001 From: Jules Pietri Date: Sat, 9 Dec 2023 12:02:49 +0100 Subject: [PATCH 04/13] [FrameworkBundle] Fix profiling commands without router --- EventListener/ConsoleProfilerListener.php | 16 +++++++++------- Resources/config/profiling.php | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/EventListener/ConsoleProfilerListener.php b/EventListener/ConsoleProfilerListener.php index 869bd73c8..c2a71d0a7 100644 --- a/EventListener/ConsoleProfilerListener.php +++ b/EventListener/ConsoleProfilerListener.php @@ -43,7 +43,7 @@ public function __construct( private readonly RequestStack $requestStack, private readonly Stopwatch $stopwatch, private readonly bool $cliMode, - private readonly UrlGeneratorInterface $urlGenerator, + private readonly ?UrlGeneratorInterface $urlGenerator = null, ) { $this->profiles = new \SplObjectStorage(); $this->parents = new \SplObjectStorage(); @@ -140,12 +140,14 @@ public function profile(ConsoleTerminateEvent $event): void $p = $this->profiles[$r]; $this->profiler->saveProfile($p); - $token = $p->getToken(); - $output?->writeln(sprintf( - 'See profile %s', - $this->urlGenerator->generate('_profiler', ['token' => $token], UrlGeneratorInterface::ABSOLUTE_URL), - $token - )); + if ($this->urlGenerator && $output) { + $token = $p->getToken(); + $output->writeln(sprintf( + 'See profile %s', + $this->urlGenerator->generate('_profiler', ['token' => $token], UrlGeneratorInterface::ABSOLUTE_URL), + $token + )); + } } $this->profiles = new \SplObjectStorage(); diff --git a/Resources/config/profiling.php b/Resources/config/profiling.php index d863cd8b1..eaef79597 100644 --- a/Resources/config/profiling.php +++ b/Resources/config/profiling.php @@ -44,7 +44,7 @@ service('.virtual_request_stack'), service('debug.stopwatch'), param('kernel.runtime_mode.cli'), - service('router'), + service('router')->nullOnInvalid(), ]) ->tag('kernel.event_subscriber') From 5e8f581e1dd0db922f4e3e217a2a7ed4789caa7b Mon Sep 17 00:00:00 2001 From: Timo Bakx Date: Sat, 9 Dec 2023 18:02:31 +0100 Subject: [PATCH 05/13] [Webhook] Added missing XML attribute in config XSD --- Resources/config/schema/symfony-1.0.xsd | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/config/schema/symfony-1.0.xsd b/Resources/config/schema/symfony-1.0.xsd index fe9d43d62..03396a4ce 100644 --- a/Resources/config/schema/symfony-1.0.xsd +++ b/Resources/config/schema/symfony-1.0.xsd @@ -976,6 +976,7 @@ + From 81e1b149dc006b9f3ec01dfe750835f0649f43eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Davaillaud?= Date: Mon, 11 Dec 2023 17:50:39 +0100 Subject: [PATCH 06/13] [Notifier] [Bridges] Provide EventDispatcher and HttpClient to the transports --- DependencyInjection/FrameworkExtension.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/DependencyInjection/FrameworkExtension.php b/DependencyInjection/FrameworkExtension.php index 00abd6080..0e68929d1 100644 --- a/DependencyInjection/FrameworkExtension.php +++ b/DependencyInjection/FrameworkExtension.php @@ -2594,7 +2594,9 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $ if (ContainerBuilder::willBeAvailable('symfony/mercure-notifier', MercureTransportFactory::class, $parentPackages, true) && ContainerBuilder::willBeAvailable('symfony/mercure-bundle', MercureBundle::class, $parentPackages, true) && \in_array(MercureBundle::class, $container->getParameter('kernel.bundles'), true)) { $container->getDefinition($classToServices[MercureTransportFactory::class]) - ->replaceArgument('$registry', new Reference(HubRegistry::class)); + ->replaceArgument('$registry', new Reference(HubRegistry::class)) + ->replaceArgument('$client', new Reference('http_client')) + ->replaceArgument('$dispatcher', new Reference('event_dispatcher')); } elseif (ContainerBuilder::willBeAvailable('symfony/mercure-notifier', MercureTransportFactory::class, $parentPackages, true)) { $container->removeDefinition($classToServices[MercureTransportFactory::class]); } @@ -2602,13 +2604,17 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $ if (ContainerBuilder::willBeAvailable('symfony/fake-chat-notifier', FakeChatTransportFactory::class, ['symfony/framework-bundle', 'symfony/notifier', 'symfony/mailer'], true)) { $container->getDefinition($classToServices[FakeChatTransportFactory::class]) ->replaceArgument('$mailer', new Reference('mailer')) - ->replaceArgument('$logger', new Reference('logger')); + ->replaceArgument('$logger', new Reference('logger')) + ->replaceArgument('$client', new Reference('http_client')) + ->replaceArgument('$dispatcher', new Reference('event_dispatcher')); } if (ContainerBuilder::willBeAvailable('symfony/fake-sms-notifier', FakeSmsTransportFactory::class, ['symfony/framework-bundle', 'symfony/notifier', 'symfony/mailer'], true)) { $container->getDefinition($classToServices[FakeSmsTransportFactory::class]) ->replaceArgument('$mailer', new Reference('mailer')) - ->replaceArgument('$logger', new Reference('logger')); + ->replaceArgument('$logger', new Reference('logger')) + ->replaceArgument('$client', new Reference('http_client')) + ->replaceArgument('$dispatcher', new Reference('event_dispatcher')); } if (isset($config['admin_recipients'])) { From 2c97c26e07a01641b5c0b5aa94c8f99f6f6411e5 Mon Sep 17 00:00:00 2001 From: Alexandre Daubois Date: Tue, 12 Dec 2023 13:07:13 +0100 Subject: [PATCH 07/13] [FrameworkBundle] Fix webhook parser service removal and add notifier parser service removal --- DependencyInjection/FrameworkExtension.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/DependencyInjection/FrameworkExtension.php b/DependencyInjection/FrameworkExtension.php index 1e8835a03..c4389cc43 100644 --- a/DependencyInjection/FrameworkExtension.php +++ b/DependencyInjection/FrameworkExtension.php @@ -2632,7 +2632,7 @@ private function registerMailerConfiguration(array $config, ContainerBuilder $co ]; foreach ($webhookRequestParsers as $class => $service) { - $package = substr($service, \strlen('mailer.transport_factory.')); + $package = substr($service, \strlen('mailer.webhook.request_parser.')); if (!ContainerBuilder::willBeAvailable(sprintf('symfony/%s-mailer', 'gmail' === $package ? 'google' : $package), $class, ['symfony/framework-bundle', 'symfony/mailer'])) { $container->removeDefinition($service); @@ -2839,6 +2839,18 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $ if ($webhookEnabled) { $loader->load('notifier_webhook.php'); + + $webhookRequestParsers = [ + NotifierBridge\Twilio\Webhook\TwilioRequestParser::class => 'notifier.webhook.request_parser.twilio', + ]; + + foreach ($webhookRequestParsers as $class => $service) { + $package = substr($service, \strlen('notifier.webhook.request_parser.')); + + if (!ContainerBuilder::willBeAvailable(sprintf('symfony/%s-notifier', $package), $class, ['symfony/framework-bundle', 'symfony/notifier'])) { + $container->removeDefinition($service); + } + } } } From fd0e39cf0c5ea589fb350b6a50b6d0047feacfd8 Mon Sep 17 00:00:00 2001 From: Alexandre Daubois Date: Tue, 12 Dec 2023 11:58:51 +0100 Subject: [PATCH 08/13] [FrameworkBundle] Add missing webhook parsers --- DependencyInjection/FrameworkExtension.php | 3 +++ Resources/config/notifier_webhook.php | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/DependencyInjection/FrameworkExtension.php b/DependencyInjection/FrameworkExtension.php index 5d3e0131f..7f816b20b 100644 --- a/DependencyInjection/FrameworkExtension.php +++ b/DependencyInjection/FrameworkExtension.php @@ -2680,7 +2680,9 @@ private function registerMailerConfiguration(array $config, ContainerBuilder $co if ($webhookEnabled) { $webhookRequestParsers = [ + MailerBridge\Brevo\Webhook\BrevoRequestParser::class => 'mailer.webhook.request_parser.brevo', MailerBridge\Mailgun\Webhook\MailgunRequestParser::class => 'mailer.webhook.request_parser.mailgun', + MailerBridge\Mailjet\Webhook\MailjetRequestParser::class => 'mailer.webhook.request_parser.mailjet', MailerBridge\Postmark\Webhook\PostmarkRequestParser::class => 'mailer.webhook.request_parser.postmark', MailerBridge\Sendgrid\Webhook\SendgridRequestParser::class => 'mailer.webhook.request_parser.sendgrid', ]; @@ -2901,6 +2903,7 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $ $webhookRequestParsers = [ NotifierBridge\Twilio\Webhook\TwilioRequestParser::class => 'notifier.webhook.request_parser.twilio', + NotifierBridge\Vonage\Webhook\VonageRequestParser::class => 'notifier.webhook.request_parser.vonage', ]; foreach ($webhookRequestParsers as $class => $service) { diff --git a/Resources/config/notifier_webhook.php b/Resources/config/notifier_webhook.php index 87dfc6c6a..fc541fd99 100644 --- a/Resources/config/notifier_webhook.php +++ b/Resources/config/notifier_webhook.php @@ -12,10 +12,14 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; use Symfony\Component\Notifier\Bridge\Twilio\Webhook\TwilioRequestParser; +use Symfony\Component\Notifier\Bridge\Vonage\Webhook\VonageRequestParser; return static function (ContainerConfigurator $container) { $container->services() ->set('notifier.webhook.request_parser.twilio', TwilioRequestParser::class) ->alias(TwilioRequestParser::class, 'notifier.webhook.request_parser.twilio') + + ->set('notifier.webhook.request_parser.vonage', VonageRequestParser::class) + ->alias(VonageRequestParser::class, 'notifier.webhook.request_parser.vonage') ; }; From 820fc93b1af24ba6d8c95e1398409b668c9d0f1c Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Mon, 18 Dec 2023 14:29:19 +0100 Subject: [PATCH 09/13] fix tests --- Tests/DependencyInjection/FrameworkExtensionTestCase.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Tests/DependencyInjection/FrameworkExtensionTestCase.php b/Tests/DependencyInjection/FrameworkExtensionTestCase.php index 7caaa77bf..77f73fa8d 100644 --- a/Tests/DependencyInjection/FrameworkExtensionTestCase.php +++ b/Tests/DependencyInjection/FrameworkExtensionTestCase.php @@ -43,6 +43,7 @@ use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Exception\LogicException; use Symfony\Component\DependencyInjection\Loader\ClosureLoader; +use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; use Symfony\Component\DependencyInjection\ParameterBag\EnvPlaceholderParameterBag; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\EventDispatcher\EventDispatcherInterface; @@ -1760,7 +1761,7 @@ public function testCachePoolServices() ->replaceArgument(0, $expectedSeed) ->replaceArgument(1, 12), (new ChildDefinition('cache.adapter.redis')) - ->replaceArgument(0, new Reference('.cache_connection.kYdiLgf')) + ->replaceArgument(0, new Reference('.cache_connection.'.(\count((new \ReflectionMethod(ContainerConfigurator::class, 'extension'))->getParameters()) > 2 ? 'U5HliuY' : 'kYdiLgf'))) ->replaceArgument(1, $expectedSeed) ->replaceArgument(2, 12), ], From 078e109c68b349f2a3953062695a64a13f82a59a Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 20 Dec 2023 14:15:41 +0100 Subject: [PATCH 10/13] don't fail when optional dependencies are not present --- DependencyInjection/FrameworkExtension.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/DependencyInjection/FrameworkExtension.php b/DependencyInjection/FrameworkExtension.php index 0e68929d1..7529acd60 100644 --- a/DependencyInjection/FrameworkExtension.php +++ b/DependencyInjection/FrameworkExtension.php @@ -2595,8 +2595,8 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $ if (ContainerBuilder::willBeAvailable('symfony/mercure-notifier', MercureTransportFactory::class, $parentPackages, true) && ContainerBuilder::willBeAvailable('symfony/mercure-bundle', MercureBundle::class, $parentPackages, true) && \in_array(MercureBundle::class, $container->getParameter('kernel.bundles'), true)) { $container->getDefinition($classToServices[MercureTransportFactory::class]) ->replaceArgument('$registry', new Reference(HubRegistry::class)) - ->replaceArgument('$client', new Reference('http_client')) - ->replaceArgument('$dispatcher', new Reference('event_dispatcher')); + ->replaceArgument('$client', new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE)) + ->replaceArgument('$dispatcher', new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE)); } elseif (ContainerBuilder::willBeAvailable('symfony/mercure-notifier', MercureTransportFactory::class, $parentPackages, true)) { $container->removeDefinition($classToServices[MercureTransportFactory::class]); } @@ -2605,16 +2605,16 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $ $container->getDefinition($classToServices[FakeChatTransportFactory::class]) ->replaceArgument('$mailer', new Reference('mailer')) ->replaceArgument('$logger', new Reference('logger')) - ->replaceArgument('$client', new Reference('http_client')) - ->replaceArgument('$dispatcher', new Reference('event_dispatcher')); + ->replaceArgument('$client', new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE)) + ->replaceArgument('$dispatcher', new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE)); } if (ContainerBuilder::willBeAvailable('symfony/fake-sms-notifier', FakeSmsTransportFactory::class, ['symfony/framework-bundle', 'symfony/notifier', 'symfony/mailer'], true)) { $container->getDefinition($classToServices[FakeSmsTransportFactory::class]) ->replaceArgument('$mailer', new Reference('mailer')) ->replaceArgument('$logger', new Reference('logger')) - ->replaceArgument('$client', new Reference('http_client')) - ->replaceArgument('$dispatcher', new Reference('event_dispatcher')); + ->replaceArgument('$client', new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE)) + ->replaceArgument('$dispatcher', new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE)); } if (isset($config['admin_recipients'])) { From f736f320a33c50674afdfb305e8a790e10372144 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Thu, 21 Dec 2023 12:43:22 +0100 Subject: [PATCH 11/13] add missing webhook services for Brevo and Mailjet --- Resources/config/mailer_webhook.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Resources/config/mailer_webhook.php b/Resources/config/mailer_webhook.php index 30ea50dad..bb487b36c 100644 --- a/Resources/config/mailer_webhook.php +++ b/Resources/config/mailer_webhook.php @@ -11,8 +11,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use Symfony\Component\Mailer\Bridge\Brevo\RemoteEvent\BrevoPayloadConverter; +use Symfony\Component\Mailer\Bridge\Brevo\Webhook\BrevoRequestParser; use Symfony\Component\Mailer\Bridge\Mailgun\RemoteEvent\MailgunPayloadConverter; use Symfony\Component\Mailer\Bridge\Mailgun\Webhook\MailgunRequestParser; +use Symfony\Component\Mailer\Bridge\Mailjet\RemoteEvent\MailjetPayloadConverter; +use Symfony\Component\Mailer\Bridge\Mailjet\Webhook\MailjetRequestParser; use Symfony\Component\Mailer\Bridge\Postmark\RemoteEvent\PostmarkPayloadConverter; use Symfony\Component\Mailer\Bridge\Postmark\Webhook\PostmarkRequestParser; use Symfony\Component\Mailer\Bridge\Sendgrid\RemoteEvent\SendgridPayloadConverter; @@ -20,11 +24,21 @@ return static function (ContainerConfigurator $container) { $container->services() + ->set('mailer.payload_converter.brevo', BrevoPayloadConverter::class) + ->set('mailer.webhook.request_parser.brevo', BrevoRequestParser::class) + ->args([service('mailer.payload_converter.brevo')]) + ->alias(BrevoRequestParser::class, 'mailer.webhook.request_parser.brevo') + ->set('mailer.payload_converter.mailgun', MailgunPayloadConverter::class) ->set('mailer.webhook.request_parser.mailgun', MailgunRequestParser::class) ->args([service('mailer.payload_converter.mailgun')]) ->alias(MailgunRequestParser::class, 'mailer.webhook.request_parser.mailgun') + ->set('mailer.payload_converter.mailjet', MailjetPayloadConverter::class) + ->set('mailer.webhook.request_parser.mailjet', MailjetRequestParser::class) + ->args([service('mailer.payload_converter.mailjet')]) + ->alias(MailjetRequestParser::class, 'mailer.webhook.request_parser.mailjet') + ->set('mailer.payload_converter.postmark', PostmarkPayloadConverter::class) ->set('mailer.webhook.request_parser.postmark', PostmarkRequestParser::class) ->args([service('mailer.payload_converter.postmark')]) From 804edde4bdd5585c844839f9d90c0b3cb3d76a0a Mon Sep 17 00:00:00 2001 From: Fabien Salathe Date: Thu, 28 Dec 2023 04:45:06 +0900 Subject: [PATCH 12/13] Remove #StandWithUkraine --- Console/Application.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Console/Application.php b/Console/Application.php index 55510b9d5..7fe7bc937 100644 --- a/Console/Application.php +++ b/Console/Application.php @@ -147,7 +147,7 @@ public function all(string $namespace = null) */ public function getLongVersion() { - return parent::getLongVersion().sprintf(' (env: %s, debug: %s) #StandWithUkraine https://sf.to/ukraine', $this->kernel->getEnvironment(), $this->kernel->isDebug() ? 'true' : 'false'); + return parent::getLongVersion().sprintf(' (env: %s, debug: %s)', $this->kernel->getEnvironment(), $this->kernel->isDebug() ? 'true' : 'false'); } public function add(Command $command) From fe815b4579ab205a12e7c712d0097089e62ff66e Mon Sep 17 00:00:00 2001 From: fmata Date: Thu, 23 Nov 2023 12:39:44 +0100 Subject: [PATCH 13/13] [FrameworkBundle] Update docblock AbstractController --- Controller/AbstractController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Controller/AbstractController.php b/Controller/AbstractController.php index 85220f1b5..d4b9f4181 100644 --- a/Controller/AbstractController.php +++ b/Controller/AbstractController.php @@ -145,7 +145,7 @@ protected function generateUrl(string $route, array $parameters = [], int $refer /** * Forwards the request to another controller. * - * @param string $controller The controller name (a string like Bundle\BlogBundle\Controller\PostController::indexAction) + * @param string $controller The controller name (a string like "App\Controller\PostController::index" or "App\Controller\PostController" if it is invokable) */ protected function forward(string $controller, array $path = [], array $query = []): Response {