From e36099503fa9e3fb31506e0e2c618b057621f75a Mon Sep 17 00:00:00 2001 From: Sergey Rabochiy Date: Tue, 15 May 2018 18:05:47 +0700 Subject: [PATCH 01/98] [FrameworkBundle] Change priority of AddConsoleCommandPass to TYPE_BEFORE_REMOVING --- .../FrameworkBundle/FrameworkBundle.php | 2 +- .../AddConsoleCommandPassTest.php | 83 ++++++++++++++++++- 2 files changed, 80 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php index 17c12686dad23..6a05b436df143 100644 --- a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php +++ b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php @@ -107,7 +107,7 @@ public function build(ContainerBuilder $container) $this->addCompilerPassIfExists($container, AddConstraintValidatorsPass::class, PassConfig::TYPE_BEFORE_REMOVING); $container->addCompilerPass(new AddAnnotationsCachedReaderPass(), PassConfig::TYPE_AFTER_REMOVING, -255); $this->addCompilerPassIfExists($container, AddValidatorInitializersPass::class); - $this->addCompilerPassIfExists($container, AddConsoleCommandPass::class); + $this->addCompilerPassIfExists($container, AddConsoleCommandPass::class, PassConfig::TYPE_BEFORE_REMOVING); if (class_exists(TranslatorPass::class)) { // Arguments to be removed in 4.0, relying on the default values $container->addCompilerPass(new TranslatorPass('translator.default', 'translation.loader')); diff --git a/src/Symfony/Component/Console/Tests/DependencyInjection/AddConsoleCommandPassTest.php b/src/Symfony/Component/Console/Tests/DependencyInjection/AddConsoleCommandPassTest.php index 34f648610836a..67fbb98643f1e 100644 --- a/src/Symfony/Component/Console/Tests/DependencyInjection/AddConsoleCommandPassTest.php +++ b/src/Symfony/Component/Console/Tests/DependencyInjection/AddConsoleCommandPassTest.php @@ -12,10 +12,12 @@ namespace Symfony\Component\Console\Tests\DependencyInjection; use PHPUnit\Framework\TestCase; +use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\CommandLoader\ContainerCommandLoader; use Symfony\Component\Console\DependencyInjection\AddConsoleCommandPass; -use Symfony\Component\Console\Command\Command; use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument; +use Symfony\Component\DependencyInjection\ChildDefinition; +use Symfony\Component\DependencyInjection\Compiler\PassConfig; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\TypedReference; @@ -28,7 +30,7 @@ class AddConsoleCommandPassTest extends TestCase public function testProcess($public) { $container = new ContainerBuilder(); - $container->addCompilerPass(new AddConsoleCommandPass()); + $container->addCompilerPass(new AddConsoleCommandPass(), PassConfig::TYPE_BEFORE_REMOVING); $container->setParameter('my-command.class', 'Symfony\Component\Console\Tests\DependencyInjection\MyCommand'); $definition = new Definition('%my-command.class%'); @@ -127,7 +129,7 @@ public function testProcessThrowAnExceptionIfTheServiceIsAbstract() { $container = new ContainerBuilder(); $container->setResourceTracking(false); - $container->addCompilerPass(new AddConsoleCommandPass()); + $container->addCompilerPass(new AddConsoleCommandPass(), PassConfig::TYPE_BEFORE_REMOVING); $definition = new Definition('Symfony\Component\Console\Tests\DependencyInjection\MyCommand'); $definition->addTag('console.command'); @@ -145,7 +147,7 @@ public function testProcessThrowAnExceptionIfTheServiceIsNotASubclassOfCommand() { $container = new ContainerBuilder(); $container->setResourceTracking(false); - $container->addCompilerPass(new AddConsoleCommandPass()); + $container->addCompilerPass(new AddConsoleCommandPass(), PassConfig::TYPE_BEFORE_REMOVING); $definition = new Definition('SplObjectStorage'); $definition->addTag('console.command'); @@ -175,6 +177,79 @@ public function testProcessPrivateServicesWithSameCommand() $this->assertTrue($container->hasAlias($alias1)); $this->assertTrue($container->hasAlias($alias2)); } + + public function testProcessOnChildDefinitionWithClass() + { + $container = new ContainerBuilder(); + $container->addCompilerPass(new AddConsoleCommandPass(), PassConfig::TYPE_BEFORE_REMOVING); + $className = 'Symfony\Component\Console\Tests\DependencyInjection\MyCommand'; + + $parentId = 'my-parent-command'; + $childId = 'my-child-command'; + + $parentDefinition = new Definition(/* no class */); + $parentDefinition->setAbstract(true)->setPublic(false); + + $childDefinition = new ChildDefinition($parentId); + $childDefinition->addTag('console.command')->setPublic(true); + $childDefinition->setClass($className); + + $container->setDefinition($parentId, $parentDefinition); + $container->setDefinition($childId, $childDefinition); + + $container->compile(); + $command = $container->get($childId); + + $this->assertInstanceOf($className, $command); + } + + public function testProcessOnChildDefinitionWithParentClass() + { + $container = new ContainerBuilder(); + $container->addCompilerPass(new AddConsoleCommandPass(), PassConfig::TYPE_BEFORE_REMOVING); + $className = 'Symfony\Component\Console\Tests\DependencyInjection\MyCommand'; + + $parentId = 'my-parent-command'; + $childId = 'my-child-command'; + + $parentDefinition = new Definition($className); + $parentDefinition->setAbstract(true)->setPublic(false); + + $childDefinition = new ChildDefinition($parentId); + $childDefinition->addTag('console.command')->setPublic(true); + + $container->setDefinition($parentId, $parentDefinition); + $container->setDefinition($childId, $childDefinition); + + $container->compile(); + $command = $container->get($childId); + + $this->assertInstanceOf($className, $command); + } + + /** + * @expectedException \RuntimeException + * @expectedExceptionMessage The definition for "my-child-command" has no class. + */ + public function testProcessOnChildDefinitionWithoutClass() + { + $container = new ContainerBuilder(); + $container->addCompilerPass(new AddConsoleCommandPass(), PassConfig::TYPE_BEFORE_REMOVING); + + $parentId = 'my-parent-command'; + $childId = 'my-child-command'; + + $parentDefinition = new Definition(); + $parentDefinition->setAbstract(true)->setPublic(false); + + $childDefinition = new ChildDefinition($parentId); + $childDefinition->addTag('console.command')->setPublic(true); + + $container->setDefinition($parentId, $parentDefinition); + $container->setDefinition($childId, $childDefinition); + + $container->compile(); + } } class MyCommand extends Command From a7a1325eabe98d8e4421622801ee25583f83d957 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Wed, 23 May 2018 08:22:59 +0200 Subject: [PATCH 02/98] [Validator] Update sl translation --- .../Validator/Resources/translations/validators.sl.xlf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.sl.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.sl.xlf index 834db4015e8e4..6f5fd98ca192e 100644 --- a/src/Symfony/Component/Validator/Resources/translations/validators.sl.xlf +++ b/src/Symfony/Component/Validator/Resources/translations/validators.sl.xlf @@ -314,6 +314,10 @@ This is not a valid Business Identifier Code (BIC). To ni veljavna identifikacijska koda podjetja (BIC). + + Error + Napaka + From 87b3ad91d240e1b2a4b5c30e038e177f5cb40c4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Ostroluck=C3=BD?= Date: Wed, 23 May 2018 22:28:22 +0200 Subject: [PATCH 03/98] [PhpUnitBridge] silence some stderr outputs --- src/Symfony/Bridge/PhpUnit/Tests/CoverageListenerTest.php | 4 ++-- src/Symfony/Bridge/PhpUnit/bin/simple-phpunit | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Bridge/PhpUnit/Tests/CoverageListenerTest.php b/src/Symfony/Bridge/PhpUnit/Tests/CoverageListenerTest.php index 957499dfb6a2b..83f4085c8051e 100644 --- a/src/Symfony/Bridge/PhpUnit/Tests/CoverageListenerTest.php +++ b/src/Symfony/Bridge/PhpUnit/Tests/CoverageListenerTest.php @@ -31,11 +31,11 @@ public function test() $dir = __DIR__.'/../Tests/Fixtures/coverage'; $phpunit = $_SERVER['argv'][0]; - exec("$php $phpunit -c $dir/phpunit-without-listener.xml.dist $dir/tests/ --coverage-text", $output); + exec("$php $phpunit -c $dir/phpunit-without-listener.xml.dist $dir/tests/ --coverage-text 2> /dev/null", $output); $output = implode("\n", $output); $this->assertContains('FooCov', $output); - exec("$php $phpunit -c $dir/phpunit-with-listener.xml.dist $dir/tests/ --coverage-text", $output); + exec("$php $phpunit -c $dir/phpunit-with-listener.xml.dist $dir/tests/ --coverage-text 2> /dev/null", $output); $output = implode("\n", $output); $this->assertNotContains('FooCov', $output); $this->assertContains("SutNotFoundTest::test\nCould not find the tested class.", $output); diff --git a/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit b/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit index a824eae8f2ab4..59c7a1fe3565e 100755 --- a/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit +++ b/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit @@ -47,7 +47,7 @@ if ('phpdbg' === PHP_SAPI) { $PHP .= ' -qrr'; } -$COMPOSER = file_exists($COMPOSER = $oldPwd.'/composer.phar') || ($COMPOSER = rtrim('\\' === DIRECTORY_SEPARATOR ? preg_replace('/[\r\n].*/', '', `where.exe composer.phar`) : `which composer.phar`)) +$COMPOSER = file_exists($COMPOSER = $oldPwd.'/composer.phar') || ($COMPOSER = rtrim('\\' === DIRECTORY_SEPARATOR ? preg_replace('/[\r\n].*/', '', `where.exe composer.phar`) : `which composer.phar 2> /dev/null`)) ? $PHP.' '.escapeshellarg($COMPOSER) : 'composer'; From 1314a952cd45525dd7b574d185fa5cafdeba9632 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Thu, 24 May 2018 09:11:23 +0200 Subject: [PATCH 04/98] [DI] remove dead code --- .../DependencyInjection/LazyProxy/ProxyHelper.php | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/LazyProxy/ProxyHelper.php b/src/Symfony/Component/DependencyInjection/LazyProxy/ProxyHelper.php index 84686efff5d6a..57ea90eae0e5e 100644 --- a/src/Symfony/Component/DependencyInjection/LazyProxy/ProxyHelper.php +++ b/src/Symfony/Component/DependencyInjection/LazyProxy/ProxyHelper.php @@ -62,17 +62,4 @@ public static function getTypeHint(\ReflectionFunctionAbstract $r, \ReflectionPa return $prefix.$parent->name; } } - - private static function export($value) - { - if (!is_array($value)) { - return var_export($value, true); - } - $code = array(); - foreach ($value as $k => $v) { - $code[] = sprintf('%s => %s', var_export($k, true), self::export($v)); - } - - return sprintf('array(%s)', implode(', ', $code)); - } } From e88e0f30f168958ac311b7d865b26b30a572dac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Thu, 24 May 2018 13:48:55 +0200 Subject: [PATCH 05/98] [Serializer] Check the value of enable_max_depth if defined --- .../Component/Serializer/Normalizer/AbstractObjectNormalizer.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php index 08fbc5fa3fd88..e02626a5fdf1c 100644 --- a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php @@ -333,6 +333,7 @@ private function isMaxDepthReached(array $attributesMetadata, $class, $attribute { if ( !isset($context[static::ENABLE_MAX_DEPTH]) || + !$context[static::ENABLE_MAX_DEPTH] || !isset($attributesMetadata[$attribute]) || null === $maxDepth = $attributesMetadata[$attribute]->getMaxDepth() ) { From 47f0e732d92f9c52277909978f1c734e276193fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Ostroluck=C3=BD?= Date: Thu, 24 May 2018 22:59:06 +0200 Subject: [PATCH 06/98] [HttpFoundation] Fix cookie test with xdebug Here's the failure without this patch: ``` Testing Symfony\Component\HttpFoundation\Tests\ResponseFunctionalTest F..... 6 / 6 (100%) Time: 1.07 seconds, Memory: 4.00MB There was 1 failure: 1) Symfony\Component\HttpFoundation\Tests\ResponseFunctionalTest::testCookie with data set #0 ('cookie_max_age') Failed asserting that string matches format description. --- Expected +++ Actual @@ @@ Warning: Expiry date cannot have a year greater than 9999 in /home/gadelat/PhpstormProjects/symfony/src/Symfony/Component/HttpFoundation/Tests/Fixtures/response-functional/cookie_max_age.php on line 10 +Call Stack: + 0.0004 390392 1. {main}() /home/gadelat/PhpstormProjects/symfony/src/Symfony/Component/HttpFoundation/Tests/Fixtures/response-functional/cookie_max_age.php:0 + 0.0178 500960 2. setcookie() /home/gadelat/PhpstormProjects/symfony/src/Symfony/Component/HttpFoundation/Tests/Fixtures/response-functional/cookie_max_age.php:10 + + Array ( [0] => Content-Type: text/plain; charset=utf-8 [1] => Cache-Control: no-cache, private [2] => Date: Sat, 12 Nov 1955 20:04:00 GMT - [3] => Set-Cookie: foo=bar; expires=Sat, 01-Jan-10000 02:46:40 GMT; Max-Age=%d; path=/ + [3] => Set-Cookie: foo=bar; expires=Sat, 01-Jan-10000 02:46:40 GMT; Max-Age=251875115405; path=/ ) shutdown /home/gadelat/PhpstormProjects/symfony/src/Symfony/Component/HttpFoundation/Tests/ResponseFunctionalTest.php:49 ``` --- .../Tests/Fixtures/response-functional/common.inc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Symfony/Component/HttpFoundation/Tests/Fixtures/response-functional/common.inc b/src/Symfony/Component/HttpFoundation/Tests/Fixtures/response-functional/common.inc index ba101d357852d..f9c40a9a3c5e1 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Fixtures/response-functional/common.inc +++ b/src/Symfony/Component/HttpFoundation/Tests/Fixtures/response-functional/common.inc @@ -22,6 +22,10 @@ error_reporting(-1); ini_set('html_errors', 0); ini_set('display_errors', 1); +if (ini_get('xdebug.default_enable')) { + xdebug_disable(); +} + header_remove('X-Powered-By'); header('Content-Type: text/plain; charset=utf-8'); From ef0b5004f80af699d8991498783f70cb80aa3e71 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 25 May 2018 14:02:41 +0200 Subject: [PATCH 07/98] updated CHANGELOG for 2.8.41 --- CHANGELOG-2.8.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG-2.8.md b/CHANGELOG-2.8.md index 9f76090b789b7..522a83664793c 100644 --- a/CHANGELOG-2.8.md +++ b/CHANGELOG-2.8.md @@ -7,6 +7,15 @@ in 2.8 minor versions. To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v2.8.0...v2.8.1 +* 2.8.41 (2018-05-25) + + * bug #27359 [HttpFoundation] Fix perf issue during MimeTypeGuesser intialization (nicolas-grekas) + * security #cve-2018-11408 [SecurityBundle] Fail if security.http_utils cannot be configured + * security #cve-2018-11406 clear CSRF tokens when the user is logged out + * security #cve-2018-11385 Adding session authentication strategy to Guard to avoid session fixation + * security #cve-2018-11385 Adding session strategy to ALL listeners to avoid *any* possible fixation + * security #cve-2018-11386 [HttpFoundation] Break infinite loop in PdoSessionHandler when MySQL is in loose mode + * 2.8.40 (2018-05-21) * bug #26781 [Form] Fix precision of MoneyToLocalizedStringTransformer's divisions on transform() (syastrebov) From 786970f17d1a1c9c12bbf07ec0ac16c2cfd3360d Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 25 May 2018 14:02:50 +0200 Subject: [PATCH 08/98] updated VERSION for 2.8.41 --- src/Symfony/Component/HttpKernel/Kernel.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index 70038526fac48..d7ac3985b4457 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -59,12 +59,12 @@ abstract class Kernel implements KernelInterface, TerminableInterface protected $startTime; protected $loadClassCache; - const VERSION = '2.8.41-DEV'; + const VERSION = '2.8.41'; const VERSION_ID = 20841; const MAJOR_VERSION = 2; const MINOR_VERSION = 8; const RELEASE_VERSION = 41; - const EXTRA_VERSION = 'DEV'; + const EXTRA_VERSION = ''; const END_OF_MAINTENANCE = '11/2018'; const END_OF_LIFE = '11/2019'; From 37846d453a9ff12a2de1f46defb954a6bf14ac72 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 25 May 2018 14:30:40 +0200 Subject: [PATCH 09/98] bumped Symfony version to 2.8.42 --- src/Symfony/Component/HttpKernel/Kernel.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index d7ac3985b4457..0e298381b9b7f 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -59,12 +59,12 @@ abstract class Kernel implements KernelInterface, TerminableInterface protected $startTime; protected $loadClassCache; - const VERSION = '2.8.41'; - const VERSION_ID = 20841; + const VERSION = '2.8.42-DEV'; + const VERSION_ID = 20842; const MAJOR_VERSION = 2; const MINOR_VERSION = 8; - const RELEASE_VERSION = 41; - const EXTRA_VERSION = ''; + const RELEASE_VERSION = 42; + const EXTRA_VERSION = 'DEV'; const END_OF_MAINTENANCE = '11/2018'; const END_OF_LIFE = '11/2019'; From 99327a6153fda78c36c9a61232cd061edcdb7f7e Mon Sep 17 00:00:00 2001 From: Samuel ROZE Date: Fri, 25 May 2018 13:03:43 +0100 Subject: [PATCH 10/98] [Github] Update the pull-request template --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 94f0fabcc4676..b6f39741d9dbc 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,6 +1,6 @@ | Q | A | ------------- | --- -| Branch? | master for features / 2.7 up to 4.0 for bug fixes +| Branch? | master for features / 2.8 up to 4.1 for bug fixes | Bug fix? | yes/no | New feature? | yes/no | BC breaks? | no From 37e543329acee80edba3ead5e2ea53e42f2c8b5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Ostroluck=C3=BD?= Date: Thu, 24 May 2018 23:24:34 +0200 Subject: [PATCH 11/98] Default testsuite to latest PHPUnit 6.* Necessary to fix each() function deprecation calls introduced in PHP 7.2 --- phpunit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpunit b/phpunit index c0ffe8ddef9e9..f4b80ed064121 100755 --- a/phpunit +++ b/phpunit @@ -8,7 +8,7 @@ if (!file_exists(__DIR__.'/vendor/symfony/phpunit-bridge/bin/simple-phpunit')) { exit(1); } if (\PHP_VERSION_ID >= 70000 && !getenv('SYMFONY_PHPUNIT_VERSION')) { - putenv('SYMFONY_PHPUNIT_VERSION=6.0'); + putenv('SYMFONY_PHPUNIT_VERSION=6.5'); } putenv('SYMFONY_PHPUNIT_DIR='.__DIR__.'/.phpunit'); require __DIR__.'/vendor/symfony/phpunit-bridge/bin/simple-phpunit'; From 0a4a0c0bc95dbbbea443c048dd6c605a723eb5e3 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 25 May 2018 15:16:19 +0200 Subject: [PATCH 12/98] updated CHANGELOG for 3.4.11 --- CHANGELOG-3.4.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG-3.4.md b/CHANGELOG-3.4.md index 4b307918d34b4..37f4a76efce85 100644 --- a/CHANGELOG-3.4.md +++ b/CHANGELOG-3.4.md @@ -7,6 +7,19 @@ in 3.4 minor versions. To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v3.4.0...v3.4.1 +* 3.4.11 (2018-05-25) + + * bug #27364 [DI] Fix bad exception on uninitialized references to non-shared services (nicolas-grekas) + * bug #27359 [HttpFoundation] Fix perf issue during MimeTypeGuesser intialization (nicolas-grekas) + * security #cve-2018-11408 [SecurityBundle] Fail if security.http_utils cannot be configured + * security #cve-2018-11406 clear CSRF tokens when the user is logged out + * security #cve-2018-11385 migrating session for UsernamePasswordJsonAuthenticationListener + * security #cve-2018-11385 Adding session authentication strategy to Guard to avoid session fixation + * security #cve-2018-11385 Adding session strategy to ALL listeners to avoid *any* possible fixation + * security #cve-2018-11386 [HttpFoundation] Break infinite loop in PdoSessionHandler when MySQL is in loose mode + * bug #27341 [WebProfilerBundle] Fixed validator/dump trace CSS (yceruto) + * bug #27337 [FrameworkBundle] fix typo in CacheClearCommand (emilielorenzo) + * 3.4.10 (2018-05-21) * bug #27264 [Validator] Use strict type in URL validator (mimol91) From 136824a7491d2e41cc5fd1718184bdf61dddf80b Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 25 May 2018 15:16:28 +0200 Subject: [PATCH 13/98] updated VERSION for 3.4.11 --- src/Symfony/Component/HttpKernel/Kernel.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index 5e3b9a857827f..ca0f0b95c7a8c 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -67,12 +67,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private $requestStackSize = 0; private $resetServices = false; - const VERSION = '3.4.11-DEV'; + const VERSION = '3.4.11'; const VERSION_ID = 30411; const MAJOR_VERSION = 3; const MINOR_VERSION = 4; const RELEASE_VERSION = 11; - const EXTRA_VERSION = 'DEV'; + const EXTRA_VERSION = ''; const END_OF_MAINTENANCE = '11/2020'; const END_OF_LIFE = '11/2021'; From f918da98194f08fca2c07f86f6ec1c8b76b7448a Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 25 May 2018 15:32:08 +0200 Subject: [PATCH 14/98] bumped Symfony version to 3.4.12 --- src/Symfony/Component/HttpKernel/Kernel.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index ca0f0b95c7a8c..242016f7c0878 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -67,12 +67,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private $requestStackSize = 0; private $resetServices = false; - const VERSION = '3.4.11'; - const VERSION_ID = 30411; + const VERSION = '3.4.12-DEV'; + const VERSION_ID = 30412; const MAJOR_VERSION = 3; const MINOR_VERSION = 4; - const RELEASE_VERSION = 11; - const EXTRA_VERSION = ''; + const RELEASE_VERSION = 12; + const EXTRA_VERSION = 'DEV'; const END_OF_MAINTENANCE = '11/2020'; const END_OF_LIFE = '11/2021'; From 3b4d7ab56c1e3816f226d10bca72fdabc7170150 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Thu, 24 May 2018 16:05:16 +0200 Subject: [PATCH 15/98] [DI] never inline lazy services --- .../Compiler/InlineServiceDefinitionsPass.php | 6 +- .../Tests/Dumper/PhpDumperTest.php | 16 +++- .../Tests/Fixtures/includes/classes.php | 6 +- .../Fixtures/php/services_non_shared_lazy.php | 74 +++++++++++++++++++ 4 files changed, 96 insertions(+), 6 deletions(-) create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_non_shared_lazy.php diff --git a/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php b/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php index e84a49eb70a2e..d987f950d44d4 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php @@ -106,11 +106,15 @@ private function inlineArguments(ContainerBuilder $container, array $arguments, */ private function isInlineableDefinition(ContainerBuilder $container, $id, Definition $definition) { + if ($definition->isDeprecated() || $definition->isLazy() || $definition->isSynthetic()) { + return false; + } + if (!$definition->isShared() || ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope(false)) { return true; } - if ($definition->isDeprecated() || $definition->isPublic() || $definition->isLazy()) { + if ($definition->isPublic()) { return false; } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php b/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php index d59106fc3a4cf..e341a233b1165 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php @@ -11,7 +11,6 @@ namespace Symfony\Component\DependencyInjection\Tests\Dumper; -use DummyProxyDumper; use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Dumper\PhpDumper; @@ -278,6 +277,19 @@ public function testInlinedDefinitionReferencingServiceContainer() $this->assertStringEqualsFile(self::$fixturesPath.'/php/services13.php', $dumper->dump(), '->dump() dumps inline definitions which reference service_container'); } + public function testNonSharedLazyDefinitionReferences() + { + $container = new ContainerBuilder(); + $container->register('foo', 'stdClass')->setShared(false)->setLazy(true); + $container->register('bar', 'stdClass')->addArgument(new Reference('foo', ContainerBuilder::EXCEPTION_ON_INVALID_REFERENCE, false)); + $container->compile(); + + $dumper = new PhpDumper($container); + $dumper->setProxyDumper(new \DummyProxyDumper()); + + $this->assertStringEqualsFile(self::$fixturesPath.'/php/services_non_shared_lazy.php', $dumper->dump()); + } + public function testInitializePropertiesBeforeMethodCalls() { require_once self::$fixturesPath.'/includes/classes.php'; @@ -343,7 +355,7 @@ public function testCircularReferenceAllowanceForInlinedDefinitionsForLazyServic $dumper = new PhpDumper($container); - $dumper->setProxyDumper(new DummyProxyDumper()); + $dumper->setProxyDumper(new \DummyProxyDumper()); $dumper->dump(); $this->addToAssertionCount(1); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/includes/classes.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/includes/classes.php index 92db8f3c5ebfb..c805f7d721e66 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/includes/classes.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/includes/classes.php @@ -84,16 +84,16 @@ class DummyProxyDumper implements ProxyDumper { public function isProxyCandidate(Definition $definition) { - return false; + return $definition->isLazy(); } public function getProxyFactoryCode(Definition $definition, $id) { - return ''; + return " // lazy factory\n\n"; } public function getProxyCode(Definition $definition) { - return ''; + return "// proxy code\n"; } } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_non_shared_lazy.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_non_shared_lazy.php new file mode 100644 index 0000000000000..f1f8e8409e6f3 --- /dev/null +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_non_shared_lazy.php @@ -0,0 +1,74 @@ +services = + $this->scopedServices = + $this->scopeStacks = array(); + $this->scopes = array(); + $this->scopeChildren = array(); + $this->methodMap = array( + 'bar' => 'getBarService', + 'foo' => 'getFooService', + ); + + $this->aliases = array(); + } + + /** + * {@inheritdoc} + */ + public function compile() + { + throw new LogicException('You cannot compile a dumped frozen container.'); + } + + /** + * {@inheritdoc} + */ + public function isFrozen() + { + return true; + } + + /** + * Gets the public 'bar' shared service. + * + * @return \stdClass + */ + protected function getBarService() + { + return $this->services['bar'] = new \stdClass($this->get('foo')); + } + + /** + * Gets the public 'foo' service. + * + * @return \stdClass + */ + public function getFooService($lazyLoad = true) + { + // lazy factory + + return new \stdClass(); + } +} + +// proxy code From 3de52144afd993438e7d82bea2a1f23cf71f73ca Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Fri, 25 May 2018 16:06:48 +0200 Subject: [PATCH 16/98] bumped Symfony version to 4.0.12 --- src/Symfony/Component/HttpKernel/Kernel.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index 09a288d6225ba..a2d61965b890d 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -63,12 +63,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private $requestStackSize = 0; private $resetServices = false; - const VERSION = '4.0.11'; - const VERSION_ID = 40011; + const VERSION = '4.0.12-DEV'; + const VERSION_ID = 40012; const MAJOR_VERSION = 4; const MINOR_VERSION = 0; - const RELEASE_VERSION = 11; - const EXTRA_VERSION = ''; + const RELEASE_VERSION = 12; + const EXTRA_VERSION = 'DEV'; const END_OF_MAINTENANCE = '07/2018'; const END_OF_LIFE = '01/2019'; From 40e59a6415b1b03c77432eb9654a6f6ec09fe2f7 Mon Sep 17 00:00:00 2001 From: Javier Eguiluz Date: Wed, 23 May 2018 15:49:17 +0200 Subject: [PATCH 17/98] Add code of Conduct links in our README --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 16a7e1b489c4d..b9fc51b3cf964 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ Community * [Join the Symfony Community][11] and meet other members at the [Symfony events][12]. * [Get Symfony support][13] on Stack Overflow, Slack, IRC, etc. * Follow us on [GitHub][14], [Twitter][15] and [Facebook][16]. +* Read our [Code of Conduct][24] and meet the [CARE Team][25] Contributing ------------ @@ -72,3 +73,5 @@ Symfony development is sponsored by [SensioLabs][21], led by the [21]: https://sensiolabs.com [22]: https://symfony.com/doc/current/contributing/code/core_team.html [23]: https://github.com/symfony/symfony-demo +[24]: https://symfony.com/coc +[25]: https://symfony.com/doc/current/contributing/code_of_conduct/care_team.html From b7feef00aec39baa2c2c7b2fe7ce054e3ccaa3d8 Mon Sep 17 00:00:00 2001 From: kiler129 Date: Tue, 22 May 2018 22:00:46 -0500 Subject: [PATCH 18/98] [HttpKernel] reset kernel start time on reboot --- src/Symfony/Component/HttpKernel/Kernel.php | 12 ++++-------- .../Component/HttpKernel/Tests/KernelTest.php | 19 +++++++++++++++++-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index 5e3b9a857827f..9806e240f7965 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -87,18 +87,10 @@ public function __construct($environment, $debug) $this->debug = (bool) $debug; $this->rootDir = $this->getRootDir(); $this->name = $this->getName(); - - if ($this->debug) { - $this->startTime = microtime(true); - } } public function __clone() { - if ($this->debug) { - $this->startTime = microtime(true); - } - $this->booted = false; $this->container = null; $this->requestStackSize = 0; @@ -110,6 +102,10 @@ public function __clone() */ public function boot() { + if ($this->debug) { + $this->startTime = microtime(true); + } + if (true === $this->booted) { if (!$this->requestStackSize && $this->resetServices) { if ($this->container->has('services_resetter')) { diff --git a/src/Symfony/Component/HttpKernel/Tests/KernelTest.php b/src/Symfony/Component/HttpKernel/Tests/KernelTest.php index a16ac37deebce..628be627fd4b4 100644 --- a/src/Symfony/Component/HttpKernel/Tests/KernelTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/KernelTest.php @@ -901,6 +901,21 @@ public function testServicesResetter() $this->assertEquals(1, ResettableService::$counter); } + /** + * @group time-sensitive + */ + public function testKernelStartTimeIsResetWhileBootingAlreadyBootedKernel() + { + $kernel = $this->getKernelForTest(array('initializeBundles'), true); + $kernel->boot(); + $preReBoot = $kernel->getStartTime(); + + sleep(3600); //Intentionally large value to detect if ClockMock ever breaks + $kernel->boot(); + + $this->assertGreaterThan($preReBoot, $kernel->getStartTime()); + } + /** * Returns a mock for the BundleInterface. * @@ -970,10 +985,10 @@ protected function getKernel(array $methods = array(), array $bundles = array()) return $kernel; } - protected function getKernelForTest(array $methods = array()) + protected function getKernelForTest(array $methods = array(), $debug = false) { $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\Tests\Fixtures\KernelForTest') - ->setConstructorArgs(array('test', false)) + ->setConstructorArgs(array('test', $debug)) ->setMethods($methods) ->getMock(); $p = new \ReflectionProperty($kernel, 'rootDir'); From 9de5014b27feef6dc245b631b03911ca17fa40f3 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Fri, 25 May 2018 17:06:28 +0200 Subject: [PATCH 19/98] [HttpKernel] Dont reset start time when not needed --- src/Symfony/Component/HttpKernel/Kernel.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index 143006e4b1e7a..948c30a49544a 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -102,20 +102,22 @@ public function __clone() */ public function boot() { - if ($this->debug) { - $this->startTime = microtime(true); - } - if (true === $this->booted) { if (!$this->requestStackSize && $this->resetServices) { if ($this->container->has('services_resetter')) { $this->container->get('services_resetter')->reset(); } $this->resetServices = false; + if ($this->debug) { + $this->startTime = microtime(true); + } } return; } + if ($this->debug) { + $this->startTime = microtime(true); + } if ($this->debug && !isset($_ENV['SHELL_VERBOSITY']) && !isset($_SERVER['SHELL_VERBOSITY'])) { putenv('SHELL_VERBOSITY=3'); $_ENV['SHELL_VERBOSITY'] = 3; From 6fc7fdb182834a68987ca3fbea14abb1f4b972d6 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Fri, 25 May 2018 17:22:00 +0200 Subject: [PATCH 20/98] [HttpKernel] fix test --- src/Symfony/Component/HttpKernel/Tests/KernelTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/HttpKernel/Tests/KernelTest.php b/src/Symfony/Component/HttpKernel/Tests/KernelTest.php index 628be627fd4b4..7cde2ac5e2ef9 100644 --- a/src/Symfony/Component/HttpKernel/Tests/KernelTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/KernelTest.php @@ -911,7 +911,7 @@ public function testKernelStartTimeIsResetWhileBootingAlreadyBootedKernel() $preReBoot = $kernel->getStartTime(); sleep(3600); //Intentionally large value to detect if ClockMock ever breaks - $kernel->boot(); + $kernel->reboot(null); $this->assertGreaterThan($preReBoot, $kernel->getStartTime()); } From ca314889e7fb7a8b5c1f58ca489b9a22b7e71293 Mon Sep 17 00:00:00 2001 From: Maxime Steinhausser Date: Sat, 26 May 2018 11:34:32 +0200 Subject: [PATCH 21/98] [Serializer] Fix serializer tries to denormalize null values on nullable properties --- .../Normalizer/AbstractNormalizer.php | 6 ++++ .../NullableConstructorArgumentDummy.php | 32 +++++++++++++++++++ .../Normalizer/AbstractNormalizerTest.php | 12 +++++++ 3 files changed, 50 insertions(+) create mode 100644 src/Symfony/Component/Serializer/Tests/Fixtures/NullableConstructorArgumentDummy.php diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php index 74a133214f55b..cad6205dfb826 100644 --- a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php @@ -349,6 +349,12 @@ protected function instantiateObject(array &$data, $class, array &$context, \Ref } } elseif ($allowed && !$ignored && (isset($data[$key]) || array_key_exists($key, $data))) { $parameterData = $data[$key]; + if (null === $parameterData && $constructorParameter->allowsNull()) { + $params[] = null; + // Don't run set for a parameter passed to the constructor + unset($data[$key]); + continue; + } try { if (null !== $constructorParameter->getClass()) { if (!$this->serializer instanceof DenormalizerInterface) { diff --git a/src/Symfony/Component/Serializer/Tests/Fixtures/NullableConstructorArgumentDummy.php b/src/Symfony/Component/Serializer/Tests/Fixtures/NullableConstructorArgumentDummy.php new file mode 100644 index 0000000000000..616fab4ae8df0 --- /dev/null +++ b/src/Symfony/Component/Serializer/Tests/Fixtures/NullableConstructorArgumentDummy.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Serializer\Tests\Fixtures; + +class NullableConstructorArgumentDummy +{ + private $foo; + + public function __construct(?\stdClass $foo) + { + $this->foo = $foo; + } + + public function setFoo($foo) + { + $this->foo = 'this setter should not be called when using the constructor argument'; + } + + public function getFoo() + { + return $this->foo; + } +} diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractNormalizerTest.php index e07fb56bf5b7f..28edc05872710 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractNormalizerTest.php @@ -9,6 +9,7 @@ use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; use Symfony\Component\Serializer\Tests\Fixtures\AbstractNormalizerDummy; +use Symfony\Component\Serializer\Tests\Fixtures\NullableConstructorArgumentDummy; use Symfony\Component\Serializer\Tests\Fixtures\ProxyDummy; use Symfony\Component\Serializer\Tests\Fixtures\StaticConstructorDummy; use Symfony\Component\Serializer\Tests\Fixtures\StaticConstructorNormalizer; @@ -116,4 +117,15 @@ public function testObjectWithStaticConstructor() $this->assertEquals('baz', $dummy->quz); $this->assertNull($dummy->foo); } + + /** + * @requires PHP 7.1 + */ + public function testObjectWithNullableConstructorArgument() + { + $normalizer = new ObjectNormalizer(); + $dummy = $normalizer->denormalize(array('foo' => null), NullableConstructorArgumentDummy::class); + + $this->assertNull($dummy->getFoo()); + } } From e3412e6a6732093920b08e8b2b612d8c21ea979c Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Thu, 17 May 2018 09:59:56 -0400 Subject: [PATCH 22/98] Triggering RememberMe's loginFail() when token cannot be created --- .../Http/Firewall/RememberMeListener.php | 20 +++++++++- .../Tests/Firewall/RememberMeListenerTest.php | 37 +++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Security/Http/Firewall/RememberMeListener.php b/src/Symfony/Component/Security/Http/Firewall/RememberMeListener.php index fe670f3de1f38..d139e7a5facff 100644 --- a/src/Symfony/Component/Security/Http/Firewall/RememberMeListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/RememberMeListener.php @@ -68,7 +68,25 @@ public function handle(GetResponseEvent $event) } $request = $event->getRequest(); - if (null === $token = $this->rememberMeServices->autoLogin($request)) { + try { + if (null === $token = $this->rememberMeServices->autoLogin($request)) { + return; + } + } catch (AuthenticationException $e) { + if (null !== $this->logger) { + $this->logger->warning( + 'The token storage was not populated with remember-me token as the' + .' RememberMeServices was not able to create a token from the remember' + .' me information.', array('exception' => $e) + ); + } + + $this->rememberMeServices->loginFail($request); + + if (!$this->catchExceptions) { + throw $e; + } + return; } diff --git a/src/Symfony/Component/Security/Http/Tests/Firewall/RememberMeListenerTest.php b/src/Symfony/Component/Security/Http/Tests/Firewall/RememberMeListenerTest.php index 2249dcbd2059d..6fb7e3c5924fa 100644 --- a/src/Symfony/Component/Security/Http/Tests/Firewall/RememberMeListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/Firewall/RememberMeListenerTest.php @@ -143,6 +143,43 @@ public function testOnCoreSecurityIgnoresAuthenticationOptionallyRethrowsExcepti $listener->handle($event); } + public function testOnCoreSecurityAuthenticationExceptionDuringAutoLoginTriggersLoginFail() + { + list($listener, $tokenStorage, $service, $manager) = $this->getListener(); + + $tokenStorage + ->expects($this->once()) + ->method('getToken') + ->will($this->returnValue(null)) + ; + + $exception = new AuthenticationException('Authentication failed.'); + $service + ->expects($this->once()) + ->method('autoLogin') + ->will($this->throwException($exception)) + ; + + $service + ->expects($this->once()) + ->method('loginFail') + ; + + $manager + ->expects($this->never()) + ->method('authenticate') + ; + + $event = $this->getGetResponseEvent(); + $event + ->expects($this->once()) + ->method('getRequest') + ->will($this->returnValue(new Request())) + ; + + $listener->handle($event); + } + public function testOnCoreSecurity() { list($listener, $tokenStorage, $service, $manager) = $this->getListener(); From 9372e7a8136ab677b74c7a31a7a13b8ee1db10c5 Mon Sep 17 00:00:00 2001 From: Alexey Kopytko Date: Fri, 18 May 2018 18:18:34 +0900 Subject: [PATCH 23/98] [Process] Consider \"executable\" suffixes first on Windows --- .../Component/Process/ExecutableFinder.php | 2 +- .../Process/Tests/ExecutableFinderTest.php | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Process/ExecutableFinder.php b/src/Symfony/Component/Process/ExecutableFinder.php index 1ec6526d45efd..defa66de6b359 100644 --- a/src/Symfony/Component/Process/ExecutableFinder.php +++ b/src/Symfony/Component/Process/ExecutableFinder.php @@ -73,7 +73,7 @@ public function find($name, $default = null, array $extraDirs = array()) $suffixes = array(''); if ('\\' === DIRECTORY_SEPARATOR) { $pathExt = getenv('PATHEXT'); - $suffixes = array_merge($suffixes, $pathExt ? explode(PATH_SEPARATOR, $pathExt) : $this->suffixes); + $suffixes = array_merge($pathExt ? explode(PATH_SEPARATOR, $pathExt) : $this->suffixes, $suffixes); } foreach ($suffixes as $suffix) { foreach ($dirs as $dir) { diff --git a/src/Symfony/Component/Process/Tests/ExecutableFinderTest.php b/src/Symfony/Component/Process/Tests/ExecutableFinderTest.php index 3aaeb0fb88513..669e1b3eb6835 100644 --- a/src/Symfony/Component/Process/Tests/ExecutableFinderTest.php +++ b/src/Symfony/Component/Process/Tests/ExecutableFinderTest.php @@ -129,6 +129,36 @@ public function testFindProcessInOpenBasedir() $this->assertSamePath(PHP_BINARY, $result); } + /** + * @requires PHP 5.4 + */ + public function testFindBatchExecutableOnWindows() + { + if (ini_get('open_basedir')) { + $this->markTestSkipped('Cannot test when open_basedir is set'); + } + if ('\\' !== DIRECTORY_SEPARATOR) { + $this->markTestSkipped('Can be only tested on windows'); + } + + $target = tempnam(sys_get_temp_dir(), 'example-windows-executable'); + + touch($target); + touch($target.'.BAT'); + + $this->assertFalse(is_executable($target)); + + $this->setPath(sys_get_temp_dir()); + + $finder = new ExecutableFinder(); + $result = $finder->find(basename($target), false); + + unlink($target); + unlink($target.'.BAT'); + + $this->assertSamePath($target.'.BAT', $result); + } + private function assertSamePath($expected, $tested) { if ('\\' === DIRECTORY_SEPARATOR) { From 18f55feef85c51368549833a89bcb223cd433a37 Mon Sep 17 00:00:00 2001 From: Kamil Madejski Date: Wed, 18 Apr 2018 13:57:06 +0200 Subject: [PATCH 24/98] [HttpKernel] Set first trusted proxy as REMOTE_ADDR in InlineFragmentRenderer. --- .../HttpKernel/Fragment/InlineFragmentRenderer.php | 4 +++- .../Tests/Fragment/InlineFragmentRendererTest.php | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Fragment/InlineFragmentRenderer.php b/src/Symfony/Component/HttpKernel/Fragment/InlineFragmentRenderer.php index 17ed967fb51c3..76c8e95d79434 100644 --- a/src/Symfony/Component/HttpKernel/Fragment/InlineFragmentRenderer.php +++ b/src/Symfony/Component/HttpKernel/Fragment/InlineFragmentRenderer.php @@ -122,7 +122,9 @@ protected function createSubRequest($uri, Request $request) // Do nothing } - $server['REMOTE_ADDR'] = '127.0.0.1'; + $trustedProxies = Request::getTrustedProxies(); + $server['REMOTE_ADDR'] = $trustedProxies ? reset($trustedProxies) : '127.0.0.1'; + unset($server['HTTP_IF_MODIFIED_SINCE']); unset($server['HTTP_IF_NONE_MATCH']); diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php index 4c1d6a00c44c9..6ed3c86537602 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php @@ -56,6 +56,7 @@ public function testRenderWithObjectsAsAttributes() $subRequest->attributes->replace(array('object' => $object, '_format' => 'html', '_controller' => 'main_controller', '_locale' => 'en')); $subRequest->headers->set('x-forwarded-for', array('127.0.0.1')); $subRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1'); + $subRequest->server->set('REMOTE_ADDR', '1.1.1.1'); $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($subRequest)); @@ -84,7 +85,7 @@ public function testRenderWithTrustedHeaderDisabled() { Request::setTrustedHeaderName(Request::HEADER_CLIENT_IP, ''); - $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest(Request::create('/'))); + $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest(Request::create('/', 'GET', array(), array(), array(), array('REMOTE_ADDR' => '1.1.1.1')))); $this->assertSame('foo', $strategy->render('/', Request::create('/'))->getContent()); } @@ -168,6 +169,7 @@ public function testESIHeaderIsKeptInSubrequest() { $expectedSubRequest = Request::create('/'); $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"'); + $expectedSubRequest->server->set('REMOTE_ADDR', '1.1.1.1'); if (Request::getTrustedHeaderName(Request::HEADER_CLIENT_IP)) { $expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1')); @@ -193,7 +195,7 @@ public function testESIHeaderIsKeptInSubrequestWithTrustedHeaderDisabled() public function testHeadersPossiblyResultingIn304AreNotAssignedToSubrequest() { - $expectedSubRequest = Request::create('/'); + $expectedSubRequest = Request::create('/', 'GET', array(), array(), array(), array('REMOTE_ADDR' => '1.1.1.1')); if (Request::getTrustedHeaderName(Request::HEADER_CLIENT_IP)) { $expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1')); $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1'); From 92e3023195e4afeed0568a4e94adf2dc2453aa1a Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 28 May 2018 17:16:05 +0200 Subject: [PATCH 25/98] [HttpKernel] fix registering IDE links --- src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php | 3 --- src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml | 1 + .../WebProfilerBundle/Controller/ExceptionController.php | 1 + .../HttpKernel/EventListener/ExceptionListener.php | 6 ++++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php index 17c12686dad23..2a62d391a7b22 100644 --- a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php +++ b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php @@ -61,9 +61,6 @@ class FrameworkBundle extends Bundle { public function boot() { - if (!ini_get('xdebug.file_link_format') && !get_cfg_var('xdebug.file_link_format')) { - ini_set('xdebug.file_link_format', $this->container->getParameter('debug.file_link_format')); - } ErrorHandler::register(null, false)->throwAt($this->container->getParameter('debug.error_handler.throw_at'), true); if ($this->container->hasParameter('kernel.trusted_proxies')) { diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml index 565aef68fd45c..f6dd2bb9df630 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml @@ -74,6 +74,7 @@ %kernel.debug% %kernel.charset% + %debug.file_link_format% diff --git a/src/Symfony/Bundle/WebProfilerBundle/Controller/ExceptionController.php b/src/Symfony/Bundle/WebProfilerBundle/Controller/ExceptionController.php index f008b0b5284fc..2137477a5cf35 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Controller/ExceptionController.php +++ b/src/Symfony/Bundle/WebProfilerBundle/Controller/ExceptionController.php @@ -30,6 +30,7 @@ class ExceptionController protected $twig; protected $debug; protected $profiler; + private $fileLinkFormat; public function __construct(Profiler $profiler = null, Environment $twig, $debug, FileLinkFormatter $fileLinkFormat = null) { diff --git a/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php b/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php index 3dfa4cd8ea79a..4d8ad1e7e5971 100644 --- a/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php +++ b/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php @@ -36,13 +36,15 @@ class ExceptionListener implements EventSubscriberInterface protected $logger; protected $debug; private $charset; + private $fileLinkFormat; - public function __construct($controller, LoggerInterface $logger = null, $debug = false, $charset = null) + public function __construct($controller, LoggerInterface $logger = null, $debug = false, $charset = null, $fileLinkFormat = null) { $this->controller = $controller; $this->logger = $logger; $this->debug = $debug; $this->charset = $charset; + $this->fileLinkFormat = $fileLinkFormat; } public function onKernelException(GetResponseForExceptionEvent $event) @@ -123,7 +125,7 @@ protected function duplicateRequest(\Exception $exception, Request $request) $attributes = array( 'exception' => $exception = FlattenException::create($exception), '_controller' => $this->controller ?: function () use ($exception) { - $handler = new ExceptionHandler($this->debug, $this->charset); + $handler = new ExceptionHandler($this->debug, $this->charset, $this->fileLinkFormat); return new Response($handler->getHtml($exception), $exception->getStatusCode(), $exception->getHeaders()); }, From 479aa9074b40ef9cc01c5369681c30a81b832ceb Mon Sep 17 00:00:00 2001 From: Davide Borsatto Date: Tue, 29 May 2018 10:57:40 +0200 Subject: [PATCH 26/98] Change PHPDoc in ResponseHeaderBag::getCookies() to help IDEs --- src/Symfony/Component/HttpFoundation/ResponseHeaderBag.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/HttpFoundation/ResponseHeaderBag.php b/src/Symfony/Component/HttpFoundation/ResponseHeaderBag.php index a042328ca5229..c299c369288d6 100644 --- a/src/Symfony/Component/HttpFoundation/ResponseHeaderBag.php +++ b/src/Symfony/Component/HttpFoundation/ResponseHeaderBag.php @@ -160,7 +160,7 @@ public function removeCookie($name, $path = '/', $domain = null) * * @param string $format * - * @return array + * @return Cookie[] * * @throws \InvalidArgumentException When the $format is invalid */ From 09c660d45442c09bdcbe790652783f861bd3922f Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 30 May 2018 06:18:11 +0200 Subject: [PATCH 27/98] removed unneeded comments in tests --- .../Tests/OptionsResolver2Dot6Test.php | 64 ------------------- 1 file changed, 64 deletions(-) diff --git a/src/Symfony/Component/OptionsResolver/Tests/OptionsResolver2Dot6Test.php b/src/Symfony/Component/OptionsResolver/Tests/OptionsResolver2Dot6Test.php index ffa2872243981..aeaf019969840 100644 --- a/src/Symfony/Component/OptionsResolver/Tests/OptionsResolver2Dot6Test.php +++ b/src/Symfony/Component/OptionsResolver/Tests/OptionsResolver2Dot6Test.php @@ -29,10 +29,6 @@ protected function setUp() $this->resolver = new OptionsResolver(); } - //////////////////////////////////////////////////////////////////////////// - // resolve() - //////////////////////////////////////////////////////////////////////////// - /** * @expectedException \Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException * @expectedExceptionMessage The option "foo" does not exist. Defined options are: "a", "z". @@ -69,10 +65,6 @@ public function testResolveFailsFromLazyOption() $this->resolver->resolve(); } - //////////////////////////////////////////////////////////////////////////// - // setDefault()/hasDefault() - //////////////////////////////////////////////////////////////////////////// - public function testSetDefaultReturnsThis() { $this->assertSame($this->resolver, $this->resolver->setDefault('foo', 'bar')); @@ -115,10 +107,6 @@ public function testHasDefaultWithNullValue() $this->assertTrue($this->resolver->hasDefault('foo')); } - //////////////////////////////////////////////////////////////////////////// - // lazy setDefault() - //////////////////////////////////////////////////////////////////////////// - public function testSetLazyReturnsThis() { $this->assertSame($this->resolver, $this->resolver->setDefault('foo', function (Options $options) {})); @@ -232,10 +220,6 @@ public function testInvokeEachLazyOptionOnlyOnce() $this->assertSame(2, $calls); } - //////////////////////////////////////////////////////////////////////////// - // setRequired()/isRequired()/getRequiredOptions() - //////////////////////////////////////////////////////////////////////////// - public function testSetRequiredReturnsThis() { $this->assertSame($this->resolver, $this->resolver->setRequired('foo')); @@ -330,10 +314,6 @@ public function testGetRequiredOptions() $this->assertSame(array('foo', 'bar'), $this->resolver->getRequiredOptions()); } - //////////////////////////////////////////////////////////////////////////// - // isMissing()/getMissingOptions() - //////////////////////////////////////////////////////////////////////////// - public function testIsMissingIfNotSet() { $this->assertFalse($this->resolver->isMissing('foo')); @@ -373,10 +353,6 @@ public function testGetMissingOptions() $this->assertSame(array('bar'), $this->resolver->getMissingOptions()); } - //////////////////////////////////////////////////////////////////////////// - // setDefined()/isDefined()/getDefinedOptions() - //////////////////////////////////////////////////////////////////////////// - /** * @expectedException \Symfony\Component\OptionsResolver\Exception\AccessException */ @@ -474,10 +450,6 @@ public function testClearedOptionsAreNotDefined() $this->assertFalse($this->resolver->isDefined('foo')); } - //////////////////////////////////////////////////////////////////////////// - // setAllowedTypes() - //////////////////////////////////////////////////////////////////////////// - /** * @expectedException \Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException */ @@ -568,10 +540,6 @@ public function testResolveSucceedsIfInstanceOfClass() $this->assertNotEmpty($this->resolver->resolve()); } - //////////////////////////////////////////////////////////////////////////// - // addAllowedTypes() - //////////////////////////////////////////////////////////////////////////// - /** * @expectedException \Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException */ @@ -654,10 +622,6 @@ public function testAddAllowedTypesDoesNotOverwrite2() $this->assertNotEmpty($this->resolver->resolve()); } - //////////////////////////////////////////////////////////////////////////// - // setAllowedValues() - //////////////////////////////////////////////////////////////////////////// - /** * @expectedException \Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException */ @@ -809,10 +773,6 @@ function () { return false; }, $this->assertEquals(array('foo' => 'bar'), $this->resolver->resolve()); } - //////////////////////////////////////////////////////////////////////////// - // addAllowedValues() - //////////////////////////////////////////////////////////////////////////// - /** * @expectedException \Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException */ @@ -929,10 +889,6 @@ public function testResolveSucceedsIfAnyAddedClosureReturnsTrue2() $this->assertEquals(array('foo' => 'bar'), $this->resolver->resolve()); } - //////////////////////////////////////////////////////////////////////////// - // setNormalizer() - //////////////////////////////////////////////////////////////////////////// - public function testSetNormalizerReturnsThis() { $this->resolver->setDefault('foo', 'bar'); @@ -1184,10 +1140,6 @@ public function testNormalizerNotCalledForUnsetOptions() $this->assertEmpty($this->resolver->resolve()); } - //////////////////////////////////////////////////////////////////////////// - // setDefaults() - //////////////////////////////////////////////////////////////////////////// - public function testSetDefaultsReturnsThis() { $this->assertSame($this->resolver, $this->resolver->setDefaults(array('foo', 'bar'))); @@ -1222,10 +1174,6 @@ public function testFailIfSetDefaultsFromLazyOption() $this->resolver->resolve(); } - //////////////////////////////////////////////////////////////////////////// - // remove() - //////////////////////////////////////////////////////////////////////////// - public function testRemoveReturnsThis() { $this->resolver->setDefault('foo', 'bar'); @@ -1314,10 +1262,6 @@ public function testRemoveUnknownOptionIgnored() $this->assertNotNull($this->resolver->remove('foo')); } - //////////////////////////////////////////////////////////////////////////// - // clear() - //////////////////////////////////////////////////////////////////////////// - public function testClearReturnsThis() { $this->assertSame($this->resolver, $this->resolver->clear()); @@ -1404,10 +1348,6 @@ public function testClearOptionAndNormalizer() $this->assertEmpty($this->resolver->resolve()); } - //////////////////////////////////////////////////////////////////////////// - // ArrayAccess - //////////////////////////////////////////////////////////////////////////// - public function testArrayAccess() { $this->resolver->setDefault('default1', 0); @@ -1522,10 +1462,6 @@ public function testFailIfCyclicDependency() $this->resolver->resolve(); } - //////////////////////////////////////////////////////////////////////////// - // Countable - //////////////////////////////////////////////////////////////////////////// - public function testCount() { $this->resolver->setDefault('default', 0); From 28c8c85da1d5f93b141ab477c4f2a9761548f363 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 30 May 2018 06:26:49 +0200 Subject: [PATCH 28/98] removed unneeded comments in tests --- .../Component/OptionsResolver/Tests/OptionsResolverTest.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Symfony/Component/OptionsResolver/Tests/OptionsResolverTest.php b/src/Symfony/Component/OptionsResolver/Tests/OptionsResolverTest.php index f50911d374553..12dc77b3c6b1c 100644 --- a/src/Symfony/Component/OptionsResolver/Tests/OptionsResolverTest.php +++ b/src/Symfony/Component/OptionsResolver/Tests/OptionsResolverTest.php @@ -634,10 +634,6 @@ public function testResolveFailsIfNotInstanceOfClass() $this->resolver->resolve(); } - //////////////////////////////////////////////////////////////////////////// - // addAllowedTypes() - //////////////////////////////////////////////////////////////////////////// - /** * @expectedException \Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException */ From 8c62ecfad2001fe062559fd4a2f8893c31500411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 30 May 2018 07:26:26 +0200 Subject: [PATCH 29/98] CODEOWNERS: some more rules --- .github/CODEOWNERS | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index db1c2a8a6ff44..415464c40b9a8 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,3 +1,9 @@ +# Console +/src/Symfony/Component/Console/Logger/ConsoleLogger.php @dunglas +# DependencyInjection +/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php @dunglas +# HttpKernel +/src/Symfony/Component/HttpKernel/Log/Logger.php @dunglas # LDAP /src/Symfony/Component/Ldap/* @csarrazi # Lock @@ -5,6 +11,13 @@ # Messenger /src/Symfony/Bridge/Doctrine/Messenger/* @sroze /src/Symfony/Component/Messenger/* @sroze +# PropertyInfo +/src/Symfony/Component/PropertyInfo/* @dunglas +/src/Symfony/Bridge/Doctrine/PropertyInfo/* @dunglas +# Serializer +/src/Symfony/Component/Serializer/* @dunglas +# WebLink +/src/Symfony/Component/WebLink/* @dunglas # Workflow /src/Symfony/Bridge/Twig/Extension/WorkflowExtension.php @lyrixx /src/Symfony/Bridge/Twig/Tests/Extension/WorkflowExtensionTest.php @lyrixx From c09ca94a284817b2876f2e5b2d7ead002dd925a1 Mon Sep 17 00:00:00 2001 From: DonCallisto Date: Wed, 30 May 2018 11:57:41 +0200 Subject: [PATCH 30/98] Update UPGRADE-4.0.md This https://github.com/symfony/symfony/blob/3.4/src/Symfony/Component/Security/Guard/Firewall/GuardAuthenticationListener.php#L127 was not reported. --- UPGRADE-3.4.md | 3 +++ UPGRADE-4.0.md | 3 +++ src/Symfony/Component/Security/CHANGELOG.md | 2 ++ 3 files changed, 8 insertions(+) diff --git a/UPGRADE-3.4.md b/UPGRADE-3.4.md index 765e5cf467637..69dc6b000a945 100644 --- a/UPGRADE-3.4.md +++ b/UPGRADE-3.4.md @@ -344,6 +344,9 @@ Security * The `GuardAuthenticatorInterface` has been deprecated and will be removed in 4.0. Use `AuthenticatorInterface` instead. + + * When extending `AbstractGuardAuthenticator` it's deprecated to return `null` from `getCredentials()`. + Return `false` from `supports()` if no credentials available. SecurityBundle -------------- diff --git a/UPGRADE-4.0.md b/UPGRADE-4.0.md index 14dc6f07a6f8d..0e9e69ff80dcd 100644 --- a/UPGRADE-4.0.md +++ b/UPGRADE-4.0.md @@ -758,6 +758,9 @@ Security * The `GuardAuthenticatorInterface` interface has been removed. Use `AuthenticatorInterface` instead. + + * When extending `AbstractGuardAuthenticator` getCredentials() cannot return + `null` anymore, return false from `supports()` if no credentials available instead. SecurityBundle -------------- diff --git a/src/Symfony/Component/Security/CHANGELOG.md b/src/Symfony/Component/Security/CHANGELOG.md index bd1b7b59eb793..7ef21c03311a8 100644 --- a/src/Symfony/Component/Security/CHANGELOG.md +++ b/src/Symfony/Component/Security/CHANGELOG.md @@ -16,6 +16,8 @@ CHANGELOG * deprecated HTTP digest authentication * Added a new password encoder for the Argon2i hashing algorithm * deprecated `GuardAuthenticatorInterface` in favor of `AuthenticatorInterface` + * deprecated to return `null` from `getCredentials()` in classes that extend + `AbstractGuardAuthenticator`. Return `false` from `supports()` instead. 3.3.0 ----- From efe9beb1863f6a80fb975200c8dd6227d8f2befc Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Thu, 31 May 2018 12:02:37 +0200 Subject: [PATCH 31/98] [HttpKernel] Fix restoring trusted proxies in tests --- .../Tests/Processor/WebProcessorTest.php | 2 ++ .../HttpFoundation/Tests/RequestTest.php | 11 +------- .../ValidateRequestListenerTest.php | 5 ++++ .../Fragment/InlineFragmentRendererTest.php | 28 ++++++++++++++++--- .../Tests/HttpCache/HttpCacheTest.php | 2 ++ .../HttpKernel/Tests/HttpKernelTest.php | 2 ++ 6 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/Symfony/Bridge/Monolog/Tests/Processor/WebProcessorTest.php b/src/Symfony/Bridge/Monolog/Tests/Processor/WebProcessorTest.php index 51bddd1d9828c..6ce418d317319 100644 --- a/src/Symfony/Bridge/Monolog/Tests/Processor/WebProcessorTest.php +++ b/src/Symfony/Bridge/Monolog/Tests/Processor/WebProcessorTest.php @@ -49,6 +49,8 @@ public function testUseRequestClientIp() $this->assertEquals($server['REQUEST_METHOD'], $record['extra']['http_method']); $this->assertEquals($server['SERVER_NAME'], $record['extra']['server']); $this->assertEquals($server['HTTP_REFERER'], $record['extra']['referrer']); + + Request::setTrustedProxies(array()); } public function testCanBeConstructedWithExtraFields() diff --git a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php index 0080cf8ac530a..3b65bcc99c25d 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php @@ -20,6 +20,7 @@ class RequestTest extends TestCase { protected function tearDown() { + Request::setTrustedProxies(array()); Request::setTrustedHosts(array()); } @@ -750,8 +751,6 @@ public function testGetPort() )); $port = $request->getPort(); $this->assertEquals(80, $port, 'With only PROTO set and value is not recognized, getPort() defaults to 80.'); - - Request::setTrustedProxies(array()); } /** @@ -827,8 +826,6 @@ public function testGetClientIp($expected, $remoteAddr, $httpForwardedFor, $trus $request = $this->getRequestInstanceForClientIpTests($remoteAddr, $httpForwardedFor, $trustedProxies); $this->assertEquals($expected[0], $request->getClientIp()); - - Request::setTrustedProxies(array()); } /** @@ -839,8 +836,6 @@ public function testGetClientIps($expected, $remoteAddr, $httpForwardedFor, $tru $request = $this->getRequestInstanceForClientIpTests($remoteAddr, $httpForwardedFor, $trustedProxies); $this->assertEquals($expected, $request->getClientIps()); - - Request::setTrustedProxies(array()); } /** @@ -851,8 +846,6 @@ public function testGetClientIpsForwarded($expected, $remoteAddr, $httpForwarded $request = $this->getRequestInstanceForClientIpsForwardedTests($remoteAddr, $httpForwarded, $trustedProxies); $this->assertEquals($expected, $request->getClientIps()); - - Request::setTrustedProxies(array()); } public function getClientIpsForwardedProvider() @@ -975,8 +968,6 @@ public function testGetClientIpsWithAgreeingHeaders($httpForwarded, $httpXForwar $clientIps = $request->getClientIps(); - Request::setTrustedProxies(array()); - $this->assertSame($expectedIps, $clientIps); } diff --git a/src/Symfony/Component/HttpKernel/Tests/EventListener/ValidateRequestListenerTest.php b/src/Symfony/Component/HttpKernel/Tests/EventListener/ValidateRequestListenerTest.php index 55dc59e13f716..388f1b814bdf6 100644 --- a/src/Symfony/Component/HttpKernel/Tests/EventListener/ValidateRequestListenerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/EventListener/ValidateRequestListenerTest.php @@ -21,6 +21,11 @@ class ValidateRequestListenerTest extends TestCase { + protected function tearDown() + { + Request::setTrustedProxies(array()); + } + /** * @expectedException \Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException */ diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php index 6ed3c86537602..998b372181bb1 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php @@ -56,7 +56,6 @@ public function testRenderWithObjectsAsAttributes() $subRequest->attributes->replace(array('object' => $object, '_format' => 'html', '_controller' => 'main_controller', '_locale' => 'en')); $subRequest->headers->set('x-forwarded-for', array('127.0.0.1')); $subRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1'); - $subRequest->server->set('REMOTE_ADDR', '1.1.1.1'); $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($subRequest)); @@ -85,7 +84,7 @@ public function testRenderWithTrustedHeaderDisabled() { Request::setTrustedHeaderName(Request::HEADER_CLIENT_IP, ''); - $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest(Request::create('/', 'GET', array(), array(), array(), array('REMOTE_ADDR' => '1.1.1.1')))); + $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest(Request::create('/'))); $this->assertSame('foo', $strategy->render('/', Request::create('/'))->getContent()); } @@ -169,7 +168,6 @@ public function testESIHeaderIsKeptInSubrequest() { $expectedSubRequest = Request::create('/'); $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"'); - $expectedSubRequest->server->set('REMOTE_ADDR', '1.1.1.1'); if (Request::getTrustedHeaderName(Request::HEADER_CLIENT_IP)) { $expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1')); @@ -195,7 +193,7 @@ public function testESIHeaderIsKeptInSubrequestWithTrustedHeaderDisabled() public function testHeadersPossiblyResultingIn304AreNotAssignedToSubrequest() { - $expectedSubRequest = Request::create('/', 'GET', array(), array(), array(), array('REMOTE_ADDR' => '1.1.1.1')); + $expectedSubRequest = Request::create('/'); if (Request::getTrustedHeaderName(Request::HEADER_CLIENT_IP)) { $expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1')); $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1'); @@ -206,6 +204,28 @@ public function testHeadersPossiblyResultingIn304AreNotAssignedToSubrequest() $strategy->render('/', $request); } + public function testFirstTrustedProxyIsSetAsRemote() + { + $expectedSubRequest = Request::create('/'); + $expectedSubRequest->headers->set('Surrogate-Capability', 'abc="ESI/1.0"'); + $expectedSubRequest->server->set('REMOTE_ADDR', '1.1.1.1'); + + if (Request::getTrustedHeaderName(Request::HEADER_CLIENT_IP)) { + $expectedSubRequest->headers->set('x-forwarded-for', array('127.0.0.1')); + $expectedSubRequest->server->set('HTTP_X_FORWARDED_FOR', '127.0.0.1'); + } + + Request::setTrustedProxies(array('1.1.1.1')); + + $strategy = new InlineFragmentRenderer($this->getKernelExpectingRequest($expectedSubRequest)); + + $request = Request::create('/'); + $request->headers->set('Surrogate-Capability', 'abc="ESI/1.0"'); + $strategy->render('/', $request); + + Request::setTrustedProxies(array()); + } + /** * Creates a Kernel expecting a request equals to $request * Allows delta in comparison in case REQUEST_TIME changed by 1 second. diff --git a/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php b/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php index d6902f4880abf..41c2d57833769 100644 --- a/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php @@ -1315,6 +1315,8 @@ public function testHttpCacheIsSetAsATrustedProxy(array $existing, array $expect $this->request('GET', '/', array('REMOTE_ADDR' => '10.0.0.1')); $this->assertEquals($expected, Request::getTrustedProxies()); + + Request::setTrustedProxies(array()); } public function getTrustedProxyData() diff --git a/src/Symfony/Component/HttpKernel/Tests/HttpKernelTest.php b/src/Symfony/Component/HttpKernel/Tests/HttpKernelTest.php index 448dc10cf1185..22d9907e5cd9e 100644 --- a/src/Symfony/Component/HttpKernel/Tests/HttpKernelTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/HttpKernelTest.php @@ -291,6 +291,8 @@ public function testInconsistentClientIpsOnMasterRequests() $request->headers->set('X_FORWARDED_FOR', '3.3.3.3'); $kernel->handle($request, $kernel::MASTER_REQUEST, false); + + Request::setTrustedProxies(array()); } protected function getResolver($controller = null) From 146e01cb4442fbcb3b05dd8ae2569d9894374044 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Fri, 1 Jun 2018 14:37:16 +0200 Subject: [PATCH 32/98] [HttpKernel] fix session tracking in surrogate master requests --- .../HttpFoundation/Session/Session.php | 19 +++++++--- .../Session/SessionBagProxy.php | 14 +++++-- .../EventListener/AbstractSessionListener.php | 17 ++++++++- .../EventListener/SessionListenerTest.php | 38 ++++++++++++++++++- .../Component/HttpKernel/composer.json | 2 +- 5 files changed, 77 insertions(+), 13 deletions(-) diff --git a/src/Symfony/Component/HttpFoundation/Session/Session.php b/src/Symfony/Component/HttpFoundation/Session/Session.php index a46cffbb8dbd6..f0379c1697b82 100644 --- a/src/Symfony/Component/HttpFoundation/Session/Session.php +++ b/src/Symfony/Component/HttpFoundation/Session/Session.php @@ -29,7 +29,7 @@ class Session implements SessionInterface, \IteratorAggregate, \Countable private $flashName; private $attributeName; private $data = array(); - private $hasBeenStarted; + private $usageIndex = 0; /** * @param SessionStorageInterface $storage A SessionStorageInterface instance @@ -54,6 +54,8 @@ public function __construct(SessionStorageInterface $storage = null, AttributeBa */ public function start() { + ++$this->usageIndex; + return $this->storage->start(); } @@ -142,13 +144,13 @@ public function count() } /** - * @return bool + * @return int * * @internal */ - public function hasBeenStarted() + public function getUsageIndex() { - return $this->hasBeenStarted; + return $this->usageIndex; } /** @@ -158,6 +160,7 @@ public function hasBeenStarted() */ public function isEmpty() { + ++$this->usageIndex; foreach ($this->data as &$data) { if (!empty($data)) { return false; @@ -182,6 +185,8 @@ public function invalidate($lifetime = null) */ public function migrate($destroy = false, $lifetime = null) { + ++$this->usageIndex; + return $this->storage->regenerate($destroy, $lifetime); } @@ -190,6 +195,8 @@ public function migrate($destroy = false, $lifetime = null) */ public function save() { + ++$this->usageIndex; + $this->storage->save(); } @@ -230,6 +237,8 @@ public function setName($name) */ public function getMetadataBag() { + ++$this->usageIndex; + return $this->storage->getMetadataBag(); } @@ -238,7 +247,7 @@ public function getMetadataBag() */ public function registerBag(SessionBagInterface $bag) { - $this->storage->registerBag(new SessionBagProxy($bag, $this->data, $this->hasBeenStarted)); + $this->storage->registerBag(new SessionBagProxy($bag, $this->data, $this->usageIndex)); } /** diff --git a/src/Symfony/Component/HttpFoundation/Session/SessionBagProxy.php b/src/Symfony/Component/HttpFoundation/Session/SessionBagProxy.php index 307836d5f9461..88005ee092e2a 100644 --- a/src/Symfony/Component/HttpFoundation/Session/SessionBagProxy.php +++ b/src/Symfony/Component/HttpFoundation/Session/SessionBagProxy.php @@ -20,13 +20,13 @@ final class SessionBagProxy implements SessionBagInterface { private $bag; private $data; - private $hasBeenStarted; + private $usageIndex; - public function __construct(SessionBagInterface $bag, array &$data, &$hasBeenStarted) + public function __construct(SessionBagInterface $bag, array &$data, &$usageIndex) { $this->bag = $bag; $this->data = &$data; - $this->hasBeenStarted = &$hasBeenStarted; + $this->usageIndex = &$usageIndex; } /** @@ -34,6 +34,8 @@ public function __construct(SessionBagInterface $bag, array &$data, &$hasBeenSta */ public function getBag() { + ++$this->usageIndex; + return $this->bag; } @@ -42,6 +44,8 @@ public function getBag() */ public function isEmpty() { + ++$this->usageIndex; + return empty($this->data[$this->bag->getStorageKey()]); } @@ -58,7 +62,7 @@ public function getName() */ public function initialize(array &$array) { - $this->hasBeenStarted = true; + ++$this->usageIndex; $this->data[$this->bag->getStorageKey()] = &$array; $this->bag->initialize($array); @@ -77,6 +81,8 @@ public function getStorageKey() */ public function clear() { + ++$this->usageIndex; + return $this->bag->clear(); } } diff --git a/src/Symfony/Component/HttpKernel/EventListener/AbstractSessionListener.php b/src/Symfony/Component/HttpKernel/EventListener/AbstractSessionListener.php index dff29ee80b418..a54ca62d87b6c 100644 --- a/src/Symfony/Component/HttpKernel/EventListener/AbstractSessionListener.php +++ b/src/Symfony/Component/HttpKernel/EventListener/AbstractSessionListener.php @@ -14,6 +14,7 @@ use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\Event\FinishRequestEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -25,6 +26,8 @@ */ abstract class AbstractSessionListener implements EventSubscriberInterface { + private $sessionUsageStack = array(); + public function onKernelRequest(GetResponseEvent $event) { if (!$event->isMasterRequest()) { @@ -33,6 +36,7 @@ public function onKernelRequest(GetResponseEvent $event) $request = $event->getRequest(); $session = $this->getSession(); + $this->sessionUsageStack[] = $session instanceof Session ? $session->getUsageIndex() : null; if (null === $session || $request->hasSession()) { return; } @@ -50,7 +54,7 @@ public function onKernelResponse(FilterResponseEvent $event) return; } - if ($session->isStarted() || ($session instanceof Session && $session->hasBeenStarted())) { + if ($session instanceof Session ? $session->getUsageIndex() !== end($this->sessionUsageStack) : $session->isStarted()) { $event->getResponse() ->setPrivate() ->setMaxAge(0) @@ -58,12 +62,23 @@ public function onKernelResponse(FilterResponseEvent $event) } } + /** + * @internal + */ + public function onFinishRequest(FinishRequestEvent $event) + { + if ($event->isMasterRequest()) { + array_pop($this->sessionUsageStack); + } + } + public static function getSubscribedEvents() { return array( KernelEvents::REQUEST => array('onKernelRequest', 128), // low priority to come after regular response listeners, same as SaveSessionListener KernelEvents::RESPONSE => array('onKernelResponse', -1000), + KernelEvents::FINISH_REQUEST => array('onFinishRequest'), ); } diff --git a/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php b/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php index 34598363c8914..a6416e7f693df 100644 --- a/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php @@ -18,6 +18,7 @@ use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\Event\FinishRequestEvent; use Symfony\Component\HttpKernel\EventListener\AbstractSessionListener; use Symfony\Component\HttpKernel\EventListener\SessionListener; use Symfony\Component\HttpKernel\HttpKernelInterface; @@ -58,8 +59,7 @@ public function testSessionIsSet() public function testResponseIsPrivate() { $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock(); - $session->expects($this->once())->method('isStarted')->willReturn(false); - $session->expects($this->once())->method('hasBeenStarted')->willReturn(true); + $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1)); $container = new Container(); $container->set('session', $session); @@ -76,4 +76,38 @@ public function testResponseIsPrivate() $this->assertTrue($response->headers->hasCacheControlDirective('must-revalidate')); $this->assertSame('0', $response->headers->getCacheControlDirective('max-age')); } + + public function testSurrogateMasterRequestIsPublic() + { + $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock(); + $session->expects($this->exactly(4))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1, 1, 1)); + + $container = new Container(); + $container->set('session', $session); + + $listener = new SessionListener($container); + $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock(); + + $request = new Request(); + $response = new Response(); + $response->setCache(array('public' => true, 'max_age' => '30')); + $listener->onKernelRequest(new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST)); + $this->assertTrue($request->hasSession()); + + $subRequest = clone $request; + $this->assertSame($request->getSession(), $subRequest->getSession()); + $listener->onKernelRequest(new GetResponseEvent($kernel, $subRequest, HttpKernelInterface::MASTER_REQUEST)); + $listener->onKernelResponse(new FilterResponseEvent($kernel, $subRequest, HttpKernelInterface::MASTER_REQUEST, $response)); + $listener->onFinishRequest(new FinishRequestEvent($kernel, $subRequest, HttpKernelInterface::MASTER_REQUEST)); + + $this->assertFalse($response->headers->hasCacheControlDirective('private')); + $this->assertFalse($response->headers->hasCacheControlDirective('must-revalidate')); + $this->assertSame('30', $response->headers->getCacheControlDirective('max-age')); + + $listener->onKernelResponse(new FilterResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response)); + + $this->assertTrue($response->headers->hasCacheControlDirective('private')); + $this->assertTrue($response->headers->hasCacheControlDirective('must-revalidate')); + $this->assertSame('0', $response->headers->getCacheControlDirective('max-age')); + } } diff --git a/src/Symfony/Component/HttpKernel/composer.json b/src/Symfony/Component/HttpKernel/composer.json index 17c0544c62560..585ab5b37dbaa 100644 --- a/src/Symfony/Component/HttpKernel/composer.json +++ b/src/Symfony/Component/HttpKernel/composer.json @@ -18,7 +18,7 @@ "require": { "php": "^5.5.9|>=7.0.8", "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "^3.4.4|^4.0.4", + "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", "symfony/debug": "~2.8|~3.0|~4.0", "symfony/polyfill-ctype": "~1.8", "psr/log": "~1.0" From 11a14e001cde9c57a0cbd7df61ab6f7ba51ab596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Ostroluck=C3=BD?= Date: Sat, 2 Jun 2018 19:48:17 +0200 Subject: [PATCH 33/98] simple-phpunit: remove outdated appveryor workaround --- src/Symfony/Bridge/PhpUnit/bin/simple-phpunit | 24 +------------------ 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit b/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit index 59c7a1fe3565e..552d5abb36b5e 100755 --- a/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit +++ b/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit @@ -188,15 +188,6 @@ if ($components) { } } - // Fixes for colors support on appveyor - // See https://github.com/appveyor/ci/issues/373 - $colorFixes = array( - array("S\033[0m\033[0m\033[36m\033[1mS", "E\033[0m\033[0m\033[31m\033[1mE", "I\033[0m\033[0m\033[33m\033[1mI", "F\033[0m\033[0m\033[41m\033[37mF"), - array("SS", "EE", "II", "FF"), - ); - $colorFixes[0] = array_merge($colorFixes[0], $colorFixes[0]); - $colorFixes[1] = array_merge($colorFixes[1], $colorFixes[1]); - while ($runningProcs) { usleep(300000); $terminatedProcs = array(); @@ -212,20 +203,7 @@ if ($components) { foreach ($terminatedProcs as $component => $procStatus) { foreach (array('out', 'err') as $file) { $file = "$component/phpunit.std$file"; - - if ('\\' === DIRECTORY_SEPARATOR) { - $h = fopen($file, 'rb'); - while (false !== $line = fgets($h)) { - echo str_replace($colorFixes[0], $colorFixes[1], preg_replace( - '/(\033\[[0-9]++);([0-9]++m)(?:(.)(\033\[0m))?/', - "$1m\033[$2$3$4$4", - $line - )); - } - fclose($h); - } else { - readfile($file); - } + readfile($file); unlink($file); } From af0699012ae02accb11b4b3a8d5b3fee477ceb46 Mon Sep 17 00:00:00 2001 From: Aleksey Prilipko Date: Sun, 20 May 2018 12:18:30 +1000 Subject: [PATCH 34/98] bug #27299 [Cache] memcache connect should not add duplicate entries on sequential calls --- .../Component/Cache/Tests/Simple/MemcachedCacheTest.php | 9 +++++++++ src/Symfony/Component/Cache/Traits/MemcachedTrait.php | 6 +++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTest.php b/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTest.php index c4af891af7ba7..b46d7e443dd20 100644 --- a/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTest.php +++ b/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTest.php @@ -45,6 +45,15 @@ public function createSimpleCache($defaultLifetime = 0) return new MemcachedCache($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); } + public function testCreatePersistentConnectionShouldNotDupServerList() + { + $instance = MemcachedCache::createConnection('memcached://'.getenv('MEMCACHED_HOST'), array('persistent_id' => 'persistent')); + $this->assertCount(1, $instance->getServerList()); + + $instance = MemcachedCache::createConnection('memcached://'.getenv('MEMCACHED_HOST'), array('persistent_id' => 'persistent')); + $this->assertCount(1, $instance->getServerList()); + } + public function testOptions() { $client = MemcachedCache::createConnection(array(), array( diff --git a/src/Symfony/Component/Cache/Traits/MemcachedTrait.php b/src/Symfony/Component/Cache/Traits/MemcachedTrait.php index 9b877efb080a9..9148573694cf6 100644 --- a/src/Symfony/Component/Cache/Traits/MemcachedTrait.php +++ b/src/Symfony/Component/Cache/Traits/MemcachedTrait.php @@ -169,12 +169,12 @@ public static function createConnection($servers, array $options = array()) } if ($oldServers !== $newServers) { - // before resetting, ensure $servers is valid - $client->addServers($servers); $client->resetServerList(); + $client->addServers($servers); } + } else { + $client->addServers($servers); } - $client->addServers($servers); if (null !== $username || null !== $password) { if (!method_exists($client, 'setSaslAuthData')) { From 77b9f90a321a308d88148a3cc0ab06aa41d379d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Deruss=C3=A9?= Date: Wed, 23 May 2018 19:28:00 +0200 Subject: [PATCH 35/98] Remove released semaphore --- .../Component/Lock/Store/SemaphoreStore.php | 22 +++++++++------ .../Lock/Tests/Store/SemaphoreStoreTest.php | 28 +++++++++++++++++++ 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/src/Symfony/Component/Lock/Store/SemaphoreStore.php b/src/Symfony/Component/Lock/Store/SemaphoreStore.php index a6cc9ea8b9f1d..4e149e8deb81c 100644 --- a/src/Symfony/Component/Lock/Store/SemaphoreStore.php +++ b/src/Symfony/Component/Lock/Store/SemaphoreStore.php @@ -75,16 +75,20 @@ private function lock(Key $key, $blocking) return; } - $resource = sem_get(crc32($key)); + $keyId = crc32($key); + $resource = sem_get($keyId); - if (\PHP_VERSION_ID < 50601) { - if (!$blocking) { - throw new NotSupportedException(sprintf('The store "%s" does not supports non blocking locks.', get_class($this))); - } - - $acquired = sem_acquire($resource); + if (\PHP_VERSION_ID >= 50601) { + $acquired = @sem_acquire($resource, !$blocking); + } elseif (!$blocking) { + throw new NotSupportedException(sprintf('The store "%s" does not supports non blocking locks.', get_class($this))); } else { - $acquired = sem_acquire($resource, !$blocking); + $acquired = @sem_acquire($resource); + } + + while ($blocking && !$acquired) { + $resource = sem_get($keyId); + $acquired = @sem_acquire($resource); } if (!$acquired) { @@ -106,7 +110,7 @@ public function delete(Key $key) $resource = $key->getState(__CLASS__); - sem_release($resource); + sem_remove($resource); $key->removeState(__CLASS__); } diff --git a/src/Symfony/Component/Lock/Tests/Store/SemaphoreStoreTest.php b/src/Symfony/Component/Lock/Tests/Store/SemaphoreStoreTest.php index bb37ec1fe1a1b..23b90360bea77 100644 --- a/src/Symfony/Component/Lock/Tests/Store/SemaphoreStoreTest.php +++ b/src/Symfony/Component/Lock/Tests/Store/SemaphoreStoreTest.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Lock\Tests\Store; +use Symfony\Component\Lock\Key; use Symfony\Component\Lock\Store\SemaphoreStore; /** @@ -33,4 +34,31 @@ protected function getStore() return new SemaphoreStore(); } + + public function testResourceRemoval() + { + $initialCount = $this->getOpenedSemaphores(); + $store = new SemaphoreStore(); + $key = new Key(uniqid(__METHOD__, true)); + $store->waitAndSave($key); + + $this->assertGreaterThan($initialCount, $this->getOpenedSemaphores(), 'Semaphores should have been created'); + + $store->delete($key); + $this->assertEquals($initialCount, $this->getOpenedSemaphores(), 'All semaphores should be removed'); + } + + private function getOpenedSemaphores() + { + $lines = explode(PHP_EOL, trim(`ipcs -su`)); + if ('------ Semaphore Status --------' !== $lines[0]) { + throw new \Exception('Failed to extract list of opend semaphores. Expect a Semaphore status, got '.implode(PHP_EOL, $lines)); + } + list($key, $value) = explode(' = ', $lines[1]); + if ('used arrays' !== $key) { + throw new \Exception('Failed to extract list of opend semaphores. Expect a used arrays key, got '.implode(PHP_EOL, $lines)); + } + + return (int) $value; + } } From 67d4e6dd29d24093c9c81da104297c25f997cf08 Mon Sep 17 00:00:00 2001 From: Aleksey Prilipko Date: Wed, 30 May 2018 11:21:31 +1000 Subject: [PATCH 36/98] bug #27405 [Cache] TagAwareAdapter should not corrupt memcached connection in ascii mode --- .../Simple/MemcachedCacheTextModeTest.php | 25 +++++++++++++++++++ .../Component/Cache/Traits/MemcachedTrait.php | 23 ++++++++++++++--- 2 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTextModeTest.php diff --git a/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTextModeTest.php b/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTextModeTest.php new file mode 100644 index 0000000000000..43cadf9034846 --- /dev/null +++ b/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTextModeTest.php @@ -0,0 +1,25 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Cache\Tests\Simple; + +use Symfony\Component\Cache\Adapter\AbstractAdapter; +use Symfony\Component\Cache\Simple\MemcachedCache; + +class MemcachedCacheTextModeTest extends MemcachedCacheTest +{ + public function createSimpleCache($defaultLifetime = 0) + { + $client = AbstractAdapter::createConnection('memcached://'.getenv('MEMCACHED_HOST'), array('binary_protocol' => false)); + + return new MemcachedCache($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); + } +} diff --git a/src/Symfony/Component/Cache/Traits/MemcachedTrait.php b/src/Symfony/Component/Cache/Traits/MemcachedTrait.php index 9b877efb080a9..9f861cf5d29b6 100644 --- a/src/Symfony/Component/Cache/Traits/MemcachedTrait.php +++ b/src/Symfony/Component/Cache/Traits/MemcachedTrait.php @@ -198,7 +198,12 @@ protected function doSave(array $values, $lifetime) $lifetime += time(); } - return $this->checkResultCode($this->getClient()->setMulti($values, $lifetime)); + $encodedValues = array(); + foreach ($values as $key => $value) { + $encodedValues[rawurlencode($key)] = $value; + } + + return $this->checkResultCode($this->getClient()->setMulti($encodedValues, $lifetime)); } /** @@ -208,7 +213,16 @@ protected function doFetch(array $ids) { $unserializeCallbackHandler = ini_set('unserialize_callback_func', __CLASS__.'::handleUnserializeCallback'); try { - return $this->checkResultCode($this->getClient()->getMulti($ids)); + $encodedIds = array_map('rawurlencode', $ids); + + $encodedResult = $this->checkResultCode($this->getClient()->getMulti($encodedIds)); + + $result = array(); + foreach ($encodedResult as $key => $value) { + $result[rawurldecode($key)] = $value; + } + + return $result; } catch (\Error $e) { throw new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine()); } finally { @@ -221,7 +235,7 @@ protected function doFetch(array $ids) */ protected function doHave($id) { - return false !== $this->getClient()->get($id) || $this->checkResultCode(\Memcached::RES_SUCCESS === $this->client->getResultCode()); + return false !== $this->getClient()->get(rawurlencode($id)) || $this->checkResultCode(\Memcached::RES_SUCCESS === $this->client->getResultCode()); } /** @@ -230,7 +244,8 @@ protected function doHave($id) protected function doDelete(array $ids) { $ok = true; - foreach ($this->checkResultCode($this->getClient()->deleteMulti($ids)) as $result) { + $encodedIds = array_map('rawurlencode', $ids); + foreach ($this->checkResultCode($this->getClient()->deleteMulti($encodedIds)) as $result) { if (\Memcached::RES_SUCCESS !== $result && \Memcached::RES_NOTFOUND !== $result) { $ok = false; } From 6a0b75fb9b0e84fe217a9b0d8f35c1aea46007da Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 5 Jun 2018 10:24:18 +0200 Subject: [PATCH 37/98] Remove mentions of "beta" in composer.json files --- src/Symfony/Component/Security/Csrf/composer.json | 2 +- src/Symfony/Component/Security/composer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Security/Csrf/composer.json b/src/Symfony/Component/Security/Csrf/composer.json index 86bc9015c8fd9..7a42b37d35e78 100644 --- a/src/Symfony/Component/Security/Csrf/composer.json +++ b/src/Symfony/Component/Security/Csrf/composer.json @@ -25,7 +25,7 @@ "symfony/http-foundation": "^2.7.38|~3.3.13" }, "conflict": { - "symfony/http-foundation": "<2.7.38|~2.8,<2.8.31|~3.3,<3.3.13|~3.4,<3.4-beta5" + "symfony/http-foundation": "<2.7.38|~2.8,<2.8.31|~3.3,<3.3.13" }, "suggest": { "symfony/http-foundation": "For using the class SessionTokenStorage." diff --git a/src/Symfony/Component/Security/composer.json b/src/Symfony/Component/Security/composer.json index 1fb2494cb3619..3e3468feb8597 100644 --- a/src/Symfony/Component/Security/composer.json +++ b/src/Symfony/Component/Security/composer.json @@ -43,7 +43,7 @@ "symfony/ldap": "~2.8|~3.0.0" }, "conflict": { - "symfony/http-foundation": "~2.8,<2.8.31|~3.4,<3.4-beta5" + "symfony/http-foundation": "~2.8,<2.8.31" }, "suggest": { "symfony/form": "", From 7f9780b5dfaf2df83990a4e95af9f4191f8ff50a Mon Sep 17 00:00:00 2001 From: Pascal Montoya Date: Wed, 6 Jun 2018 10:34:52 +0200 Subject: [PATCH 38/98] Pass previous exception to FatalErrorException --- .../Component/Debug/Exception/ClassNotFoundException.php | 3 +++ src/Symfony/Component/Debug/Exception/FatalErrorException.php | 4 ++-- .../Component/Debug/Exception/UndefinedFunctionException.php | 3 +++ .../Component/Debug/Exception/UndefinedMethodException.php | 3 +++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Debug/Exception/ClassNotFoundException.php b/src/Symfony/Component/Debug/Exception/ClassNotFoundException.php index b91bf46631bbb..de5c45644363b 100644 --- a/src/Symfony/Component/Debug/Exception/ClassNotFoundException.php +++ b/src/Symfony/Component/Debug/Exception/ClassNotFoundException.php @@ -26,6 +26,9 @@ public function __construct($message, \ErrorException $previous) $previous->getSeverity(), $previous->getFile(), $previous->getLine(), + null, + true, + null, $previous->getPrevious() ); $this->setTrace($previous->getTrace()); diff --git a/src/Symfony/Component/Debug/Exception/FatalErrorException.php b/src/Symfony/Component/Debug/Exception/FatalErrorException.php index db2fb43bbceb5..3fd7c45fdbf95 100644 --- a/src/Symfony/Component/Debug/Exception/FatalErrorException.php +++ b/src/Symfony/Component/Debug/Exception/FatalErrorException.php @@ -35,9 +35,9 @@ class FatalErrorException extends \ErrorException */ class FatalErrorException extends LegacyFatalErrorException { - public function __construct($message, $code, $severity, $filename, $lineno, $traceOffset = null, $traceArgs = true, array $trace = null) + public function __construct($message, $code, $severity, $filename, $lineno, $traceOffset = null, $traceArgs = true, array $trace = null, $previous = null) { - parent::__construct($message, $code, $severity, $filename, $lineno); + parent::__construct($message, $code, $severity, $filename, $lineno, $previous); if (null !== $trace) { if (!$traceArgs) { diff --git a/src/Symfony/Component/Debug/Exception/UndefinedFunctionException.php b/src/Symfony/Component/Debug/Exception/UndefinedFunctionException.php index a66ae2a3879c9..8f5f454e55d99 100644 --- a/src/Symfony/Component/Debug/Exception/UndefinedFunctionException.php +++ b/src/Symfony/Component/Debug/Exception/UndefinedFunctionException.php @@ -26,6 +26,9 @@ public function __construct($message, \ErrorException $previous) $previous->getSeverity(), $previous->getFile(), $previous->getLine(), + null, + true, + null, $previous->getPrevious() ); $this->setTrace($previous->getTrace()); diff --git a/src/Symfony/Component/Debug/Exception/UndefinedMethodException.php b/src/Symfony/Component/Debug/Exception/UndefinedMethodException.php index 350dc3187f475..f7e340baf4dc6 100644 --- a/src/Symfony/Component/Debug/Exception/UndefinedMethodException.php +++ b/src/Symfony/Component/Debug/Exception/UndefinedMethodException.php @@ -26,6 +26,9 @@ public function __construct($message, \ErrorException $previous) $previous->getSeverity(), $previous->getFile(), $previous->getLine(), + null, + true, + null, $previous->getPrevious() ); $this->setTrace($previous->getTrace()); From c6acad719dfb93fe7785838ada7640cc51765979 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 6 Jun 2018 11:42:07 +0200 Subject: [PATCH 39/98] Revert "bug #26138 [HttpKernel] Catch HttpExceptions when templating is not installed (cilefen)" This reverts commit b213c5a758bc8b02375bd388b52b351c7e862f6a, reversing changes made to 61af0e3a25fbb2d169999a5b550c1f1801f1c0de. --- .../FrameworkBundle/Resources/config/web.xml | 10 ---------- .../EventListener/ExceptionListener.php | 16 +++------------- .../EventListener/ExceptionListenerTest.php | 17 ----------------- 3 files changed, 3 insertions(+), 40 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml index f6dd2bb9df630..0622c4196c104 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml @@ -67,16 +67,6 @@ - - - - null - - %kernel.debug% - %kernel.charset% - %debug.file_link_format% - - diff --git a/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php b/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php index 4d8ad1e7e5971..f18e42c7d3693 100644 --- a/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php +++ b/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php @@ -12,11 +12,9 @@ namespace Symfony\Component\HttpKernel\EventListener; use Psr\Log\LoggerInterface; -use Symfony\Component\Debug\ExceptionHandler; use Symfony\Component\Debug\Exception\FlattenException; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; use Symfony\Component\HttpKernel\Log\DebugLoggerInterface; use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; @@ -35,16 +33,12 @@ class ExceptionListener implements EventSubscriberInterface protected $controller; protected $logger; protected $debug; - private $charset; - private $fileLinkFormat; - public function __construct($controller, LoggerInterface $logger = null, $debug = false, $charset = null, $fileLinkFormat = null) + public function __construct($controller, LoggerInterface $logger = null, $debug = false) { $this->controller = $controller; $this->logger = $logger; $this->debug = $debug; - $this->charset = $charset; - $this->fileLinkFormat = $fileLinkFormat; } public function onKernelException(GetResponseForExceptionEvent $event) @@ -123,12 +117,8 @@ protected function logException(\Exception $exception, $message) protected function duplicateRequest(\Exception $exception, Request $request) { $attributes = array( - 'exception' => $exception = FlattenException::create($exception), - '_controller' => $this->controller ?: function () use ($exception) { - $handler = new ExceptionHandler($this->debug, $this->charset, $this->fileLinkFormat); - - return new Response($handler->getHtml($exception), $exception->getStatusCode(), $exception->getHeaders()); - }, + '_controller' => $this->controller, + 'exception' => FlattenException::create($exception), 'logger' => $this->logger instanceof DebugLoggerInterface ? $this->logger : null, ); $request = $request->duplicate(null, null, $attributes); diff --git a/src/Symfony/Component/HttpKernel/Tests/EventListener/ExceptionListenerTest.php b/src/Symfony/Component/HttpKernel/Tests/EventListener/ExceptionListenerTest.php index b607bf900ae91..3cb0b298bb07a 100644 --- a/src/Symfony/Component/HttpKernel/Tests/EventListener/ExceptionListenerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/EventListener/ExceptionListenerTest.php @@ -151,23 +151,6 @@ public function testCSPHeaderIsRemoved() $this->assertFalse($response->headers->has('content-security-policy'), 'CSP header has been removed'); $this->assertFalse($dispatcher->hasListeners(KernelEvents::RESPONSE), 'CSP removal listener has been removed'); } - - public function testNullController() - { - $listener = new ExceptionListener(null); - $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(); - $kernel->expects($this->once())->method('handle')->will($this->returnCallback(function (Request $request) { - $controller = $request->attributes->get('_controller'); - - return $controller(); - })); - $request = Request::create('/'); - $event = new GetResponseForExceptionEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, new \Exception('foo')); - - $listener->onKernelException($event); - - $this->assertContains('Whoops, looks like something went wrong.', $event->getResponse()->getContent()); - } } class TestLogger extends Logger implements DebugLoggerInterface From 725d774a165dcb71be5535d014097bae1a295e75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phan=20Kochen?= Date: Thu, 7 Jun 2018 10:48:34 +0200 Subject: [PATCH 40/98] Fix security-core cross-dependencies, fixes #27507 --- src/Symfony/Bundle/FrameworkBundle/composer.json | 2 +- src/Symfony/Component/Security/Csrf/composer.json | 2 +- src/Symfony/Component/Security/Guard/composer.json | 2 +- src/Symfony/Component/Security/Http/composer.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/composer.json b/src/Symfony/Bundle/FrameworkBundle/composer.json index 06bd65eae4746..7742d5ca58efb 100644 --- a/src/Symfony/Bundle/FrameworkBundle/composer.json +++ b/src/Symfony/Bundle/FrameworkBundle/composer.json @@ -29,7 +29,7 @@ "symfony/polyfill-mbstring": "~1.0", "symfony/filesystem": "~2.3|~3.0.0", "symfony/routing": "^2.8.17", - "symfony/security-core": "~2.6.13|~2.7.9|~2.8|~3.0.0", + "symfony/security-core": "^2.8.41|^3.3.17", "symfony/security-csrf": "^2.8.31|^3.3.13", "symfony/stopwatch": "~2.3|~3.0.0", "symfony/templating": "~2.7|~3.0.0", diff --git a/src/Symfony/Component/Security/Csrf/composer.json b/src/Symfony/Component/Security/Csrf/composer.json index 7a42b37d35e78..a015c5299118a 100644 --- a/src/Symfony/Component/Security/Csrf/composer.json +++ b/src/Symfony/Component/Security/Csrf/composer.json @@ -19,7 +19,7 @@ "php": ">=5.3.9", "symfony/polyfill-php56": "~1.0", "symfony/polyfill-php70": "~1.0", - "symfony/security-core": "~2.4|~3.0.0" + "symfony/security-core": "^2.8.41|^3.3.17" }, "require-dev": { "symfony/http-foundation": "^2.7.38|~3.3.13" diff --git a/src/Symfony/Component/Security/Guard/composer.json b/src/Symfony/Component/Security/Guard/composer.json index 35c7456638ea8..5f627c1ae07b8 100644 --- a/src/Symfony/Component/Security/Guard/composer.json +++ b/src/Symfony/Component/Security/Guard/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=5.3.9", - "symfony/security-core": "~2.8|~3.0.0", + "symfony/security-core": "^2.8.41|^3.3.17", "symfony/security-http": "^2.8.31|^3.3.13" }, "require-dev": { diff --git a/src/Symfony/Component/Security/Http/composer.json b/src/Symfony/Component/Security/Http/composer.json index c3e4da18b5b83..925c3da0eab7a 100644 --- a/src/Symfony/Component/Security/Http/composer.json +++ b/src/Symfony/Component/Security/Http/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": ">=5.3.9", - "symfony/security-core": "^2.8.6", + "symfony/security-core": "^2.8.41", "symfony/event-dispatcher": "~2.1|~3.0.0", "symfony/http-foundation": "~2.4|~3.0.0", "symfony/http-kernel": "~2.4|~3.0.0", From 974991f8c69e54cf46a43f4d49deb2cf6d69f3fe Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Thu, 7 Jun 2018 22:45:56 +0200 Subject: [PATCH 41/98] [FrameworkBundle] remove dead code in CachePoolClearerPass --- .../Compiler/CachePoolClearerPass.php | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolClearerPass.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolClearerPass.php index 094712ded69d3..bd6908b9c4507 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolClearerPass.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolClearerPass.php @@ -11,7 +11,6 @@ namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler; -use Symfony\Component\Cache\Adapter\AbstractAdapter; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Reference; @@ -38,22 +37,5 @@ public function process(ContainerBuilder $container) } $clearer->replaceArgument(0, $pools); } - - if (!$container->has('cache.annotations')) { - return; - } - $factory = array(AbstractAdapter::class, 'createSystemCache'); - $annotationsPool = $container->findDefinition('cache.annotations'); - if ($factory !== $annotationsPool->getFactory() || 4 !== count($annotationsPool->getArguments())) { - return; - } - if ($container->has('monolog.logger.cache')) { - $annotationsPool->addArgument(new Reference('monolog.logger.cache')); - } elseif ($container->has('cache.system')) { - $systemPool = $container->findDefinition('cache.system'); - if ($factory === $systemPool->getFactory() && 5 <= count($systemArgs = $systemPool->getArguments())) { - $annotationsPool->addArgument($systemArgs[4]); - } - } } } From a74ee8d594eca15d5c1ebe9f7822b98410e50086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tarmo=20Lepp=C3=A4nen?= Date: Thu, 7 Jun 2018 20:53:17 +0300 Subject: [PATCH 42/98] Update Finder.php Corrected return type which causes following error with (psalm)[https://getpsalm.org/] ``` ERROR: PossiblyInvalidArgument - src/Command/Utils/CheckVendorDependencies.php:170:62 - Argument 1 of iterator_to_array expects Traversable, possibly different type array|Iterator provided $directories = array_map($closure, iterator_to_array($finder->getIterator())); ``` --- src/Symfony/Component/Finder/Finder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Finder/Finder.php b/src/Symfony/Component/Finder/Finder.php index 0c039ae6666d0..f20a621ee9bef 100644 --- a/src/Symfony/Component/Finder/Finder.php +++ b/src/Symfony/Component/Finder/Finder.php @@ -668,7 +668,7 @@ public function in($dirs) * * This method implements the IteratorAggregate interface. * - * @return \Iterator|SplFileInfo[] An iterator + * @return \Iterator|\SplFileInfo[] An iterator * * @throws \LogicException if the in() method has not been called */ From 8fd4b441c4f5f0e4309d68d2a5e673bd68560764 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Fri, 8 Jun 2018 09:55:24 +0200 Subject: [PATCH 43/98] revert #27545 The SplFileInfo class indeed does exist in the Symfony\Component\Finder namespace. --- src/Symfony/Component/Finder/Finder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Finder/Finder.php b/src/Symfony/Component/Finder/Finder.php index f20a621ee9bef..0c039ae6666d0 100644 --- a/src/Symfony/Component/Finder/Finder.php +++ b/src/Symfony/Component/Finder/Finder.php @@ -668,7 +668,7 @@ public function in($dirs) * * This method implements the IteratorAggregate interface. * - * @return \Iterator|\SplFileInfo[] An iterator + * @return \Iterator|SplFileInfo[] An iterator * * @throws \LogicException if the in() method has not been called */ From 9786ec8e193942287b94b0888e669a2ffa4c58f1 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Fri, 8 Jun 2018 11:29:49 +0200 Subject: [PATCH 44/98] [Cache][Security] Use Throwable where possible --- .../Component/Cache/Adapter/PhpArrayAdapter.php | 10 ++-------- .../Component/Cache/Simple/PhpArrayCache.php | 17 ++++++----------- .../Component/Cache/Traits/ApcuTrait.php | 14 ++++++-------- .../Config/ResourceCheckerConfigCache.php | 14 +++++++------- .../Security/Http/Firewall/ContextListener.php | 3 +-- 5 files changed, 22 insertions(+), 36 deletions(-) diff --git a/src/Symfony/Component/Cache/Adapter/PhpArrayAdapter.php b/src/Symfony/Component/Cache/Adapter/PhpArrayAdapter.php index ca5ef743d2285..02b12b237114d 100644 --- a/src/Symfony/Component/Cache/Adapter/PhpArrayAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/PhpArrayAdapter.php @@ -99,12 +99,8 @@ public function getItem($key) $value = null; } elseif (\is_string($value) && isset($value[2]) && ':' === $value[1]) { try { - $e = null; $value = unserialize($value); - } catch (\Error $e) { - } catch (\Exception $e) { - } - if (null !== $e) { + } catch (\Throwable $e) { $value = null; $isHit = false; } @@ -238,9 +234,7 @@ private function generateItems(array $keys): \Generator } elseif (\is_string($value) && isset($value[2]) && ':' === $value[1]) { try { yield $key => $f($key, unserialize($value), true); - } catch (\Error $e) { - yield $key => $f($key, null, false); - } catch (\Exception $e) { + } catch (\Throwable $e) { yield $key => $f($key, null, false); } } else { diff --git a/src/Symfony/Component/Cache/Simple/PhpArrayCache.php b/src/Symfony/Component/Cache/Simple/PhpArrayCache.php index 3feb9f0b1a004..64dc776f74a31 100644 --- a/src/Symfony/Component/Cache/Simple/PhpArrayCache.php +++ b/src/Symfony/Component/Cache/Simple/PhpArrayCache.php @@ -74,15 +74,12 @@ public function get($key, $default = null) $value = $this->values[$key]; if ('N;' === $value) { - $value = null; - } elseif (\is_string($value) && isset($value[2]) && ':' === $value[1]) { + return null; + } + if (\is_string($value) && isset($value[2]) && ':' === $value[1]) { try { - $e = null; - $value = unserialize($value); - } catch (\Error $e) { - } catch (\Exception $e) { - } - if (null !== $e) { + return unserialize($value); + } catch (\Throwable $e) { return $default; } } @@ -235,9 +232,7 @@ private function generateItems(array $keys, $default) } elseif (\is_string($value) && isset($value[2]) && ':' === $value[1]) { try { yield $key => unserialize($value); - } catch (\Error $e) { - yield $key => $default; - } catch (\Exception $e) { + } catch (\Throwable $e) { yield $key => $default; } } else { diff --git a/src/Symfony/Component/Cache/Traits/ApcuTrait.php b/src/Symfony/Component/Cache/Traits/ApcuTrait.php index fe7dfbab7d8c0..cec621b868f49 100644 --- a/src/Symfony/Component/Cache/Traits/ApcuTrait.php +++ b/src/Symfony/Component/Cache/Traits/ApcuTrait.php @@ -103,15 +103,13 @@ protected function doSave(array $values, $lifetime) } return array_keys($failures); - } catch (\Error $e) { - } catch (\Exception $e) { - } + } catch (\Throwable $e) { + if (1 === count($values)) { + // Workaround https://github.com/krakjoe/apcu/issues/170 + apcu_delete(key($values)); + } - if (1 === count($values)) { - // Workaround https://github.com/krakjoe/apcu/issues/170 - apcu_delete(key($values)); + throw $e; } - - throw $e; } } diff --git a/src/Symfony/Component/Config/ResourceCheckerConfigCache.php b/src/Symfony/Component/Config/ResourceCheckerConfigCache.php index ebacb7a4c0be9..6f64c4abcd66f 100644 --- a/src/Symfony/Component/Config/ResourceCheckerConfigCache.php +++ b/src/Symfony/Component/Config/ResourceCheckerConfigCache.php @@ -168,13 +168,13 @@ private function safelyUnserialize($file) try { $meta = unserialize(file_get_contents($file)); - } catch (\Error $e) { - } catch (\Exception $e) { - } - restore_error_handler(); - ini_set('unserialize_callback_func', $prevUnserializeHandler); - if (null !== $e && $e !== $signalingException) { - throw $e; + } catch (\Throwable $e) { + if ($e !== $signalingException) { + throw $e; + } + } finally { + restore_error_handler(); + ini_set('unserialize_callback_func', $prevUnserializeHandler); } return $meta; diff --git a/src/Symfony/Component/Security/Http/Firewall/ContextListener.php b/src/Symfony/Component/Security/Http/Firewall/ContextListener.php index 6486f0eaf6085..7d3b960a1402a 100644 --- a/src/Symfony/Component/Security/Http/Firewall/ContextListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/ContextListener.php @@ -224,8 +224,7 @@ private function safelyUnserialize($serializedToken) try { $token = unserialize($serializedToken); - } catch (\Error $e) { - } catch (\Exception $e) { + } catch (\Throwable $e) { } restore_error_handler(); ini_set('unserialize_callback_func', $prevUnserializeHandler); From 847abd3ec98d82b2c0496e5c7657662ecd95c9ea Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Sat, 9 Jun 2018 00:30:30 +0200 Subject: [PATCH 45/98] [FrameworkBundle] decouple some cache-warmer's test from internal details --- .../CacheWarmer/SerializerCacheWarmerTest.php | 15 ++++------- .../CacheWarmer/ValidatorCacheWarmerTest.php | 26 +++++++------------ 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/SerializerCacheWarmerTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/SerializerCacheWarmerTest.php index e5df7b8c8a7cc..86aee6e0cc354 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/SerializerCacheWarmerTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/SerializerCacheWarmerTest.php @@ -14,6 +14,8 @@ use Symfony\Bundle\FrameworkBundle\CacheWarmer\SerializerCacheWarmer; use Symfony\Bundle\FrameworkBundle\Tests\TestCase; use Symfony\Component\Cache\Adapter\ArrayAdapter; +use Symfony\Component\Cache\Adapter\NullAdapter; +use Symfony\Component\Cache\Adapter\PhpArrayAdapter; use Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory; use Symfony\Component\Serializer\Mapping\Loader\XmlFileLoader; use Symfony\Component\Serializer\Mapping\Loader\YamlFileLoader; @@ -41,12 +43,10 @@ public function testWarmUp() $this->assertFileExists($file); - $values = require $file; + $arrayPool = new PhpArrayAdapter($file, new NullAdapter()); - $this->assertInternalType('array', $values); - $this->assertCount(2, $values); - $this->assertArrayHasKey('Symfony_Bundle_FrameworkBundle_Tests_Fixtures_Serialization_Person', $values); - $this->assertArrayHasKey('Symfony_Bundle_FrameworkBundle_Tests_Fixtures_Serialization_Author', $values); + $this->assertTrue($arrayPool->getItem('Symfony_Bundle_FrameworkBundle_Tests_Fixtures_Serialization_Person')->isHit()); + $this->assertTrue($arrayPool->getItem('Symfony_Bundle_FrameworkBundle_Tests_Fixtures_Serialization_Author')->isHit()); $values = $fallbackPool->getValues(); @@ -72,11 +72,6 @@ public function testWarmUpWithoutLoader() $this->assertFileExists($file); - $values = require $file; - - $this->assertInternalType('array', $values); - $this->assertCount(0, $values); - $values = $fallbackPool->getValues(); $this->assertInternalType('array', $values); diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/ValidatorCacheWarmerTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/ValidatorCacheWarmerTest.php index 23b4732afcb3a..f8d3710c6d1c5 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/ValidatorCacheWarmerTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/ValidatorCacheWarmerTest.php @@ -14,6 +14,9 @@ use Symfony\Bundle\FrameworkBundle\CacheWarmer\ValidatorCacheWarmer; use Symfony\Bundle\FrameworkBundle\Tests\TestCase; use Symfony\Component\Cache\Adapter\ArrayAdapter; +use Symfony\Component\Cache\Adapter\NullAdapter; +use Symfony\Component\Cache\Adapter\PhpArrayAdapter; +use Symfony\Component\Validator\Mapping\ClassMetadata; use Symfony\Component\Validator\ValidatorBuilder; class ValidatorCacheWarmerTest extends TestCase @@ -36,12 +39,10 @@ public function testWarmUp() $this->assertFileExists($file); - $values = require $file; + $arrayPool = new PhpArrayAdapter($file, new NullAdapter()); - $this->assertInternalType('array', $values); - $this->assertCount(2, $values); - $this->assertArrayHasKey('Symfony.Bundle.FrameworkBundle.Tests.Fixtures.Validation.Person', $values); - $this->assertArrayHasKey('Symfony.Bundle.FrameworkBundle.Tests.Fixtures.Validation.Author', $values); + $this->assertTrue($arrayPool->getItem('Symfony.Bundle.FrameworkBundle.Tests.Fixtures.Validation.Person')->isHit()); + $this->assertTrue($arrayPool->getItem('Symfony.Bundle.FrameworkBundle.Tests.Fixtures.Validation.Author')->isHit()); $values = $fallbackPool->getValues(); @@ -67,14 +68,12 @@ public function testWarmUpWithAnnotations() $this->assertFileExists($file); - $values = require $file; + $arrayPool = new PhpArrayAdapter($file, new NullAdapter()); - $this->assertInternalType('array', $values); - $this->assertCount(1, $values); - $this->assertArrayHasKey('Symfony.Bundle.FrameworkBundle.Tests.Fixtures.Validation.Category', $values); + $item = $arrayPool->getItem('Symfony.Bundle.FrameworkBundle.Tests.Fixtures.Validation.Category'); + $this->assertTrue($item->isHit()); - // Simple check to make sure that at least one constraint is actually cached, in this case the "id" property Type. - $this->assertContains('"int"', $values['Symfony.Bundle.FrameworkBundle.Tests.Fixtures.Validation.Category']); + $this->assertInstanceOf(ClassMetadata::class, $item->get()); $values = $fallbackPool->getValues(); @@ -98,11 +97,6 @@ public function testWarmUpWithoutLoader() $this->assertFileExists($file); - $values = require $file; - - $this->assertInternalType('array', $values); - $this->assertCount(0, $values); - $values = $fallbackPool->getValues(); $this->assertInternalType('array', $values); From 322f58b334105e09330809e91e9b09e27b7c1e99 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Sat, 9 Jun 2018 21:00:10 +0200 Subject: [PATCH 46/98] [DI] Deduplicate generated proxy classes --- .../DependencyInjection/Dumper/PhpDumper.php | 7 +- .../Tests/Dumper/PhpDumperTest.php | 13 +++ .../Tests/Fixtures/includes/classes.php | 4 +- .../php/services_dedup_lazy_proxy.php | 88 +++++++++++++++++++ .../Fixtures/php/services_non_shared_lazy.php | 4 +- 5 files changed, 111 insertions(+), 5 deletions(-) create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_dedup_lazy_proxy.php diff --git a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php index d640b9a2351d1..560b2516bb3c4 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php @@ -396,6 +396,7 @@ private function collectLineage($class, array &$lineage) private function generateProxyClasses() { + $alreadyGenerated = array(); $definitions = $this->container->getDefinitions(); $strip = '' === $this->docStar && method_exists('Symfony\Component\HttpKernel\Kernel', 'stripComments'); $proxyDumper = $this->getProxyDumper(); @@ -404,8 +405,12 @@ private function generateProxyClasses() if (!$proxyDumper->isProxyCandidate($definition)) { continue; } + if (isset($alreadyGenerated[$class = $definition->getClass()])) { + continue; + } + $alreadyGenerated[$class] = true; // register class' reflector for resource tracking - $this->container->getReflectionClass($definition->getClass()); + $this->container->getReflectionClass($class); $proxyCode = "\n".$proxyDumper->getProxyCode($definition); if ($strip) { $proxyCode = "addToAssertionCount(1); } + public function testDedupLazyProxy() + { + $container = new ContainerBuilder(); + $container->register('foo', 'stdClass')->setLazy(true)->setPublic(true); + $container->register('bar', 'stdClass')->setLazy(true)->setPublic(true); + $container->compile(); + + $dumper = new PhpDumper($container); + $dumper->setProxyDumper(new \DummyProxyDumper()); + + $this->assertStringEqualsFile(self::$fixturesPath.'/php/services_dedup_lazy_proxy.php', $dumper->dump()); + } + public function testLazyArgumentProvideGenerator() { require_once self::$fixturesPath.'/includes/classes.php'; diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/includes/classes.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/includes/classes.php index bced911043c55..33b043fa3f384 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/includes/classes.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/includes/classes.php @@ -90,12 +90,12 @@ public function isProxyCandidate(Definition $definition) public function getProxyFactoryCode(Definition $definition, $id, $factoryCall = null) { - return " // lazy factory\n\n"; + return " // lazy factory for {$definition->getClass()}\n\n"; } public function getProxyCode(Definition $definition) { - return "// proxy code\n"; + return "// proxy code for {$definition->getClass()}\n"; } } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_dedup_lazy_proxy.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_dedup_lazy_proxy.php new file mode 100644 index 0000000000000..73a7f259f86b5 --- /dev/null +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_dedup_lazy_proxy.php @@ -0,0 +1,88 @@ +services = array(); + $this->methodMap = array( + 'bar' => 'getBarService', + 'foo' => 'getFooService', + ); + + $this->aliases = array(); + } + + public function getRemovedIds() + { + return array( + 'Psr\\Container\\ContainerInterface' => true, + 'Symfony\\Component\\DependencyInjection\\ContainerInterface' => true, + ); + } + + public function compile() + { + throw new LogicException('You cannot compile a dumped container that was already compiled.'); + } + + public function isCompiled() + { + return true; + } + + public function isFrozen() + { + @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.3 and will be removed in 4.0. Use the isCompiled() method instead.', __METHOD__), E_USER_DEPRECATED); + + return true; + } + + protected function createProxy($class, \Closure $factory) + { + return $factory(); + } + + /** + * Gets the public 'bar' shared service. + * + * @return \stdClass + */ + protected function getBarService($lazyLoad = true) + { + // lazy factory for stdClass + + return new \stdClass(); + } + + /** + * Gets the public 'foo' shared service. + * + * @return \stdClass + */ + protected function getFooService($lazyLoad = true) + { + // lazy factory for stdClass + + return new \stdClass(); + } +} + +// proxy code for stdClass diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_non_shared_lazy.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_non_shared_lazy.php index 9e2f1ab915f8e..6c3b1405069f1 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_non_shared_lazy.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_non_shared_lazy.php @@ -83,10 +83,10 @@ protected function getBarService() */ protected function getFooService($lazyLoad = true) { - // lazy factory + // lazy factory for stdClass return new \stdClass(); } } -// proxy code +// proxy code for stdClass From 50979b5ea47336e5a052bba88df3746e4e7fb775 Mon Sep 17 00:00:00 2001 From: nsbx Date: Sat, 9 Jun 2018 15:16:17 +0200 Subject: [PATCH 47/98] [PhpUnitBridge] Fix error on some Windows OS --- src/Symfony/Bridge/PhpUnit/bin/simple-phpunit | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit b/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit index 552d5abb36b5e..197650915fe91 100755 --- a/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit +++ b/src/Symfony/Bridge/PhpUnit/bin/simple-phpunit @@ -70,6 +70,8 @@ if (!file_exists("$PHPUNIT_DIR/phpunit-$PHPUNIT_VERSION/phpunit") || md5_file(__ throw new \RuntimeException("Could not find $remoteZip"); } stream_copy_to_stream($remoteZipStream, fopen("$PHPUNIT_VERSION.zip", 'wb')); + } elseif ('\\' === DIRECTORY_SEPARATOR) { + passthru("certutil -urlcache -split -f \"https://github.com/sebastianbergmann/phpunit/archive/$PHPUNIT_VERSION.zip\" $PHPUNIT_VERSION.zip"); } else { @unlink("$PHPUNIT_VERSION.zip"); passthru("wget -q https://github.com/sebastianbergmann/phpunit/archive/$PHPUNIT_VERSION.zip"); From 1f346f446d462e5d0b79bf0642ed4b89621a1684 Mon Sep 17 00:00:00 2001 From: Webnet team Date: Mon, 21 May 2018 12:07:14 +0200 Subject: [PATCH 48/98] [Serializer] deserialize from xml: Fix a collection that contains the only one element --- .../Normalizer/AbstractObjectNormalizer.php | 6 + .../AbstractObjectNormalizerTest.php | 196 ++++++++++++++++++ 2 files changed, 202 insertions(+) diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php index 251ec5fac05e4..020b3d5317a74 100644 --- a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php @@ -255,6 +255,12 @@ private function validateAndDenormalize($currentClass, $attribute, $data, $forma $builtinType = Type::BUILTIN_TYPE_OBJECT; $class = $collectionValueType->getClassName().'[]'; + // Fix a collection that contains the only one element + // This is special to xml format only + if ('xml' === $format && !is_int(key($data))) { + $data = array($data); + } + if (null !== $collectionKeyType = $type->getCollectionKeyType()) { $context['key_type'] = $collectionKeyType; } diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php index 3ca418d55ed6b..b1d40dcee3e1d 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php @@ -13,9 +13,13 @@ use Doctrine\Common\Annotations\AnnotationReader; use PHPUnit\Framework\TestCase; +use Symfony\Component\Serializer\Exception\NotNormalizableValueException; use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory; use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader; use Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer; +use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; +use Symfony\Component\Serializer\SerializerAwareInterface; +use Symfony\Component\Serializer\SerializerInterface; class AbstractObjectNormalizerTest extends TestCase { @@ -69,6 +73,75 @@ public function testDenormalizeWithExtraAttributesAndNoGroupsWithMetadataFactory array('allow_extra_attributes' => false) ); } + + public function testDenormalizeCollectionDecodedFromXmlWithOneChild() + { + $denormalizer = $this->getDenormalizerForDummyCollection(); + + $dummyCollection = $denormalizer->denormalize( + array( + 'children' => array( + 'bar' => 'first', + ), + ), + DummyCollection::class, + 'xml' + ); + + $this->assertInstanceOf(DummyCollection::class, $dummyCollection); + $this->assertInternalType('array', $dummyCollection->children); + $this->assertCount(1, $dummyCollection->children); + $this->assertInstanceOf(DummyChild::class, $dummyCollection->children[0]); + } + + public function testDenormalizeCollectionDecodedFromXmlWithTwoChildren() + { + $denormalizer = $this->getDenormalizerForDummyCollection(); + + $dummyCollection = $denormalizer->denormalize( + array( + 'children' => array( + array('bar' => 'first'), + array('bar' => 'second'), + ), + ), + DummyCollection::class, + 'xml' + ); + + $this->assertInstanceOf(DummyCollection::class, $dummyCollection); + $this->assertInternalType('array', $dummyCollection->children); + $this->assertCount(2, $dummyCollection->children); + $this->assertInstanceOf(DummyChild::class, $dummyCollection->children[0]); + $this->assertInstanceOf(DummyChild::class, $dummyCollection->children[1]); + } + + private function getDenormalizerForDummyCollection() + { + $extractor = $this->getMockBuilder('Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor')->getMock(); + $extractor->method('getTypes') + ->will($this->onConsecutiveCalls( + array( + new \Symfony\Component\PropertyInfo\Type( + 'array', + false, + null, + true, + new \Symfony\Component\PropertyInfo\Type('int'), + new \Symfony\Component\PropertyInfo\Type('object', false, DummyChild::class) + ), + ), + null + )); + + $denormalizer = new AbstractObjectNormalizerCollectionDummy(null, null, $extractor); + $arrayDenormalizer = new ArrayDenormalizerDummy(); + $serializer = new SerializerCollectionDummy(array($arrayDenormalizer, $denormalizer)); + $arrayDenormalizer->setSerializer($serializer); + $denormalizer->setSerializer($serializer); + + return $denormalizer; + } } class AbstractObjectNormalizerDummy extends AbstractObjectNormalizer @@ -124,3 +197,126 @@ protected function setAttributeValue($object, $attribute, $value, $format = null $object->$attribute = $value; } } + +class DummyCollection +{ + /** @var DummyChild[] */ + public $children; +} + +class DummyChild +{ + public $bar; +} + +class SerializerCollectionDummy implements \Symfony\Component\Serializer\SerializerInterface, \Symfony\Component\Serializer\Normalizer\DenormalizerInterface +{ + /** @var \Symfony\Component\Serializer\Normalizer\DenormalizerInterface */ + private $normalizers; + + /** + * @param $normalizers + */ + public function __construct($normalizers) + { + $this->normalizers = $normalizers; + } + + public function serialize($data, $format, array $context = array()) + { + } + + public function deserialize($data, $type, $format, array $context = array()) + { + } + + public function denormalize($data, $type, $format = null, array $context = array()) + { + foreach ($this->normalizers as $normalizer) { + if ($normalizer instanceof \Symfony\Component\Serializer\Normalizer\DenormalizerInterface && $normalizer->supportsDenormalization($data, $type, $format, $context)) { + return $normalizer->denormalize($data, $type, $format, $context); + } + } + } + + public function supportsDenormalization($data, $type, $format = null) + { + return true; + } +} + +class AbstractObjectNormalizerCollectionDummy extends \Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer +{ + protected function extractAttributes($object, $format = null, array $context = array()) + { + } + + protected function getAttributeValue($object, $attribute, $format = null, array $context = array()) + { + } + + protected function setAttributeValue($object, $attribute, $value, $format = null, array $context = array()) + { + $object->$attribute = $value; + } + + protected function isAllowedAttribute($classOrObject, $attribute, $format = null, array $context = array()) + { + return true; + } + + public function instantiateObject(array &$data, $class, array &$context, \ReflectionClass $reflectionClass, $allowedAttributes, $format = null) + { + return parent::instantiateObject($data, $class, $context, $reflectionClass, $allowedAttributes, $format); + } + + public function serialize($data, $format, array $context = array()) + { + } + + public function deserialize($data, $type, $format, array $context = array()) + { + } +} + +class ArrayDenormalizerDummy implements DenormalizerInterface, SerializerAwareInterface +{ + /** + * @var SerializerInterface|DenormalizerInterface + */ + private $serializer; + + /** + * {@inheritdoc} + * + * @throws NotNormalizableValueException + */ + public function denormalize($data, $class, $format = null, array $context = array()) + { + $serializer = $this->serializer; + $class = substr($class, 0, -2); + + foreach ($data as $key => $value) { + $data[$key] = $serializer->denormalize($value, $class, $format, $context); + } + + return $data; + } + + /** + * {@inheritdoc} + */ + public function supportsDenormalization($data, $type, $format = null, array $context = array()) + { + return '[]' === substr($type, -2) + && $this->serializer->supportsDenormalization($data, substr($type, 0, -2), $format, $context); + } + + /** + * {@inheritdoc} + */ + public function setSerializer(SerializerInterface $serializer) + { + $this->serializer = $serializer; + } +} From cca73bb564adae22d0e9dd0c6dafbf1466a555c1 Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Wed, 30 May 2018 10:06:54 -0400 Subject: [PATCH 49/98] Avoid migration on stateless firewalls --- .../Factory/GuardAuthenticationFactory.php | 1 + .../Security/Factory/HttpBasicFactory.php | 1 + .../Security/Factory/HttpDigestFactory.php | 1 + .../Security/Factory/RemoteUserFactory.php | 1 + .../SimplePreAuthenticationFactory.php | 1 + .../Security/Factory/X509Factory.php | 1 + .../DependencyInjection/SecurityExtension.php | 4 ++ .../Resources/config/security.xml | 4 ++ .../Bundle/SecurityBundle/composer.json | 2 +- .../Guard/GuardAuthenticatorHandler.php | 24 ++++++++---- .../Tests/GuardAuthenticatorHandlerTest.php | 37 +++++++++++++++++++ .../AbstractPreAuthenticatedListener.php | 24 ++++++++---- .../Firewall/BasicAuthenticationListener.php | 24 ++++++++---- .../Firewall/DigestAuthenticationListener.php | 27 ++++++++++---- .../SimplePreAuthenticationListener.php | 24 ++++++++---- 15 files changed, 138 insertions(+), 38 deletions(-) diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php index 533560d6d986d..bd49cbc932083 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php @@ -77,6 +77,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider, $listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.guard')); $listener->replaceArgument(2, $id); $listener->replaceArgument(3, $authenticatorReferences); + $listener->addMethodCall('setSessionAuthenticationStrategy', array(new Reference('security.authentication.session_strategy.'.$id))); // determine the entryPointId to use $entryPointId = $this->determineEntryPoint($defaultEntryPoint, $config); diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpBasicFactory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpBasicFactory.php index 162ea05157984..f09636ec71c0d 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpBasicFactory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpBasicFactory.php @@ -41,6 +41,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider, $listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.basic')); $listener->replaceArgument(2, $id); $listener->replaceArgument(3, new Reference($entryPointId)); + $listener->addMethodCall('setSessionAuthenticationStrategy', array(new Reference('security.authentication.session_strategy.'.$id))); return array($provider, $listenerId, $entryPointId); } diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpDigestFactory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpDigestFactory.php index 4cfb79653c054..944a9100f389d 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpDigestFactory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpDigestFactory.php @@ -42,6 +42,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider, $listener->replaceArgument(1, new Reference($userProvider)); $listener->replaceArgument(2, $id); $listener->replaceArgument(3, new Reference($entryPointId)); + $listener->addMethodCall('setSessionAuthenticationStrategy', array(new Reference('security.authentication.session_strategy.'.$id))); return array($provider, $listenerId, $entryPointId); } diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RemoteUserFactory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RemoteUserFactory.php index cf2e2ed71b16c..5be068e6c4870 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RemoteUserFactory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RemoteUserFactory.php @@ -38,6 +38,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider, $listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.remote_user')); $listener->replaceArgument(2, $id); $listener->replaceArgument(3, $config['user']); + $listener->addMethodCall('setSessionAuthenticationStrategy', array(new Reference('security.authentication.session_strategy.'.$id))); return array($providerId, $listenerId, $defaultEntryPoint); } diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/SimplePreAuthenticationFactory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/SimplePreAuthenticationFactory.php index c1c6e48083856..03fca8d6a25df 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/SimplePreAuthenticationFactory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/SimplePreAuthenticationFactory.php @@ -57,6 +57,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider, $listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.simple_preauth')); $listener->replaceArgument(2, $id); $listener->replaceArgument(3, new Reference($config['authenticator'])); + $listener->addMethodCall('setSessionAuthenticationStrategy', array(new Reference('security.authentication.session_strategy.'.$id))); return array($provider, $listenerId, null); } diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/X509Factory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/X509Factory.php index 0467ef2ba2c75..a745de9b2d78c 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/X509Factory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/X509Factory.php @@ -39,6 +39,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider, $listener->replaceArgument(2, $id); $listener->replaceArgument(3, $config['user']); $listener->replaceArgument(4, $config['credentials']); + $listener->addMethodCall('setSessionAuthenticationStrategy', array(new Reference('security.authentication.session_strategy.'.$id))); return array($providerId, $listenerId, $defaultEntryPoint); } diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php index 34276e95e79f2..5138eff36719e 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php @@ -285,7 +285,11 @@ private function createFirewall(ContainerBuilder $container, $id, $firewall, &$a } $listeners[] = new Reference($this->createContextListener($container, $contextKey)); + $sessionStrategyId = 'security.authentication.session_strategy'; + } else { + $sessionStrategyId = 'security.authentication.session_strategy_noop'; } + $container->setAlias(new Alias('security.authentication.session_strategy.'.$id, false), $sessionStrategyId); // Logout listener $logoutListenerId = null; diff --git a/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml b/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml index 029395de9dea0..74b097aa4c2b7 100644 --- a/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml +++ b/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml @@ -84,6 +84,10 @@ %security.authentication.session_strategy.strategy% + + none + + diff --git a/src/Symfony/Bundle/SecurityBundle/composer.json b/src/Symfony/Bundle/SecurityBundle/composer.json index f588b04888161..c0508ea29b02b 100644 --- a/src/Symfony/Bundle/SecurityBundle/composer.json +++ b/src/Symfony/Bundle/SecurityBundle/composer.json @@ -18,7 +18,7 @@ "require": { "php": ">=5.3.9", "ext-xml": "*", - "symfony/security": "^2.8.41|^3.4.11", + "symfony/security": "^2.8.42|^3.4.12", "symfony/security-acl": "~2.7|~3.0.0", "symfony/http-kernel": "~2.7|~3.0.0", "symfony/polyfill-php70": "~1.0" diff --git a/src/Symfony/Component/Security/Guard/GuardAuthenticatorHandler.php b/src/Symfony/Component/Security/Guard/GuardAuthenticatorHandler.php index 5e6eba339bf64..0164ba9235262 100644 --- a/src/Symfony/Component/Security/Guard/GuardAuthenticatorHandler.php +++ b/src/Symfony/Component/Security/Guard/GuardAuthenticatorHandler.php @@ -20,6 +20,7 @@ use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; use Symfony\Component\Security\Http\SecurityEvents; +use Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface; /** * A utility class that does much of the *work* during the guard authentication process. @@ -32,8 +33,8 @@ class GuardAuthenticatorHandler { private $tokenStorage; - private $dispatcher; + private $sessionStrategy; public function __construct(TokenStorageInterface $tokenStorage, EventDispatcherInterface $eventDispatcher = null) { @@ -46,7 +47,7 @@ public function __construct(TokenStorageInterface $tokenStorage, EventDispatcher */ public function authenticateWithToken(TokenInterface $token, Request $request) { - $this->migrateSession($request); + $this->migrateSession($request, $token); $this->tokenStorage->setToken($token); if (null !== $this->dispatcher) { @@ -129,15 +130,22 @@ public function handleAuthenticationFailure(AuthenticationException $authenticat )); } - private function migrateSession(Request $request) + /** + * Call this method if your authentication token is stored to a session. + * + * @final since version 2.8 + */ + public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyInterface $sessionStrategy) + { + $this->sessionStrategy = $sessionStrategy; + } + + private function migrateSession(Request $request, TokenInterface $token) { - if (!$request->hasSession() || !$request->hasPreviousSession()) { + if (!$this->sessionStrategy || !$request->hasSession() || !$request->hasPreviousSession()) { return; } - // Destroying the old session is broken in php 5.4.0 - 5.4.10 - // See https://bugs.php.net/63379 - $destroy = \PHP_VERSION_ID < 50400 || \PHP_VERSION_ID >= 50411; - $request->getSession()->migrate($destroy); + $this->sessionStrategy->onAuthentication($request, $token); } } diff --git a/src/Symfony/Component/Security/Guard/Tests/GuardAuthenticatorHandlerTest.php b/src/Symfony/Component/Security/Guard/Tests/GuardAuthenticatorHandlerTest.php index 662bace30877c..49ce6548acab5 100644 --- a/src/Symfony/Component/Security/Guard/Tests/GuardAuthenticatorHandlerTest.php +++ b/src/Symfony/Component/Security/Guard/Tests/GuardAuthenticatorHandlerTest.php @@ -25,6 +25,7 @@ class GuardAuthenticatorHandlerTest extends TestCase private $dispatcher; private $token; private $request; + private $sessionStrategy; private $guardAuthenticator; public function testAuthenticateWithToken() @@ -117,12 +118,38 @@ public function getTokenClearingTests() return $tests; } + public function testNoFailureIfSessionStrategyNotPassed() + { + $this->configurePreviousSession(); + + $this->tokenStorage->expects($this->once()) + ->method('setToken') + ->with($this->token); + + $handler = new GuardAuthenticatorHandler($this->tokenStorage, $this->dispatcher); + $handler->authenticateWithToken($this->token, $this->request); + } + + public function testSessionStrategyIsCalled() + { + $this->configurePreviousSession(); + + $this->sessionStrategy->expects($this->once()) + ->method('onAuthentication') + ->with($this->request, $this->token); + + $handler = new GuardAuthenticatorHandler($this->tokenStorage, $this->dispatcher); + $handler->setSessionAuthenticationStrategy($this->sessionStrategy); + $handler->authenticateWithToken($this->token, $this->request); + } + protected function setUp() { $this->tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock(); $this->dispatcher = $this->getMockBuilder('Symfony\Component\EventDispatcher\EventDispatcherInterface')->getMock(); $this->token = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\TokenInterface')->getMock(); $this->request = new Request(array(), array(), array(), array(), array(), array()); + $this->sessionStrategy = $this->getMockBuilder('Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface')->getMock(); $this->guardAuthenticator = $this->getMockBuilder('Symfony\Component\Security\Guard\GuardAuthenticatorInterface')->getMock(); } @@ -134,4 +161,14 @@ protected function tearDown() $this->request = null; $this->guardAuthenticator = null; } + + private function configurePreviousSession() + { + $session = $this->getMockBuilder('Symfony\Component\HttpFoundation\Session\SessionInterface')->getMock(); + $session->expects($this->any()) + ->method('getName') + ->willReturn('test_session_name'); + $this->request->setSession($session); + $this->request->cookies->set('test_session_name', 'session_cookie_val'); + } } diff --git a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php index 2054c4aa0774e..6451d882e8b94 100644 --- a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php @@ -14,6 +14,7 @@ use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\PreAuthenticatedToken; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; use Symfony\Component\Security\Http\SecurityEvents; @@ -22,6 +23,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Security\Core\Exception\BadCredentialsException; +use Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface; /** * AbstractPreAuthenticatedListener is the base class for all listener that @@ -37,6 +39,7 @@ abstract class AbstractPreAuthenticatedListener implements ListenerInterface private $authenticationManager; private $providerKey; private $dispatcher; + private $sessionStrategy; public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, $providerKey, LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null) { @@ -83,7 +86,7 @@ final public function handle(GetResponseEvent $event) $this->logger->info('Pre-authentication successful.', array('token' => (string) $token)); } - $this->migrateSession($request); + $this->migrateSession($request, $token); $this->tokenStorage->setToken($token); @@ -96,6 +99,16 @@ final public function handle(GetResponseEvent $event) } } + /** + * Call this method if your authentication token is stored to a session. + * + * @final since version 2.8 + */ + public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyInterface $sessionStrategy) + { + $this->sessionStrategy = $sessionStrategy; + } + /** * Clears a PreAuthenticatedToken for this provider (if present). */ @@ -118,15 +131,12 @@ private function clearToken(AuthenticationException $exception) */ abstract protected function getPreAuthenticatedData(Request $request); - private function migrateSession(Request $request) + private function migrateSession(Request $request, TokenInterface $token) { - if (!$request->hasSession() || !$request->hasPreviousSession()) { + if (!$this->sessionStrategy || !$request->hasSession() || !$request->hasPreviousSession()) { return; } - // Destroying the old session is broken in php 5.4.0 - 5.4.10 - // See https://bugs.php.net/63379 - $destroy = \PHP_VERSION_ID < 50400 || \PHP_VERSION_ID >= 50411; - $request->getSession()->migrate($destroy); + $this->sessionStrategy->onAuthentication($request, $token); } } diff --git a/src/Symfony/Component/Security/Http/Firewall/BasicAuthenticationListener.php b/src/Symfony/Component/Security/Http/Firewall/BasicAuthenticationListener.php index 63bd013c64e31..4b14a842dc134 100644 --- a/src/Symfony/Component/Security/Http/Firewall/BasicAuthenticationListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/BasicAuthenticationListener.php @@ -14,11 +14,13 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface; use Psr\Log\LoggerInterface; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\Exception\AuthenticationException; +use Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface; /** * BasicAuthenticationListener implements Basic HTTP authentication. @@ -33,6 +35,7 @@ class BasicAuthenticationListener implements ListenerInterface private $authenticationEntryPoint; private $logger; private $ignoreFailure; + private $sessionStrategy; public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, $providerKey, AuthenticationEntryPointInterface $authenticationEntryPoint, LoggerInterface $logger = null) { @@ -72,7 +75,7 @@ public function handle(GetResponseEvent $event) try { $token = $this->authenticationManager->authenticate(new UsernamePasswordToken($username, $request->headers->get('PHP_AUTH_PW'), $this->providerKey)); - $this->migrateSession($request); + $this->migrateSession($request, $token); $this->tokenStorage->setToken($token); } catch (AuthenticationException $e) { @@ -93,15 +96,22 @@ public function handle(GetResponseEvent $event) } } - private function migrateSession(Request $request) + /** + * Call this method if your authentication token is stored to a session. + * + * @final since version 2.8 + */ + public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyInterface $sessionStrategy) + { + $this->sessionStrategy = $sessionStrategy; + } + + private function migrateSession(Request $request, TokenInterface $token) { - if (!$request->hasSession() || !$request->hasPreviousSession()) { + if (!$this->sessionStrategy || !$request->hasSession() || !$request->hasPreviousSession()) { return; } - // Destroying the old session is broken in php 5.4.0 - 5.4.10 - // See https://bugs.php.net/63379 - $destroy = \PHP_VERSION_ID < 50400 || \PHP_VERSION_ID >= 50411; - $request->getSession()->migrate($destroy); + $this->sessionStrategy->onAuthentication($request, $token); } } diff --git a/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php b/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php index 5655315a8b0c6..b4853931ca4b0 100644 --- a/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Security\Http\Firewall; +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\User\UserProviderInterface; use Symfony\Component\Security\Http\EntryPoint\DigestAuthenticationEntryPoint; use Psr\Log\LoggerInterface; @@ -23,6 +24,7 @@ use Symfony\Component\Security\Core\Exception\NonceExpiredException; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Core\Exception\AuthenticationException; +use Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface; /** * DigestAuthenticationListener implements Digest HTTP authentication. @@ -36,6 +38,7 @@ class DigestAuthenticationListener implements ListenerInterface private $providerKey; private $authenticationEntryPoint; private $logger; + private $sessionStrategy; public function __construct(TokenStorageInterface $tokenStorage, UserProviderInterface $provider, $providerKey, DigestAuthenticationEntryPoint $authenticationEntryPoint, LoggerInterface $logger = null) { @@ -117,9 +120,20 @@ public function handle(GetResponseEvent $event) $this->logger->info('Digest authentication successful.', array('username' => $digestAuth->getUsername(), 'received' => $digestAuth->getResponse())); } - $this->migrateSession($request); + $token = new UsernamePasswordToken($user, $user->getPassword(), $this->providerKey); + $this->migrateSession($request, $token); - $this->tokenStorage->setToken(new UsernamePasswordToken($user, $user->getPassword(), $this->providerKey)); + $this->tokenStorage->setToken($token); + } + + /** + * Call this method if your authentication token is stored to a session. + * + * @final since version 2.8 + */ + public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyInterface $sessionStrategy) + { + $this->sessionStrategy = $sessionStrategy; } private function fail(GetResponseEvent $event, Request $request, AuthenticationException $authException) @@ -136,16 +150,13 @@ private function fail(GetResponseEvent $event, Request $request, AuthenticationE $event->setResponse($this->authenticationEntryPoint->start($request, $authException)); } - private function migrateSession(Request $request) + private function migrateSession(Request $request, TokenInterface $token) { - if (!$request->hasSession() || !$request->hasPreviousSession()) { + if (!$this->sessionStrategy || !$request->hasSession() || !$request->hasPreviousSession()) { return; } - // Destroying the old session is broken in php 5.4.0 - 5.4.10 - // See https://bugs.php.net/63379 - $destroy = \PHP_VERSION_ID < 50400 || \PHP_VERSION_ID >= 50411; - $request->getSession()->migrate($destroy); + $this->sessionStrategy->onAuthentication($request, $token); } } diff --git a/src/Symfony/Component/Security/Http/Firewall/SimplePreAuthenticationListener.php b/src/Symfony/Component/Security/Http/Firewall/SimplePreAuthenticationListener.php index 23e517969f4e5..cdfb06d4fa2e6 100644 --- a/src/Symfony/Component/Security/Http/Firewall/SimplePreAuthenticationListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/SimplePreAuthenticationListener.php @@ -19,12 +19,14 @@ use Symfony\Component\Security\Core\Authentication\SimplePreAuthenticatorInterface; use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface; use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface; use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; use Symfony\Component\Security\Http\SecurityEvents; use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface; /** * SimplePreAuthenticationListener implements simple proxying to an authenticator. @@ -39,6 +41,7 @@ class SimplePreAuthenticationListener implements ListenerInterface private $simpleAuthenticator; private $logger; private $dispatcher; + private $sessionStrategy; /** * @param TokenStorageInterface $tokenStorage A TokenStorageInterface instance @@ -62,6 +65,16 @@ public function __construct(TokenStorageInterface $tokenStorage, AuthenticationM $this->dispatcher = $dispatcher; } + /** + * Call this method if your authentication token is stored to a session. + * + * @final since version 2.8 + */ + public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyInterface $sessionStrategy) + { + $this->sessionStrategy = $sessionStrategy; + } + /** * Handles basic authentication. */ @@ -87,7 +100,7 @@ public function handle(GetResponseEvent $event) $token = $this->authenticationManager->authenticate($token); - $this->migrateSession($request); + $this->migrateSession($request, $token); $this->tokenStorage->setToken($token); @@ -124,15 +137,12 @@ public function handle(GetResponseEvent $event) } } - private function migrateSession(Request $request) + private function migrateSession(Request $request, TokenInterface $token) { - if (!$request->hasSession() || !$request->hasPreviousSession()) { + if (!$this->sessionStrategy || !$request->hasSession() || !$request->hasPreviousSession()) { return; } - // Destroying the old session is broken in php 5.4.0 - 5.4.10 - // See https://bugs.php.net/63379 - $destroy = \PHP_VERSION_ID < 50400 || \PHP_VERSION_ID >= 50411; - $request->getSession()->migrate($destroy); + $this->sessionStrategy->onAuthentication($request, $token); } } From 5c2b2bb2ce38b4055f35ffc08984a49694a8f79f Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Sun, 10 Jun 2018 12:30:11 +0200 Subject: [PATCH 50/98] fixed CS --- .../Component/Security/Guard/GuardAuthenticatorHandler.php | 2 +- .../Security/Http/Firewall/AbstractPreAuthenticatedListener.php | 2 +- .../Security/Http/Firewall/BasicAuthenticationListener.php | 2 +- .../Security/Http/Firewall/DigestAuthenticationListener.php | 2 +- .../Security/Http/Firewall/SimplePreAuthenticationListener.php | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Component/Security/Guard/GuardAuthenticatorHandler.php b/src/Symfony/Component/Security/Guard/GuardAuthenticatorHandler.php index 0164ba9235262..7b340a2601cee 100644 --- a/src/Symfony/Component/Security/Guard/GuardAuthenticatorHandler.php +++ b/src/Symfony/Component/Security/Guard/GuardAuthenticatorHandler.php @@ -133,7 +133,7 @@ public function handleAuthenticationFailure(AuthenticationException $authenticat /** * Call this method if your authentication token is stored to a session. * - * @final since version 2.8 + * @final */ public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyInterface $sessionStrategy) { diff --git a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php index 6451d882e8b94..062f4521cfbac 100644 --- a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php @@ -102,7 +102,7 @@ final public function handle(GetResponseEvent $event) /** * Call this method if your authentication token is stored to a session. * - * @final since version 2.8 + * @final */ public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyInterface $sessionStrategy) { diff --git a/src/Symfony/Component/Security/Http/Firewall/BasicAuthenticationListener.php b/src/Symfony/Component/Security/Http/Firewall/BasicAuthenticationListener.php index 4b14a842dc134..bfc61f3faacf7 100644 --- a/src/Symfony/Component/Security/Http/Firewall/BasicAuthenticationListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/BasicAuthenticationListener.php @@ -99,7 +99,7 @@ public function handle(GetResponseEvent $event) /** * Call this method if your authentication token is stored to a session. * - * @final since version 2.8 + * @final */ public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyInterface $sessionStrategy) { diff --git a/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php b/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php index b4853931ca4b0..5bc3c5ea94df9 100644 --- a/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php @@ -129,7 +129,7 @@ public function handle(GetResponseEvent $event) /** * Call this method if your authentication token is stored to a session. * - * @final since version 2.8 + * @final */ public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyInterface $sessionStrategy) { diff --git a/src/Symfony/Component/Security/Http/Firewall/SimplePreAuthenticationListener.php b/src/Symfony/Component/Security/Http/Firewall/SimplePreAuthenticationListener.php index cdfb06d4fa2e6..9cb90edbe65f7 100644 --- a/src/Symfony/Component/Security/Http/Firewall/SimplePreAuthenticationListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/SimplePreAuthenticationListener.php @@ -68,7 +68,7 @@ public function __construct(TokenStorageInterface $tokenStorage, AuthenticationM /** * Call this method if your authentication token is stored to a session. * - * @final since version 2.8 + * @final */ public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyInterface $sessionStrategy) { From c06f3229decae3950d52b76d5e262d8a6b54a23e Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Fri, 8 Jun 2018 09:36:24 -0400 Subject: [PATCH 51/98] Avoiding session migration for stateless firewall UsernamePasswordJsonAuthenticationListener --- .../Security/Factory/JsonLoginFactory.php | 1 + .../DependencyInjection/SecurityExtension.php | 4 ++ .../Resources/config/security.xml | 3 ++ .../Bundle/SecurityBundle/composer.json | 2 +- ...namePasswordJsonAuthenticationListener.php | 20 ++++++++-- ...PasswordJsonAuthenticationListenerTest.php | 38 +++++++++++++++++++ 6 files changed, 63 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/JsonLoginFactory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/JsonLoginFactory.php index 5a391ffacaeab..6c7adb032395b 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/JsonLoginFactory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/JsonLoginFactory.php @@ -89,6 +89,7 @@ protected function createListener($container, $id, $config, $userProvider) $listener->replaceArgument(4, isset($config['success_handler']) ? new Reference($this->createAuthenticationSuccessHandler($container, $id, $config)) : null); $listener->replaceArgument(5, isset($config['failure_handler']) ? new Reference($this->createAuthenticationFailureHandler($container, $id, $config)) : null); $listener->replaceArgument(6, array_intersect_key($config, $this->options)); + $listener->addMethodCall('setSessionAuthenticationStrategy', array(new Reference('security.authentication.session_strategy.'.$id))); $listenerId .= '.'.$id; $container->setDefinition($listenerId, $listener); diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php index d8f1db8dd96f4..b17c93f3e90c2 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php @@ -377,7 +377,11 @@ private function createFirewall(ContainerBuilder $container, $id, $firewall, &$a $this->logoutOnUserChangeByContextKey[$contextKey] = array($id, $logoutOnUserChange); $listeners[] = new Reference($this->createContextListener($container, $contextKey, $logoutOnUserChange)); + $sessionStrategyId = 'security.authentication.session_strategy'; + } else { + $sessionStrategyId = 'security.authentication.session_strategy_noop'; } + $container->setAlias(new Alias('security.authentication.session_strategy.'.$id, false), $sessionStrategyId); $config->replaceArgument(6, $contextKey); diff --git a/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml b/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml index 515f56db6e8ca..dea2481df457a 100644 --- a/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml +++ b/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml @@ -62,6 +62,9 @@ %security.authentication.session_strategy.strategy% + + none + diff --git a/src/Symfony/Bundle/SecurityBundle/composer.json b/src/Symfony/Bundle/SecurityBundle/composer.json index cc46a01f0f678..ebf39d1beea59 100644 --- a/src/Symfony/Bundle/SecurityBundle/composer.json +++ b/src/Symfony/Bundle/SecurityBundle/composer.json @@ -18,7 +18,7 @@ "require": { "php": "^5.5.9|>=7.0.8", "ext-xml": "*", - "symfony/security": "~3.4.11|^4.0.11", + "symfony/security": "~3.4.12|^4.0.12|^4.1.1", "symfony/dependency-injection": "^3.4.3|^4.0.3", "symfony/http-kernel": "~3.4|~4.0", "symfony/polyfill-php70": "~1.0" diff --git a/src/Symfony/Component/Security/Http/Firewall/UsernamePasswordJsonAuthenticationListener.php b/src/Symfony/Component/Security/Http/Firewall/UsernamePasswordJsonAuthenticationListener.php index 8bde1e00151e8..d83e94d4b2efb 100644 --- a/src/Symfony/Component/Security/Http/Firewall/UsernamePasswordJsonAuthenticationListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/UsernamePasswordJsonAuthenticationListener.php @@ -33,6 +33,7 @@ use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; use Symfony\Component\Security\Http\HttpUtils; use Symfony\Component\Security\Http\SecurityEvents; +use Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface; /** * UsernamePasswordJsonAuthenticationListener is a stateless implementation of @@ -52,6 +53,7 @@ class UsernamePasswordJsonAuthenticationListener implements ListenerInterface private $logger; private $eventDispatcher; private $propertyAccessor; + private $sessionStrategy; public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, HttpUtils $httpUtils, $providerKey, AuthenticationSuccessHandlerInterface $successHandler = null, AuthenticationFailureHandlerInterface $failureHandler = null, array $options = array(), LoggerInterface $logger = null, EventDispatcherInterface $eventDispatcher = null, PropertyAccessorInterface $propertyAccessor = null) { @@ -139,7 +141,7 @@ private function onSuccess(Request $request, TokenInterface $token) $this->logger->info('User has been authenticated successfully.', array('username' => $token->getUsername())); } - $this->migrateSession($request); + $this->migrateSession($request, $token); $this->tokenStorage->setToken($token); @@ -185,11 +187,21 @@ private function onFailure(Request $request, AuthenticationException $failed) return $response; } - private function migrateSession(Request $request) + /** + * Call this method if your authentication token is stored to a session. + * + * @final since version 3.4 + */ + public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyInterface $sessionStrategy) + { + $this->sessionStrategy = $sessionStrategy; + } + + private function migrateSession(Request $request, TokenInterface $token) { - if (!$request->hasSession() || !$request->hasPreviousSession()) { + if (!$this->sessionStrategy || !$request->hasSession() || !$request->hasPreviousSession()) { return; } - $request->getSession()->migrate(true); + $this->sessionStrategy->onAuthentication($request, $token); } } diff --git a/src/Symfony/Component/Security/Http/Tests/Firewall/UsernamePasswordJsonAuthenticationListenerTest.php b/src/Symfony/Component/Security/Http/Tests/Firewall/UsernamePasswordJsonAuthenticationListenerTest.php index 74526fcd543e0..d8bb77bb9e818 100644 --- a/src/Symfony/Component/Security/Http/Tests/Firewall/UsernamePasswordJsonAuthenticationListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/Firewall/UsernamePasswordJsonAuthenticationListenerTest.php @@ -212,4 +212,42 @@ public function testAttemptAuthenticationIfRequestPathMatchesCheckPath() $this->listener->handle($event); $this->assertSame('ok', $event->getResponse()->getContent()); } + + public function testNoErrorOnMissingSessionStrategy() + { + $this->createListener(); + $request = new Request(array(), array(), array(), array(), array(), array('HTTP_CONTENT_TYPE' => 'application/json'), '{"username": "dunglas", "password": "foo"}'); + $this->configurePreviousSession($request); + $event = new GetResponseEvent($this->getMockBuilder(KernelInterface::class)->getMock(), $request, KernelInterface::MASTER_REQUEST); + + $this->listener->handle($event); + $this->assertEquals('ok', $event->getResponse()->getContent()); + } + + public function testMigratesViaSessionStrategy() + { + $this->createListener(); + $request = new Request(array(), array(), array(), array(), array(), array('HTTP_CONTENT_TYPE' => 'application/json'), '{"username": "dunglas", "password": "foo"}'); + $this->configurePreviousSession($request); + $event = new GetResponseEvent($this->getMockBuilder(KernelInterface::class)->getMock(), $request, KernelInterface::MASTER_REQUEST); + + $sessionStrategy = $this->getMockBuilder('Symfony\Component\Security\Http\Session\SessionAuthenticationStrategyInterface')->getMock(); + $sessionStrategy->expects($this->once()) + ->method('onAuthentication') + ->with($request, $this->isInstanceOf(TokenInterface::class)); + $this->listener->setSessionAuthenticationStrategy($sessionStrategy); + + $this->listener->handle($event); + $this->assertEquals('ok', $event->getResponse()->getContent()); + } + + private function configurePreviousSession(Request $request) + { + $session = $this->getMockBuilder('Symfony\Component\HttpFoundation\Session\SessionInterface')->getMock(); + $session->expects($this->any()) + ->method('getName') + ->willReturn('test_session_name'); + $request->setSession($session); + $request->cookies->set('test_session_name', 'session_cookie_val'); + } } From 697a6a0ae4db1c613b47af2f465746b051351e3e Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Sun, 10 Jun 2018 12:33:24 +0200 Subject: [PATCH 52/98] fixed CS --- .../Firewall/UsernamePasswordJsonAuthenticationListener.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Security/Http/Firewall/UsernamePasswordJsonAuthenticationListener.php b/src/Symfony/Component/Security/Http/Firewall/UsernamePasswordJsonAuthenticationListener.php index d83e94d4b2efb..61a14823d999a 100644 --- a/src/Symfony/Component/Security/Http/Firewall/UsernamePasswordJsonAuthenticationListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/UsernamePasswordJsonAuthenticationListener.php @@ -190,7 +190,7 @@ private function onFailure(Request $request, AuthenticationException $failed) /** * Call this method if your authentication token is stored to a session. * - * @final since version 3.4 + * @final */ public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyInterface $sessionStrategy) { From 68729cc68abc0c8088868b6426cd8334af7a4cc5 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 11 Jun 2018 14:15:46 +0200 Subject: [PATCH 53/98] [Cache] Fix expiry comparisons in array-based pools --- src/Symfony/Component/Cache/Tests/Fixtures/ArrayCache.php | 2 +- src/Symfony/Component/Cache/Traits/ArrayTrait.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Cache/Tests/Fixtures/ArrayCache.php b/src/Symfony/Component/Cache/Tests/Fixtures/ArrayCache.php index 1a6157e822117..7cdcafd8e5453 100644 --- a/src/Symfony/Component/Cache/Tests/Fixtures/ArrayCache.php +++ b/src/Symfony/Component/Cache/Tests/Fixtures/ArrayCache.php @@ -21,7 +21,7 @@ protected function doContains($id) $expiry = $this->data[$id][1]; - return !$expiry || time() <= $expiry || !$this->doDelete($id); + return !$expiry || time() < $expiry || !$this->doDelete($id); } protected function doSave($id, $data, $lifeTime = 0) diff --git a/src/Symfony/Component/Cache/Traits/ArrayTrait.php b/src/Symfony/Component/Cache/Traits/ArrayTrait.php index b7d2ad6d6299c..88385ed480f34 100644 --- a/src/Symfony/Component/Cache/Traits/ArrayTrait.php +++ b/src/Symfony/Component/Cache/Traits/ArrayTrait.php @@ -44,7 +44,7 @@ public function hasItem($key) { CacheItem::validateKey($key); - return isset($this->expiries[$key]) && ($this->expiries[$key] >= time() || !$this->deleteItem($key)); + return isset($this->expiries[$key]) && ($this->expiries[$key] > time() || !$this->deleteItem($key)); } /** @@ -81,7 +81,7 @@ private function generateItems(array $keys, $now, $f) { foreach ($keys as $i => $key) { try { - if (!$isHit = isset($this->expiries[$key]) && ($this->expiries[$key] >= $now || !$this->deleteItem($key))) { + if (!$isHit = isset($this->expiries[$key]) && ($this->expiries[$key] > $now || !$this->deleteItem($key))) { $this->values[$key] = $value = null; } elseif (!$this->storeSerialized) { $value = $this->values[$key]; From 14bbcdb4965b4cc0d0d1e78b363e82e2a25514e6 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 11 Jun 2018 15:18:57 +0200 Subject: [PATCH 54/98] fix deps --- src/Symfony/Bundle/SecurityBundle/composer.json | 2 +- src/Symfony/Component/Security/Http/composer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Bundle/SecurityBundle/composer.json b/src/Symfony/Bundle/SecurityBundle/composer.json index ebf39d1beea59..fa304be517a22 100644 --- a/src/Symfony/Bundle/SecurityBundle/composer.json +++ b/src/Symfony/Bundle/SecurityBundle/composer.json @@ -18,7 +18,7 @@ "require": { "php": "^5.5.9|>=7.0.8", "ext-xml": "*", - "symfony/security": "~3.4.12|^4.0.12|^4.1.1", + "symfony/security": "~3.4.12|~4.0.12|^4.1.1", "symfony/dependency-injection": "^3.4.3|^4.0.3", "symfony/http-kernel": "~3.4|~4.0", "symfony/polyfill-php70": "~1.0" diff --git a/src/Symfony/Component/Security/Http/composer.json b/src/Symfony/Component/Security/Http/composer.json index 35695079b95bf..9ede332facfa0 100644 --- a/src/Symfony/Component/Security/Http/composer.json +++ b/src/Symfony/Component/Security/Http/composer.json @@ -27,7 +27,7 @@ }, "require-dev": { "symfony/routing": "~2.8|~3.0|~4.0", - "symfony/security-csrf": "^2.8.41|^3.3.17|^3.4.11|^4.0.11", + "symfony/security-csrf": "^2.8.41|~3.3.17|~3.4.11|^4.0.11", "psr/log": "~1.0" }, "conflict": { From 24b6848ea7e3f207fea6750303039684dc0828a5 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 11 Jun 2018 15:57:31 +0200 Subject: [PATCH 55/98] [Serializer] fix CS --- .../AbstractObjectNormalizerTest.php | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php index b1d40dcee3e1d..25f4c007d13f0 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php @@ -13,6 +13,8 @@ use Doctrine\Common\Annotations\AnnotationReader; use PHPUnit\Framework\TestCase; +use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor; +use Symfony\Component\PropertyInfo\Type; use Symfony\Component\Serializer\Exception\NotNormalizableValueException; use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory; use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader; @@ -118,17 +120,17 @@ public function testDenormalizeCollectionDecodedFromXmlWithTwoChildren() private function getDenormalizerForDummyCollection() { - $extractor = $this->getMockBuilder('Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor')->getMock(); + $extractor = $this->getMockBuilder(PhpDocExtractor::class)->getMock(); $extractor->method('getTypes') ->will($this->onConsecutiveCalls( array( - new \Symfony\Component\PropertyInfo\Type( + new Type( 'array', false, null, true, - new \Symfony\Component\PropertyInfo\Type('int'), - new \Symfony\Component\PropertyInfo\Type('object', false, DummyChild::class) + new Type('int'), + new Type('object', false, DummyChild::class) ), ), null @@ -209,13 +211,12 @@ class DummyChild public $bar; } -class SerializerCollectionDummy implements \Symfony\Component\Serializer\SerializerInterface, \Symfony\Component\Serializer\Normalizer\DenormalizerInterface +class SerializerCollectionDummy implements SerializerInterface, DenormalizerInterface { - /** @var \Symfony\Component\Serializer\Normalizer\DenormalizerInterface */ private $normalizers; /** - * @param $normalizers + * @param DenormalizerInterface[] $normalizers */ public function __construct($normalizers) { @@ -233,7 +234,7 @@ public function deserialize($data, $type, $format, array $context = array()) public function denormalize($data, $type, $format = null, array $context = array()) { foreach ($this->normalizers as $normalizer) { - if ($normalizer instanceof \Symfony\Component\Serializer\Normalizer\DenormalizerInterface && $normalizer->supportsDenormalization($data, $type, $format, $context)) { + if ($normalizer instanceof DenormalizerInterface && $normalizer->supportsDenormalization($data, $type, $format, $context)) { return $normalizer->denormalize($data, $type, $format, $context); } } @@ -245,7 +246,7 @@ public function supportsDenormalization($data, $type, $format = null) } } -class AbstractObjectNormalizerCollectionDummy extends \Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer +class AbstractObjectNormalizerCollectionDummy extends AbstractObjectNormalizer { protected function extractAttributes($object, $format = null, array $context = array()) { From 2c0ac93e259c061a9e0b59003424ae28f0ec33e9 Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Mon, 11 Jun 2018 18:23:43 -0400 Subject: [PATCH 56/98] Fix bad method call with guard authentication + session migration --- .../Factory/GuardAuthenticationFactory.php | 1 - .../DependencyInjection/SecurityExtension.php | 5 ++++ .../SecurityBundle/Resources/config/guard.xml | 4 +++ .../SecurityExtensionTest.php | 27 +++++++++++++++++++ .../Firewall/GuardAuthenticationListener.php | 2 +- .../Guard/GuardAuthenticatorHandler.php | 21 ++++++++++----- .../Tests/GuardAuthenticatorHandlerTest.php | 12 +++++++++ 7 files changed, 64 insertions(+), 8 deletions(-) diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php index bd49cbc932083..533560d6d986d 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php @@ -77,7 +77,6 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider, $listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.guard')); $listener->replaceArgument(2, $id); $listener->replaceArgument(3, $authenticatorReferences); - $listener->addMethodCall('setSessionAuthenticationStrategy', array(new Reference('security.authentication.session_strategy.'.$id))); // determine the entryPointId to use $entryPointId = $this->determineEntryPoint($defaultEntryPoint, $config); diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php index 5138eff36719e..0b671d96914d3 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php @@ -39,6 +39,7 @@ class SecurityExtension extends Extension private $factories = array(); private $userProviderFactories = array(); private $expressionLanguage; + private $statelessFirewallKeys = array(); public function __construct() { @@ -89,6 +90,9 @@ public function load(array $configs, ContainerBuilder $container) $this->createAuthorization($config, $container); $this->createRoleHierarchy($config, $container); + $container->getDefinition('security.authentication.guard_handler') + ->replaceArgument(2, $this->statelessFirewallKeys); + if ($config['encoders']) { $this->createEncoders($config['encoders'], $container); } @@ -287,6 +291,7 @@ private function createFirewall(ContainerBuilder $container, $id, $firewall, &$a $listeners[] = new Reference($this->createContextListener($container, $contextKey)); $sessionStrategyId = 'security.authentication.session_strategy'; } else { + $this->statelessFirewallKeys[] = $id; $sessionStrategyId = 'security.authentication.session_strategy_noop'; } $container->setAlias(new Alias('security.authentication.session_strategy.'.$id, false), $sessionStrategyId); diff --git a/src/Symfony/Bundle/SecurityBundle/Resources/config/guard.xml b/src/Symfony/Bundle/SecurityBundle/Resources/config/guard.xml index 80318c243a970..a4e57be0b0048 100644 --- a/src/Symfony/Bundle/SecurityBundle/Resources/config/guard.xml +++ b/src/Symfony/Bundle/SecurityBundle/Resources/config/guard.xml @@ -10,6 +10,10 @@ > + + + + diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php index 72ef2e0c3ed56..6c6b26c48f94d 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php +++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php @@ -119,6 +119,33 @@ public function testDisableRoleHierarchyVoter() $this->assertFalse($container->hasDefinition('security.access.role_hierarchy_voter')); } + public function testGuardHandlerIsPassedStatelessFirewalls() + { + $container = $this->getRawContainer(); + + $container->loadFromExtension('security', array( + 'providers' => array( + 'default' => array('id' => 'foo'), + ), + + 'firewalls' => array( + 'some_firewall' => array( + 'pattern' => '^/admin', + 'http_basic' => null, + ), + 'stateless_firewall' => array( + 'pattern' => '/.*', + 'stateless' => true, + 'http_basic' => null, + ), + ), + )); + + $container->compile(); + $definition = $container->getDefinition('security.authentication.guard_handler'); + $this->assertSame(array('stateless_firewall'), $definition->getArgument(2)); + } + protected function getRawContainer() { $container = new ContainerBuilder(); diff --git a/src/Symfony/Component/Security/Guard/Firewall/GuardAuthenticationListener.php b/src/Symfony/Component/Security/Guard/Firewall/GuardAuthenticationListener.php index ed0a36e9dca5d..8184406fc696d 100644 --- a/src/Symfony/Component/Security/Guard/Firewall/GuardAuthenticationListener.php +++ b/src/Symfony/Component/Security/Guard/Firewall/GuardAuthenticationListener.php @@ -117,7 +117,7 @@ private function executeGuardAuthenticator($uniqueGuardKey, GuardAuthenticatorIn } // sets the token on the token storage, etc - $this->guardHandler->authenticateWithToken($token, $request); + $this->guardHandler->authenticateWithToken($token, $request, $this->providerKey); } catch (AuthenticationException $e) { // oh no! Authentication failed! diff --git a/src/Symfony/Component/Security/Guard/GuardAuthenticatorHandler.php b/src/Symfony/Component/Security/Guard/GuardAuthenticatorHandler.php index 7b340a2601cee..d715c805824e9 100644 --- a/src/Symfony/Component/Security/Guard/GuardAuthenticatorHandler.php +++ b/src/Symfony/Component/Security/Guard/GuardAuthenticatorHandler.php @@ -35,19 +35,28 @@ class GuardAuthenticatorHandler private $tokenStorage; private $dispatcher; private $sessionStrategy; + private $statelessProviderKeys; - public function __construct(TokenStorageInterface $tokenStorage, EventDispatcherInterface $eventDispatcher = null) + /** + * @param array $statelessProviderKeys An array of provider/firewall keys that are "stateless" and so do not need the session migrated on success + */ + public function __construct(TokenStorageInterface $tokenStorage, EventDispatcherInterface $eventDispatcher = null, array $statelessProviderKeys = array()) { $this->tokenStorage = $tokenStorage; $this->dispatcher = $eventDispatcher; + $this->statelessProviderKeys = $statelessProviderKeys; } /** * Authenticates the given token in the system. + * + * @param string $providerKey The name of the provider/firewall being used for authentication */ - public function authenticateWithToken(TokenInterface $token, Request $request) + public function authenticateWithToken(TokenInterface $token, Request $request/*, string $providerKey */) { - $this->migrateSession($request, $token); + $providerKey = \func_num_args() > 2 ? func_get_arg(2) : null; + + $this->migrateSession($request, $token, $providerKey); $this->tokenStorage->setToken($token); if (null !== $this->dispatcher) { @@ -98,7 +107,7 @@ public function authenticateUserAndHandleSuccess(UserInterface $user, Request $r // create an authenticated token for the User $token = $authenticator->createAuthenticatedToken($user, $providerKey); // authenticate this in the system - $this->authenticateWithToken($token, $request); + $this->authenticateWithToken($token, $request, $providerKey); // return the success metric return $this->handleAuthenticationSuccess($token, $request, $authenticator, $providerKey); @@ -140,9 +149,9 @@ public function setSessionAuthenticationStrategy(SessionAuthenticationStrategyIn $this->sessionStrategy = $sessionStrategy; } - private function migrateSession(Request $request, TokenInterface $token) + private function migrateSession(Request $request, TokenInterface $token, $providerKey) { - if (!$this->sessionStrategy || !$request->hasSession() || !$request->hasPreviousSession()) { + if (!$this->sessionStrategy || !$request->hasSession() || !$request->hasPreviousSession() || \in_array($providerKey, $this->statelessProviderKeys, true)) { return; } diff --git a/src/Symfony/Component/Security/Guard/Tests/GuardAuthenticatorHandlerTest.php b/src/Symfony/Component/Security/Guard/Tests/GuardAuthenticatorHandlerTest.php index 49ce6548acab5..f7a8de7affd01 100644 --- a/src/Symfony/Component/Security/Guard/Tests/GuardAuthenticatorHandlerTest.php +++ b/src/Symfony/Component/Security/Guard/Tests/GuardAuthenticatorHandlerTest.php @@ -143,6 +143,18 @@ public function testSessionStrategyIsCalled() $handler->authenticateWithToken($this->token, $this->request); } + public function testSessionStrategyIsNotCalledWhenStateless() + { + $this->configurePreviousSession(); + + $this->sessionStrategy->expects($this->never()) + ->method('onAuthentication'); + + $handler = new GuardAuthenticatorHandler($this->tokenStorage, $this->dispatcher, array('some_provider_key')); + $handler->setSessionAuthenticationStrategy($this->sessionStrategy); + $handler->authenticateWithToken($this->token, $this->request, 'some_provider_key'); + } + protected function setUp() { $this->tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock(); From 39dd9b2f9793571df6d4e46fbdc5ceef482ffbe0 Mon Sep 17 00:00:00 2001 From: Sepehr Lajevardi Date: Thu, 14 Jun 2018 11:11:11 +0430 Subject: [PATCH 57/98] [Cache] Fix typo in comment. --- src/Symfony/Component/Cache/Traits/RedisTrait.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Cache/Traits/RedisTrait.php b/src/Symfony/Component/Cache/Traits/RedisTrait.php index 9fc6177c6bd78..b247b115fa2c0 100644 --- a/src/Symfony/Component/Cache/Traits/RedisTrait.php +++ b/src/Symfony/Component/Cache/Traits/RedisTrait.php @@ -197,7 +197,7 @@ protected function doHave($id) protected function doClear($namespace) { // When using a native Redis cluster, clearing the cache is done by versioning in AbstractTrait::clear(). - // This means old keys are not really removed until they expire and may need gargage collection. + // This means old keys are not really removed until they expire and may need garbage collection. $cleared = true; $hosts = array($this->redis); From 198bee0916fb62ca209c3623709c9066b4559a71 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 11 Jun 2018 16:08:45 +0200 Subject: [PATCH 58/98] [ProxyManagerBridge] Fixed support of private services --- .../LazyProxy/PhpDumper/ProxyDumper.php | 2 +- .../LazyProxy/PhpDumper/ProxyDumperTest.php | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Bridge/ProxyManager/LazyProxy/PhpDumper/ProxyDumper.php b/src/Symfony/Bridge/ProxyManager/LazyProxy/PhpDumper/ProxyDumper.php index 316cc8250173f..4a54cc7658e6b 100644 --- a/src/Symfony/Bridge/ProxyManager/LazyProxy/PhpDumper/ProxyDumper.php +++ b/src/Symfony/Bridge/ProxyManager/LazyProxy/PhpDumper/ProxyDumper.php @@ -57,7 +57,7 @@ public function getProxyFactoryCode(Definition $definition, $id, $factoryCode = $instantiation = 'return'; if ($definition->isShared()) { - $instantiation .= " \$this->services['$id'] ="; + $instantiation .= sprintf(' $this->%s[\'%s\'] =', $definition->isPublic() && !$definition->isPrivate() ? 'services' : 'privates', $id); } if (null === $factoryCode) { diff --git a/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/ProxyDumperTest.php b/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/ProxyDumperTest.php index b4ce2106d8f2b..357b26844c364 100644 --- a/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/ProxyDumperTest.php +++ b/src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/ProxyDumperTest.php @@ -83,6 +83,34 @@ public function testGetProxyFactoryCode() ); } + /** + * @dataProvider getPrivatePublicDefinitions + */ + public function testCorrectAssigning(Definition $definition, $access) + { + $definition->setLazy(true); + + $code = $this->dumper->getProxyFactoryCode($definition, 'foo', '$this->getFoo2Service(false)'); + + $this->assertStringMatchesFormat('%A$this->'.$access.'[\'foo\'] = %A', $code); + } + + public function getPrivatePublicDefinitions() + { + return array( + array( + (new Definition(__CLASS__)) + ->setPublic(false), + 'privates', + ), + array( + (new Definition(__CLASS__)) + ->setPublic(true), + 'services', + ), + ); + } + /** * @group legacy */ From 3ecabfc36e976b209ed3a6f90093091a1ccd0e13 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 13 Jun 2018 13:43:13 +0200 Subject: [PATCH 59/98] [VarDumper] Fix dumping ArrayObject and ArrayIterator instances --- .../Component/VarDumper/Caster/SplCaster.php | 53 ++++++++++--------- .../VarDumper/Cloner/AbstractCloner.php | 1 + .../VarDumper/Tests/Caster/SplCasterTest.php | 47 ++++++++++++++++ 3 files changed, 77 insertions(+), 24 deletions(-) diff --git a/src/Symfony/Component/VarDumper/Caster/SplCaster.php b/src/Symfony/Component/VarDumper/Caster/SplCaster.php index f3a333a7e7099..73f152ab18b0c 100644 --- a/src/Symfony/Component/VarDumper/Caster/SplCaster.php +++ b/src/Symfony/Component/VarDumper/Caster/SplCaster.php @@ -29,30 +29,12 @@ class SplCaster public static function castArrayObject(\ArrayObject $c, array $a, Stub $stub, $isNested) { - $prefix = Caster::PREFIX_VIRTUAL; - $class = $stub->class; - $flags = $c->getFlags(); - - $b = array( - $prefix.'flag::STD_PROP_LIST' => (bool) ($flags & \ArrayObject::STD_PROP_LIST), - $prefix.'flag::ARRAY_AS_PROPS' => (bool) ($flags & \ArrayObject::ARRAY_AS_PROPS), - $prefix.'iteratorClass' => $c->getIteratorClass(), - $prefix.'storage' => $c->getArrayCopy(), - ); - - if ('ArrayObject' === $class) { - $a = $b; - } else { - if (!($flags & \ArrayObject::STD_PROP_LIST)) { - $c->setFlags(\ArrayObject::STD_PROP_LIST); - $a = Caster::castObject($c, new \ReflectionClass($class)); - $c->setFlags($flags); - } - - $a += $b; - } + return self::castSplArray($c, $a, $stub, $isNested); + } - return $a; + public static function castArrayIterator(\ArrayIterator $c, array $a, Stub $stub, $isNested) + { + return self::castSplArray($c, $a, $stub, $isNested); } public static function castHeap(\Iterator $c, array $a, Stub $stub, $isNested) @@ -182,7 +164,7 @@ public static function castObjectStorage(\SplObjectStorage $c, array $a, Stub $s $clone = clone $c; foreach ($clone as $obj) { - $storage[spl_object_hash($obj)] = array( + $storage[] = array( 'object' => $obj, 'info' => $clone->getInfo(), ); @@ -201,4 +183,27 @@ public static function castOuterIterator(\OuterIterator $c, array $a, Stub $stub return $a; } + + private static function castSplArray($c, array $a, Stub $stub, $isNested) + { + $prefix = Caster::PREFIX_VIRTUAL; + $class = $stub->class; + $flags = $c->getFlags(); + + if (!($flags & \ArrayObject::STD_PROP_LIST)) { + $c->setFlags(\ArrayObject::STD_PROP_LIST); + $a = Caster::castObject($c, new \ReflectionClass($class)); + $c->setFlags($flags); + } + $a += array( + $prefix.'flag::STD_PROP_LIST' => (bool) ($flags & \ArrayObject::STD_PROP_LIST), + $prefix.'flag::ARRAY_AS_PROPS' => (bool) ($flags & \ArrayObject::ARRAY_AS_PROPS), + ); + if ($c instanceof \ArrayObject) { + $a[$prefix.'iteratorClass'] = $c->getIteratorClass(); + } + $a[$prefix.'storage'] = $c->getArrayCopy(); + + return $a; + } } diff --git a/src/Symfony/Component/VarDumper/Cloner/AbstractCloner.php b/src/Symfony/Component/VarDumper/Cloner/AbstractCloner.php index bd42cc727e742..cc924ec2520d7 100644 --- a/src/Symfony/Component/VarDumper/Cloner/AbstractCloner.php +++ b/src/Symfony/Component/VarDumper/Cloner/AbstractCloner.php @@ -89,6 +89,7 @@ abstract class AbstractCloner implements ClonerInterface 'AMQPEnvelope' => 'Symfony\Component\VarDumper\Caster\AmqpCaster::castEnvelope', 'ArrayObject' => 'Symfony\Component\VarDumper\Caster\SplCaster::castArrayObject', + 'ArrayIterator' => 'Symfony\Component\VarDumper\Caster\SplCaster::castArrayIterator', 'SplDoublyLinkedList' => 'Symfony\Component\VarDumper\Caster\SplCaster::castDoublyLinkedList', 'SplFileInfo' => 'Symfony\Component\VarDumper\Caster\SplCaster::castFileInfo', 'SplFileObject' => 'Symfony\Component\VarDumper\Caster\SplCaster::castFileObject', diff --git a/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php b/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php index 2aa8aee119e84..545783995d646 100644 --- a/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php +++ b/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php @@ -160,4 +160,51 @@ public function testCastObjectStorageDumpsInfo() $this->assertDumpMatchesFormat('%ADateTime%A', $var); } + + public function testCastArrayObject() + { + if (\defined('HHVM_VERSION')) { + $this->markTestSkipped('HHVM as different internal details.'); + } + $var = new \ArrayObject(array(123)); + $var->foo = 234; + + $expected = << 123 + ] +} +EOTXT; + $this->assertDumpEquals($expected, $var); + } + + public function testArrayIterator() + { + if (\defined('HHVM_VERSION')) { + $this->markTestSkipped('HHVM as different internal details.'); + } + $var = new MyArrayIterator(array(234)); + + $expected = << 234 + ] +} +EOTXT; + $this->assertDumpEquals($expected, $var); + } +} + +class MyArrayIterator extends \ArrayIterator +{ + private $foo = 123; } From aa432743f5ec7a152bf693eeb25e24a43019eb90 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Fri, 15 Jun 2018 09:52:13 +0200 Subject: [PATCH 60/98] remove HHVM code --- .../Component/VarDumper/Tests/Caster/SplCasterTest.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php b/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php index d3c9ec25f5f6d..2d7e73a916713 100644 --- a/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php +++ b/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php @@ -166,9 +166,6 @@ public function testCastObjectStorageDumpsInfo() public function testCastArrayObject() { - if (\defined('HHVM_VERSION')) { - $this->markTestSkipped('HHVM as different internal details.'); - } $var = new \ArrayObject(array(123)); $var->foo = 234; @@ -188,9 +185,6 @@ public function testCastArrayObject() public function testArrayIterator() { - if (\defined('HHVM_VERSION')) { - $this->markTestSkipped('HHVM as different internal details.'); - } $var = new MyArrayIterator(array(234)); $expected = << Date: Thu, 14 Jun 2018 03:19:59 +0300 Subject: [PATCH 61/98] [Framework][Workflow] Added support for interfaces --- .../FrameworkBundle/DependencyInjection/Configuration.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php index 74f092a3d840c..f806e49746f9c 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php @@ -329,8 +329,8 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode) ->prototype('scalar') ->cannotBeEmpty() ->validate() - ->ifTrue(function ($v) { return !class_exists($v); }) - ->thenInvalid('The supported class %s does not exist.') + ->ifTrue(function ($v) { return !class_exists($v) && !interface_exists($v); }) + ->thenInvalid('The supported class or interface "%s" does not exist.') ->end() ->end() ->end() From 4cec0e1260e39a3f93adb47e5851fd1473ba04f0 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Sat, 16 Jun 2018 10:34:48 +0200 Subject: [PATCH 62/98] [HttpKernel] Fix resetting DumpDataCollector::$isCollected --- .../Component/HttpKernel/DataCollector/DumpDataCollector.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php b/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php index 27a9a825243a2..be06a61c40ff1 100644 --- a/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php +++ b/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php @@ -171,7 +171,7 @@ public function reset() } $this->data = array(); $this->dataCount = 0; - $this->isCollected = false; + $this->isCollected = true; $this->clonesCount = 0; $this->clonesIndex = 0; } From 13e983a127b9a55aa7ffebe8da3ff88958f712ef Mon Sep 17 00:00:00 2001 From: Robin Chalas Date: Mon, 18 Jun 2018 11:28:47 +0200 Subject: [PATCH 63/98] Fix merge --- .../Security/Factory/GuardAuthenticationFactory.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php index 852a6d14ccc84..d18d2a92f06fb 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/GuardAuthenticationFactory.php @@ -80,7 +80,6 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider, $listener = $container->setDefinition($listenerId, new ChildDefinition('security.authentication.listener.guard')); $listener->replaceArgument(2, $id); $listener->replaceArgument(3, $authenticators); - $listener->addMethodCall('setSessionAuthenticationStrategy', array(new Reference('security.authentication.session_strategy.'.$id))); // determine the entryPointId to use $entryPointId = $this->determineEntryPoint($defaultEntryPoint, $config); From dae704ad2f9f0325b3d34be4683daf0fd7f652fb Mon Sep 17 00:00:00 2001 From: "karl.rixon" Date: Fri, 25 May 2018 14:40:09 +0100 Subject: [PATCH 64/98] Fix #27378: Error when rendering a DateIntervalType form with exactly 0 weeks --- .../DateIntervalToArrayTransformer.php | 2 +- .../DateIntervalToArrayTransformerTest.php | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Form/Extension/Core/DataTransformer/DateIntervalToArrayTransformer.php b/src/Symfony/Component/Form/Extension/Core/DataTransformer/DateIntervalToArrayTransformer.php index f5004241f3a99..5e0e73fe21660 100644 --- a/src/Symfony/Component/Form/Extension/Core/DataTransformer/DateIntervalToArrayTransformer.php +++ b/src/Symfony/Component/Form/Extension/Core/DataTransformer/DateIntervalToArrayTransformer.php @@ -89,7 +89,7 @@ public function transform($dateInterval) $result[$field] = $dateInterval->format('%'.($this->pad ? strtoupper($char) : $char)); } if (in_array('weeks', $this->fields, true)) { - $result['weeks'] = 0; + $result['weeks'] = '0'; if (isset($result['days']) && (int) $result['days'] >= 7) { $result['weeks'] = (string) floor($result['days'] / 7); $result['days'] = (string) ($result['days'] % 7); diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateIntervalToArrayTransformerTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateIntervalToArrayTransformerTest.php index 81e6b3bc6cf66..e5735dfca34f6 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateIntervalToArrayTransformerTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateIntervalToArrayTransformerTest.php @@ -90,6 +90,21 @@ public function testTransformWithWeek() $this->assertSame($output, $input); } + public function testTransformWithZeroWeek() + { + $transformer = new DateIntervalToArrayTransformer(array('weeks', 'minutes', 'seconds')); + $input = new \DateInterval('P1Y2M0WT4H5M6S'); + $output = array( + 'weeks' => '0', + 'minutes' => '5', + 'seconds' => '6', + ); + $input = $transformer->transform($input); + ksort($input); + ksort($output); + $this->assertSame($output, $input); + } + public function testTransformDaysToWeeks() { $transformer = new DateIntervalToArrayTransformer(array('weeks', 'minutes', 'seconds')); From 0bc53d66c0c09fb5b7536e1ceb02b5baceaa3936 Mon Sep 17 00:00:00 2001 From: Gautier Deuette Date: Mon, 18 Jun 2018 14:21:59 +0200 Subject: [PATCH 65/98] [Validator] Remove BOM in some xlf files --- .../Component/Form/Resources/translations/validators.hy.xlf | 4 ++-- .../Component/Form/Resources/translations/validators.lt.xlf | 4 ++-- .../Component/Form/Resources/translations/validators.mn.xlf | 2 +- .../Component/Form/Resources/translations/validators.ru.xlf | 4 ++-- .../Validator/Resources/translations/validators.lt.xlf | 2 +- .../Validator/Resources/translations/validators.mn.xlf | 2 +- .../Validator/Resources/translations/validators.ru.xlf | 2 +- .../Validator/Resources/translations/validators.uk.xlf | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Symfony/Component/Form/Resources/translations/validators.hy.xlf b/src/Symfony/Component/Form/Resources/translations/validators.hy.xlf index 5a6091f890545..7550cb1b5818e 100644 --- a/src/Symfony/Component/Form/Resources/translations/validators.hy.xlf +++ b/src/Symfony/Component/Form/Resources/translations/validators.hy.xlf @@ -1,4 +1,4 @@ - + @@ -16,4 +16,4 @@ - \ No newline at end of file + diff --git a/src/Symfony/Component/Form/Resources/translations/validators.lt.xlf b/src/Symfony/Component/Form/Resources/translations/validators.lt.xlf index 25f30887bc1bf..e9eebc7389739 100644 --- a/src/Symfony/Component/Form/Resources/translations/validators.lt.xlf +++ b/src/Symfony/Component/Form/Resources/translations/validators.lt.xlf @@ -1,4 +1,4 @@ - + @@ -16,4 +16,4 @@ - \ No newline at end of file + diff --git a/src/Symfony/Component/Form/Resources/translations/validators.mn.xlf b/src/Symfony/Component/Form/Resources/translations/validators.mn.xlf index 002b01c175b8f..171df74d63c0c 100644 --- a/src/Symfony/Component/Form/Resources/translations/validators.mn.xlf +++ b/src/Symfony/Component/Form/Resources/translations/validators.mn.xlf @@ -1,4 +1,4 @@ - + diff --git a/src/Symfony/Component/Form/Resources/translations/validators.ru.xlf b/src/Symfony/Component/Form/Resources/translations/validators.ru.xlf index 8d829f1b46ea4..fbbbeb442297c 100644 --- a/src/Symfony/Component/Form/Resources/translations/validators.ru.xlf +++ b/src/Symfony/Component/Form/Resources/translations/validators.ru.xlf @@ -1,4 +1,4 @@ - + @@ -16,4 +16,4 @@ - \ No newline at end of file + diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.lt.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.lt.xlf index a556c45f0c42f..6bdb8142a33e2 100644 --- a/src/Symfony/Component/Validator/Resources/translations/validators.lt.xlf +++ b/src/Symfony/Component/Validator/Resources/translations/validators.lt.xlf @@ -1,4 +1,4 @@ - + diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.mn.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.mn.xlf index dfe7eebf6d53e..4be2198aa3b27 100644 --- a/src/Symfony/Component/Validator/Resources/translations/validators.mn.xlf +++ b/src/Symfony/Component/Validator/Resources/translations/validators.mn.xlf @@ -1,4 +1,4 @@ - + diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.ru.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.ru.xlf index d7a90c907ed08..3ce5e6e9d4330 100644 --- a/src/Symfony/Component/Validator/Resources/translations/validators.ru.xlf +++ b/src/Symfony/Component/Validator/Resources/translations/validators.ru.xlf @@ -1,4 +1,4 @@ - + diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.uk.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.uk.xlf index 02ecd5a687c93..3b1f28631b411 100644 --- a/src/Symfony/Component/Validator/Resources/translations/validators.uk.xlf +++ b/src/Symfony/Component/Validator/Resources/translations/validators.uk.xlf @@ -1,4 +1,4 @@ - + From 5922507dc5a51f8a3b03c92e1fc8e674ce306ced Mon Sep 17 00:00:00 2001 From: Vladimir Reznichenko Date: Sun, 17 Jun 2018 21:23:55 +0200 Subject: [PATCH 66/98] [minor] SCA --- .../Tests/DependencyInjection/DoctrineExtensionTest.php | 4 +--- .../FrameworkBundle/Console/Descriptor/TextDescriptor.php | 2 +- .../Tests/Functional/UserPasswordEncoderCommandTest.php | 2 +- .../DependencyInjection/Tests/Compiler/IntegrationTest.php | 2 +- .../Component/Intl/Data/Generator/LanguageDataGenerator.php | 4 +--- src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php | 2 +- 6 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/Tests/DependencyInjection/DoctrineExtensionTest.php b/src/Symfony/Bridge/Doctrine/Tests/DependencyInjection/DoctrineExtensionTest.php index 82558c724af9b..a790441fc24f1 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/DependencyInjection/DoctrineExtensionTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/DependencyInjection/DoctrineExtensionTest.php @@ -208,9 +208,7 @@ public function testLoadBasicCacheDriver($class, array $config, array $expectedC $definition = $container->getDefinition('doctrine.orm.default_metadata_cache'); $defCalls = $definition->getMethodCalls(); $expectedCalls[] = 'setNamespace'; - $actualCalls = array_map(function ($call) { - return $call[0]; - }, $defCalls); + $actualCalls = array_column($defCalls, 0); $this->assertFalse($definition->isPublic()); $this->assertEquals("%$class%", $definition->getClass()); diff --git a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php index ab04ff47f794e..54586bf07afd1 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php +++ b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php @@ -316,7 +316,7 @@ protected function describeContainerDefinition(Definition $definition, array $op } if ($definition->getFile()) { - $tableRows[] = array('Required File', $definition->getFile() ? $definition->getFile() : '-'); + $tableRows[] = array('Required File', $definition->getFile() ?: '-'); } if ($factory = $definition->getFactory()) { diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/UserPasswordEncoderCommandTest.php b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/UserPasswordEncoderCommandTest.php index 163aa5ccb41ef..1c6f5c280f2ed 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/UserPasswordEncoderCommandTest.php +++ b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/UserPasswordEncoderCommandTest.php @@ -86,7 +86,7 @@ public function testEncodePasswordArgon2i() $this->assertContains('Password encoding succeeded', $output); $encoder = new Argon2iPasswordEncoder(); - preg_match('# Encoded password\s+(\$argon2id?\$[\w\d,=\$+\/]+={0,2})\s+#', $output, $matches); + preg_match('# Encoded password\s+(\$argon2id?\$[\w,=\$+\/]+={0,2})\s+#', $output, $matches); $hash = $matches[1]; $this->assertTrue($encoder->isPasswordValid($hash, 'password', null)); } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.php index 15c827d8270df..81b5810f94151 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.php @@ -123,7 +123,7 @@ public function testProcessInlinesWhenThereAreMultipleReferencesButFromTheSameDe public function testYamlContainerCompiles($directory, $actualServiceId, $expectedServiceId, ContainerBuilder $mainContainer = null) { // allow a container to be passed in, which might have autoconfigure settings - $container = $mainContainer ? $mainContainer : new ContainerBuilder(); + $container = $mainContainer ?: new ContainerBuilder(); $container->setResourceTracking(false); $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Fixtures/yaml/integration/'.$directory)); $loader->load('main.yml'); diff --git a/src/Symfony/Component/Intl/Data/Generator/LanguageDataGenerator.php b/src/Symfony/Component/Intl/Data/Generator/LanguageDataGenerator.php index 52225f4941a1c..565a8726197a9 100644 --- a/src/Symfony/Component/Intl/Data/Generator/LanguageDataGenerator.php +++ b/src/Symfony/Component/Intl/Data/Generator/LanguageDataGenerator.php @@ -157,9 +157,7 @@ protected function generateDataForMeta(BundleReaderInterface $reader, $tempDir) return array( 'Version' => $rootBundle['Version'], 'Languages' => $this->languageCodes, - 'Aliases' => array_map(function (\ResourceBundle $bundle) { - return $bundle['replacement']; - }, iterator_to_array($metadataBundle['alias']['language'])), + 'Aliases' => array_column(iterator_to_array($metadataBundle['alias']['language']), 'replacement'), 'Alpha2ToAlpha3' => $this->generateAlpha2ToAlpha3Mapping($metadataBundle), ); } diff --git a/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php b/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php index 1a6ea28ac6505..5308d484990b2 100644 --- a/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php +++ b/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php @@ -145,7 +145,7 @@ private function connect() private function disconnect() { if ($this->connection && is_resource($this->connection)) { - ldap_close($this->connection); + ldap_unbind($this->connection); } $this->connection = null; From ec6b941738af178d63e11bc09e6f2bb7dabfb46f Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 19 Jun 2018 11:52:17 +0200 Subject: [PATCH 67/98] [Routing] remove unneeded dev dep on doctrine/common --- src/Symfony/Component/Routing/composer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Symfony/Component/Routing/composer.json b/src/Symfony/Component/Routing/composer.json index 7fb49738ef01e..96384910dc8e2 100644 --- a/src/Symfony/Component/Routing/composer.json +++ b/src/Symfony/Component/Routing/composer.json @@ -24,7 +24,6 @@ "symfony/yaml": "^2.0.5|~3.0.0", "symfony/expression-language": "~2.4|~3.0.0", "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", "psr/log": "~1.0" }, "conflict": { From 7d0ebd41abbe951e4f435da1b1a1ac6277ad123b Mon Sep 17 00:00:00 2001 From: flip111 Date: Wed, 6 Jun 2018 00:03:34 +0100 Subject: [PATCH 68/98] [Finder] Update RealIteratorTestCase --- .../Tests/Iterator/RealIteratorTestCase.php | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/Finder/Tests/Iterator/RealIteratorTestCase.php b/src/Symfony/Component/Finder/Tests/Iterator/RealIteratorTestCase.php index 94253c7ee7ca2..ce3a4ffeb573b 100644 --- a/src/Symfony/Component/Finder/Tests/Iterator/RealIteratorTestCase.php +++ b/src/Symfony/Component/Finder/Tests/Iterator/RealIteratorTestCase.php @@ -60,11 +60,23 @@ public static function setUpBeforeClass() public static function tearDownAfterClass() { - foreach (array_reverse(self::$files) as $file) { - if (DIRECTORY_SEPARATOR === $file[strlen($file) - 1]) { - @rmdir($file); + $paths = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator( + self::$tmpDir, + \RecursiveDirectoryIterator::SKIP_DOTS + ), + \RecursiveIteratorIterator::CHILD_FIRST + ); + + foreach ($paths as $path) { + if ($path->isDir()) { + if ($path->isLink()) { + @unlink($path); + } else { + @rmdir($path); + } } else { - @unlink($file); + @unlink($path); } } } From ab86f43d7877a906d22713d7fae793f2076ce3f6 Mon Sep 17 00:00:00 2001 From: Yanick Witschi Date: Fri, 18 May 2018 16:21:08 +0200 Subject: [PATCH 69/98] Fix surrogate not using original request --- .../HttpKernel/HttpCache/HttpCache.php | 6 ++- .../Tests/HttpCache/HttpCacheTest.php | 39 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php b/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php index 81c75ff7403a4..6f467876989b8 100644 --- a/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php +++ b/src/Symfony/Component/HttpKernel/HttpCache/HttpCache.php @@ -185,7 +185,11 @@ public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQ // FIXME: catch exceptions and implement a 500 error page here? -> in Varnish, there is a built-in error page mechanism if (HttpKernelInterface::MASTER_REQUEST === $type) { $this->traces = array(); - $this->request = $request; + // Keep a clone of the original request for surrogates so they can access it. + // We must clone here to get a separate instance because the application will modify the request during + // the application flow (we know it always does because we do ourselves by setting REMOTE_ADDR to 127.0.0.1 + // and adding the X-Forwarded-For header, see HttpCache::forward()). + $this->request = clone $request; if (null !== $this->surrogate) { $this->surrogateCacheStrategy = $this->surrogate->createCacheStrategy(); } diff --git a/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php b/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php index 41c2d57833769..ab584a9871c2c 100644 --- a/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php @@ -11,9 +11,12 @@ namespace Symfony\Component\HttpKernel\Tests\HttpCache; +use Symfony\Component\HttpKernel\HttpCache\Esi; use Symfony\Component\HttpKernel\HttpCache\HttpCache; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\HttpCache\Store; +use Symfony\Component\HttpKernel\HttpCache\StoreInterface; use Symfony\Component\HttpKernel\HttpKernelInterface; /** @@ -1432,6 +1435,42 @@ public function testDoesNotCacheOptionsRequest() $this->assertHttpKernelIsNotCalled(); $this->assertSame('get', $this->response->getContent()); } + + public function testUsesOriginalRequestForSurrogate() + { + $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock(); + $store = $this->getMockBuilder(StoreInterface::class)->getMock(); + + $kernel + ->expects($this->exactly(2)) + ->method('handle') + ->willReturnCallback(function (Request $request) { + $this->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR')); + + return new Response(); + }); + + $cache = new HttpCache($kernel, + $store, + new Esi() + ); + + $request = Request::create('/'); + $request->server->set('REMOTE_ADDR', '10.0.0.1'); + + // Main request + $cache->handle($request, HttpKernelInterface::MASTER_REQUEST); + + // Main request was now modified by HttpCache + // The surrogate will ask for the request using $this->cache->getRequest() + // which MUST return the original request so the surrogate + // can actually behave like a reverse proxy like e.g. Varnish would. + $this->assertSame('10.0.0.1', $cache->getRequest()->getClientIp()); + $this->assertSame('10.0.0.1', $cache->getRequest()->server->get('REMOTE_ADDR')); + + // Surrogate request + $cache->handle($request, HttpKernelInterface::SUB_REQUEST); + } } class TestKernel implements HttpKernelInterface From e336ebeecf2f7e211a6d3a33e9ced8aa11029658 Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Fri, 6 Apr 2018 17:41:22 +0200 Subject: [PATCH 70/98] Fixing GlobResource when inside phar archive When packaging an Sf4 application as a PHAR archive using globs at various locations (`Kernel`, `services.yaml`) most glob files are not found because the `glob()` PHP method [does not support PHAR streams](https://stackoverflow.com/questions/8203188/unexpected-problems-with-php-phar). Using the regex fallback instead when operating inside PHAR archives fixes the behavior for me. --- src/Symfony/Component/Config/Resource/GlobResource.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Config/Resource/GlobResource.php b/src/Symfony/Component/Config/Resource/GlobResource.php index 1edd7cd22e44a..95c6ac629f0d3 100644 --- a/src/Symfony/Component/Config/Resource/GlobResource.php +++ b/src/Symfony/Component/Config/Resource/GlobResource.php @@ -93,7 +93,7 @@ public function getIterator() return; } - if (false === strpos($this->pattern, '/**/') && (defined('GLOB_BRACE') || false === strpos($this->pattern, '{'))) { + if (0 !== strpos($this->prefix, 'phar://') && false === strpos($this->pattern, '/**/') && (defined('GLOB_BRACE') || false === strpos($this->pattern, '{'))) { foreach (glob($this->prefix.$this->pattern, defined('GLOB_BRACE') ? GLOB_BRACE : 0) as $path) { if ($this->recursive && is_dir($path)) { $files = iterator_to_array(new \RecursiveIteratorIterator( From b5ee7c3ccd9a407d847b51652ff7b28f7602447d Mon Sep 17 00:00:00 2001 From: Michael Moravec Date: Tue, 19 Jun 2018 13:59:09 +0200 Subject: [PATCH 71/98] Set serialize_precision explicitly to avoid fancy float rounding --- .../Component/HttpFoundation/Tests/JsonResponseTest.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php b/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php index e15505cc6948e..0559b5ba0ff8d 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php @@ -16,6 +16,15 @@ class JsonResponseTest extends TestCase { + protected function setUp() + { + parent::setUp(); + + if (!defined('HHVM_VERSION')) { + $this->iniSet('serialize_precision', 14); + } + } + public function testConstructorEmptyCreatesJsonObject() { $response = new JsonResponse(); From 0f2b75213878bb34c4ee4f12d60b7afd9c0dc205 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 19 Jun 2018 22:37:28 +0200 Subject: [PATCH 72/98] [HttpKernel] fix PHP 5.4 compat --- .../Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php b/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php index ab584a9871c2c..2c2d015dc9016 100644 --- a/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php @@ -16,7 +16,6 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\HttpCache\Store; -use Symfony\Component\HttpKernel\HttpCache\StoreInterface; use Symfony\Component\HttpKernel\HttpKernelInterface; /** @@ -1438,8 +1437,8 @@ public function testDoesNotCacheOptionsRequest() public function testUsesOriginalRequestForSurrogate() { - $kernel = $this->getMockBuilder(HttpKernelInterface::class)->getMock(); - $store = $this->getMockBuilder(StoreInterface::class)->getMock(); + $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(); + $store = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpCache\StoreInterface')->getMock(); $kernel ->expects($this->exactly(2)) From 09ec9e7cce0eea7747cf51232a9dc78b9f8072e5 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 20 Jun 2018 08:57:17 +0200 Subject: [PATCH 73/98] [Cache] fix Memcached tests --- .../Tests/Adapter/MemcachedAdapterTest.php | 19 ++++++++++++++++++- .../Cache/Tests/Simple/MemcachedCacheTest.php | 19 ++++++++++++++++++- .../Simple/MemcachedCacheTextModeTest.php | 8 +++++++- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php index 76e0608006173..7cdd7c1516b8b 100644 --- a/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php +++ b/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php @@ -22,6 +22,7 @@ class MemcachedAdapterTest extends AdapterTestCase ); protected static $client; + protected static $enableVersioning = false; public static function setupBeforeClass() { @@ -41,7 +42,23 @@ public function createCachePool($defaultLifetime = 0) { $client = $defaultLifetime ? AbstractAdapter::createConnection('memcached://'.getenv('MEMCACHED_HOST')) : self::$client; - return new MemcachedAdapter($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); + $adapter = new MemcachedAdapter($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); + + if (self::$enableVersioning) { + $adapter->enableVersioning(); + } + + return $adapter; + } + + public function testClear() + { + self::$enableVersioning = true; + try { + parent::testClear(); + } finally { + self::$enableVersioning = false; + } } public function testOptions() diff --git a/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTest.php b/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTest.php index b46d7e443dd20..f07bbe238d7cf 100644 --- a/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTest.php +++ b/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTest.php @@ -23,6 +23,7 @@ class MemcachedCacheTest extends CacheTestCase ); protected static $client; + protected static $enableVersioning = false; public static function setupBeforeClass() { @@ -42,7 +43,23 @@ public function createSimpleCache($defaultLifetime = 0) { $client = $defaultLifetime ? AbstractAdapter::createConnection('memcached://'.getenv('MEMCACHED_HOST'), array('binary_protocol' => false)) : self::$client; - return new MemcachedCache($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); + $adapter = new MemcachedCache($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); + + if (self::$enableVersioning) { + $adapter->enableVersioning(); + } + + return $adapter; + } + + public function testClear() + { + self::$enableVersioning = true; + try { + parent::testClear(); + } finally { + self::$enableVersioning = false; + } } public function testCreatePersistentConnectionShouldNotDupServerList() diff --git a/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTextModeTest.php b/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTextModeTest.php index 43cadf9034846..fd42a841d1eb7 100644 --- a/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTextModeTest.php +++ b/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTextModeTest.php @@ -20,6 +20,12 @@ public function createSimpleCache($defaultLifetime = 0) { $client = AbstractAdapter::createConnection('memcached://'.getenv('MEMCACHED_HOST'), array('binary_protocol' => false)); - return new MemcachedCache($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); + $adapter = new MemcachedCache($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); + + if (self::$enableVersioning) { + $adapter->enableVersioning(); + } + + return $adapter; } } From bb644c1df81966e549598a600dc190fb28b60159 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 20 Jun 2018 10:56:56 +0200 Subject: [PATCH 74/98] Revert "minor #27649 [Cache] fix Memcached tests (nicolas-grekas)" This reverts commit dc323f084c5ad46af63751d3284f0eedb99542b5, reversing changes made to 917b07a5c67e6e206c831c6b7c6869856bd2edb2. --- .../Tests/Adapter/MemcachedAdapterTest.php | 19 +------------------ .../Cache/Tests/Simple/MemcachedCacheTest.php | 19 +------------------ .../Simple/MemcachedCacheTextModeTest.php | 8 +------- 3 files changed, 3 insertions(+), 43 deletions(-) diff --git a/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php b/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php index 7cdd7c1516b8b..76e0608006173 100644 --- a/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php +++ b/src/Symfony/Component/Cache/Tests/Adapter/MemcachedAdapterTest.php @@ -22,7 +22,6 @@ class MemcachedAdapterTest extends AdapterTestCase ); protected static $client; - protected static $enableVersioning = false; public static function setupBeforeClass() { @@ -42,23 +41,7 @@ public function createCachePool($defaultLifetime = 0) { $client = $defaultLifetime ? AbstractAdapter::createConnection('memcached://'.getenv('MEMCACHED_HOST')) : self::$client; - $adapter = new MemcachedAdapter($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); - - if (self::$enableVersioning) { - $adapter->enableVersioning(); - } - - return $adapter; - } - - public function testClear() - { - self::$enableVersioning = true; - try { - parent::testClear(); - } finally { - self::$enableVersioning = false; - } + return new MemcachedAdapter($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); } public function testOptions() diff --git a/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTest.php b/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTest.php index f07bbe238d7cf..b46d7e443dd20 100644 --- a/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTest.php +++ b/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTest.php @@ -23,7 +23,6 @@ class MemcachedCacheTest extends CacheTestCase ); protected static $client; - protected static $enableVersioning = false; public static function setupBeforeClass() { @@ -43,23 +42,7 @@ public function createSimpleCache($defaultLifetime = 0) { $client = $defaultLifetime ? AbstractAdapter::createConnection('memcached://'.getenv('MEMCACHED_HOST'), array('binary_protocol' => false)) : self::$client; - $adapter = new MemcachedCache($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); - - if (self::$enableVersioning) { - $adapter->enableVersioning(); - } - - return $adapter; - } - - public function testClear() - { - self::$enableVersioning = true; - try { - parent::testClear(); - } finally { - self::$enableVersioning = false; - } + return new MemcachedCache($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); } public function testCreatePersistentConnectionShouldNotDupServerList() diff --git a/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTextModeTest.php b/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTextModeTest.php index fd42a841d1eb7..43cadf9034846 100644 --- a/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTextModeTest.php +++ b/src/Symfony/Component/Cache/Tests/Simple/MemcachedCacheTextModeTest.php @@ -20,12 +20,6 @@ public function createSimpleCache($defaultLifetime = 0) { $client = AbstractAdapter::createConnection('memcached://'.getenv('MEMCACHED_HOST'), array('binary_protocol' => false)); - $adapter = new MemcachedCache($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); - - if (self::$enableVersioning) { - $adapter->enableVersioning(); - } - - return $adapter; + return new MemcachedCache($client, str_replace('\\', '.', __CLASS__), $defaultLifetime); } } From bef15cebcaddf3a08f7a09db8730e1c113302a92 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 20 Jun 2018 11:04:54 +0200 Subject: [PATCH 75/98] [Cache] Fix exception handling in AbstractTrait::clear() --- .../Cache/Tests/Simple/CacheTestCase.php | 9 ++++++++ .../Component/Cache/Traits/AbstractTrait.php | 21 +++++++++++-------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/Symfony/Component/Cache/Tests/Simple/CacheTestCase.php b/src/Symfony/Component/Cache/Tests/Simple/CacheTestCase.php index 48b972824c2c2..7c8ff572dc934 100644 --- a/src/Symfony/Component/Cache/Tests/Simple/CacheTestCase.php +++ b/src/Symfony/Component/Cache/Tests/Simple/CacheTestCase.php @@ -42,6 +42,7 @@ public function testDefaultLifeTime() } $cache = $this->createSimpleCache(2); + $cache->clear(); $cache->set('key.dlt', 'value'); sleep(1); @@ -50,6 +51,8 @@ public function testDefaultLifeTime() sleep(2); $this->assertNull($cache->get('key.dlt')); + + $cache->clear(); } public function testNotUnserializable() @@ -59,6 +62,7 @@ public function testNotUnserializable() } $cache = $this->createSimpleCache(); + $cache->clear(); $cache->set('foo', new NotUnserializable()); @@ -69,6 +73,8 @@ public function testNotUnserializable() foreach ($cache->getMultiple(array('foo')) as $value) { } $this->assertNull($value); + + $cache->clear(); } public function testPrune() @@ -83,6 +89,7 @@ public function testPrune() /** @var PruneableInterface|CacheInterface $cache */ $cache = $this->createSimpleCache(); + $cache->clear(); $cache->set('foo', 'foo-val', new \DateInterval('PT05S')); $cache->set('bar', 'bar-val', new \DateInterval('PT10S')); @@ -124,6 +131,8 @@ public function testPrune() $cache->prune(); $this->assertFalse($this->isPruned($cache, 'foo')); $this->assertTrue($this->isPruned($cache, 'qux')); + + $cache->clear(); } } diff --git a/src/Symfony/Component/Cache/Traits/AbstractTrait.php b/src/Symfony/Component/Cache/Traits/AbstractTrait.php index 92999a2f3c34d..dcba1c8bab822 100644 --- a/src/Symfony/Component/Cache/Traits/AbstractTrait.php +++ b/src/Symfony/Component/Cache/Traits/AbstractTrait.php @@ -104,17 +104,20 @@ public function hasItem($key) */ public function clear() { - if ($cleared = $this->versioningIsEnabled) { - $this->namespaceVersion = 2; - foreach ($this->doFetch(array('@'.$this->namespace)) as $v) { - $this->namespaceVersion = 1 + (int) $v; - } - $this->namespaceVersion .= ':'; - $cleared = $this->doSave(array('@'.$this->namespace => $this->namespaceVersion), 0); - } $this->deferred = array(); - try { + if ($cleared = $this->versioningIsEnabled) { + $namespaceVersion = 2; + foreach ($this->doFetch(array('@'.$this->namespace)) as $v) { + $namespaceVersion = 1 + (int) $v; + } + $namespaceVersion .= ':'; + $cleared = $this->doSave(array('@'.$this->namespace => $namespaceVersion), 0); + if ($cleared = true === $cleared || array() === $cleared) { + $this->namespaceVersion = $namespaceVersion; + } + } + return $this->doClear($this->namespace) || $cleared; } catch (\Exception $e) { CacheItem::log($this->logger, 'Failed to clear the cache', array('exception' => $e)); From b7ccf10de7f6964d57c184c97e03a1200569ccec Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 20 Jun 2018 11:38:25 +0200 Subject: [PATCH 76/98] [Cache] Improve resiliency when calling doFetch() in AbstractTrait --- .../Component/Cache/Traits/AbstractTrait.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/Cache/Traits/AbstractTrait.php b/src/Symfony/Component/Cache/Traits/AbstractTrait.php index dcba1c8bab822..bd9cb63ae60e6 100644 --- a/src/Symfony/Component/Cache/Traits/AbstractTrait.php +++ b/src/Symfony/Component/Cache/Traits/AbstractTrait.php @@ -108,8 +108,11 @@ public function clear() try { if ($cleared = $this->versioningIsEnabled) { $namespaceVersion = 2; - foreach ($this->doFetch(array('@'.$this->namespace)) as $v) { - $namespaceVersion = 1 + (int) $v; + try { + foreach ($this->doFetch(array('@'.$this->namespace)) as $v) { + $namespaceVersion = 1 + (int) $v; + } + } catch (\Exception $e) { } $namespaceVersion .= ':'; $cleared = $this->doSave(array('@'.$this->namespace => $namespaceVersion), 0); @@ -236,8 +239,11 @@ private function getId($key) if ($this->versioningIsEnabled && '' === $this->namespaceVersion) { $this->namespaceVersion = '1:'; - foreach ($this->doFetch(array('@'.$this->namespace)) as $v) { - $this->namespaceVersion = $v; + try { + foreach ($this->doFetch(array('@'.$this->namespace)) as $v) { + $this->namespaceVersion = $v; + } + } catch (\Exception $e) { } } From 2d26a556fd8c583553c994a6fe84832a1b2f074c Mon Sep 17 00:00:00 2001 From: jspee Date: Wed, 20 Jun 2018 16:25:33 +0200 Subject: [PATCH 77/98] change `evaluate()` docblock return type from string to mixed --- src/Symfony/Component/ExpressionLanguage/ExpressionLanguage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/ExpressionLanguage/ExpressionLanguage.php b/src/Symfony/Component/ExpressionLanguage/ExpressionLanguage.php index fae922b739c43..a9941f1aab330 100644 --- a/src/Symfony/Component/ExpressionLanguage/ExpressionLanguage.php +++ b/src/Symfony/Component/ExpressionLanguage/ExpressionLanguage.php @@ -60,7 +60,7 @@ public function compile($expression, $names = array()) * @param Expression|string $expression The expression to compile * @param array $values An array of values * - * @return string The result of the evaluation of the expression + * @return mixed The result of the evaluation of the expression */ public function evaluate($expression, $values = array()) { From ff0de67519956d0bd16c5b90a65863571693bac1 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 20 Jun 2018 22:30:04 +0200 Subject: [PATCH 78/98] [Cache] more granular handling of exceptions in AbstractTrait::clear() --- .../Component/Cache/Traits/AbstractTrait.php | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/Symfony/Component/Cache/Traits/AbstractTrait.php b/src/Symfony/Component/Cache/Traits/AbstractTrait.php index bd9cb63ae60e6..7953ae6e8beee 100644 --- a/src/Symfony/Component/Cache/Traits/AbstractTrait.php +++ b/src/Symfony/Component/Cache/Traits/AbstractTrait.php @@ -105,22 +105,26 @@ public function hasItem($key) public function clear() { $this->deferred = array(); - try { - if ($cleared = $this->versioningIsEnabled) { - $namespaceVersion = 2; - try { - foreach ($this->doFetch(array('@'.$this->namespace)) as $v) { - $namespaceVersion = 1 + (int) $v; - } - } catch (\Exception $e) { + if ($cleared = $this->versioningIsEnabled) { + $namespaceVersion = 2; + try { + foreach ($this->doFetch(array('@'.$this->namespace)) as $v) { + $namespaceVersion = 1 + (int) $v; } - $namespaceVersion .= ':'; + } catch (\Exception $e) { + } + $namespaceVersion .= ':'; + try { $cleared = $this->doSave(array('@'.$this->namespace => $namespaceVersion), 0); - if ($cleared = true === $cleared || array() === $cleared) { - $this->namespaceVersion = $namespaceVersion; - } + } catch (\Exception $e) { + $cleared = false; + } + if ($cleared = true === $cleared || array() === $cleared) { + $this->namespaceVersion = $namespaceVersion; } + } + try { return $this->doClear($this->namespace) || $cleared; } catch (\Exception $e) { CacheItem::log($this->logger, 'Failed to clear the cache', array('exception' => $e)); From 7adb641d7cdd64a96a8ac72d71eae4f74679ea74 Mon Sep 17 00:00:00 2001 From: fritzmg Date: Thu, 21 Jun 2018 11:24:14 +0200 Subject: [PATCH 79/98] fix file lock on SunOS --- src/Symfony/Component/Filesystem/LockHandler.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Filesystem/LockHandler.php b/src/Symfony/Component/Filesystem/LockHandler.php index 517b2f01e64b3..8290e5283ab00 100644 --- a/src/Symfony/Component/Filesystem/LockHandler.php +++ b/src/Symfony/Component/Filesystem/LockHandler.php @@ -75,12 +75,12 @@ public function lock($blocking = false) $error = $msg; }); - if (!$this->handle = fopen($this->file, 'r')) { + if (!$this->handle = fopen($this->file, 'r+') ?: fopen($this->file, 'r')) { if ($this->handle = fopen($this->file, 'x')) { chmod($this->file, 0444); - } elseif (!$this->handle = fopen($this->file, 'r')) { + } elseif (!$this->handle = fopen($this->file, 'r+') ?: fopen($this->file, 'r')) { usleep(100); // Give some time for chmod() to complete - $this->handle = fopen($this->file, 'r'); + $this->handle = fopen($this->file, 'r+') ?: fopen($this->file, 'r'); } } restore_error_handler(); From a6696d03b1f223175be4e91c2b9b3027a12896c2 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 20 Jun 2018 21:52:27 +0200 Subject: [PATCH 80/98] fix handling of nested Error instances --- .../Component/HttpKernel/EventListener/ExceptionListener.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php b/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php index f18e42c7d3693..983f1c2b8f2b8 100644 --- a/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php +++ b/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php @@ -64,7 +64,7 @@ public function onKernelException(GetResponseForExceptionEvent $event) } } - $prev = new \ReflectionProperty('Exception', 'previous'); + $prev = new \ReflectionProperty($wrapper instanceof \Exception ? \Exception::class : \Error::class, 'previous'); $prev->setAccessible(true); $prev->setValue($wrapper, $exception); From dca9ff529a05bafd4e44330fd26f06d17f8480db Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Wed, 20 Jun 2018 21:01:59 +0100 Subject: [PATCH 81/98] [Serializer] Updates DocBlock to a mixed param type --- .../Component/Serializer/Normalizer/NormalizerInterface.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Serializer/Normalizer/NormalizerInterface.php b/src/Symfony/Component/Serializer/Normalizer/NormalizerInterface.php index b1e5bb8599a28..773e26b36dec7 100644 --- a/src/Symfony/Component/Serializer/Normalizer/NormalizerInterface.php +++ b/src/Symfony/Component/Serializer/Normalizer/NormalizerInterface.php @@ -21,7 +21,7 @@ interface NormalizerInterface /** * Normalizes an object into a set of arrays/scalars. * - * @param object $object Object to normalize + * @param mixed $object Object to normalize * @param string $format Format the normalization result will be encoded as * @param array $context Context options for the normalizer * From 749410a2241ec8b92f387722d9646211b08f00bd Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Thu, 21 Jun 2018 13:07:36 +0200 Subject: [PATCH 82/98] [HttpKernel] fix test compat with PHP 5.3 --- .../Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php b/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php index 2c2d015dc9016..f5b40002460e4 100644 --- a/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/HttpCache/HttpCacheTest.php @@ -1440,11 +1440,12 @@ public function testUsesOriginalRequestForSurrogate() $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(); $store = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpCache\StoreInterface')->getMock(); + $that = $this; $kernel ->expects($this->exactly(2)) ->method('handle') - ->willReturnCallback(function (Request $request) { - $this->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR')); + ->willReturnCallback(function (Request $request) use ($that) { + $that->assertSame('127.0.0.1', $request->server->get('REMOTE_ADDR')); return new Response(); }); From 9c9ae7d9c96ccbabe094ed998be4998fbe01b6e3 Mon Sep 17 00:00:00 2001 From: Fritz Michael Gschwantner Date: Thu, 21 Jun 2018 09:40:59 +0200 Subject: [PATCH 83/98] [Lock] use 'r+' for fopen (fixes issue on Solaris) --- src/Symfony/Component/Lock/Store/FlockStore.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Lock/Store/FlockStore.php b/src/Symfony/Component/Lock/Store/FlockStore.php index d0317358e89a5..5c5baee29a91d 100644 --- a/src/Symfony/Component/Lock/Store/FlockStore.php +++ b/src/Symfony/Component/Lock/Store/FlockStore.php @@ -79,12 +79,12 @@ private function lock(Key $key, $blocking) // Silence error reporting set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; }); - if (!$handle = fopen($fileName, 'r')) { + if (!$handle = fopen($fileName, 'r+') ?: fopen($fileName, 'r')) { if ($handle = fopen($fileName, 'x')) { chmod($fileName, 0444); - } elseif (!$handle = fopen($fileName, 'r')) { + } elseif (!$handle = fopen($fileName, 'r+') ?: fopen($fileName, 'r')) { usleep(100); // Give some time for chmod() to complete - $handle = fopen($fileName, 'r'); + $handle = fopen($fileName, 'r+') ?: fopen($fileName, 'r'); } } restore_error_handler(); From 3bd9a6b97e780dddee3f82525c7433cc4d3aed48 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Thu, 21 Jun 2018 14:16:06 +0200 Subject: [PATCH 84/98] [Cache] fix visibility of RedisTrait::init() --- src/Symfony/Component/Cache/Traits/RedisTrait.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Cache/Traits/RedisTrait.php b/src/Symfony/Component/Cache/Traits/RedisTrait.php index b247b115fa2c0..5a9592a901549 100644 --- a/src/Symfony/Component/Cache/Traits/RedisTrait.php +++ b/src/Symfony/Component/Cache/Traits/RedisTrait.php @@ -41,7 +41,7 @@ trait RedisTrait /** * @param \Redis|\RedisArray|\RedisCluster|\Predis\Client $redisClient */ - public function init($redisClient, $namespace = '', $defaultLifetime = 0) + private function init($redisClient, $namespace = '', $defaultLifetime = 0) { parent::__construct($namespace, $defaultLifetime); From a67b650f12e5252a5d30c4c94576d73e15f19aef Mon Sep 17 00:00:00 2001 From: Andrew Berry Date: Thu, 21 Jun 2018 13:40:47 -0400 Subject: [PATCH 85/98] allow_extra_attributes does not throw an exception as documented --- .../Normalizer/AbstractNormalizer.php | 6 ++++++ .../AbstractObjectNormalizerTest.php | 21 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php index cad6205dfb826..03c44af938929 100644 --- a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php @@ -200,11 +200,17 @@ protected function handleCircularReference($object) * @param array $context * @param bool $attributesAsString If false, return an array of {@link AttributeMetadataInterface} * + * @throws \Symfony\Component\Serializer\Exception\LogicException if the 'allow_extra_attributes' context variable is false and no class metadata factory is provided + * * @return string[]|AttributeMetadataInterface[]|bool */ protected function getAllowedAttributes($classOrObject, array $context, $attributesAsString = false) { if (!$this->classMetadataFactory) { + if (isset($context[static::ALLOW_EXTRA_ATTRIBUTES]) && !$context[static::ALLOW_EXTRA_ATTRIBUTES]) { + throw new LogicException(sprintf("A class metadata factory must be provided in the constructor when setting '%s' to false.", static::ALLOW_EXTRA_ATTRIBUTES)); + } + return false; } diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php index 25f4c007d13f0..19a73c9c8474c 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php @@ -19,6 +19,7 @@ use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory; use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader; use Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer; +use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; use Symfony\Component\Serializer\SerializerAwareInterface; use Symfony\Component\Serializer\SerializerInterface; @@ -52,7 +53,8 @@ public function testInstantiateObjectDenormalizer() */ public function testDenormalizeWithExtraAttributes() { - $normalizer = new AbstractObjectNormalizerDummy(); + $factory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader())); + $normalizer = new AbstractObjectNormalizerDummy($factory); $normalizer->denormalize( array('fooFoo' => 'foo', 'fooBar' => 'bar'), __NAMESPACE__.'\Dummy', @@ -144,6 +146,23 @@ private function getDenormalizerForDummyCollection() return $denormalizer; } + + /** + * Test that additional attributes throw an exception if no metadata factory is specified. + * + * @see https://symfony.com/doc/current/components/serializer.html#deserializing-an-object + * + * @expectedException \Symfony\Component\Serializer\Exception\LogicException + * @expectedExceptionMessage A class metadata factory must be provided in the constructor when setting 'allow_extra_attributes' to false. + */ + public function testExtraAttributesException() + { + $normalizer = new ObjectNormalizer(); + + $normalizer->denormalize(array(), \stdClass::class, 'xml', array( + 'allow_extra_attributes' => false, + )); + } } class AbstractObjectNormalizerDummy extends AbstractObjectNormalizer From bdcd0ba56983e86044b0ee07e5d22785bf3d82cd Mon Sep 17 00:00:00 2001 From: Maxime Steinhausser Date: Thu, 21 Jun 2018 22:04:03 +0200 Subject: [PATCH 86/98] [Serializer] Minor tweaks for a67b650f12e5252a5d30c4c94576d73e15f19aef --- .../Component/Serializer/Normalizer/AbstractNormalizer.php | 4 ++-- .../Tests/Normalizer/AbstractObjectNormalizerTest.php | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php index 03c44af938929..eacf755212f6c 100644 --- a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php @@ -200,7 +200,7 @@ protected function handleCircularReference($object) * @param array $context * @param bool $attributesAsString If false, return an array of {@link AttributeMetadataInterface} * - * @throws \Symfony\Component\Serializer\Exception\LogicException if the 'allow_extra_attributes' context variable is false and no class metadata factory is provided + * @throws LogicException if the 'allow_extra_attributes' context variable is false and no class metadata factory is provided * * @return string[]|AttributeMetadataInterface[]|bool */ @@ -208,7 +208,7 @@ protected function getAllowedAttributes($classOrObject, array $context, $attribu { if (!$this->classMetadataFactory) { if (isset($context[static::ALLOW_EXTRA_ATTRIBUTES]) && !$context[static::ALLOW_EXTRA_ATTRIBUTES]) { - throw new LogicException(sprintf("A class metadata factory must be provided in the constructor when setting '%s' to false.", static::ALLOW_EXTRA_ATTRIBUTES)); + throw new LogicException(sprintf('A class metadata factory must be provided in the constructor when setting "%s" to false.', static::ALLOW_EXTRA_ATTRIBUTES)); } return false; diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php index 19a73c9c8474c..d461ef267ff86 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php @@ -150,10 +150,8 @@ private function getDenormalizerForDummyCollection() /** * Test that additional attributes throw an exception if no metadata factory is specified. * - * @see https://symfony.com/doc/current/components/serializer.html#deserializing-an-object - * * @expectedException \Symfony\Component\Serializer\Exception\LogicException - * @expectedExceptionMessage A class metadata factory must be provided in the constructor when setting 'allow_extra_attributes' to false. + * @expectedExceptionMessage A class metadata factory must be provided in the constructor when setting "allow_extra_attributes" to false. */ public function testExtraAttributesException() { From afeb89fa065be5ebf7f16437551629b028d51f1c Mon Sep 17 00:00:00 2001 From: Vladimir Reznichenko Date: Thu, 21 Jun 2018 22:10:47 +0200 Subject: [PATCH 87/98] [minor] SCA --- .../Loader/Configurator/DefaultsConfigurator.php | 4 ++-- .../DataTransformer/IntegerToLocalizedStringTransformer.php | 4 ---- .../Core/Authentication/RememberMe/PersistentToken.php | 2 +- src/Symfony/Component/Security/Core/User/LdapUserProvider.php | 4 ---- .../Component/Translation/Extractor/AbstractFileExtractor.php | 2 +- 5 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/DefaultsConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/DefaultsConfigurator.php index aec0b2bd21032..07f6b7257e2c7 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/DefaultsConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/DefaultsConfigurator.php @@ -34,12 +34,12 @@ class DefaultsConfigurator extends AbstractServiceConfigurator */ final public function tag(string $name, array $attributes = array()) { - if (!is_string($name) || '' === $name) { + if ('' === $name) { throw new InvalidArgumentException('The tag name in "_defaults" must be a non-empty string.'); } foreach ($attributes as $attribute => $value) { - if (!is_scalar($value) && null !== $value) { + if (null !== $value && !is_scalar($value)) { throw new InvalidArgumentException(sprintf('Tag "%s", attribute "%s" in "_defaults" must be of a scalar-type.', $name, $attribute)); } } diff --git a/src/Symfony/Component/Form/Extension/Core/DataTransformer/IntegerToLocalizedStringTransformer.php b/src/Symfony/Component/Form/Extension/Core/DataTransformer/IntegerToLocalizedStringTransformer.php index 760e8aa664bbc..301ead682bf61 100644 --- a/src/Symfony/Component/Form/Extension/Core/DataTransformer/IntegerToLocalizedStringTransformer.php +++ b/src/Symfony/Component/Form/Extension/Core/DataTransformer/IntegerToLocalizedStringTransformer.php @@ -28,10 +28,6 @@ class IntegerToLocalizedStringTransformer extends NumberToLocalizedStringTransfo */ public function __construct(?int $scale = 0, ?bool $grouping = false, int $roundingMode = self::ROUND_DOWN) { - if (null === $roundingMode) { - $roundingMode = self::ROUND_DOWN; - } - parent::__construct(0, $grouping, $roundingMode); } diff --git a/src/Symfony/Component/Security/Core/Authentication/RememberMe/PersistentToken.php b/src/Symfony/Component/Security/Core/Authentication/RememberMe/PersistentToken.php index 996ad285fdab0..7c12706e3c3cb 100644 --- a/src/Symfony/Component/Security/Core/Authentication/RememberMe/PersistentToken.php +++ b/src/Symfony/Component/Security/Core/Authentication/RememberMe/PersistentToken.php @@ -29,7 +29,7 @@ public function __construct(string $class, string $username, string $series, str if (empty($class)) { throw new \InvalidArgumentException('$class must not be empty.'); } - if ('' === $username || null === $username) { + if ('' === $username) { throw new \InvalidArgumentException('$username must not be empty.'); } if (empty($series)) { diff --git a/src/Symfony/Component/Security/Core/User/LdapUserProvider.php b/src/Symfony/Component/Security/Core/User/LdapUserProvider.php index fcc3bcdb4236d..b3fa3fa6b94f8 100644 --- a/src/Symfony/Component/Security/Core/User/LdapUserProvider.php +++ b/src/Symfony/Component/Security/Core/User/LdapUserProvider.php @@ -37,10 +37,6 @@ class LdapUserProvider implements UserProviderInterface public function __construct(LdapInterface $ldap, string $baseDn, string $searchDn = null, string $searchPassword = null, array $defaultRoles = array(), string $uidKey = 'sAMAccountName', string $filter = '({uid_key}={username})', string $passwordAttribute = null) { - if (null === $uidKey) { - $uidKey = 'sAMAccountName'; - } - $this->ldap = $ldap; $this->baseDn = $baseDn; $this->searchDn = $searchDn; diff --git a/src/Symfony/Component/Translation/Extractor/AbstractFileExtractor.php b/src/Symfony/Component/Translation/Extractor/AbstractFileExtractor.php index 40b36451dab52..bdfec1a9edc66 100644 --- a/src/Symfony/Component/Translation/Extractor/AbstractFileExtractor.php +++ b/src/Symfony/Component/Translation/Extractor/AbstractFileExtractor.php @@ -45,7 +45,7 @@ protected function extractFiles($resource) private function toSplFileInfo(string $file): \SplFileInfo { - return ($file instanceof \SplFileInfo) ? $file : new \SplFileInfo($file); + return new \SplFileInfo($file); } /** From 5f2e6c2f128adb3e24cf9e4e324540b1af7e508b Mon Sep 17 00:00:00 2001 From: Jakub Zalas Date: Thu, 21 Jun 2018 22:25:54 +0100 Subject: [PATCH 88/98] [Intl] Update ICU data to 62.1 --- src/Symfony/Component/Intl/Intl.php | 2 +- src/Symfony/Component/Intl/Resources/bin/icu.ini | 1 + .../Component/Intl/Resources/data/currencies/af.json | 2 +- .../Component/Intl/Resources/data/currencies/am.json | 2 +- .../Component/Intl/Resources/data/currencies/ar.json | 2 +- .../Component/Intl/Resources/data/currencies/as.json | 2 +- .../Component/Intl/Resources/data/currencies/az.json | 2 +- .../Component/Intl/Resources/data/currencies/be.json | 2 +- .../Component/Intl/Resources/data/currencies/bg.json | 2 +- .../Component/Intl/Resources/data/currencies/bn.json | 2 +- .../Component/Intl/Resources/data/currencies/br.json | 2 +- .../Component/Intl/Resources/data/currencies/bs.json | 2 +- .../Intl/Resources/data/currencies/bs_Cyrl.json | 2 +- .../Component/Intl/Resources/data/currencies/ca.json | 2 +- .../Component/Intl/Resources/data/currencies/ce.json | 2 +- .../Component/Intl/Resources/data/currencies/cs.json | 2 +- .../Component/Intl/Resources/data/currencies/cy.json | 2 +- .../Component/Intl/Resources/data/currencies/da.json | 2 +- .../Component/Intl/Resources/data/currencies/de.json | 2 +- .../Component/Intl/Resources/data/currencies/dz.json | 2 +- .../Component/Intl/Resources/data/currencies/ee.json | 2 +- .../Component/Intl/Resources/data/currencies/el.json | 2 +- .../Component/Intl/Resources/data/currencies/en.json | 2 +- .../Component/Intl/Resources/data/currencies/es.json | 2 +- .../Component/Intl/Resources/data/currencies/es_VE.json | 2 +- .../Component/Intl/Resources/data/currencies/et.json | 2 +- .../Component/Intl/Resources/data/currencies/eu.json | 2 +- .../Component/Intl/Resources/data/currencies/fa.json | 2 +- .../Component/Intl/Resources/data/currencies/fi.json | 2 +- .../Component/Intl/Resources/data/currencies/fo.json | 2 +- .../Component/Intl/Resources/data/currencies/fr.json | 2 +- .../Component/Intl/Resources/data/currencies/fy.json | 2 +- .../Component/Intl/Resources/data/currencies/ga.json | 2 +- .../Component/Intl/Resources/data/currencies/gd.json | 2 +- .../Component/Intl/Resources/data/currencies/gl.json | 2 +- .../Component/Intl/Resources/data/currencies/gu.json | 2 +- .../Component/Intl/Resources/data/currencies/he.json | 2 +- .../Component/Intl/Resources/data/currencies/hi.json | 2 +- .../Component/Intl/Resources/data/currencies/hr.json | 2 +- .../Component/Intl/Resources/data/currencies/hu.json | 2 +- .../Component/Intl/Resources/data/currencies/hy.json | 2 +- .../Component/Intl/Resources/data/currencies/id.json | 2 +- .../Component/Intl/Resources/data/currencies/in.json | 2 +- .../Component/Intl/Resources/data/currencies/is.json | 2 +- .../Component/Intl/Resources/data/currencies/it.json | 2 +- .../Component/Intl/Resources/data/currencies/iw.json | 2 +- .../Component/Intl/Resources/data/currencies/ja.json | 2 +- .../Component/Intl/Resources/data/currencies/ka.json | 2 +- .../Component/Intl/Resources/data/currencies/kk.json | 2 +- .../Component/Intl/Resources/data/currencies/km.json | 2 +- .../Component/Intl/Resources/data/currencies/kn.json | 2 +- .../Component/Intl/Resources/data/currencies/ko.json | 2 +- .../Component/Intl/Resources/data/currencies/ks.json | 2 +- .../Component/Intl/Resources/data/currencies/ky.json | 2 +- .../Component/Intl/Resources/data/currencies/lb.json | 2 +- .../Component/Intl/Resources/data/currencies/lo.json | 2 +- .../Component/Intl/Resources/data/currencies/lt.json | 2 +- .../Component/Intl/Resources/data/currencies/lv.json | 2 +- .../Component/Intl/Resources/data/currencies/meta.json | 8 +++++++- .../Component/Intl/Resources/data/currencies/mk.json | 2 +- .../Component/Intl/Resources/data/currencies/ml.json | 2 +- .../Component/Intl/Resources/data/currencies/mn.json | 2 +- .../Component/Intl/Resources/data/currencies/mr.json | 2 +- .../Component/Intl/Resources/data/currencies/ms.json | 2 +- .../Component/Intl/Resources/data/currencies/mt.json | 2 +- .../Component/Intl/Resources/data/currencies/my.json | 2 +- .../Component/Intl/Resources/data/currencies/nb.json | 2 +- .../Component/Intl/Resources/data/currencies/ne.json | 2 +- .../Component/Intl/Resources/data/currencies/nl.json | 4 ++-- .../Component/Intl/Resources/data/currencies/nn.json | 2 +- .../Component/Intl/Resources/data/currencies/no.json | 2 +- .../Component/Intl/Resources/data/currencies/or.json | 2 +- .../Component/Intl/Resources/data/currencies/pa.json | 2 +- .../Component/Intl/Resources/data/currencies/pl.json | 2 +- .../Component/Intl/Resources/data/currencies/ps.json | 2 +- .../Component/Intl/Resources/data/currencies/pt.json | 2 +- .../Component/Intl/Resources/data/currencies/pt_PT.json | 2 +- .../Component/Intl/Resources/data/currencies/rm.json | 2 +- .../Component/Intl/Resources/data/currencies/ro.json | 2 +- .../Component/Intl/Resources/data/currencies/root.json | 2 +- .../Component/Intl/Resources/data/currencies/ru.json | 2 +- .../Component/Intl/Resources/data/currencies/sh.json | 2 +- .../Component/Intl/Resources/data/currencies/si.json | 2 +- .../Component/Intl/Resources/data/currencies/sk.json | 2 +- .../Component/Intl/Resources/data/currencies/sl.json | 2 +- .../Component/Intl/Resources/data/currencies/sq.json | 2 +- .../Component/Intl/Resources/data/currencies/sr.json | 2 +- .../Intl/Resources/data/currencies/sr_Latn.json | 2 +- .../Component/Intl/Resources/data/currencies/sv.json | 2 +- .../Component/Intl/Resources/data/currencies/sw.json | 2 +- .../Component/Intl/Resources/data/currencies/ta.json | 2 +- .../Component/Intl/Resources/data/currencies/te.json | 2 +- .../Component/Intl/Resources/data/currencies/th.json | 2 +- .../Component/Intl/Resources/data/currencies/tl.json | 2 +- .../Component/Intl/Resources/data/currencies/tr.json | 2 +- .../Component/Intl/Resources/data/currencies/ug.json | 2 +- .../Component/Intl/Resources/data/currencies/uk.json | 2 +- .../Component/Intl/Resources/data/currencies/ur.json | 2 +- .../Component/Intl/Resources/data/currencies/uz.json | 2 +- .../Intl/Resources/data/currencies/uz_Cyrl.json | 2 +- .../Component/Intl/Resources/data/currencies/vi.json | 2 +- .../Component/Intl/Resources/data/currencies/zh.json | 2 +- .../Intl/Resources/data/currencies/zh_Hant.json | 2 +- .../Component/Intl/Resources/data/currencies/zu.json | 2 +- .../Component/Intl/Resources/data/languages/af.json | 2 +- .../Component/Intl/Resources/data/languages/am.json | 2 +- .../Component/Intl/Resources/data/languages/ar.json | 2 +- .../Component/Intl/Resources/data/languages/as.json | 2 +- .../Component/Intl/Resources/data/languages/az.json | 2 +- .../Component/Intl/Resources/data/languages/be.json | 2 +- .../Component/Intl/Resources/data/languages/bg.json | 2 +- .../Component/Intl/Resources/data/languages/bn.json | 2 +- .../Component/Intl/Resources/data/languages/br.json | 2 +- .../Component/Intl/Resources/data/languages/bs.json | 2 +- .../Component/Intl/Resources/data/languages/bs_Cyrl.json | 2 +- .../Component/Intl/Resources/data/languages/ca.json | 2 +- .../Component/Intl/Resources/data/languages/ce.json | 2 +- .../Component/Intl/Resources/data/languages/cs.json | 2 +- .../Component/Intl/Resources/data/languages/cy.json | 2 +- .../Component/Intl/Resources/data/languages/da.json | 2 +- .../Component/Intl/Resources/data/languages/de.json | 2 +- .../Component/Intl/Resources/data/languages/dz.json | 2 +- .../Component/Intl/Resources/data/languages/ee.json | 2 +- .../Component/Intl/Resources/data/languages/el.json | 2 +- .../Component/Intl/Resources/data/languages/en.json | 2 +- .../Component/Intl/Resources/data/languages/es.json | 2 +- .../Component/Intl/Resources/data/languages/es_VE.json | 2 +- .../Component/Intl/Resources/data/languages/et.json | 2 +- .../Component/Intl/Resources/data/languages/eu.json | 2 +- .../Component/Intl/Resources/data/languages/fa.json | 2 +- .../Component/Intl/Resources/data/languages/fi.json | 2 +- .../Component/Intl/Resources/data/languages/fo.json | 2 +- .../Component/Intl/Resources/data/languages/fr.json | 2 +- .../Component/Intl/Resources/data/languages/fy.json | 2 +- .../Component/Intl/Resources/data/languages/ga.json | 2 +- .../Component/Intl/Resources/data/languages/gd.json | 2 +- .../Component/Intl/Resources/data/languages/gl.json | 2 +- .../Component/Intl/Resources/data/languages/gu.json | 2 +- .../Component/Intl/Resources/data/languages/he.json | 2 +- .../Component/Intl/Resources/data/languages/hi.json | 2 +- .../Component/Intl/Resources/data/languages/hr.json | 2 +- .../Component/Intl/Resources/data/languages/hu.json | 2 +- .../Component/Intl/Resources/data/languages/hy.json | 2 +- .../Component/Intl/Resources/data/languages/id.json | 2 +- .../Component/Intl/Resources/data/languages/in.json | 2 +- .../Component/Intl/Resources/data/languages/is.json | 2 +- .../Component/Intl/Resources/data/languages/it.json | 2 +- .../Component/Intl/Resources/data/languages/iw.json | 2 +- .../Component/Intl/Resources/data/languages/ja.json | 2 +- .../Component/Intl/Resources/data/languages/ka.json | 2 +- .../Component/Intl/Resources/data/languages/kk.json | 2 +- .../Component/Intl/Resources/data/languages/km.json | 2 +- .../Component/Intl/Resources/data/languages/kn.json | 2 +- .../Component/Intl/Resources/data/languages/ko.json | 2 +- .../Component/Intl/Resources/data/languages/ks.json | 2 +- .../Component/Intl/Resources/data/languages/ky.json | 2 +- .../Component/Intl/Resources/data/languages/lb.json | 2 +- .../Component/Intl/Resources/data/languages/lo.json | 2 +- .../Component/Intl/Resources/data/languages/lt.json | 2 +- .../Component/Intl/Resources/data/languages/lv.json | 2 +- .../Component/Intl/Resources/data/languages/meta.json | 2 +- .../Component/Intl/Resources/data/languages/mk.json | 2 +- .../Component/Intl/Resources/data/languages/ml.json | 2 +- .../Component/Intl/Resources/data/languages/mn.json | 2 +- .../Component/Intl/Resources/data/languages/mr.json | 2 +- .../Component/Intl/Resources/data/languages/ms.json | 2 +- .../Component/Intl/Resources/data/languages/mt.json | 2 +- .../Component/Intl/Resources/data/languages/my.json | 2 +- .../Component/Intl/Resources/data/languages/nb.json | 2 +- .../Component/Intl/Resources/data/languages/ne.json | 2 +- .../Component/Intl/Resources/data/languages/nl.json | 2 +- .../Component/Intl/Resources/data/languages/nn.json | 2 +- .../Component/Intl/Resources/data/languages/no.json | 2 +- .../Component/Intl/Resources/data/languages/or.json | 2 +- .../Component/Intl/Resources/data/languages/pa.json | 2 +- .../Component/Intl/Resources/data/languages/pl.json | 2 +- .../Component/Intl/Resources/data/languages/ps.json | 2 +- .../Component/Intl/Resources/data/languages/pt.json | 2 +- .../Component/Intl/Resources/data/languages/pt_PT.json | 2 +- .../Component/Intl/Resources/data/languages/rm.json | 2 +- .../Component/Intl/Resources/data/languages/ro.json | 2 +- .../Component/Intl/Resources/data/languages/ru.json | 2 +- .../Component/Intl/Resources/data/languages/sh.json | 2 +- .../Component/Intl/Resources/data/languages/si.json | 2 +- .../Component/Intl/Resources/data/languages/sk.json | 2 +- .../Component/Intl/Resources/data/languages/sl.json | 2 +- .../Component/Intl/Resources/data/languages/sq.json | 2 +- .../Component/Intl/Resources/data/languages/sr.json | 2 +- .../Component/Intl/Resources/data/languages/sr_Latn.json | 2 +- .../Component/Intl/Resources/data/languages/sv.json | 2 +- .../Component/Intl/Resources/data/languages/sw.json | 2 +- .../Component/Intl/Resources/data/languages/ta.json | 2 +- .../Component/Intl/Resources/data/languages/te.json | 2 +- .../Component/Intl/Resources/data/languages/th.json | 2 +- .../Component/Intl/Resources/data/languages/tl.json | 2 +- .../Component/Intl/Resources/data/languages/tr.json | 2 +- .../Component/Intl/Resources/data/languages/ug.json | 2 +- .../Component/Intl/Resources/data/languages/uk.json | 2 +- .../Component/Intl/Resources/data/languages/ur.json | 2 +- .../Component/Intl/Resources/data/languages/uz.json | 2 +- .../Component/Intl/Resources/data/languages/uz_Cyrl.json | 2 +- .../Component/Intl/Resources/data/languages/vi.json | 2 +- .../Component/Intl/Resources/data/languages/zh.json | 2 +- .../Component/Intl/Resources/data/languages/zh_Hant.json | 2 +- .../Component/Intl/Resources/data/languages/zu.json | 2 +- .../Component/Intl/Resources/data/regions/af.json | 2 +- .../Component/Intl/Resources/data/regions/am.json | 2 +- .../Component/Intl/Resources/data/regions/ar.json | 2 +- .../Component/Intl/Resources/data/regions/as.json | 2 +- .../Component/Intl/Resources/data/regions/az.json | 2 +- .../Component/Intl/Resources/data/regions/be.json | 2 +- .../Component/Intl/Resources/data/regions/bg.json | 2 +- .../Component/Intl/Resources/data/regions/bn.json | 2 +- .../Component/Intl/Resources/data/regions/br.json | 2 +- .../Component/Intl/Resources/data/regions/bs.json | 2 +- .../Component/Intl/Resources/data/regions/bs_Cyrl.json | 2 +- .../Component/Intl/Resources/data/regions/ca.json | 2 +- .../Component/Intl/Resources/data/regions/ce.json | 2 +- .../Component/Intl/Resources/data/regions/cs.json | 2 +- .../Component/Intl/Resources/data/regions/cy.json | 2 +- .../Component/Intl/Resources/data/regions/da.json | 2 +- .../Component/Intl/Resources/data/regions/de.json | 2 +- .../Component/Intl/Resources/data/regions/dz.json | 2 +- .../Component/Intl/Resources/data/regions/ee.json | 2 +- .../Component/Intl/Resources/data/regions/el.json | 2 +- .../Component/Intl/Resources/data/regions/en.json | 2 +- .../Component/Intl/Resources/data/regions/es.json | 2 +- .../Component/Intl/Resources/data/regions/es_VE.json | 2 +- .../Component/Intl/Resources/data/regions/et.json | 2 +- .../Component/Intl/Resources/data/regions/eu.json | 2 +- .../Component/Intl/Resources/data/regions/fa.json | 2 +- .../Component/Intl/Resources/data/regions/fi.json | 2 +- .../Component/Intl/Resources/data/regions/fo.json | 2 +- .../Component/Intl/Resources/data/regions/fr.json | 2 +- .../Component/Intl/Resources/data/regions/fy.json | 2 +- .../Component/Intl/Resources/data/regions/ga.json | 2 +- .../Component/Intl/Resources/data/regions/gd.json | 2 +- .../Component/Intl/Resources/data/regions/gl.json | 2 +- .../Component/Intl/Resources/data/regions/gu.json | 2 +- .../Component/Intl/Resources/data/regions/he.json | 2 +- .../Component/Intl/Resources/data/regions/hi.json | 2 +- .../Component/Intl/Resources/data/regions/hr.json | 2 +- .../Component/Intl/Resources/data/regions/hu.json | 2 +- .../Component/Intl/Resources/data/regions/hy.json | 2 +- .../Component/Intl/Resources/data/regions/id.json | 2 +- .../Component/Intl/Resources/data/regions/in.json | 2 +- .../Component/Intl/Resources/data/regions/is.json | 2 +- .../Component/Intl/Resources/data/regions/it.json | 2 +- .../Component/Intl/Resources/data/regions/iw.json | 2 +- .../Component/Intl/Resources/data/regions/ja.json | 2 +- .../Component/Intl/Resources/data/regions/ka.json | 2 +- .../Component/Intl/Resources/data/regions/kk.json | 2 +- .../Component/Intl/Resources/data/regions/km.json | 2 +- .../Component/Intl/Resources/data/regions/kn.json | 2 +- .../Component/Intl/Resources/data/regions/ko.json | 2 +- .../Component/Intl/Resources/data/regions/ks.json | 2 +- .../Component/Intl/Resources/data/regions/ky.json | 2 +- .../Component/Intl/Resources/data/regions/lb.json | 2 +- .../Component/Intl/Resources/data/regions/lo.json | 2 +- .../Component/Intl/Resources/data/regions/lt.json | 2 +- .../Component/Intl/Resources/data/regions/lv.json | 2 +- .../Component/Intl/Resources/data/regions/meta.json | 2 +- .../Component/Intl/Resources/data/regions/mk.json | 2 +- .../Component/Intl/Resources/data/regions/ml.json | 2 +- .../Component/Intl/Resources/data/regions/mn.json | 2 +- .../Component/Intl/Resources/data/regions/mr.json | 2 +- .../Component/Intl/Resources/data/regions/ms.json | 2 +- .../Component/Intl/Resources/data/regions/mt.json | 2 +- .../Component/Intl/Resources/data/regions/my.json | 2 +- .../Component/Intl/Resources/data/regions/nb.json | 2 +- .../Component/Intl/Resources/data/regions/ne.json | 2 +- .../Component/Intl/Resources/data/regions/nl.json | 2 +- .../Component/Intl/Resources/data/regions/nn.json | 2 +- .../Component/Intl/Resources/data/regions/no.json | 2 +- .../Component/Intl/Resources/data/regions/or.json | 2 +- .../Component/Intl/Resources/data/regions/pa.json | 2 +- .../Component/Intl/Resources/data/regions/pl.json | 2 +- .../Component/Intl/Resources/data/regions/ps.json | 2 +- .../Component/Intl/Resources/data/regions/pt.json | 2 +- .../Component/Intl/Resources/data/regions/pt_PT.json | 2 +- .../Component/Intl/Resources/data/regions/rm.json | 2 +- .../Component/Intl/Resources/data/regions/ro.json | 2 +- .../Component/Intl/Resources/data/regions/ru.json | 2 +- .../Component/Intl/Resources/data/regions/sh.json | 2 +- .../Component/Intl/Resources/data/regions/si.json | 2 +- .../Component/Intl/Resources/data/regions/sk.json | 2 +- .../Component/Intl/Resources/data/regions/sl.json | 2 +- .../Component/Intl/Resources/data/regions/sq.json | 2 +- .../Component/Intl/Resources/data/regions/sr.json | 2 +- .../Component/Intl/Resources/data/regions/sr_Latn.json | 2 +- .../Component/Intl/Resources/data/regions/sv.json | 2 +- .../Component/Intl/Resources/data/regions/sw.json | 2 +- .../Component/Intl/Resources/data/regions/ta.json | 2 +- .../Component/Intl/Resources/data/regions/te.json | 2 +- .../Component/Intl/Resources/data/regions/th.json | 2 +- .../Component/Intl/Resources/data/regions/tl.json | 2 +- .../Component/Intl/Resources/data/regions/tr.json | 2 +- .../Component/Intl/Resources/data/regions/ug.json | 2 +- .../Component/Intl/Resources/data/regions/uk.json | 2 +- .../Component/Intl/Resources/data/regions/ur.json | 2 +- .../Component/Intl/Resources/data/regions/uz.json | 2 +- .../Component/Intl/Resources/data/regions/uz_Cyrl.json | 2 +- .../Component/Intl/Resources/data/regions/vi.json | 2 +- .../Component/Intl/Resources/data/regions/zh.json | 2 +- .../Component/Intl/Resources/data/regions/zh_Hant.json | 2 +- .../Component/Intl/Resources/data/regions/zu.json | 2 +- .../Component/Intl/Resources/data/scripts/af.json | 2 +- .../Component/Intl/Resources/data/scripts/am.json | 2 +- .../Component/Intl/Resources/data/scripts/ar.json | 2 +- .../Component/Intl/Resources/data/scripts/as.json | 2 +- .../Component/Intl/Resources/data/scripts/az.json | 2 +- .../Component/Intl/Resources/data/scripts/be.json | 2 +- .../Component/Intl/Resources/data/scripts/bg.json | 2 +- .../Component/Intl/Resources/data/scripts/bn.json | 2 +- .../Component/Intl/Resources/data/scripts/br.json | 2 +- .../Component/Intl/Resources/data/scripts/bs.json | 2 +- .../Component/Intl/Resources/data/scripts/bs_Cyrl.json | 2 +- .../Component/Intl/Resources/data/scripts/ca.json | 2 +- .../Component/Intl/Resources/data/scripts/ce.json | 2 +- .../Component/Intl/Resources/data/scripts/cs.json | 2 +- .../Component/Intl/Resources/data/scripts/cy.json | 2 +- .../Component/Intl/Resources/data/scripts/da.json | 2 +- .../Component/Intl/Resources/data/scripts/de.json | 2 +- .../Component/Intl/Resources/data/scripts/dz.json | 2 +- .../Component/Intl/Resources/data/scripts/ee.json | 2 +- .../Component/Intl/Resources/data/scripts/el.json | 2 +- .../Component/Intl/Resources/data/scripts/en.json | 9 ++++++++- .../Component/Intl/Resources/data/scripts/es.json | 2 +- .../Component/Intl/Resources/data/scripts/et.json | 2 +- .../Component/Intl/Resources/data/scripts/eu.json | 2 +- .../Component/Intl/Resources/data/scripts/fa.json | 2 +- .../Component/Intl/Resources/data/scripts/fi.json | 2 +- .../Component/Intl/Resources/data/scripts/fo.json | 2 +- .../Component/Intl/Resources/data/scripts/fr.json | 2 +- .../Component/Intl/Resources/data/scripts/fy.json | 2 +- .../Component/Intl/Resources/data/scripts/ga.json | 2 +- .../Component/Intl/Resources/data/scripts/gd.json | 2 +- .../Component/Intl/Resources/data/scripts/gl.json | 2 +- .../Component/Intl/Resources/data/scripts/gu.json | 2 +- .../Component/Intl/Resources/data/scripts/he.json | 2 +- .../Component/Intl/Resources/data/scripts/hi.json | 2 +- .../Component/Intl/Resources/data/scripts/hr.json | 2 +- .../Component/Intl/Resources/data/scripts/hu.json | 2 +- .../Component/Intl/Resources/data/scripts/hy.json | 2 +- .../Component/Intl/Resources/data/scripts/id.json | 2 +- .../Component/Intl/Resources/data/scripts/in.json | 2 +- .../Component/Intl/Resources/data/scripts/is.json | 2 +- .../Component/Intl/Resources/data/scripts/it.json | 2 +- .../Component/Intl/Resources/data/scripts/iw.json | 2 +- .../Component/Intl/Resources/data/scripts/ja.json | 2 +- .../Component/Intl/Resources/data/scripts/ka.json | 2 +- .../Component/Intl/Resources/data/scripts/kk.json | 2 +- .../Component/Intl/Resources/data/scripts/km.json | 2 +- .../Component/Intl/Resources/data/scripts/kn.json | 2 +- .../Component/Intl/Resources/data/scripts/ko.json | 2 +- .../Component/Intl/Resources/data/scripts/ks.json | 2 +- .../Component/Intl/Resources/data/scripts/ky.json | 2 +- .../Component/Intl/Resources/data/scripts/lb.json | 2 +- .../Component/Intl/Resources/data/scripts/lo.json | 2 +- .../Component/Intl/Resources/data/scripts/lt.json | 2 +- .../Component/Intl/Resources/data/scripts/lv.json | 2 +- .../Component/Intl/Resources/data/scripts/meta.json | 9 ++++++++- .../Component/Intl/Resources/data/scripts/mk.json | 2 +- .../Component/Intl/Resources/data/scripts/ml.json | 2 +- .../Component/Intl/Resources/data/scripts/mn.json | 2 +- .../Component/Intl/Resources/data/scripts/mr.json | 2 +- .../Component/Intl/Resources/data/scripts/ms.json | 2 +- .../Component/Intl/Resources/data/scripts/mt.json | 2 +- .../Component/Intl/Resources/data/scripts/my.json | 2 +- .../Component/Intl/Resources/data/scripts/nb.json | 2 +- .../Component/Intl/Resources/data/scripts/ne.json | 2 +- .../Component/Intl/Resources/data/scripts/nl.json | 2 +- .../Component/Intl/Resources/data/scripts/nn.json | 2 +- .../Component/Intl/Resources/data/scripts/no.json | 2 +- .../Component/Intl/Resources/data/scripts/or.json | 2 +- .../Component/Intl/Resources/data/scripts/pa.json | 2 +- .../Component/Intl/Resources/data/scripts/pl.json | 2 +- .../Component/Intl/Resources/data/scripts/ps.json | 2 +- .../Component/Intl/Resources/data/scripts/pt.json | 2 +- .../Component/Intl/Resources/data/scripts/pt_PT.json | 2 +- .../Component/Intl/Resources/data/scripts/rm.json | 2 +- .../Component/Intl/Resources/data/scripts/ro.json | 2 +- .../Component/Intl/Resources/data/scripts/ru.json | 2 +- .../Component/Intl/Resources/data/scripts/sh.json | 2 +- .../Component/Intl/Resources/data/scripts/si.json | 2 +- .../Component/Intl/Resources/data/scripts/sk.json | 2 +- .../Component/Intl/Resources/data/scripts/sl.json | 2 +- .../Component/Intl/Resources/data/scripts/sq.json | 2 +- .../Component/Intl/Resources/data/scripts/sr.json | 2 +- .../Component/Intl/Resources/data/scripts/sr_Latn.json | 2 +- .../Component/Intl/Resources/data/scripts/sv.json | 2 +- .../Component/Intl/Resources/data/scripts/sw.json | 2 +- .../Component/Intl/Resources/data/scripts/ta.json | 2 +- .../Component/Intl/Resources/data/scripts/te.json | 2 +- .../Component/Intl/Resources/data/scripts/th.json | 2 +- .../Component/Intl/Resources/data/scripts/tl.json | 2 +- .../Component/Intl/Resources/data/scripts/tr.json | 2 +- .../Component/Intl/Resources/data/scripts/ug.json | 2 +- .../Component/Intl/Resources/data/scripts/uk.json | 2 +- .../Component/Intl/Resources/data/scripts/ur.json | 2 +- .../Component/Intl/Resources/data/scripts/uz.json | 2 +- .../Component/Intl/Resources/data/scripts/uz_Cyrl.json | 2 +- .../Component/Intl/Resources/data/scripts/vi.json | 2 +- .../Component/Intl/Resources/data/scripts/zh.json | 2 +- .../Component/Intl/Resources/data/scripts/zh_Hant.json | 2 +- .../Component/Intl/Resources/data/scripts/zu.json | 2 +- src/Symfony/Component/Intl/Resources/data/svn-info.txt | 8 ++++---- src/Symfony/Component/Intl/Resources/data/version.txt | 2 +- .../Data/Provider/AbstractScriptDataProviderTest.php | 7 +++++++ 409 files changed, 439 insertions(+), 411 deletions(-) diff --git a/src/Symfony/Component/Intl/Intl.php b/src/Symfony/Component/Intl/Intl.php index c4f80ca6c18d7..b621d7e51d324 100644 --- a/src/Symfony/Component/Intl/Intl.php +++ b/src/Symfony/Component/Intl/Intl.php @@ -235,7 +235,7 @@ public static function getIcuDataVersion() */ public static function getIcuStubVersion() { - return '61.1'; + return '62.1'; } /** diff --git a/src/Symfony/Component/Intl/Resources/bin/icu.ini b/src/Symfony/Component/Intl/Resources/bin/icu.ini index ba613bb5c9884..9845e0bb1a33a 100644 --- a/src/Symfony/Component/Intl/Resources/bin/icu.ini +++ b/src/Symfony/Component/Intl/Resources/bin/icu.ini @@ -17,3 +17,4 @@ 59 = http://source.icu-project.org/repos/icu/tags/release-59-1/icu4c/source 60 = http://source.icu-project.org/repos/icu/tags/release-60-2/icu4c/source 61 = http://source.icu-project.org/repos/icu/tags/release-61-1/icu4c/source +62 = http://source.icu-project.org/repos/icu/tags/release-62-1/icu4c/source diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/af.json b/src/Symfony/Component/Intl/Resources/data/currencies/af.json index 195beed4423e6..1131e344ffb7e 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/af.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/af.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/am.json b/src/Symfony/Component/Intl/Resources/data/currencies/am.json index 9058b8c350062..023e618712c61 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/am.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/am.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ar.json b/src/Symfony/Component/Intl/Resources/data/currencies/ar.json index fb9e5f0b8c708..e61cdcc4e7bd5 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ar.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ar.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/as.json b/src/Symfony/Component/Intl/Resources/data/currencies/as.json index 3657dbd3d1a57..055e6034912ef 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/as.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/as.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/az.json b/src/Symfony/Component/Intl/Resources/data/currencies/az.json index 1b8f992166279..29f6f9bcbbbde 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/az.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/az.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/be.json b/src/Symfony/Component/Intl/Resources/data/currencies/be.json index 473fb9f1f730a..3ec0c8b471fe4 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/be.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/be.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/bg.json b/src/Symfony/Component/Intl/Resources/data/currencies/bg.json index 271539f5816b4..63064588961c1 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/bg.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/bg.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/bn.json b/src/Symfony/Component/Intl/Resources/data/currencies/bn.json index fd6efd48f21b6..7878bc5aac913 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/bn.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/bn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/br.json b/src/Symfony/Component/Intl/Resources/data/currencies/br.json index 22eea9943c716..c02a4f31cf532 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/br.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/br.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/bs.json b/src/Symfony/Component/Intl/Resources/data/currencies/bs.json index f622b92404f19..863c0ed0e2347 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/bs.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/bs.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/bs_Cyrl.json b/src/Symfony/Component/Intl/Resources/data/currencies/bs_Cyrl.json index 8ea737ab67642..22722c932d8c9 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/bs_Cyrl.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/bs_Cyrl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ca.json b/src/Symfony/Component/Intl/Resources/data/currencies/ca.json index adeffbcc735fc..b6b7d3813eb80 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ca.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ca.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ce.json b/src/Symfony/Component/Intl/Resources/data/currencies/ce.json index 15a7970ea485f..e33a78cbc3c5a 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ce.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ce.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/cs.json b/src/Symfony/Component/Intl/Resources/data/currencies/cs.json index 75336abaaea17..9ca585cd32411 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/cs.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/cs.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.15", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/cy.json b/src/Symfony/Component/Intl/Resources/data/currencies/cy.json index 427c7c4ee5368..eb06a2e1b1720 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/cy.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/cy.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/da.json b/src/Symfony/Component/Intl/Resources/data/currencies/da.json index bf7efa167f098..3b4f6f96031e5 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/da.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/da.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/de.json b/src/Symfony/Component/Intl/Resources/data/currencies/de.json index 0cc2637bf5d70..a0440234d15dc 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/de.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/de.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.41", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/dz.json b/src/Symfony/Component/Intl/Resources/data/currencies/dz.json index 52065987d1995..86c079209c2a8 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/dz.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/dz.json @@ -1,5 +1,5 @@ { - "Version": "2.1.38.69", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ee.json b/src/Symfony/Component/Intl/Resources/data/currencies/ee.json index f134982957c13..367b4347af0b1 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ee.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ee.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/el.json b/src/Symfony/Component/Intl/Resources/data/currencies/el.json index 6340817056487..8dc27a15d8d8f 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/el.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/el.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/en.json b/src/Symfony/Component/Intl/Resources/data/currencies/en.json index fec62d406cfef..4d2bfd85dc6c8 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/en.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/en.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.27", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/es.json b/src/Symfony/Component/Intl/Resources/data/currencies/es.json index 0e9e40ec81d56..43960ad1bd04f 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/es.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/es.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/es_VE.json b/src/Symfony/Component/Intl/Resources/data/currencies/es_VE.json index b0186c31fb475..e147a09cf353c 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/es_VE.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/es_VE.json @@ -1,5 +1,5 @@ { - "Version": "2.1.38.39", + "Version": "2.1.41.97", "Names": { "VEF": [ "Bs.", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/et.json b/src/Symfony/Component/Intl/Resources/data/currencies/et.json index 94d63c3ea9596..e197096bc518a 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/et.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/et.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/eu.json b/src/Symfony/Component/Intl/Resources/data/currencies/eu.json index 1b5dcd9758c11..705bf9f112e7d 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/eu.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/eu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/fa.json b/src/Symfony/Component/Intl/Resources/data/currencies/fa.json index 7e7df64a18c1b..4d2d577bcdedb 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/fa.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/fa.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/fi.json b/src/Symfony/Component/Intl/Resources/data/currencies/fi.json index 19c712491d080..d7e04181393be 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/fi.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/fi.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/fo.json b/src/Symfony/Component/Intl/Resources/data/currencies/fo.json index 7db1d33e3fb94..8fad41b52595d 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/fo.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/fo.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/fr.json b/src/Symfony/Component/Intl/Resources/data/currencies/fr.json index 800c9e4d89138..55fcd25248df8 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/fr.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/fr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/fy.json b/src/Symfony/Component/Intl/Resources/data/currencies/fy.json index 1c557bf851c02..0c3648228c956 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/fy.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/fy.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ga.json b/src/Symfony/Component/Intl/Resources/data/currencies/ga.json index dbb83178310e4..f5220ddaaa373 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ga.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ga.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/gd.json b/src/Symfony/Component/Intl/Resources/data/currencies/gd.json index c2b173894728d..805ff5869b9f0 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/gd.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/gd.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/gl.json b/src/Symfony/Component/Intl/Resources/data/currencies/gl.json index 02b0d8b574671..f9e1e697fcc7f 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/gl.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/gl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/gu.json b/src/Symfony/Component/Intl/Resources/data/currencies/gu.json index c5d49e2779ec9..a27f1ecd0160f 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/gu.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/gu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/he.json b/src/Symfony/Component/Intl/Resources/data/currencies/he.json index 6933e0ca1bb41..7a2475cf02dba 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/he.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/he.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/hi.json b/src/Symfony/Component/Intl/Resources/data/currencies/hi.json index 4544cea5dbbaf..2159d42b461c8 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/hi.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/hi.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/hr.json b/src/Symfony/Component/Intl/Resources/data/currencies/hr.json index 4e85c0f030b99..b8ba455f15d21 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/hr.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/hr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/hu.json b/src/Symfony/Component/Intl/Resources/data/currencies/hu.json index 4039c505cd1af..2406114598684 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/hu.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/hu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/hy.json b/src/Symfony/Component/Intl/Resources/data/currencies/hy.json index 73fd873c346fa..14e89809aa111 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/hy.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/hy.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/id.json b/src/Symfony/Component/Intl/Resources/data/currencies/id.json index 4da93ecd05099..d18d212fcae7a 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/id.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/id.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/in.json b/src/Symfony/Component/Intl/Resources/data/currencies/in.json index 4da93ecd05099..d18d212fcae7a 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/in.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/in.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/is.json b/src/Symfony/Component/Intl/Resources/data/currencies/is.json index d854bc1070e38..3b77177230a49 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/is.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/is.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/it.json b/src/Symfony/Component/Intl/Resources/data/currencies/it.json index df98d9ebfc9da..6c4ef7a027bbf 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/it.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/it.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.40", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/iw.json b/src/Symfony/Component/Intl/Resources/data/currencies/iw.json index 6933e0ca1bb41..7a2475cf02dba 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/iw.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/iw.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ja.json b/src/Symfony/Component/Intl/Resources/data/currencies/ja.json index a388a1ac5f0a3..2fc9a53aaeb76 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ja.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ja.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ka.json b/src/Symfony/Component/Intl/Resources/data/currencies/ka.json index 3ba1942450a03..67d63d8a6c179 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ka.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ka.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/kk.json b/src/Symfony/Component/Intl/Resources/data/currencies/kk.json index 20adf173d2976..fb11ce310c798 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/kk.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/kk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/km.json b/src/Symfony/Component/Intl/Resources/data/currencies/km.json index 8b73e024f9e0b..5c41dac002fbe 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/km.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/km.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/kn.json b/src/Symfony/Component/Intl/Resources/data/currencies/kn.json index 3f23d8bb499d8..3ddd471f35a1e 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/kn.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/kn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ko.json b/src/Symfony/Component/Intl/Resources/data/currencies/ko.json index ab543f2086a0a..e3bd00c6f147f 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ko.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ko.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ks.json b/src/Symfony/Component/Intl/Resources/data/currencies/ks.json index 498b4dd1cf38e..002c2d30d3913 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ks.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ks.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ky.json b/src/Symfony/Component/Intl/Resources/data/currencies/ky.json index c3435649e999b..df62f05636490 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ky.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ky.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/lb.json b/src/Symfony/Component/Intl/Resources/data/currencies/lb.json index c427022bf56dc..a0588c4912530 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/lb.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/lb.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/lo.json b/src/Symfony/Component/Intl/Resources/data/currencies/lo.json index d852350a53017..62ca5e12c5d33 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/lo.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/lo.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/lt.json b/src/Symfony/Component/Intl/Resources/data/currencies/lt.json index 04803c2a4f9c0..53b0cdb7bdec3 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/lt.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/lt.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/lv.json b/src/Symfony/Component/Intl/Resources/data/currencies/lv.json index bb9f0619bba64..e651d2e70eb08 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/lv.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/lv.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/meta.json b/src/Symfony/Component/Intl/Resources/data/currencies/meta.json index 858a528612d00..9dd1d353dfff8 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/meta.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/meta.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.27", + "Version": "2.1.41.58", "Currencies": [ "ADP", "AED", @@ -663,6 +663,12 @@ 0, 0 ], + "VEF": [ + 2, + 0, + 0, + 0 + ], "VND": [ 0, 0, diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/mk.json b/src/Symfony/Component/Intl/Resources/data/currencies/mk.json index 754cb8044e9b4..ca0294f0b49ed 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/mk.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/mk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ml.json b/src/Symfony/Component/Intl/Resources/data/currencies/ml.json index 588553900fc40..3b6e669cf89ce 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ml.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ml.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/mn.json b/src/Symfony/Component/Intl/Resources/data/currencies/mn.json index 3ae12501c7073..5938e605550bd 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/mn.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/mn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/mr.json b/src/Symfony/Component/Intl/Resources/data/currencies/mr.json index 00b4ab812fca2..87ea2b9ec131e 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/mr.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/mr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ms.json b/src/Symfony/Component/Intl/Resources/data/currencies/ms.json index a9dd3014dbb8a..3036c91284e42 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ms.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ms.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/mt.json b/src/Symfony/Component/Intl/Resources/data/currencies/mt.json index 64f108d883d69..0b1f0f7279b0d 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/mt.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/mt.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/my.json b/src/Symfony/Component/Intl/Resources/data/currencies/my.json index a0c0926207709..9c8822111ea04 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/my.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/my.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/nb.json b/src/Symfony/Component/Intl/Resources/data/currencies/nb.json index f97f45d1c5440..f14107f891542 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/nb.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/nb.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ne.json b/src/Symfony/Component/Intl/Resources/data/currencies/ne.json index 7ae11871707e5..655169f14d9a8 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ne.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ne.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/nl.json b/src/Symfony/Component/Intl/Resources/data/currencies/nl.json index 434e711f1099d..72d4d1d47f8c8 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/nl.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/nl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", @@ -271,7 +271,7 @@ ], "CNY": [ "CN¥", - "Chinese Yuan" + "Chinese yuan" ], "COP": [ "COP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/nn.json b/src/Symfony/Component/Intl/Resources/data/currencies/nn.json index 767b7e56372eb..b2fb4fe7db080 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/nn.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/nn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/no.json b/src/Symfony/Component/Intl/Resources/data/currencies/no.json index f97f45d1c5440..f14107f891542 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/no.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/no.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/or.json b/src/Symfony/Component/Intl/Resources/data/currencies/or.json index a8efbdb951ec2..ca7c224aed043 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/or.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/or.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/pa.json b/src/Symfony/Component/Intl/Resources/data/currencies/pa.json index 78fe3f486d6f8..33d39c0bcb01f 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/pa.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/pa.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/pl.json b/src/Symfony/Component/Intl/Resources/data/currencies/pl.json index c54c5c63ec946..613ba02a0e557 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/pl.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/pl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.15", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ps.json b/src/Symfony/Component/Intl/Resources/data/currencies/ps.json index 7ba97c4bc79c7..153aff6d74dcf 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ps.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ps.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/pt.json b/src/Symfony/Component/Intl/Resources/data/currencies/pt.json index 9ead271d3fc55..1af2a051d0ec5 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/pt.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/pt.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/pt_PT.json b/src/Symfony/Component/Intl/Resources/data/currencies/pt_PT.json index 2672a96a1456d..b9fe93bccc1e5 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/pt_PT.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/pt_PT.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/rm.json b/src/Symfony/Component/Intl/Resources/data/currencies/rm.json index e8545fcbe472a..66552349b6352 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/rm.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/rm.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ro.json b/src/Symfony/Component/Intl/Resources/data/currencies/ro.json index de4561f084442..87383953ec8f4 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ro.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ro.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/root.json b/src/Symfony/Component/Intl/Resources/data/currencies/root.json index 3f1917c8900ac..3b78302feba14 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/root.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/root.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.27", + "Version": "2.1.41.58", "Names": { "AUD": [ "A$", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ru.json b/src/Symfony/Component/Intl/Resources/data/currencies/ru.json index a2b3748ea233f..db29b840362bb 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ru.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ru.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/sh.json b/src/Symfony/Component/Intl/Resources/data/currencies/sh.json index 321a08b32373e..f1a8f9bbf9af3 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/sh.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/sh.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.37", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/si.json b/src/Symfony/Component/Intl/Resources/data/currencies/si.json index e8a6959f86a21..f39852e997be7 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/si.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/si.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/sk.json b/src/Symfony/Component/Intl/Resources/data/currencies/sk.json index ab7061b963a27..21c9f866559aa 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/sk.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/sk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/sl.json b/src/Symfony/Component/Intl/Resources/data/currencies/sl.json index 3d0d38adb0656..24430cfab9e82 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/sl.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/sl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/sq.json b/src/Symfony/Component/Intl/Resources/data/currencies/sq.json index 29fc4935f7905..6db1b1334e1f4 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/sq.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/sq.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/sr.json b/src/Symfony/Component/Intl/Resources/data/currencies/sr.json index 36ef5a780b05f..db80e6519cd61 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/sr.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/sr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/sr_Latn.json b/src/Symfony/Component/Intl/Resources/data/currencies/sr_Latn.json index 321a08b32373e..f1a8f9bbf9af3 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/sr_Latn.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/sr_Latn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.37", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/sv.json b/src/Symfony/Component/Intl/Resources/data/currencies/sv.json index 00f411f54778d..df4b40318fc8b 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/sv.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/sv.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/sw.json b/src/Symfony/Component/Intl/Resources/data/currencies/sw.json index 0fc0fd1957693..2c1de61c1937a 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/sw.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/sw.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ta.json b/src/Symfony/Component/Intl/Resources/data/currencies/ta.json index 6d8263e3424ab..3f0e7a5539817 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ta.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ta.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/te.json b/src/Symfony/Component/Intl/Resources/data/currencies/te.json index 156892f946da4..200c7659756d7 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/te.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/te.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/th.json b/src/Symfony/Component/Intl/Resources/data/currencies/th.json index 9a0f9a6a6d0fa..881492f1c27a3 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/th.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/th.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/tl.json b/src/Symfony/Component/Intl/Resources/data/currencies/tl.json index f5881a01e2c8d..7ad62a02697e4 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/tl.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/tl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/tr.json b/src/Symfony/Component/Intl/Resources/data/currencies/tr.json index fe0c247a635fc..5920329dfb3af 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/tr.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/tr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ug.json b/src/Symfony/Component/Intl/Resources/data/currencies/ug.json index af737fd2aa246..5aece0a8aa846 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ug.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ug.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/uk.json b/src/Symfony/Component/Intl/Resources/data/currencies/uk.json index 62de55e9e27f5..ec44b5009867a 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/uk.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/uk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/ur.json b/src/Symfony/Component/Intl/Resources/data/currencies/ur.json index fa41082b1ca04..e7fdca3d2b464 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/ur.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/ur.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/uz.json b/src/Symfony/Component/Intl/Resources/data/currencies/uz.json index cf9fe56d802ba..a99be4d553e75 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/uz.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/uz.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/uz_Cyrl.json b/src/Symfony/Component/Intl/Resources/data/currencies/uz_Cyrl.json index e13a40eeb89e9..9deb2b2fe2a8e 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/uz_Cyrl.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/uz_Cyrl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.38.69", + "Version": "2.1.41.97", "Names": { "ANG": [ "ANG", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/vi.json b/src/Symfony/Component/Intl/Resources/data/currencies/vi.json index 2693d127a4067..398f76881e8fe 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/vi.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/vi.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/zh.json b/src/Symfony/Component/Intl/Resources/data/currencies/zh.json index 04379ec801608..39b62310c2dbe 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/zh.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/zh.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/zh_Hant.json b/src/Symfony/Component/Intl/Resources/data/currencies/zh_Hant.json index 2fef02124c7ea..0ac1f1a537f0b 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/zh_Hant.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/zh_Hant.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "ADP": [ "ADP", diff --git a/src/Symfony/Component/Intl/Resources/data/currencies/zu.json b/src/Symfony/Component/Intl/Resources/data/currencies/zu.json index e07dbbd3767a6..d7a7caf686983 100644 --- a/src/Symfony/Component/Intl/Resources/data/currencies/zu.json +++ b/src/Symfony/Component/Intl/Resources/data/currencies/zu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AED": [ "AED", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/af.json b/src/Symfony/Component/Intl/Resources/data/languages/af.json index ff428d44d5985..c33370a652670 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/af.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/af.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abkasies", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/am.json b/src/Symfony/Component/Intl/Resources/data/languages/am.json index a1726c4e5d8fc..c4c23c151d0c6 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/am.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/am.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "አፋርኛ", "ab": "አብሐዚኛ", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ar.json b/src/Symfony/Component/Intl/Resources/data/languages/ar.json index 7893d2204b65f..aa0c218b28875 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ar.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ar.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "الأفارية", "ab": "الأبخازية", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/as.json b/src/Symfony/Component/Intl/Resources/data/languages/as.json index 9745f49557680..275f70741815c 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/as.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/as.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "আফাৰ", "ab": "আবখাজিয়ান", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/az.json b/src/Symfony/Component/Intl/Resources/data/languages/az.json index d226a67835ceb..aee7ed4f05576 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/az.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/az.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abxaz", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/be.json b/src/Symfony/Component/Intl/Resources/data/languages/be.json index b4b379fc35ef7..580d82ed45d0f 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/be.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/be.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "афарская", "ab": "абхазская", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/bg.json b/src/Symfony/Component/Intl/Resources/data/languages/bg.json index 801007fc81bbc..b918596574fbf 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/bg.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/bg.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "афарски", "ab": "абхазки", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/bn.json b/src/Symfony/Component/Intl/Resources/data/languages/bn.json index 2148e59d043c1..55a56db1aeb31 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/bn.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/bn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "আফার", "ab": "আবখাজিয়ান", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/br.json b/src/Symfony/Component/Intl/Resources/data/languages/br.json index 33fadd28c92a6..39c428634d05c 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/br.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/br.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abkhazeg", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/bs.json b/src/Symfony/Component/Intl/Resources/data/languages/bs.json index 57edbe6c99cb5..4dd7e19e3ff94 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/bs.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/bs.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afarski", "ab": "abhaski", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/bs_Cyrl.json b/src/Symfony/Component/Intl/Resources/data/languages/bs_Cyrl.json index acadc23fae040..8612cb042144a 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/bs_Cyrl.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/bs_Cyrl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "афарски", "ab": "абказијски", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ca.json b/src/Symfony/Component/Intl/Resources/data/languages/ca.json index 659e91126f536..5bda25ad6fb28 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ca.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ca.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "àfar", "ab": "abkhaz", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ce.json b/src/Symfony/Component/Intl/Resources/data/languages/ce.json index fa836974e27c5..0e1eec1c00eff 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ce.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ce.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "афарийн", "ab": "абхазхойн", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/cs.json b/src/Symfony/Component/Intl/Resources/data/languages/cs.json index 78a8053921287..7e5e48c4884d6 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/cs.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/cs.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.15", + "Version": "2.1.41.97", "Names": { "aa": "afarština", "ab": "abcházština", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/cy.json b/src/Symfony/Component/Intl/Resources/data/languages/cy.json index ac9186dd10a1e..0cd62e8301642 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/cy.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/cy.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "Affareg", "ab": "Abchaseg", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/da.json b/src/Symfony/Component/Intl/Resources/data/languages/da.json index 712f8d9ea9761..c48507fa96fe4 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/da.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/da.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abkhasisk", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/de.json b/src/Symfony/Component/Intl/Resources/data/languages/de.json index 7105b07435540..e226ecd5dd363 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/de.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/de.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.41", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abchasisch", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/dz.json b/src/Symfony/Component/Intl/Resources/data/languages/dz.json index d3e9af9252400..99064b1b69c71 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/dz.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/dz.json @@ -1,5 +1,5 @@ { - "Version": "2.1.38.69", + "Version": "2.1.41.97", "Names": { "aa": "ཨ་ཕར་ཁ", "ab": "ཨཱབ་ཁ་ཟི་ཡ་ཁ", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ee.json b/src/Symfony/Component/Intl/Resources/data/languages/ee.json index 02ae68425ac55..c86ed87834f8a 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ee.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ee.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "ab": "abkhaziagbe", "af": "afrikaangbe", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/el.json b/src/Symfony/Component/Intl/Resources/data/languages/el.json index ed4ff61b6ad0d..50ec641b64472 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/el.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/el.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "Αφάρ", "ab": "Αμπχαζικά", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/en.json b/src/Symfony/Component/Intl/Resources/data/languages/en.json index b2c53f95f0099..596b52cbd3473 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/en.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/en.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.27", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abkhazian", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/es.json b/src/Symfony/Component/Intl/Resources/data/languages/es.json index a85beff7bfd86..51c61b6c14b24 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/es.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/es.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abjasio", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/es_VE.json b/src/Symfony/Component/Intl/Resources/data/languages/es_VE.json index 46ba3c939bd07..d1cecf3592ff4 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/es_VE.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/es_VE.json @@ -1,5 +1,5 @@ { - "Version": "2.1.38.39", + "Version": "2.1.41.97", "Names": { "ace": "acehnés", "arp": "arapaho", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/et.json b/src/Symfony/Component/Intl/Resources/data/languages/et.json index e4878042dc918..5cbddcc43ed57 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/et.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/et.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afari", "ab": "abhaasi", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/eu.json b/src/Symfony/Component/Intl/Resources/data/languages/eu.json index 6bb031663af82..c5e2adaf694ec 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/eu.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/eu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afarera", "ab": "abkhaziera", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/fa.json b/src/Symfony/Component/Intl/Resources/data/languages/fa.json index 1386cbf2057b1..d19fb09a45813 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/fa.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/fa.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "آفاری", "ab": "آبخازی", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/fi.json b/src/Symfony/Component/Intl/Resources/data/languages/fi.json index 92c76d383e07f..decaff2fd2ace 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/fi.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/fi.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abhaasi", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/fo.json b/src/Symfony/Component/Intl/Resources/data/languages/fo.json index 6233854155b63..2e4e561b5ac67 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/fo.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/fo.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abkhasiskt", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/fr.json b/src/Symfony/Component/Intl/Resources/data/languages/fr.json index 6dad4dee7c09a..174ed51770a0a 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/fr.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/fr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abkhaze", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/fy.json b/src/Symfony/Component/Intl/Resources/data/languages/fy.json index 7e03caf51457b..5f561e410e20d 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/fy.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/fy.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abchazysk", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ga.json b/src/Symfony/Component/Intl/Resources/data/languages/ga.json index 94f03252e7786..6de0c3082ca56 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ga.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ga.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "Afáiris", "ab": "Abcáisis", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/gd.json b/src/Symfony/Component/Intl/Resources/data/languages/gd.json index e77e30b6cbf69..c38995e302df2 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/gd.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/gd.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abchasais", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/gl.json b/src/Symfony/Component/Intl/Resources/data/languages/gl.json index db5daf4d0b487..ae35f802af045 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/gl.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/gl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abkhazo", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/gu.json b/src/Symfony/Component/Intl/Resources/data/languages/gu.json index ad2701714e69a..41e06526a36e8 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/gu.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/gu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "અફાર", "ab": "અબખાજિયન", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/he.json b/src/Symfony/Component/Intl/Resources/data/languages/he.json index 04cc4c84cb3ec..c09e9012ba0e6 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/he.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/he.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "אפארית", "ab": "אבחזית", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/hi.json b/src/Symfony/Component/Intl/Resources/data/languages/hi.json index 515338e21869d..fb840c01e3e48 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/hi.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/hi.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "अफ़ार", "ab": "अब्ख़ाज़ियन", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/hr.json b/src/Symfony/Component/Intl/Resources/data/languages/hr.json index 29539ba1824ca..2a9d518bb5987 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/hr.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/hr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afarski", "ab": "abhaski", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/hu.json b/src/Symfony/Component/Intl/Resources/data/languages/hu.json index 3b8010f6d8318..f988b6db2a309 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/hu.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/hu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abház", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/hy.json b/src/Symfony/Component/Intl/Resources/data/languages/hy.json index 4cf3f7127a594..0d10b798ae051 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/hy.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/hy.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "աֆարերեն", "ab": "աբխազերեն", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/id.json b/src/Symfony/Component/Intl/Resources/data/languages/id.json index e50e515ab23f6..7e5a6d6e027f8 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/id.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/id.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abkhaz", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/in.json b/src/Symfony/Component/Intl/Resources/data/languages/in.json index e50e515ab23f6..7e5a6d6e027f8 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/in.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/in.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abkhaz", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/is.json b/src/Symfony/Component/Intl/Resources/data/languages/is.json index 050b4f8a1d64d..3380c99e2c535 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/is.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/is.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afár", "ab": "abkasíska", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/it.json b/src/Symfony/Component/Intl/Resources/data/languages/it.json index d1ca80bee9a18..23631e1b7bb15 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/it.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/it.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.40", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abcaso", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/iw.json b/src/Symfony/Component/Intl/Resources/data/languages/iw.json index 04cc4c84cb3ec..c09e9012ba0e6 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/iw.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/iw.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "אפארית", "ab": "אבחזית", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ja.json b/src/Symfony/Component/Intl/Resources/data/languages/ja.json index 847ea3d037d8a..b9563b04be11f 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ja.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ja.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "アファル語", "ab": "アブハズ語", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ka.json b/src/Symfony/Component/Intl/Resources/data/languages/ka.json index 4d86d0d61cfb3..7f316a6c4a099 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ka.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ka.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "აფარი", "ab": "აფხაზური", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/kk.json b/src/Symfony/Component/Intl/Resources/data/languages/kk.json index cfc94c0671048..d7734f1d8801e 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/kk.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/kk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "афар тілі", "ab": "абхаз тілі", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/km.json b/src/Symfony/Component/Intl/Resources/data/languages/km.json index 5d3a8f5889407..db01ecfaf208e 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/km.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/km.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "អាហ្វារ", "ab": "អាប់ខាហ៊្សាន", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/kn.json b/src/Symfony/Component/Intl/Resources/data/languages/kn.json index 620f471c4916f..b3b358898bf29 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/kn.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/kn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "ಅಫಾರ್", "ab": "ಅಬ್ಖಾಜಿಯನ್", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ko.json b/src/Symfony/Component/Intl/Resources/data/languages/ko.json index 5d669f96d0d2e..7534f313b8c11 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ko.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ko.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "아파르어", "ab": "압카즈어", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ks.json b/src/Symfony/Component/Intl/Resources/data/languages/ks.json index 0946840f012ad..76ae0a0f9cce6 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ks.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ks.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "اَفار", "ab": "اَبخازِیان", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ky.json b/src/Symfony/Component/Intl/Resources/data/languages/ky.json index 7694f60e094fd..429e9bde6e935 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ky.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ky.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "афарча", "ab": "абхазча", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/lb.json b/src/Symfony/Component/Intl/Resources/data/languages/lb.json index 9bdc36212f0e1..c64f92b1a073d 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/lb.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/lb.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abchasesch", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/lo.json b/src/Symfony/Component/Intl/Resources/data/languages/lo.json index 132a421fc5b98..2b84dccb71d2b 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/lo.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/lo.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "ອະຟາ", "ab": "ແອບຄາຊຽນ", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/lt.json b/src/Symfony/Component/Intl/Resources/data/languages/lt.json index 8fa93ba498fd5..708997ccee018 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/lt.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/lt.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afarų", "ab": "abchazų", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/lv.json b/src/Symfony/Component/Intl/Resources/data/languages/lv.json index 2ab15373a2583..e1d309fa1903b 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/lv.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/lv.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afāru", "ab": "abhāzu", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/meta.json b/src/Symfony/Component/Intl/Resources/data/languages/meta.json index 0dfe57fd6be22..db24a0f675645 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/meta.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/meta.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.27", + "Version": "2.1.41.58", "Languages": [ "aa", "ab", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/mk.json b/src/Symfony/Component/Intl/Resources/data/languages/mk.json index 5bd7db58709d3..fbc7c30c386e5 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/mk.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/mk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "афарски", "ab": "апхаски", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ml.json b/src/Symfony/Component/Intl/Resources/data/languages/ml.json index eadd084be9348..ad2ab3ea9437d 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ml.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ml.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "അഫാർ", "ab": "അബ്‌ഖാസിയൻ", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/mn.json b/src/Symfony/Component/Intl/Resources/data/languages/mn.json index cd1240747d375..d1d9ff69db00e 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/mn.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/mn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "афар", "ab": "абхаз", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/mr.json b/src/Symfony/Component/Intl/Resources/data/languages/mr.json index 10e0209306859..0d258d5098320 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/mr.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/mr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "अफार", "ab": "अबखेजियन", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ms.json b/src/Symfony/Component/Intl/Resources/data/languages/ms.json index 5449f09742e34..c4aab246c9a68 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ms.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ms.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abkhazia", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/mt.json b/src/Symfony/Component/Intl/Resources/data/languages/mt.json index 44562555857c3..2072eba467ecc 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/mt.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/mt.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abkażjan", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/my.json b/src/Symfony/Component/Intl/Resources/data/languages/my.json index 77101f6ca21c1..2ec10914b5677 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/my.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/my.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "အာဖာ", "ab": "အဘ်ခါဇီရာ", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/nb.json b/src/Symfony/Component/Intl/Resources/data/languages/nb.json index 88940b15d6468..532ba060df714 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/nb.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/nb.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abkhasisk", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ne.json b/src/Symfony/Component/Intl/Resources/data/languages/ne.json index f1fed6bf6a008..01b8072739e64 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ne.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ne.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "अफार", "ab": "अब्खाजियाली", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/nl.json b/src/Symfony/Component/Intl/Resources/data/languages/nl.json index ec05edacb6b1f..961a1b5b185e2 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/nl.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/nl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abchazisch", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/nn.json b/src/Symfony/Component/Intl/Resources/data/languages/nn.json index 1935b6ba292a4..43db86fb181f2 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/nn.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/nn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abkhasisk", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/no.json b/src/Symfony/Component/Intl/Resources/data/languages/no.json index 88940b15d6468..532ba060df714 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/no.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/no.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abkhasisk", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/or.json b/src/Symfony/Component/Intl/Resources/data/languages/or.json index 010dc7ece7310..c59f26147ba3a 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/or.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/or.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "ଅଫାର୍", "ab": "ଆବ୍ଖାଜିଆନ୍", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/pa.json b/src/Symfony/Component/Intl/Resources/data/languages/pa.json index 026c7f1018f9e..633834d93be04 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/pa.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/pa.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "ਅਫ਼ਾਰ", "ab": "ਅਬਖਾਜ਼ੀਅਨ", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/pl.json b/src/Symfony/Component/Intl/Resources/data/languages/pl.json index 88750fb79628d..13d114b92d43d 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/pl.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/pl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.15", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abchaski", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ps.json b/src/Symfony/Component/Intl/Resources/data/languages/ps.json index ae2473da778f1..c85eebb6c8af1 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ps.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ps.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "افري", "ab": "ابخازي", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/pt.json b/src/Symfony/Component/Intl/Resources/data/languages/pt.json index 349a5036b298e..9c946026febf6 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/pt.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/pt.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abcázio", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/pt_PT.json b/src/Symfony/Component/Intl/Resources/data/languages/pt_PT.json index 73437eb95f0cb..25c4663b2c7a7 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/pt_PT.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/pt_PT.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "af": "africanês", "ang": "inglês antigo", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/rm.json b/src/Symfony/Component/Intl/Resources/data/languages/rm.json index 8fb029c0add76..3db839d3c63fa 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/rm.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/rm.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abchasian", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ro.json b/src/Symfony/Component/Intl/Resources/data/languages/ro.json index 1f5d01dfe285d..f44554a2022e5 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ro.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ro.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abhază", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ru.json b/src/Symfony/Component/Intl/Resources/data/languages/ru.json index 8925868d0d0bf..8361b8a53e7e7 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ru.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ru.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "афарский", "ab": "абхазский", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/sh.json b/src/Symfony/Component/Intl/Resources/data/languages/sh.json index 550fd7a28071b..0207d42669f64 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/sh.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/sh.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.37", + "Version": "2.1.41.97", "Names": { "aa": "afarski", "ab": "abhaski", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/si.json b/src/Symfony/Component/Intl/Resources/data/languages/si.json index 55452edfe4e8c..8886ec01c100e 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/si.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/si.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "අෆාර්", "ab": "ඇබ්කාසියානු", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/sk.json b/src/Symfony/Component/Intl/Resources/data/languages/sk.json index eac02f59857f7..309516348e4d5 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/sk.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/sk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afarčina", "ab": "abcházčina", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/sl.json b/src/Symfony/Component/Intl/Resources/data/languages/sl.json index 4a4c320aa806d..7a20c2d1569be 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/sl.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/sl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afarščina", "ab": "abhaščina", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/sq.json b/src/Symfony/Component/Intl/Resources/data/languages/sq.json index 49cdabfe7e184..f59a6d2c31295 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/sq.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/sq.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afarisht", "ab": "abkazisht", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/sr.json b/src/Symfony/Component/Intl/Resources/data/languages/sr.json index f71e9eb42f3b6..68bd971a8c2e8 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/sr.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/sr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "афарски", "ab": "абхаски", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/sr_Latn.json b/src/Symfony/Component/Intl/Resources/data/languages/sr_Latn.json index 550fd7a28071b..0207d42669f64 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/sr_Latn.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/sr_Latn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.37", + "Version": "2.1.41.97", "Names": { "aa": "afarski", "ab": "abhaski", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/sv.json b/src/Symfony/Component/Intl/Resources/data/languages/sv.json index a70f7dd9e63ae..3182aa19ae27a 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/sv.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/sv.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abchaziska", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/sw.json b/src/Symfony/Component/Intl/Resources/data/languages/sw.json index 5ca303c5d7f58..da50b43e93e33 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/sw.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/sw.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "Kiafar", "ab": "Kiabkhazi", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ta.json b/src/Symfony/Component/Intl/Resources/data/languages/ta.json index 2fa91ee1061c0..fbad1dc9ad806 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ta.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ta.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "அஃபார்", "ab": "அப்காஜியான்", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/te.json b/src/Symfony/Component/Intl/Resources/data/languages/te.json index deb01580bd80e..0c9aa4a04843e 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/te.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/te.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "అఫార్", "ab": "అబ్ఖాజియన్", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/th.json b/src/Symfony/Component/Intl/Resources/data/languages/th.json index b6975b84724be..a4cc9b59586e4 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/th.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/th.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "อะฟาร์", "ab": "อับฮาเซีย", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/tl.json b/src/Symfony/Component/Intl/Resources/data/languages/tl.json index b42541207d16f..e81d9a7a6f0ba 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/tl.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/tl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abkhazian", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/tr.json b/src/Symfony/Component/Intl/Resources/data/languages/tr.json index 8962eac5947d5..5ed8aa1cc15af 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/tr.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/tr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "Afar", "ab": "Abhazca", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ug.json b/src/Symfony/Component/Intl/Resources/data/languages/ug.json index de0f5c582b976..33f941b962943 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ug.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ug.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "ئافارچە", "ab": "ئابخازچە", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/uk.json b/src/Symfony/Component/Intl/Resources/data/languages/uk.json index 57a44efaa7efe..9d76f9f4f9e06 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/uk.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/uk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "афарська", "ab": "абхазька", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/ur.json b/src/Symfony/Component/Intl/Resources/data/languages/ur.json index b41f6b510f4ce..20cc35032e85e 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/ur.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/ur.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "افار", "ab": "ابقازیان", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/uz.json b/src/Symfony/Component/Intl/Resources/data/languages/uz.json index e7024c28bde3a..7133307bbff2c 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/uz.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/uz.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "afar", "ab": "abxaz", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/uz_Cyrl.json b/src/Symfony/Component/Intl/Resources/data/languages/uz_Cyrl.json index 42e9d729b5565..cffed94258c4b 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/uz_Cyrl.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/uz_Cyrl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.38.69", + "Version": "2.1.41.97", "Names": { "aa": "афарча", "ab": "абхазча", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/vi.json b/src/Symfony/Component/Intl/Resources/data/languages/vi.json index 4523ebba98b5a..4a4b649898d60 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/vi.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/vi.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "Tiếng Afar", "ab": "Tiếng Abkhazia", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/zh.json b/src/Symfony/Component/Intl/Resources/data/languages/zh.json index a4fdf9b84dd84..e9a4724e0a6d5 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/zh.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/zh.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "阿法尔语", "ab": "阿布哈西亚语", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/zh_Hant.json b/src/Symfony/Component/Intl/Resources/data/languages/zh_Hant.json index b10c40624a6af..1b6c35ddffdb3 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/zh_Hant.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/zh_Hant.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "aa": "阿法文", "ab": "阿布哈茲文", diff --git a/src/Symfony/Component/Intl/Resources/data/languages/zu.json b/src/Symfony/Component/Intl/Resources/data/languages/zu.json index a10d135133362..e536c98d3462f 100644 --- a/src/Symfony/Component/Intl/Resources/data/languages/zu.json +++ b/src/Symfony/Component/Intl/Resources/data/languages/zu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "aa": "isi-Afar", "ab": "isi-Abkhazian", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/af.json b/src/Symfony/Component/Intl/Resources/data/regions/af.json index 1c9d008592ee2..2b280fd249db1 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/af.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/af.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ascensioneiland", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/am.json b/src/Symfony/Component/Intl/Resources/data/regions/am.json index eacb4cad2b7d0..0936881e34dd1 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/am.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/am.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "አሴንሽን ደሴት", "AD": "አንዶራ", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ar.json b/src/Symfony/Component/Intl/Resources/data/regions/ar.json index 00a3034237098..93ce837ca1ecd 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ar.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ar.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "جزيرة أسينشيون", "AD": "أندورا", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/as.json b/src/Symfony/Component/Intl/Resources/data/regions/as.json index 7a8dca9572a23..50baeecf10cc0 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/as.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/as.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "এচেনচিয়ন দ্বীপ", "AD": "আন্দোৰা", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/az.json b/src/Symfony/Component/Intl/Resources/data/regions/az.json index cbbac809fdd5e..2bc9b27e4b692 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/az.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/az.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Askenson adası", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/be.json b/src/Symfony/Component/Intl/Resources/data/regions/be.json index ca044fa291599..916a0653e726f 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/be.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/be.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Востраў Узнясення", "AD": "Андора", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/bg.json b/src/Symfony/Component/Intl/Resources/data/regions/bg.json index 1a1a657bf5642..0a4de0c69eb56 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/bg.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/bg.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "остров Възнесение", "AD": "Андора", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/bn.json b/src/Symfony/Component/Intl/Resources/data/regions/bn.json index 2421034c6f596..35626e5519c09 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/bn.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/bn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "অ্যাসসেনশন আইল্যান্ড", "AD": "আন্ডোরা", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/br.json b/src/Symfony/Component/Intl/Resources/data/regions/br.json index 8bebb1ca0c51a..5f1bdd18120d2 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/br.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/br.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Enez Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/bs.json b/src/Symfony/Component/Intl/Resources/data/regions/bs.json index a73a81e738515..a923f5fd90c29 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/bs.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/bs.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ostrvo Ascension", "AD": "Andora", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/bs_Cyrl.json b/src/Symfony/Component/Intl/Resources/data/regions/bs_Cyrl.json index 39413c42b856e..76c673b03b2ae 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/bs_Cyrl.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/bs_Cyrl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Острво Асенсион", "AD": "Андора", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ca.json b/src/Symfony/Component/Intl/Resources/data/regions/ca.json index c6c6fcd042854..50a0177b4d7d2 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ca.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ca.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Illa de l’Ascensió", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ce.json b/src/Symfony/Component/Intl/Resources/data/regions/ce.json index 86aa0341ab433..934580a09914e 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ce.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ce.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Айъадаларан гӀайре", "AD": "Андорра", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/cs.json b/src/Symfony/Component/Intl/Resources/data/regions/cs.json index 9d6899289ceee..68eea5b4ac7b9 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/cs.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/cs.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.15", + "Version": "2.1.41.97", "Names": { "AC": "Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/cy.json b/src/Symfony/Component/Intl/Resources/data/regions/cy.json index b707a2dd7143f..caa829ed16014 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/cy.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/cy.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ynys Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/da.json b/src/Symfony/Component/Intl/Resources/data/regions/da.json index 7994d129c6334..ef8b2658a839a 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/da.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/da.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Ascensionøen", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/de.json b/src/Symfony/Component/Intl/Resources/data/regions/de.json index c13a9edb986d1..b521ae4bc511e 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/de.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/de.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.41", + "Version": "2.1.41.97", "Names": { "AC": "Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/dz.json b/src/Symfony/Component/Intl/Resources/data/regions/dz.json index e2e292ad0bc21..9d20f23af3cf3 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/dz.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/dz.json @@ -1,5 +1,5 @@ { - "Version": "2.1.38.69", + "Version": "2.1.41.97", "Names": { "AC": "ཨེ་སེན་ཤུན་ཚོ་གླིང༌", "AD": "ཨཱན་དོ་ར", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ee.json b/src/Symfony/Component/Intl/Resources/data/regions/ee.json index 53cef01b73e07..5b1f0fd5ab031 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ee.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ee.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ascension ƒudomekpo nutome", "AD": "Andorra nutome", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/el.json b/src/Symfony/Component/Intl/Resources/data/regions/el.json index a470d7b6ebeb7..447264e8c6ebc 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/el.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/el.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Νήσος Ασενσιόν", "AD": "Ανδόρα", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/en.json b/src/Symfony/Component/Intl/Resources/data/regions/en.json index c8f3cb77d6aef..74663075241bc 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/en.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/en.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.27", + "Version": "2.1.41.97", "Names": { "AC": "Ascension Island", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/es.json b/src/Symfony/Component/Intl/Resources/data/regions/es.json index 083058458e3ac..3369ed0e0b945 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/es.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/es.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Isla de la Ascensión", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/es_VE.json b/src/Symfony/Component/Intl/Resources/data/regions/es_VE.json index 7685c507e39a4..e1b997480707f 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/es_VE.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/es_VE.json @@ -1,5 +1,5 @@ { - "Version": "2.1.38.39", + "Version": "2.1.41.97", "Names": { "BA": "Bosnia y Herzegovina", "TA": "Tristán de Acuña", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/et.json b/src/Symfony/Component/Intl/Resources/data/regions/et.json index 154c8ff11a5cf..e22adf5ffddb6 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/et.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/et.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ascensioni saar", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/eu.json b/src/Symfony/Component/Intl/Resources/data/regions/eu.json index a345bca3a249a..9df3ed11c06c5 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/eu.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/eu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ascension uhartea", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/fa.json b/src/Symfony/Component/Intl/Resources/data/regions/fa.json index 3c020d7857dd1..fb2ac4af4cc69 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/fa.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/fa.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "جزایر آسنسیون", "AD": "آندورا", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/fi.json b/src/Symfony/Component/Intl/Resources/data/regions/fi.json index e8971298fdeb6..4ba9dcd1e77a3 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/fi.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/fi.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Ascension-saari", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/fo.json b/src/Symfony/Component/Intl/Resources/data/regions/fo.json index e90c49b51210c..8459fc4314f81 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/fo.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/fo.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/fr.json b/src/Symfony/Component/Intl/Resources/data/regions/fr.json index 352312636665a..17184b5d4f503 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/fr.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/fr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Île de l’Ascension", "AD": "Andorre", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/fy.json b/src/Symfony/Component/Intl/Resources/data/regions/fy.json index bf816d5542776..e307781e9f8dc 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/fy.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/fy.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ga.json b/src/Symfony/Component/Intl/Resources/data/regions/ga.json index 502e88e65f9cb..ba938a53c13d6 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ga.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ga.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Oileán na Deascabhála", "AD": "Andóra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/gd.json b/src/Symfony/Component/Intl/Resources/data/regions/gd.json index 7c42b18affe39..6844ad29d3c84 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/gd.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/gd.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Eilean na Deasgabhalach", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/gl.json b/src/Symfony/Component/Intl/Resources/data/regions/gl.json index f2c95c3ec25ae..e6f23e88f5bed 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/gl.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/gl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Illa de Ascensión", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/gu.json b/src/Symfony/Component/Intl/Resources/data/regions/gu.json index a588299ce9772..d3e310380bcd4 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/gu.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/gu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "એસેન્શન આઇલેન્ડ", "AD": "ઍંડોરા", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/he.json b/src/Symfony/Component/Intl/Resources/data/regions/he.json index cf28a392f2cf0..ce12c7030efa7 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/he.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/he.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "האי אסנשן", "AD": "אנדורה", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/hi.json b/src/Symfony/Component/Intl/Resources/data/regions/hi.json index d21917284cdec..3cb506ce25115 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/hi.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/hi.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "असेंशन द्वीप", "AD": "एंडोरा", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/hr.json b/src/Symfony/Component/Intl/Resources/data/regions/hr.json index d95a4b9dd8301..b086e081de377 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/hr.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/hr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Otok Ascension", "AD": "Andora", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/hu.json b/src/Symfony/Component/Intl/Resources/data/regions/hu.json index 64fd49c62639f..badd300ee33e6 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/hu.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/hu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Ascension-sziget", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/hy.json b/src/Symfony/Component/Intl/Resources/data/regions/hy.json index e24bc7e9dc446..08be7f38349f0 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/hy.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/hy.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Համբարձման կղզի", "AD": "Անդորրա", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/id.json b/src/Symfony/Component/Intl/Resources/data/regions/id.json index 35ce14d8b9e74..552825ccdffd1 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/id.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/id.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Pulau Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/in.json b/src/Symfony/Component/Intl/Resources/data/regions/in.json index 35ce14d8b9e74..552825ccdffd1 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/in.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/in.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Pulau Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/is.json b/src/Symfony/Component/Intl/Resources/data/regions/is.json index 2e58c99e291ef..db171546d2bff 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/is.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/is.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ascension-eyja", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/it.json b/src/Symfony/Component/Intl/Resources/data/regions/it.json index fe6e7438d6245..865a31a6accbd 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/it.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/it.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.40", + "Version": "2.1.41.97", "Names": { "AC": "Isola Ascensione", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/iw.json b/src/Symfony/Component/Intl/Resources/data/regions/iw.json index cf28a392f2cf0..ce12c7030efa7 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/iw.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/iw.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "האי אסנשן", "AD": "אנדורה", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ja.json b/src/Symfony/Component/Intl/Resources/data/regions/ja.json index a5ccf21526ed5..511a6bde6573f 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ja.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ja.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "アセンション島", "AD": "アンドラ", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ka.json b/src/Symfony/Component/Intl/Resources/data/regions/ka.json index 059c01949e569..861ca2ea951ac 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ka.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ka.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "ამაღლების კუნძული", "AD": "ანდორა", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/kk.json b/src/Symfony/Component/Intl/Resources/data/regions/kk.json index 8cd36f18ca83d..0c6e912947b2e 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/kk.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/kk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Әскенжін аралы", "AD": "Андорра", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/km.json b/src/Symfony/Component/Intl/Resources/data/regions/km.json index 05c5092091519..50d149e55e0dc 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/km.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/km.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "កោះ​អាសេនសិន", "AD": "អង់ដូរ៉ា", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/kn.json b/src/Symfony/Component/Intl/Resources/data/regions/kn.json index 548183e2ff7ee..0265e4f39be72 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/kn.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/kn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "ಅಸೆನ್ಶನ್ ದ್ವೀಪ", "AD": "ಅಂಡೋರಾ", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ko.json b/src/Symfony/Component/Intl/Resources/data/regions/ko.json index 1fb1a39b0b31f..e33d48d1b9deb 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ko.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ko.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "어센션 섬", "AD": "안도라", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ks.json b/src/Symfony/Component/Intl/Resources/data/regions/ks.json index 6c0da75828d99..a956c7a3b79e7 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ks.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ks.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AD": "اٮ۪نڑورا", "AE": "مُتحدہ عرَب امارات", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ky.json b/src/Symfony/Component/Intl/Resources/data/regions/ky.json index 33ae2611291e2..e3acf4db41793 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ky.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ky.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Вознесение аралы", "AD": "Андорра", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/lb.json b/src/Symfony/Component/Intl/Resources/data/regions/lb.json index 0245d11143561..612f2e856b1bc 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/lb.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/lb.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/lo.json b/src/Symfony/Component/Intl/Resources/data/regions/lo.json index 7756792ab9f81..8de0bb9006954 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/lo.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/lo.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "ເກາະອາເຊນຊັນ", "AD": "ອັນດໍຣາ", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/lt.json b/src/Symfony/Component/Intl/Resources/data/regions/lt.json index 59370d64af771..d3d868d21ec1c 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/lt.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/lt.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Dangun Žengimo sala", "AD": "Andora", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/lv.json b/src/Symfony/Component/Intl/Resources/data/regions/lv.json index df0e0c598b373..a5d6739a27730 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/lv.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/lv.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Debesbraukšanas sala", "AD": "Andora", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/meta.json b/src/Symfony/Component/Intl/Resources/data/regions/meta.json index 578d7f6734895..9dbe566037405 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/meta.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/meta.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.27", + "Version": "2.1.41.58", "Regions": [ "AC", "AD", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/mk.json b/src/Symfony/Component/Intl/Resources/data/regions/mk.json index b03d2f47c21ca..d03ade1157a73 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/mk.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/mk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Остров Асенсион", "AD": "Андора", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ml.json b/src/Symfony/Component/Intl/Resources/data/regions/ml.json index 79fc31e42cb1f..54e7f6568d3a4 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ml.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ml.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "അസൻഷൻ ദ്വീപ്", "AD": "അൻഡോറ", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/mn.json b/src/Symfony/Component/Intl/Resources/data/regions/mn.json index f92b045b0c784..f32d2000b4a11 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/mn.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/mn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Асенсион арал", "AD": "Андорра", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/mr.json b/src/Symfony/Component/Intl/Resources/data/regions/mr.json index a957a87625cf5..f80e64ff770d3 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/mr.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/mr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "अ‍ॅसेन्शियन बेट", "AD": "अँडोरा", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ms.json b/src/Symfony/Component/Intl/Resources/data/regions/ms.json index 3d33e9a15c6e7..a5b9fae212e0f 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ms.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ms.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Pulau Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/mt.json b/src/Symfony/Component/Intl/Resources/data/regions/mt.json index f9fae72c2d575..43e92dba5f961 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/mt.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/mt.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ascension Island", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/my.json b/src/Symfony/Component/Intl/Resources/data/regions/my.json index 85d06b918aeda..73946f0ac61fa 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/my.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/my.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "အဆန်းရှင်းကျွန်း", "AD": "အန်ဒိုရာ", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/nb.json b/src/Symfony/Component/Intl/Resources/data/regions/nb.json index 4964dded5ac09..ad15e817644d3 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/nb.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/nb.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ne.json b/src/Symfony/Component/Intl/Resources/data/regions/ne.json index a07e675da7693..a72f1fdccf6ea 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ne.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ne.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "एस्केन्सन टापु", "AD": "अन्डोर्रा", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/nl.json b/src/Symfony/Component/Intl/Resources/data/regions/nl.json index e5546b299c379..a57efb1b355b2 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/nl.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/nl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/nn.json b/src/Symfony/Component/Intl/Resources/data/regions/nn.json index 86dd61e79a253..60e95611cf146 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/nn.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/nn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/no.json b/src/Symfony/Component/Intl/Resources/data/regions/no.json index 4964dded5ac09..ad15e817644d3 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/no.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/no.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/or.json b/src/Symfony/Component/Intl/Resources/data/regions/or.json index 21fa28f03aa99..c7d9d4c46118a 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/or.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/or.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "ଆସେନସିଅନ୍‌ ଦ୍ୱୀପ", "AD": "ଆଣ୍ଡୋରା", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/pa.json b/src/Symfony/Component/Intl/Resources/data/regions/pa.json index a9d8a7e678f27..206bf55846097 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/pa.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/pa.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "ਅਸੈਂਸ਼ਨ ਟਾਪੂ", "AD": "ਅੰਡੋਰਾ", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/pl.json b/src/Symfony/Component/Intl/Resources/data/regions/pl.json index 26905881d6bbc..9abb131f316fd 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/pl.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/pl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.15", + "Version": "2.1.41.97", "Names": { "AC": "Wyspa Wniebowstąpienia", "AD": "Andora", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ps.json b/src/Symfony/Component/Intl/Resources/data/regions/ps.json index cdca91ad7bacf..03675445edcd4 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ps.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ps.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "د توغندیو ټاپو", "AD": "اندورا", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/pt.json b/src/Symfony/Component/Intl/Resources/data/regions/pt.json index a6981a0078a37..6bf9bf4269523 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/pt.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/pt.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Ilha de Ascensão", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/pt_PT.json b/src/Symfony/Component/Intl/Resources/data/regions/pt_PT.json index b0223880bbc33..38c9ce880b379 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/pt_PT.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/pt_PT.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AI": "Anguila", "AM": "Arménia", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/rm.json b/src/Symfony/Component/Intl/Resources/data/regions/rm.json index 54d63c4554e30..7313a024c93c2 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/rm.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/rm.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AD": "Andorra", "AE": "Emirats Arabs Unids", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ro.json b/src/Symfony/Component/Intl/Resources/data/regions/ro.json index eed24364b6b3d..76157267588b0 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ro.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ro.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Insula Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ru.json b/src/Symfony/Component/Intl/Resources/data/regions/ru.json index f54e92257c105..3b172ca715175 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ru.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ru.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "о-в Вознесения", "AD": "Андорра", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/sh.json b/src/Symfony/Component/Intl/Resources/data/regions/sh.json index 39cb5e416c26c..e8b664995118a 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/sh.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/sh.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.37", + "Version": "2.1.41.97", "Names": { "AC": "Ostrvo Asension", "AD": "Andora", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/si.json b/src/Symfony/Component/Intl/Resources/data/regions/si.json index bf5c723f46dce..9975aeec7d45f 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/si.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/si.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "ඇසෙන්ෂන් දිවයින", "AD": "ඇන්ඩෝරාව", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/sk.json b/src/Symfony/Component/Intl/Resources/data/regions/sk.json index 86a8c5ad1a08f..0bba0649a8f31 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/sk.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/sk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/sl.json b/src/Symfony/Component/Intl/Resources/data/regions/sl.json index d77fbb0f87428..c84a219667d13 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/sl.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/sl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Otok Ascension", "AD": "Andora", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/sq.json b/src/Symfony/Component/Intl/Resources/data/regions/sq.json index 7b6bd3e95a3fb..af82944add734 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/sq.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/sq.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Ishulli Asenshion", "AD": "Andorrë", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/sr.json b/src/Symfony/Component/Intl/Resources/data/regions/sr.json index 26232a598cb38..125467cbb16d4 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/sr.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/sr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Острво Асенсион", "AD": "Андора", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/sr_Latn.json b/src/Symfony/Component/Intl/Resources/data/regions/sr_Latn.json index 39cb5e416c26c..e8b664995118a 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/sr_Latn.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/sr_Latn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.37", + "Version": "2.1.41.97", "Names": { "AC": "Ostrvo Asension", "AD": "Andora", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/sv.json b/src/Symfony/Component/Intl/Resources/data/regions/sv.json index af919a86b366e..5801373a61caa 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/sv.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/sv.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/sw.json b/src/Symfony/Component/Intl/Resources/data/regions/sw.json index 78eebdaa8979d..2cb97478b9b35 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/sw.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/sw.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Kisiwa cha Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ta.json b/src/Symfony/Component/Intl/Resources/data/regions/ta.json index 440df72d4f18f..0cc6b2e94f282 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ta.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ta.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "அஷன்ஷியன் தீவு", "AD": "அன்டோரா", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/te.json b/src/Symfony/Component/Intl/Resources/data/regions/te.json index 25dd319333cc2..e845e339bfb40 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/te.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/te.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "అసెన్షన్ దీవి", "AD": "ఆండోరా", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/th.json b/src/Symfony/Component/Intl/Resources/data/regions/th.json index 8230d31f7e084..3317bbc7543e0 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/th.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/th.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "เกาะแอสเซนชัน", "AD": "อันดอร์รา", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/tl.json b/src/Symfony/Component/Intl/Resources/data/regions/tl.json index 23e34fc5f91b3..19554b3f88089 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/tl.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/tl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Acsencion island", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/tr.json b/src/Symfony/Component/Intl/Resources/data/regions/tr.json index 79d8c1aec0a6e..6e12bc5f1f1be 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/tr.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/tr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Ascension Adası", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ug.json b/src/Symfony/Component/Intl/Resources/data/regions/ug.json index f338015e9fc3e..0a878d99d3f91 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ug.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ug.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "ئاسسېنسىيون ئارىلى", "AD": "ئاندوررا", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/uk.json b/src/Symfony/Component/Intl/Resources/data/regions/uk.json index a47cb392c1e3a..5ddda82648360 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/uk.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/uk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Острів Вознесіння", "AD": "Андорра", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/ur.json b/src/Symfony/Component/Intl/Resources/data/regions/ur.json index c23df5b5407cc..f315ffdedf7bf 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/ur.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/ur.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "اسینشن آئلینڈ", "AD": "انڈورا", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/uz.json b/src/Symfony/Component/Intl/Resources/data/regions/uz.json index a93829d4ef9d3..ab2ddfc66edff 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/uz.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/uz.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "Me’roj oroli", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/uz_Cyrl.json b/src/Symfony/Component/Intl/Resources/data/regions/uz_Cyrl.json index 57020b5386d28..1612ed7a620ba 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/uz_Cyrl.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/uz_Cyrl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.38.69", + "Version": "2.1.41.97", "Names": { "AC": "Меърож ороли", "AD": "Андорра", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/vi.json b/src/Symfony/Component/Intl/Resources/data/regions/vi.json index f49cb2b04f86e..4d286235a8b53 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/vi.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/vi.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "Đảo Ascension", "AD": "Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/zh.json b/src/Symfony/Component/Intl/Resources/data/regions/zh.json index 4ecff448955ef..4fc172b7647ad 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/zh.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/zh.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "阿森松岛", "AD": "安道尔", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/zh_Hant.json b/src/Symfony/Component/Intl/Resources/data/regions/zh_Hant.json index f7cefb9282ab2..1b7ef475ad1e1 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/zh_Hant.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/zh_Hant.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "AC": "阿森松島", "AD": "安道爾", diff --git a/src/Symfony/Component/Intl/Resources/data/regions/zu.json b/src/Symfony/Component/Intl/Resources/data/regions/zu.json index bfc219a289604..e92b1858c0684 100644 --- a/src/Symfony/Component/Intl/Resources/data/regions/zu.json +++ b/src/Symfony/Component/Intl/Resources/data/regions/zu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "AC": "i-Ascension Island", "AD": "i-Andorra", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/af.json b/src/Symfony/Component/Intl/Resources/data/scripts/af.json index a673f0160c35c..7b7ad30ae02f6 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/af.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/af.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "Arabies", "Armn": "Armeens", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/am.json b/src/Symfony/Component/Intl/Resources/data/scripts/am.json index 78cb36500b713..946002b557603 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/am.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/am.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "ዓረብኛ", "Armn": "አርሜንያዊ", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ar.json b/src/Symfony/Component/Intl/Resources/data/scripts/ar.json index d15ce22650fd5..db49535778fbe 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ar.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ar.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Arab": "العربية", "Armn": "الأرمينية", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/as.json b/src/Symfony/Component/Intl/Resources/data/scripts/as.json index d7fadb3be12c9..66d86a27f0388 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/as.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/as.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "আৰবী", "Armn": "আৰ্মেনীয়", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/az.json b/src/Symfony/Component/Intl/Resources/data/scripts/az.json index e2a08bc031f77..a325bf271b5bc 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/az.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/az.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "ərəb", "Armi": "armi", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/be.json b/src/Symfony/Component/Intl/Resources/data/scripts/be.json index d56aae85d5bb2..c7d354a9d95ad 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/be.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/be.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "арабскае", "Armn": "армянскае", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/bg.json b/src/Symfony/Component/Intl/Resources/data/scripts/bg.json index e410e101e2ffe..4baea18813dc0 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/bg.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/bg.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "арабска", "Armi": "Арамейска", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/bn.json b/src/Symfony/Component/Intl/Resources/data/scripts/bn.json index 49f615d202024..449e8f786a74a 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/bn.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/bn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "আরবি", "Armi": "আরমি", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/br.json b/src/Symfony/Component/Intl/Resources/data/scripts/br.json index e1eedf62bd2bb..5a16c72c49b5a 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/br.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/br.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Adlm": "adlam", "Arab": "arabek", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/bs.json b/src/Symfony/Component/Intl/Resources/data/scripts/bs.json index 4dc0e7471f36d..5bc9873b0d326 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/bs.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/bs.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "arapsko pismo", "Armi": "imperijsko aramejsko pismo", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/bs_Cyrl.json b/src/Symfony/Component/Intl/Resources/data/scripts/bs_Cyrl.json index d9d4f6ad85866..7a68e412072ec 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/bs_Cyrl.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/bs_Cyrl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "арапско писмо", "Armi": "империјско арамејско писмо", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ca.json b/src/Symfony/Component/Intl/Resources/data/scripts/ca.json index 9cf70f5b954cf..71486f5d807bf 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ca.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ca.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Adlm": "adlam", "Afak": "afaka", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ce.json b/src/Symfony/Component/Intl/Resources/data/scripts/ce.json index 5bfa9ed8f99b5..54da177256b8d 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ce.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ce.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "Ӏаьрбийн", "Armn": "эрмалойн", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/cs.json b/src/Symfony/Component/Intl/Resources/data/scripts/cs.json index 39e01b99a6bca..34c858cb3c78b 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/cs.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/cs.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.15", + "Version": "2.1.41.97", "Names": { "Afak": "afaka", "Aghb": "kavkazskoalbánské", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/cy.json b/src/Symfony/Component/Intl/Resources/data/scripts/cy.json index 4cad1142b15bc..5e735387a9c8e 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/cy.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/cy.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "Arabaidd", "Armn": "Armenaidd", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/da.json b/src/Symfony/Component/Intl/Resources/data/scripts/da.json index 846ecc4306702..729eabf1712f0 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/da.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/da.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Afak": "afaka", "Arab": "arabisk", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/de.json b/src/Symfony/Component/Intl/Resources/data/scripts/de.json index 02fc8a225e35e..d570f5809cd3b 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/de.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/de.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.41", + "Version": "2.1.41.97", "Names": { "Afak": "Afaka", "Aghb": "Kaukasisch-Albanisch", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/dz.json b/src/Symfony/Component/Intl/Resources/data/scripts/dz.json index 9501061a66830..899a48ac97047 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/dz.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/dz.json @@ -1,5 +1,5 @@ { - "Version": "2.1.38.69", + "Version": "2.1.41.97", "Names": { "Arab": "ཨེ་ར་བིཀ་ཡིག་གུ", "Armn": "ཨར་མི་ནི་ཡཱན་ཡིག་གུ", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ee.json b/src/Symfony/Component/Intl/Resources/data/scripts/ee.json index 81cb17c9cbf72..702e84891d54a 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ee.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ee.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "Arabiagbeŋɔŋlɔ", "Armn": "armeniagbeŋɔŋlɔ", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/el.json b/src/Symfony/Component/Intl/Resources/data/scripts/el.json index 7032aad04104e..49d9c01dc7e85 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/el.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/el.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Arab": "Αραβικό", "Armi": "Αυτοκρατορικό Αραμαϊκό", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/en.json b/src/Symfony/Component/Intl/Resources/data/scripts/en.json index 935fb4ee47f93..67a721b53b579 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/en.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/en.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.27", + "Version": "2.1.41.97", "Names": { "Adlm": "Adlam", "Afak": "Afaka", @@ -32,6 +32,7 @@ "Cyrl": "Cyrillic", "Cyrs": "Old Church Slavonic Cyrillic", "Deva": "Devanagari", + "Dogr": "Dogra", "Dsrt": "Deseret", "Dupl": "Duployan shorthand", "Egyd": "Egyptian demotic", @@ -42,6 +43,7 @@ "Geok": "Georgian Khutsuri", "Geor": "Georgian", "Glag": "Glagolitic", + "Gong": "Gunjala Gondi", "Gonm": "Masaram Gondi", "Goth": "Gothic", "Gran": "Grantha", @@ -90,10 +92,12 @@ "Lyci": "Lycian", "Lydi": "Lydian", "Mahj": "Mahajani", + "Maka": "Makasar", "Mand": "Mandaean", "Mani": "Manichaean", "Marc": "Marchen", "Maya": "Mayan hieroglyphs", + "Medf": "Medefaidrin", "Mend": "Mende", "Merc": "Meroitic Cursive", "Mero": "Meroitic", @@ -128,6 +132,7 @@ "Plrd": "Pollard Phonetic", "Prti": "Inscriptional Parthian", "Rjng": "Rejang", + "Rohg": "Hanifi Rohingya", "Roro": "Rongorongo", "Runr": "Runic", "Samr": "Samaritan", @@ -140,6 +145,8 @@ "Sidd": "Siddham", "Sind": "Khudawadi", "Sinh": "Sinhala", + "Sogd": "Sogdian", + "Sogo": "Old Sogdian", "Sora": "Sora Sompeng", "Soyo": "Soyombo", "Sund": "Sundanese", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/es.json b/src/Symfony/Component/Intl/Resources/data/scripts/es.json index b174d99fc27c4..c2df3f675c4d9 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/es.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/es.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Arab": "árabe", "Armn": "armenio", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/et.json b/src/Symfony/Component/Intl/Resources/data/scripts/et.json index 6b40dff5e7a6a..99821fd0b0105 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/et.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/et.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Afak": "afaka", "Aghb": "albaani", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/eu.json b/src/Symfony/Component/Intl/Resources/data/scripts/eu.json index 76eaac574f01a..eba453815a3af 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/eu.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/eu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "arabiarra", "Armn": "armeniarra", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/fa.json b/src/Symfony/Component/Intl/Resources/data/scripts/fa.json index 97768fa3793a2..0fb434616c2ec 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/fa.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/fa.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Aghb": "آلبانیایی قفقازی", "Arab": "عربی", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/fi.json b/src/Symfony/Component/Intl/Resources/data/scripts/fi.json index d196ed733f059..92eeab3c701f6 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/fi.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/fi.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Adlm": "fulanin adlam-aakkosto", "Afak": "afaka", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/fo.json b/src/Symfony/Component/Intl/Resources/data/scripts/fo.json index fc3da37eb38cc..3e0ed3b472e39 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/fo.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/fo.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "arabisk", "Armn": "armenskt", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/fr.json b/src/Symfony/Component/Intl/Resources/data/scripts/fr.json index a85ad1f164923..e2cf1410304b5 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/fr.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/fr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Arab": "arabe", "Armi": "araméen impérial", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/fy.json b/src/Symfony/Component/Intl/Resources/data/scripts/fy.json index 4d6ef0634107e..0429b1fcef6ef 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/fy.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/fy.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Afak": "Defaka", "Arab": "Arabysk", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ga.json b/src/Symfony/Component/Intl/Resources/data/scripts/ga.json index 68a488b4120a5..8db2c5db56aa1 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ga.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ga.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Adlm": "Adlm", "Aghb": "Albánach Cugasach", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/gd.json b/src/Symfony/Component/Intl/Resources/data/scripts/gd.json index ce25947cd18b8..8d4787f2b3487 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/gd.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/gd.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Adlm": "Adlam", "Afak": "Afaka", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/gl.json b/src/Symfony/Component/Intl/Resources/data/scripts/gl.json index d4cdb034238ec..ba1d4d283876e 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/gl.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/gl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "árabe", "Armn": "armenio", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/gu.json b/src/Symfony/Component/Intl/Resources/data/scripts/gu.json index fe525ef5beb54..c04979ec85c0e 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/gu.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/gu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "અરબી", "Armi": "ઇમ્પિરિયલ આર્મનિક", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/he.json b/src/Symfony/Component/Intl/Resources/data/scripts/he.json index 2212d2185750a..f4bb3eb0bf5b4 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/he.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/he.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Arab": "ערבי", "Armn": "ארמני", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/hi.json b/src/Symfony/Component/Intl/Resources/data/scripts/hi.json index 93485a5b03e23..f83c33c0e3b0e 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/hi.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/hi.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "अरबी", "Armi": "इम्पिरियल आर्मेनिक", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/hr.json b/src/Symfony/Component/Intl/Resources/data/scripts/hr.json index 106b2ec0d02f7..28c0b7def324d 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/hr.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/hr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Afak": "afaka pismo", "Arab": "arapsko pismo", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/hu.json b/src/Symfony/Component/Intl/Resources/data/scripts/hu.json index d616bbb947bea..05eb86e6a5db0 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/hu.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/hu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Arab": "Arab", "Armi": "Birodalmi arámi", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/hy.json b/src/Symfony/Component/Intl/Resources/data/scripts/hy.json index f91541fae62df..eb432d3c371b6 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/hy.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/hy.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "արաբական", "Armn": "հայկական", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/id.json b/src/Symfony/Component/Intl/Resources/data/scripts/id.json index 96dba5177ecdb..39971eb283197 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/id.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/id.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Afak": "Afaka", "Aghb": "Albania Kaukasia", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/in.json b/src/Symfony/Component/Intl/Resources/data/scripts/in.json index 96dba5177ecdb..39971eb283197 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/in.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/in.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Afak": "Afaka", "Aghb": "Albania Kaukasia", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/is.json b/src/Symfony/Component/Intl/Resources/data/scripts/is.json index 5c9454756311c..230fe07b73144 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/is.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/is.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "arabískt", "Armn": "armenskt", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/it.json b/src/Symfony/Component/Intl/Resources/data/scripts/it.json index 5c970930e949f..98e954ce5c803 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/it.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/it.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.40", + "Version": "2.1.41.97", "Names": { "Afak": "afaka", "Arab": "arabo", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/iw.json b/src/Symfony/Component/Intl/Resources/data/scripts/iw.json index 2212d2185750a..f4bb3eb0bf5b4 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/iw.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/iw.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Arab": "ערבי", "Armn": "ארמני", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ja.json b/src/Symfony/Component/Intl/Resources/data/scripts/ja.json index 41a3733e5a2d6..bc1e2bdfe98c0 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ja.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ja.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Afak": "アファカ文字", "Aghb": "カフカス・アルバニア文字", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ka.json b/src/Symfony/Component/Intl/Resources/data/scripts/ka.json index d809825d6daac..0b1027bc961c1 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ka.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ka.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Afak": "აფაკა", "Arab": "არაბული", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/kk.json b/src/Symfony/Component/Intl/Resources/data/scripts/kk.json index 72f4d79401a87..1733e1955d573 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/kk.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/kk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "араб жазуы", "Armn": "армян жазуы", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/km.json b/src/Symfony/Component/Intl/Resources/data/scripts/km.json index e4de4708ab4c0..9643b8da75654 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/km.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/km.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "អារ៉ាប់", "Armn": "អាមេនី", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/kn.json b/src/Symfony/Component/Intl/Resources/data/scripts/kn.json index bc78a971d10ea..d628d3cd4f3f0 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/kn.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/kn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "ಅರೇಬಿಕ್", "Armi": "ಇಂಪೀರಿಯಲ್ ಅರೆಮಾಯಿಕ್", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ko.json b/src/Symfony/Component/Intl/Resources/data/scripts/ko.json index 8bf9bd250ee46..c0b2a6205be12 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ko.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ko.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Afak": "아파카 문자", "Aghb": "코카시안 알바니아 문자", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ks.json b/src/Symfony/Component/Intl/Resources/data/scripts/ks.json index d3f02258ae97e..a31bc49c62b91 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ks.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ks.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "اَربی", "Armn": "اَرمانیَن", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ky.json b/src/Symfony/Component/Intl/Resources/data/scripts/ky.json index 68374dfba2514..ed00ab3ab5660 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ky.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ky.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "Араб", "Armn": "Армян", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/lb.json b/src/Symfony/Component/Intl/Resources/data/scripts/lb.json index 6d0f4d64dd50f..ebdadefca4123 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/lb.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/lb.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "Arabesch", "Armi": "Armi", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/lo.json b/src/Symfony/Component/Intl/Resources/data/scripts/lo.json index b66769a4aac2e..1549922d770e8 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/lo.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/lo.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Afak": "ອັບຟາກາ", "Arab": "ອາຣາບິກ", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/lt.json b/src/Symfony/Component/Intl/Resources/data/scripts/lt.json index 112f36454736e..f4aadcbb8db5c 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/lt.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/lt.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Afak": "Afaka", "Aghb": "Kaukazo Albanijos", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/lv.json b/src/Symfony/Component/Intl/Resources/data/scripts/lv.json index e2e29b670e3d1..f1bb8124e7046 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/lv.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/lv.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "arābu", "Armi": "aramiešu", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/meta.json b/src/Symfony/Component/Intl/Resources/data/scripts/meta.json index 5bbb30ab41dfd..4277f1d757a48 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/meta.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/meta.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.27", + "Version": "2.1.41.58", "Scripts": [ "Adlm", "Afak", @@ -32,6 +32,7 @@ "Cyrl", "Cyrs", "Deva", + "Dogr", "Dsrt", "Dupl", "Egyd", @@ -42,6 +43,7 @@ "Geok", "Geor", "Glag", + "Gong", "Gonm", "Goth", "Gran", @@ -90,10 +92,12 @@ "Lyci", "Lydi", "Mahj", + "Maka", "Mand", "Mani", "Marc", "Maya", + "Medf", "Mend", "Merc", "Mero", @@ -176,6 +180,7 @@ "Qabw", "Qabx", "Rjng", + "Rohg", "Roro", "Runr", "Samr", @@ -188,6 +193,8 @@ "Sidd", "Sind", "Sinh", + "Sogd", + "Sogo", "Sora", "Soyo", "Sund", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/mk.json b/src/Symfony/Component/Intl/Resources/data/scripts/mk.json index ba20168c933d6..5c37b83461f2f 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/mk.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/mk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Afak": "афака", "Aghb": "кавкаскоалбански", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ml.json b/src/Symfony/Component/Intl/Resources/data/scripts/ml.json index 62f7b84589bc1..874451321ebc1 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ml.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ml.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "അറബിക്", "Armi": "അർമി", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/mn.json b/src/Symfony/Component/Intl/Resources/data/scripts/mn.json index 8bd5d2457f7e7..3a36cb5339b44 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/mn.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/mn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "араб", "Armn": "армени", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/mr.json b/src/Symfony/Component/Intl/Resources/data/scripts/mr.json index 93b36d661d9aa..135c8c0b0b049 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/mr.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/mr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "अरबी", "Armi": "इम्पिरियल आर्मेनिक", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ms.json b/src/Symfony/Component/Intl/Resources/data/scripts/ms.json index 891d11f469c21..712583e37d0ca 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ms.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ms.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Arab": "Arab", "Armn": "Armenia", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/mt.json b/src/Symfony/Component/Intl/Resources/data/scripts/mt.json index e2d54fd0d6e57..3bfbef99aa61c 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/mt.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/mt.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "Għarbi", "Cyrl": "Ċirilliku", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/my.json b/src/Symfony/Component/Intl/Resources/data/scripts/my.json index b22d405907562..ad99adae3c5e6 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/my.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/my.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "အာရေဗျ", "Armn": "အာမေးနီးယား", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/nb.json b/src/Symfony/Component/Intl/Resources/data/scripts/nb.json index a7a60c33f9eb2..454abf6369ca9 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/nb.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/nb.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Afak": "afaka", "Aghb": "kaukasus-albansk", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ne.json b/src/Symfony/Component/Intl/Resources/data/scripts/ne.json index 00f5e56a4f88a..b0ca07ac07281 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ne.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ne.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "अरबी", "Armi": "आर्मी", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/nl.json b/src/Symfony/Component/Intl/Resources/data/scripts/nl.json index 4d46cb07ccd2c..36a5f4195ec60 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/nl.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/nl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Adlm": "Adlam", "Afak": "Defaka", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/nn.json b/src/Symfony/Component/Intl/Resources/data/scripts/nn.json index 38211d5070009..4e981b02e1e54 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/nn.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/nn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "arabisk", "Armi": "armisk", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/no.json b/src/Symfony/Component/Intl/Resources/data/scripts/no.json index a7a60c33f9eb2..454abf6369ca9 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/no.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/no.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Afak": "afaka", "Aghb": "kaukasus-albansk", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/or.json b/src/Symfony/Component/Intl/Resources/data/scripts/or.json index aa1310fc515df..79172c5caf822 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/or.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/or.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "ଆରବିକ୍", "Armi": "ଇମ୍ପେରିଆଲ୍ ଆରମିକ୍", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/pa.json b/src/Symfony/Component/Intl/Resources/data/scripts/pa.json index 1f09e491bce80..824d3ee0c0966 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/pa.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/pa.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "ਅਰਬੀ", "Armn": "ਅਰਮੀਨੀਆਈ", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/pl.json b/src/Symfony/Component/Intl/Resources/data/scripts/pl.json index e797e10c46b64..22a8f7da2c149 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/pl.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/pl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.15", + "Version": "2.1.41.97", "Names": { "Arab": "arabskie", "Armi": "armi", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ps.json b/src/Symfony/Component/Intl/Resources/data/scripts/ps.json index 9f5422c641039..1d74d2c0a9e80 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ps.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ps.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "عربي", "Armn": "ارمانیایي", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/pt.json b/src/Symfony/Component/Intl/Resources/data/scripts/pt.json index 293a97d400014..7c42cbfdef085 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/pt.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/pt.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Arab": "árabe", "Armi": "armi", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/pt_PT.json b/src/Symfony/Component/Intl/Resources/data/scripts/pt_PT.json index 3977c81c8514f..dc0aa374d277b 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/pt_PT.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/pt_PT.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Armn": "arménio", "Egyd": "egípcio demótico", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/rm.json b/src/Symfony/Component/Intl/Resources/data/scripts/rm.json index eab31114c06ba..9cd85cd473a20 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/rm.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/rm.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "arab", "Armi": "arameic imperial", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ro.json b/src/Symfony/Component/Intl/Resources/data/scripts/ro.json index 2f5125b8490f0..105230762be1d 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ro.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ro.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Arab": "arabă", "Armn": "armeană", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ru.json b/src/Symfony/Component/Intl/Resources/data/scripts/ru.json index 5ce2b43614dfc..0a7fca3b09479 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ru.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ru.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Afak": "афака", "Arab": "арабица", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/sh.json b/src/Symfony/Component/Intl/Resources/data/scripts/sh.json index 7b87fb0405050..b2a6fbf8cd130 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/sh.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/sh.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.37", + "Version": "2.1.41.97", "Names": { "Arab": "arapsko pismo", "Armi": "imperijsko aramejsko pismo", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/si.json b/src/Symfony/Component/Intl/Resources/data/scripts/si.json index 91d3a1b1cc309..6680d11d3d5f6 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/si.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/si.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "අරාබි", "Armn": "ආර්මේනියානු", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/sk.json b/src/Symfony/Component/Intl/Resources/data/scripts/sk.json index ac6143c5b7ae2..515a456c942a5 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/sk.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/sk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "arabské", "Armn": "arménske", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/sl.json b/src/Symfony/Component/Intl/Resources/data/scripts/sl.json index 1840e397ecf77..42b1afd3b49a9 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/sl.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/sl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "arabski", "Armi": "imperialno-aramejski", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/sq.json b/src/Symfony/Component/Intl/Resources/data/scripts/sq.json index 0fa699b70e454..a0c3b88946a26 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/sq.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/sq.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "arabik", "Armn": "armen", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/sr.json b/src/Symfony/Component/Intl/Resources/data/scripts/sr.json index 072b2fa1079eb..105850f441be5 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/sr.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/sr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "арапско писмо", "Armi": "империјско арамејско писмо", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/sr_Latn.json b/src/Symfony/Component/Intl/Resources/data/scripts/sr_Latn.json index 7b87fb0405050..b2a6fbf8cd130 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/sr_Latn.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/sr_Latn.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.37", + "Version": "2.1.41.97", "Names": { "Arab": "arapsko pismo", "Armi": "imperijsko aramejsko pismo", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/sv.json b/src/Symfony/Component/Intl/Resources/data/scripts/sv.json index 80a0c8b13bbfb..69c849ec22e9f 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/sv.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/sv.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Adlm": "adlamiska", "Afak": "afakiska", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/sw.json b/src/Symfony/Component/Intl/Resources/data/scripts/sw.json index 557aba70f24be..1b6fd1f11abd1 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/sw.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/sw.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "Kiarabu", "Armn": "Kiarmenia", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ta.json b/src/Symfony/Component/Intl/Resources/data/scripts/ta.json index 1707d6ccaa719..ede80b87bc071 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ta.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ta.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "அரபிக்", "Armi": "இம்பேரியல் அரமெய்க்", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/te.json b/src/Symfony/Component/Intl/Resources/data/scripts/te.json index 1da8028bc8d01..a85acff075970 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/te.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/te.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "అరబిక్", "Armi": "ఇంపీరియల్ అరామాక్", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/th.json b/src/Symfony/Component/Intl/Resources/data/scripts/th.json index 7197f26d2244d..bd9c90e489bc7 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/th.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/th.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Afak": "อะฟาคา", "Aghb": "แอลเบเนีย คอเคเซีย", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/tl.json b/src/Symfony/Component/Intl/Resources/data/scripts/tl.json index 618cc33b9601a..03fd8a38ee155 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/tl.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/tl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "Arabic", "Armn": "Armenian", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/tr.json b/src/Symfony/Component/Intl/Resources/data/scripts/tr.json index ab1df5e86c5fd..0c45b1d918dce 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/tr.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/tr.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Afak": "Afaka", "Aghb": "Kafkas Albanyası", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ug.json b/src/Symfony/Component/Intl/Resources/data/scripts/ug.json index 4a061d621e69b..90c49e07ba2a3 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ug.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ug.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Afak": "ئافاكا", "Arab": "ئەرەب", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/uk.json b/src/Symfony/Component/Intl/Resources/data/scripts/uk.json index e04a68f5d309f..7514cdeb12050 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/uk.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/uk.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Adlm": "адлам", "Afak": "афака", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/ur.json b/src/Symfony/Component/Intl/Resources/data/scripts/ur.json index c529c1c7ecada..d53d434d514b4 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/ur.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/ur.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "عربی", "Armn": "آرمینیائی", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/uz.json b/src/Symfony/Component/Intl/Resources/data/scripts/uz.json index 08f95d04e5749..e9a691078f96f 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/uz.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/uz.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "arab", "Armn": "arman", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/uz_Cyrl.json b/src/Symfony/Component/Intl/Resources/data/scripts/uz_Cyrl.json index c532c52387e68..fab5f4ecd19a6 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/uz_Cyrl.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/uz_Cyrl.json @@ -1,5 +1,5 @@ { - "Version": "2.1.38.69", + "Version": "2.1.41.97", "Names": { "Arab": "Араб", "Armn": "Арман", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/vi.json b/src/Symfony/Component/Intl/Resources/data/scripts/vi.json index 344b1e4331ea3..846c3f222e9a7 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/vi.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/vi.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Afak": "Chữ Afaka", "Arab": "Chữ Ả Rập", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/zh.json b/src/Symfony/Component/Intl/Resources/data/scripts/zh.json index 56c180d82b38d..3b281a1ae629c 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/zh.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/zh.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Adlm": "阿德拉姆文", "Afak": "阿法卡文", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/zh_Hant.json b/src/Symfony/Component/Intl/Resources/data/scripts/zh_Hant.json index ae409e05bfb9d..073e3c4fb139a 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/zh_Hant.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/zh_Hant.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.20", + "Version": "2.1.41.97", "Names": { "Adlm": "富拉文", "Afak": "阿法卡文字", diff --git a/src/Symfony/Component/Intl/Resources/data/scripts/zu.json b/src/Symfony/Component/Intl/Resources/data/scripts/zu.json index 30ece0ab8ec05..44491ae6e12b0 100644 --- a/src/Symfony/Component/Intl/Resources/data/scripts/zu.json +++ b/src/Symfony/Component/Intl/Resources/data/scripts/zu.json @@ -1,5 +1,5 @@ { - "Version": "2.1.39.11", + "Version": "2.1.41.97", "Names": { "Arab": "isi-Arabic", "Armn": "isi-Armenian", diff --git a/src/Symfony/Component/Intl/Resources/data/svn-info.txt b/src/Symfony/Component/Intl/Resources/data/svn-info.txt index 0064d80facaa8..556c6cf358825 100644 --- a/src/Symfony/Component/Intl/Resources/data/svn-info.txt +++ b/src/Symfony/Component/Intl/Resources/data/svn-info.txt @@ -1,7 +1,7 @@ SVN information =============== -URL: http://source.icu-project.org/repos/icu/tags/release-61-1/icu4c/source -Revision: 41146 -Author: heninger -Date: 2018-03-23T22:14:04.032868Z +URL: http://source.icu-project.org/repos/icu/tags/release-62-1/icu4c/source +Revision: 41542 +Author: yoshito +Date: 2018-06-20T05:34:56.496986Z diff --git a/src/Symfony/Component/Intl/Resources/data/version.txt b/src/Symfony/Component/Intl/Resources/data/version.txt index 721381cdd70ea..7425208f378b7 100644 --- a/src/Symfony/Component/Intl/Resources/data/version.txt +++ b/src/Symfony/Component/Intl/Resources/data/version.txt @@ -1 +1 @@ -61.1 +62.1 diff --git a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractScriptDataProviderTest.php b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractScriptDataProviderTest.php index b4bde80e68208..cbd3b037d2ba3 100644 --- a/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractScriptDataProviderTest.php +++ b/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractScriptDataProviderTest.php @@ -55,6 +55,7 @@ abstract class AbstractScriptDataProviderTest extends AbstractDataProviderTest 'Cyrl', 'Cyrs', 'Deva', + 'Dogr', 'Dsrt', 'Dupl', 'Egyd', @@ -65,6 +66,7 @@ abstract class AbstractScriptDataProviderTest extends AbstractDataProviderTest 'Geok', 'Geor', 'Glag', + 'Gong', 'Gonm', 'Goth', 'Gran', @@ -113,10 +115,12 @@ abstract class AbstractScriptDataProviderTest extends AbstractDataProviderTest 'Lyci', 'Lydi', 'Mahj', + 'Maka', 'Mand', 'Mani', 'Marc', 'Maya', + 'Medf', 'Mend', 'Merc', 'Mero', @@ -199,6 +203,7 @@ abstract class AbstractScriptDataProviderTest extends AbstractDataProviderTest 'Qabw', 'Qabx', 'Rjng', + 'Rohg', 'Roro', 'Runr', 'Samr', @@ -211,6 +216,8 @@ abstract class AbstractScriptDataProviderTest extends AbstractDataProviderTest 'Sidd', 'Sind', 'Sinh', + 'Sogd', + 'Sogo', 'Sora', 'Soyo', 'Sund', From d1f41601f4c209d124849cd1263d46e3b25f08e8 Mon Sep 17 00:00:00 2001 From: "Alexander M. Turek" Date: Fri, 22 Jun 2018 17:01:26 +0200 Subject: [PATCH 89/98] The debug class loader is always loaded by Debug::enable(). --- src/Symfony/Component/Debug/Debug.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Symfony/Component/Debug/Debug.php b/src/Symfony/Component/Debug/Debug.php index c67a65c4066f7..9866f386a16c2 100644 --- a/src/Symfony/Component/Debug/Debug.php +++ b/src/Symfony/Component/Debug/Debug.php @@ -23,10 +23,7 @@ class Debug /** * Enables the debug tools. * - * This method registers an error handler and an exception handler. - * - * If the Symfony ClassLoader component is available, a special - * class loader is also registered. + * This method registers an error handler, an exception handler and a special class loader. * * @param int $errorReportingLevel The level of error reporting you want * @param bool $displayErrors Whether to display errors (for development) or just log them (for production) From b58eb0117fb7f016b8b225573b095a4b5b911818 Mon Sep 17 00:00:00 2001 From: Roland Franssen Date: Sat, 23 Jun 2018 14:49:00 +0200 Subject: [PATCH 90/98] [DI] Resolve env placeholder in logs --- src/Symfony/Component/DependencyInjection/ContainerBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php index 7296a098ee0ed..dc2d36053ee0d 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php +++ b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php @@ -1479,7 +1479,7 @@ public function getNormalizedIds() */ public function log(CompilerPassInterface $pass, $message) { - $this->getCompiler()->log($pass, $message); + $this->getCompiler()->log($pass, $this->resolveEnvPlaceholders($message)); } /** From 8e060fa45d1f24fafdac96bf0e67b275550f56c8 Mon Sep 17 00:00:00 2001 From: Roland Franssen Date: Sat, 23 Jun 2018 15:02:32 +0200 Subject: [PATCH 91/98] [DI] Cleanup unused service_subscriber.locator tag --- .../Compiler/ResolveServiceSubscribersPass.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/DependencyInjection/Compiler/ResolveServiceSubscribersPass.php b/src/Symfony/Component/DependencyInjection/Compiler/ResolveServiceSubscribersPass.php index bde9433690f95..ccc80a443e420 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/ResolveServiceSubscribersPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/ResolveServiceSubscribersPass.php @@ -35,7 +35,12 @@ protected function processValue($value, $isRoot = false) } $serviceLocator = $this->serviceLocator; - $this->serviceLocator = $value->hasTag('container.service_subscriber.locator') ? $value->getTag('container.service_subscriber.locator')[0]['id'] : null; + $this->serviceLocator = null; + + if ($value->hasTag('container.service_subscriber.locator')) { + $this->serviceLocator = $value->getTag('container.service_subscriber.locator')[0]['id']; + $value->clearTag('container.service_subscriber.locator'); + } try { return parent::processValue($value); From a3a9e2ec19fd0f0ea795331a92e0686ed223dc73 Mon Sep 17 00:00:00 2001 From: Vladimir Reznichenko Date: Sat, 23 Jun 2018 13:52:31 +0200 Subject: [PATCH 92/98] [Di] Fix undefined variable found by Php Inspections (EA Ultimate) --- src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php index 560b2516bb3c4..7c493f62e365c 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php @@ -501,7 +501,7 @@ private function addServiceInlinedDefinitions($id, Definition $definition, \SplO // $b = new ServiceB(); // $a = new ServiceA(ServiceB $b); // $b->setServiceA(ServiceA $a); - if (isset($inlinedDefinition[$definition]) && $this->hasReference($id, array($def->getArguments(), $def->getFactory()))) { + if (isset($inlinedDefinitions[$definition]) && $this->hasReference($id, array($def->getArguments(), $def->getFactory()))) { throw new ServiceCircularReferenceException($id, array($id)); } From db88330448f10fa50a1d19f75828ebbf4001ccb3 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 25 Jun 2018 11:35:14 +0200 Subject: [PATCH 93/98] [SecurityBundle] Dont throw if "security.http_utils" is not found --- .../Compiler/AddSessionDomainConstraintPass.php | 3 +-- .../Compiler/AddSessionDomainConstraintPassTest.php | 13 ------------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSessionDomainConstraintPass.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSessionDomainConstraintPass.php index ba523382b66ba..3dd18944de9f3 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSessionDomainConstraintPass.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSessionDomainConstraintPass.php @@ -26,7 +26,7 @@ class AddSessionDomainConstraintPass implements CompilerPassInterface */ public function process(ContainerBuilder $container) { - if (!$container->hasParameter('session.storage.options')) { + if (!$container->hasParameter('session.storage.options') || !$container->has('security.http_utils')) { return; } @@ -34,7 +34,6 @@ public function process(ContainerBuilder $container) $domainRegexp = empty($sessionOptions['cookie_domain']) ? '%s' : sprintf('(?:%%s|(?:.+\.)?%s)', preg_quote(trim($sessionOptions['cookie_domain'], '.'))); $domainRegexp = (empty($sessionOptions['cookie_secure']) ? 'https?://' : 'https://').$domainRegexp; - // if the service doesn't exist, an exception must be thrown - ignoring would put security at risk $container->findDefinition('security.http_utils')->addArgument(sprintf('{^%s$}i', $domainRegexp)); } } diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Compiler/AddSessionDomainConstraintPassTest.php b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Compiler/AddSessionDomainConstraintPassTest.php index a836ab136cd93..382bdebe018fa 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Compiler/AddSessionDomainConstraintPassTest.php +++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Compiler/AddSessionDomainConstraintPassTest.php @@ -96,19 +96,6 @@ public function testNoSession() $this->assertTrue($utils->createRedirectResponse($request, 'http://pirate.com/foo')->isRedirect('http://pirate.com/foo')); } - /** - * @expectedException \Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException - * @expectedExceptionMessage You have requested a non-existent service "security.http_utils". - */ - public function testNoHttpUtils() - { - $container = new ContainerBuilder(); - $container->setParameter('session.storage.options', array()); - - $pass = new AddSessionDomainConstraintPass(); - $pass->process($container); - } - private function createContainer($sessionStorageOptions) { $container = new ContainerBuilder(); From 140b6c210155413d6a95f1464107b2a365069afa Mon Sep 17 00:00:00 2001 From: Felix Nagel Date: Tue, 5 Jun 2018 09:42:58 +0200 Subject: [PATCH 94/98] Add note about changed form processing when using PUT requests See https://github.com/symfony/symfony/issues/8261 --- UPGRADE-3.0.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/UPGRADE-3.0.md b/UPGRADE-3.0.md index f9524e7710f16..9ec4987b3b73e 100644 --- a/UPGRADE-3.0.md +++ b/UPGRADE-3.0.md @@ -595,6 +595,24 @@ UPGRADE FROM 2.x to 3.0 } } ``` + + If the form is submitted with a different request method than `POST`, you need to configure this in the form: + + Before: + + ```php + $form = $this->createForm(FormType::class, $entity); + $form->submit($request); + ``` + + After: + + ```php + $form = $this->createForm(FormType::class, $entity, [ + 'method' => 'PUT', + ]); + $form->handleRequest($request); + ``` * The events `PRE_BIND`, `BIND` and `POST_BIND` were renamed to `PRE_SUBMIT`, `SUBMIT` and `POST_SUBMIT`. From cccb66f4c6aef7f5a08d622df4277f7c884b667f Mon Sep 17 00:00:00 2001 From: Chris Wilkinson Date: Mon, 18 Jun 2018 08:55:09 +0100 Subject: [PATCH 95/98] [TwigBundle][DX] Only add the Twig WebLinkExtension if the WebLink component is enabled --- .../Bridge/Twig/UndefinedCallableHandler.php | 23 ++++++++++++++++--- .../Compiler/ExtensionPass.php | 4 ++++ .../DependencyInjection/TwigExtension.php | 9 -------- .../TwigBundle/Resources/config/twig.xml | 4 ++++ 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/Symfony/Bridge/Twig/UndefinedCallableHandler.php b/src/Symfony/Bridge/Twig/UndefinedCallableHandler.php index 77c78ce38f530..c81d1cac7d3d0 100644 --- a/src/Symfony/Bridge/Twig/UndefinedCallableHandler.php +++ b/src/Symfony/Bridge/Twig/UndefinedCallableHandler.php @@ -11,6 +11,7 @@ namespace Symfony\Bridge\Twig; +use Symfony\Bundle\FullStack; use Twig\Error\SyntaxError; /** @@ -55,14 +56,21 @@ class UndefinedCallableHandler 'workflow_marked_places' => 'workflow', ); + private static $fullStackEnable = array( + 'form' => 'enable "framework.form"', + 'security-core' => 'add the "SecurityBundle"', + 'security-http' => 'add the "SecurityBundle"', + 'web-link' => 'enable "framework.web_link"', + 'workflow' => 'enable "framework.workflows"', + ); + public static function onUndefinedFilter($name) { if (!isset(self::$filterComponents[$name])) { return false; } - // Twig will append the source context to the message, so that it will end up being like "[...] Unknown filter "%s" in foo.html.twig on line 123." - throw new SyntaxError(sprintf('Did you forget to run "composer require symfony/%s"? Unknown filter "%s".', self::$filterComponents[$name], $name)); + self::onUndefined($name, 'filter', self::$filterComponents[$name]); } public static function onUndefinedFunction($name) @@ -71,6 +79,15 @@ public static function onUndefinedFunction($name) return false; } - throw new SyntaxError(sprintf('Did you forget to run "composer require symfony/%s"? Unknown function "%s".', self::$functionComponents[$name], $name)); + self::onUndefined($name, 'function', self::$functionComponents[$name]); + } + + private static function onUndefined($name, $type, $component) + { + if (\class_exists(FullStack::class) && isset(self::$fullStackEnable[$component])) { + throw new SyntaxError(sprintf('Did you forget to %s? Unknown %s "%s".', self::$fullStackEnable[$component], $type, $name)); + } + + throw new SyntaxError(sprintf('Did you forget to run "composer require symfony/%s"? Unknown %s "%s".', $component, $type, $name)); } } diff --git a/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php b/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php index a4e8c944c92a3..0ca55f298ee83 100644 --- a/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php +++ b/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php @@ -82,6 +82,10 @@ public function process(ContainerBuilder $container) } } + if ($container->has('web_link.add_link_header_listener')) { + $container->getDefinition('twig.extension.weblink')->addTag('twig.extension'); + } + $twigLoader = $container->getDefinition('twig.loader.native_filesystem'); if ($container->has('templating')) { $loader = $container->getDefinition('twig.loader.filesystem'); diff --git a/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php b/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php index c3012abbd8e53..1ca688e6b9691 100644 --- a/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php +++ b/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php @@ -11,7 +11,6 @@ namespace Symfony\Bundle\TwigBundle\DependencyInjection; -use Symfony\Bridge\Twig\Extension\WebLinkExtension; use Symfony\Component\Config\FileLocator; use Symfony\Component\Config\Resource\FileExistenceResource; use Symfony\Component\Console\Application; @@ -19,7 +18,6 @@ use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; use Symfony\Component\HttpKernel\DependencyInjection\Extension; -use Symfony\Component\WebLink\HttpHeaderSerializer; use Twig\Extension\ExtensionInterface; use Twig\Extension\RuntimeExtensionInterface; use Twig\Loader\LoaderInterface; @@ -60,13 +58,6 @@ public function load(array $configs, ContainerBuilder $container) $container->removeDefinition('twig.translation.extractor'); } - if (class_exists(HttpHeaderSerializer::class)) { - $definition = $container->register('twig.extension.weblink', WebLinkExtension::class); - $definition->setPublic(false); - $definition->addArgument(new Reference('request_stack')); - $definition->addTag('twig.extension'); - } - foreach ($configs as $key => $config) { if (isset($config['globals'])) { foreach ($config['globals'] as $name => $value) { diff --git a/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml b/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml index fca4367ba743c..5d014e930c53e 100644 --- a/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml +++ b/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml @@ -114,6 +114,10 @@ + + + + From a22de07c305718d65ecb5e900a3c8e005100282a Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 25 Jun 2018 13:26:20 +0200 Subject: [PATCH 96/98] [DoctrineBridge] blacklist doctrine/common@dev --- composer.json | 2 +- src/Symfony/Bridge/Doctrine/composer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index f38c72fb8ed06..8c7d87c73c2a9 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "require": { "php": "^5.5.9|>=7.0.8", "ext-xml": "*", - "doctrine/common": "~2.4", + "doctrine/common": "~2.4@stable", "fig/link-util": "^1.0", "twig/twig": "^1.35|^2.4.4", "psr/cache": "~1.0", diff --git a/src/Symfony/Bridge/Doctrine/composer.json b/src/Symfony/Bridge/Doctrine/composer.json index 420535b7516fd..1535f8f42b8f8 100644 --- a/src/Symfony/Bridge/Doctrine/composer.json +++ b/src/Symfony/Bridge/Doctrine/composer.json @@ -17,7 +17,7 @@ ], "require": { "php": "^5.5.9|>=7.0.8", - "doctrine/common": "~2.4", + "doctrine/common": "~2.4@stable", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, From 91a8af4fe622d27b1e057fbac8bd78e9f8b43248 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Mon, 25 Jun 2018 15:02:02 +0200 Subject: [PATCH 97/98] updated CHANGELOG for 4.0.12 --- CHANGELOG-4.0.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/CHANGELOG-4.0.md b/CHANGELOG-4.0.md index 7131036ba4fa8..72d24bf39e62d 100644 --- a/CHANGELOG-4.0.md +++ b/CHANGELOG-4.0.md @@ -7,6 +7,46 @@ in 4.0 minor versions. To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v4.0.0...v4.0.1 +* 4.0.12 (2018-06-25) + + * bug #27626 [TwigBundle][DX] Only add the Twig WebLinkExtension if the WebLink component is enabled (thewilkybarkid) + * bug #27701 [SecurityBundle] Dont throw if "security.http_utils" is not found (nicolas-grekas) + * bug #27690 [DI] Resolve env placeholder in logs (ro0NL) + * bug #26534 allow_extra_attributes does not throw an exception as documented (deviantintegral) + * bug #27668 [Lock] use 'r+' for fopen (fixes issue on Solaris) (fritzmg) + * bug #27669 [Filesystem] fix file lock on SunOS (fritzmg) + * bug #27662 [HttpKernel] fix handling of nested Error instances (xabbuh) + * bug #26845 [Config] Fixing GlobResource when inside phar archive (vworldat) + * bug #27382 [Form] Fix error when rendering a DateIntervalType form with exactly 0 weeks (krixon) + * bug #27309 Fix surrogate not using original request (Toflar) + * bug #27467 [HttpKernel] fix session tracking in surrogate master requests (nicolas-grekas) + * bug #27630 [Validator][Form] Remove BOM in some xlf files (gautierderuette) + * bug #27596 [Framework][Workflow] Added support for interfaces (vudaltsov) + * bug #27593 [ProxyManagerBridge] Fixed support of private services (nicolas-grekas) + * bug #27591 [VarDumper] Fix dumping ArrayObject and ArrayIterator instances (nicolas-grekas) + * bug #27581 Fix bad method call with guard authentication + session migration (weaverryan) + * bug #27576 [Cache] Fix expiry comparisons in array-based pools (nicolas-grekas) + * bug #27556 Avoiding session migration for stateless firewall UsernamePasswordJsonAuthenticationListener (weaverryan) + * bug #27452 Avoid migration on stateless firewalls (weaverryan) + * bug #27568 [DI] Deduplicate generated proxy classes (nicolas-grekas) + * bug #27326 [Serializer] deserialize from xml: Fix a collection that contains the only one element (webnet-fr) + * bug #27567 [PhpUnitBridge] Fix error on some Windows OS (Nsbx) + * bug #27357 [Lock] Remove released semaphore (jderusse) + * bug #27416 TagAwareAdapter over non-binary memcached connections corrupts memcache (Aleksey Prilipko) + * bug #27514 [Debug] Pass previous exception to FatalErrorException (pmontoya) + * bug #27516 Revert "bug #26138 [HttpKernel] Catch HttpExceptions when templating is not installed (cilefen)" (nicolas-grekas) + * bug #27318 [Cache] memcache connect should not add duplicate entries on sequential calls (Aleksey Prilipko) + * bug #27389 [Serializer] Fix serializer tries to denormalize null values on nullable properties (ogizanagi) + * bug #27272 [FrameworkBundle] Change priority of AddConsoleCommandPass to TYPE_BEFORE_REMOVING (upyx) + * bug #27396 [HttpKernel] fix registering IDE links (nicolas-grekas) + * bug #26973 [HttpKernel] Set first trusted proxy as REMOTE_ADDR in InlineFragmentRenderer. (kmadejski) + * bug #27303 [Process] Consider "executable" suffixes first on Windows (sanmai) + * bug #27297 Triggering RememberMe's loginFail() when token cannot be created (weaverryan) + * bug #27344 [HttpKernel] reset kernel start time on reboot (kiler129) + * bug #27365 [Serializer] Check the value of enable_max_depth if defined (dunglas) + * bug #27358 [PhpUnitBridge] silence some stderr outputs (ostrolucky) + * bug #27366 [DI] never inline lazy services (nicolas-grekas) + * 4.0.11 (2018-05-25) * bug #27364 [DI] Fix bad exception on uninitialized references to non-shared services (nicolas-grekas) From 8984efc1ac95de59bc66853e3c0a26ed25cc9ec9 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Mon, 25 Jun 2018 15:02:08 +0200 Subject: [PATCH 98/98] updated VERSION for 4.0.12 --- src/Symfony/Component/HttpKernel/Kernel.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index 385ba0e26969a..4c009f9e06ffe 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -63,12 +63,12 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private $requestStackSize = 0; private $resetServices = false; - const VERSION = '4.0.12-DEV'; + const VERSION = '4.0.12'; const VERSION_ID = 40012; const MAJOR_VERSION = 4; const MINOR_VERSION = 0; const RELEASE_VERSION = 12; - const EXTRA_VERSION = 'DEV'; + const EXTRA_VERSION = ''; const END_OF_MAINTENANCE = '07/2018'; const END_OF_LIFE = '01/2019'; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy