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 28e072a

Browse filesBrowse files
committed
Merge branch '5.0' into 5.1
* 5.0: [DependencyInjection][Config] Use several placeholder unique prefixes for dynamic placeholder values [Mime] Keep Sender full address when used by non-SMTP transports Update MimeTypes.php
2 parents 85da081 + ba1b05e commit 28e072a
Copy full SHA for 28e072a

File tree

6 files changed

+88
-24
lines changed
Filter options

6 files changed

+88
-24
lines changed

‎src/Symfony/Component/Config/Definition/BaseNode.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Config/Definition/BaseNode.php
+8-6Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ abstract class BaseNode implements NodeInterface
2626
{
2727
const DEFAULT_PATH_SEPARATOR = '.';
2828

29-
private static $placeholderUniquePrefix;
29+
private static $placeholderUniquePrefixes = [];
3030
private static $placeholders = [];
3131

3232
protected $name;
@@ -74,7 +74,7 @@ public static function setPlaceholder(string $placeholder, array $values): void
7474
}
7575

7676
/**
77-
* Sets a common prefix for dynamic placeholder values.
77+
* Adds a common prefix for dynamic placeholder values.
7878
*
7979
* Matching configuration values will be skipped from being processed and are returned as is, thus preserving the
8080
* placeholder. An exact match provided by {@see setPlaceholder()} might take precedence.
@@ -83,7 +83,7 @@ public static function setPlaceholder(string $placeholder, array $values): void
8383
*/
8484
public static function setPlaceholderUniquePrefix(string $prefix): void
8585
{
86-
self::$placeholderUniquePrefix = $prefix;
86+
self::$placeholderUniquePrefixes[] = $prefix;
8787
}
8888

8989
/**
@@ -93,7 +93,7 @@ public static function setPlaceholderUniquePrefix(string $prefix): void
9393
*/
9494
public static function resetPlaceholders(): void
9595
{
96-
self::$placeholderUniquePrefix = null;
96+
self::$placeholderUniquePrefixes = [];
9797
self::$placeholders = [];
9898
}
9999

@@ -543,8 +543,10 @@ private static function resolvePlaceholderValue($value)
543543
return self::$placeholders[$value];
544544
}
545545

546-
if (self::$placeholderUniquePrefix && 0 === strpos($value, self::$placeholderUniquePrefix)) {
547-
return [];
546+
foreach (self::$placeholderUniquePrefixes as $placeholderUniquePrefix) {
547+
if (0 === strpos($value, $placeholderUniquePrefix)) {
548+
return [];
549+
}
548550
}
549551
}
550552

‎src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php
+6-2Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,11 @@ public function process(ContainerBuilder $container)
7979
$container->getParameterBag()->mergeEnvPlaceholders($resolvingBag);
8080
}
8181

82-
throw $e;
83-
} finally {
8482
if ($configAvailable) {
8583
BaseNode::resetPlaceholders();
8684
}
85+
86+
throw $e;
8787
}
8888

8989
if ($resolvingBag instanceof MergeExtensionConfigurationParameterBag) {
@@ -95,6 +95,10 @@ public function process(ContainerBuilder $container)
9595
$container->getParameterBag()->add($parameters);
9696
}
9797

98+
if ($configAvailable) {
99+
BaseNode::resetPlaceholders();
100+
}
101+
98102
$container->addDefinitions($definitions);
99103
$container->addAliases($aliases);
100104
}

‎src/Symfony/Component/DependencyInjection/Tests/Compiler/MergeExtensionConfigurationPassTest.php

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

1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\Config\Definition\BaseNode;
1516
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
1617
use Symfony\Component\Config\Definition\ConfigurationInterface;
1718
use Symfony\Component\Config\Resource\FileResource;
@@ -128,6 +129,23 @@ public function testThrowingExtensionsGetMergedBag()
128129

129130
$this->assertSame(['FOO'], array_keys($container->getParameterBag()->getEnvPlaceholders()));
130131
}
132+
133+
public function testReuseEnvPlaceholderGeneratedByPreviousExtension()
134+
{
135+
if (!property_exists(BaseNode::class, 'placeholderUniquePrefixes')) {
136+
$this->markTestSkipped('This test requires symfony/config ^4.4.11|^5.0.11|^5.1.3');
137+
}
138+
139+
$container = new ContainerBuilder();
140+
$container->registerExtension(new FooExtension());
141+
$container->registerExtension(new TestCccExtension());
142+
$container->prependExtensionConfig('foo', ['bool_node' => '%env(bool:MY_ENV_VAR)%']);
143+
$container->prependExtensionConfig('test_ccc', ['bool_node' => '%env(bool:MY_ENV_VAR)%']);
144+
145+
(new MergeExtensionConfigurationPass())->process($container);
146+
147+
$this->addToAssertionCount(1);
148+
}
131149
}
132150

133151
class FooConfiguration implements ConfigurationInterface
@@ -139,6 +157,7 @@ public function getConfigTreeBuilder(): TreeBuilder
139157
->children()
140158
->scalarNode('bar')->end()
141159
->scalarNode('baz')->end()
160+
->booleanNode('bool_node')->end()
142161
->end();
143162

144163
return $treeBuilder;
@@ -166,6 +185,8 @@ public function load(array $configs, ContainerBuilder $container)
166185
$container->getParameterBag()->get('env(BOZ)');
167186
$container->resolveEnvPlaceholders($config['baz']);
168187
}
188+
189+
$container->setParameter('foo.param', 'ccc');
169190
}
170191
}
171192

@@ -194,3 +215,36 @@ public function load(array $configs, ContainerBuilder $container)
194215
throw new \Exception();
195216
}
196217
}
218+
219+
final class TestCccConfiguration implements ConfigurationInterface
220+
{
221+
public function getConfigTreeBuilder(): TreeBuilder
222+
{
223+
$treeBuilder = new TreeBuilder('test_ccc');
224+
$treeBuilder->getRootNode()
225+
->children()
226+
->booleanNode('bool_node')->end()
227+
->end();
228+
229+
return $treeBuilder;
230+
}
231+
}
232+
233+
final class TestCccExtension extends Extension
234+
{
235+
public function getAlias(): string
236+
{
237+
return 'test_ccc';
238+
}
239+
240+
public function getConfiguration(array $config, ContainerBuilder $container): ?ConfigurationInterface
241+
{
242+
return new TestCccConfiguration();
243+
}
244+
245+
public function load(array $configs, ContainerBuilder $container)
246+
{
247+
$configuration = $this->getConfiguration($configs, $container);
248+
$this->processConfiguration($configuration, $configs);
249+
}
250+
}

‎src/Symfony/Component/Mailer/Envelope.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Mailer/Envelope.php
+5-1Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,13 @@ public static function create(RawMessage $message): self
4444

4545
public function setSender(Address $sender): void
4646
{
47-
$this->sender = new Address($sender->getAddress());
47+
$this->sender = $sender;
4848
}
4949

50+
/**
51+
* @return Address Returns a "mailbox" as specified by RFC 2822
52+
* Must be converted to an "addr-spec" when used as a "MAIL FROM" value in SMTP (use getAddress())
53+
*/
5054
public function getSender(): Address
5155
{
5256
return $this->sender;

‎src/Symfony/Component/Mailer/Tests/EnvelopeTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Mailer/Tests/EnvelopeTest.php
+14-14Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public function testConstructorWithAddressSender()
2929

3030
public function testConstructorWithNamedAddressSender()
3131
{
32-
$e = new Envelope(new Address('fabien@symfony.com', 'Fabien'), [new Address('thomas@symfony.com')]);
33-
$this->assertEquals(new Address('fabien@symfony.com'), $e->getSender());
32+
$e = new Envelope($sender = new Address('fabien@symfony.com', 'Fabien'), [new Address('thomas@symfony.com')]);
33+
$this->assertEquals($sender, $e->getSender());
3434
}
3535

3636
public function testConstructorWithAddressRecipients()
@@ -54,31 +54,31 @@ public function testConstructorWithWrongRecipients()
5454
public function testSenderFromHeaders()
5555
{
5656
$headers = new Headers();
57-
$headers->addPathHeader('Return-Path', new Address('return@symfony.com', 'return'));
58-
$headers->addMailboxListHeader('To', ['from@symfony.com']);
57+
$headers->addPathHeader('Return-Path', $return = new Address('return@symfony.com', 'return'));
58+
$headers->addMailboxListHeader('To', ['to@symfony.com']);
5959
$e = Envelope::create(new Message($headers));
60-
$this->assertEquals(new Address('return@symfony.com', 'return'), $e->getSender());
60+
$this->assertEquals($return, $e->getSender());
6161

6262
$headers = new Headers();
63-
$headers->addMailboxHeader('Sender', new Address('sender@symfony.com', 'sender'));
64-
$headers->addMailboxListHeader('To', ['from@symfony.com']);
63+
$headers->addMailboxHeader('Sender', $sender = new Address('sender@symfony.com', 'sender'));
64+
$headers->addMailboxListHeader('To', ['to@symfony.com']);
6565
$e = Envelope::create(new Message($headers));
66-
$this->assertEquals(new Address('sender@symfony.com', 'sender'), $e->getSender());
66+
$this->assertEquals($sender, $e->getSender());
6767

6868
$headers = new Headers();
69-
$headers->addMailboxListHeader('From', [new Address('from@symfony.com', 'from'), 'some@symfony.com']);
70-
$headers->addMailboxListHeader('To', ['from@symfony.com']);
69+
$headers->addMailboxListHeader('From', [$from = new Address('from@symfony.com', 'from'), 'some@symfony.com']);
70+
$headers->addMailboxListHeader('To', ['to@symfony.com']);
7171
$e = Envelope::create(new Message($headers));
72-
$this->assertEquals(new Address('from@symfony.com', 'from'), $e->getSender());
72+
$this->assertEquals($from, $e->getSender());
7373
}
7474

7575
public function testSenderFromHeadersWithoutFrom()
7676
{
7777
$headers = new Headers();
78-
$headers->addMailboxListHeader('To', ['from@symfony.com']);
78+
$headers->addMailboxListHeader('To', ['to@symfony.com']);
7979
$e = Envelope::create($message = new Message($headers));
80-
$message->getHeaders()->addMailboxListHeader('From', [new Address('from@symfony.com', 'from')]);
81-
$this->assertEquals(new Address('from@symfony.com', 'from'), $e->getSender());
80+
$message->getHeaders()->addMailboxListHeader('From', [$from = new Address('from@symfony.com', 'from')]);
81+
$this->assertEquals($from, $e->getSender());
8282
}
8383

8484
public function testRecipientsFromHeaders()

‎src/Symfony/Component/Mime/MimeTypes.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Mime/MimeTypes.php
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public function guessMimeType(string $path): ?string
137137
}
138138

139139
if (!$this->isGuesserSupported()) {
140-
throw new LogicException('Unable to guess the MIME type as no guessers are available (have you enable the php_fileinfo extension?).');
140+
throw new LogicException('Unable to guess the MIME type as no guessers are available (have you enabled the php_fileinfo extension?).');
141141
}
142142

143143
return null;

0 commit comments

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