From e5d3f2567d6d04fceac19c6ed5d2be439bcc7d6e Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 24 Aug 2015 15:16:17 +0200 Subject: [PATCH 1/8] [console] Use the description when no help is available --- src/Symfony/Component/Console/Command/Command.php | 2 +- src/Symfony/Component/Console/Tests/Command/CommandTest.php | 2 ++ .../Component/Console/Tests/Fixtures/application_asxml1.txt | 2 +- .../Component/Console/Tests/Fixtures/application_asxml2.txt | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Console/Command/Command.php b/src/Symfony/Component/Console/Command/Command.php index 29625a26da..f169b6eb87 100644 --- a/src/Symfony/Component/Console/Command/Command.php +++ b/src/Symfony/Component/Console/Command/Command.php @@ -484,7 +484,7 @@ class Command */ public function getHelp() { - return $this->help; + return $this->help ?: $this->description; } /** diff --git a/src/Symfony/Component/Console/Tests/Command/CommandTest.php b/src/Symfony/Component/Console/Tests/Command/CommandTest.php index 1ae12874ba..a0c8d78deb 100644 --- a/src/Symfony/Component/Console/Tests/Command/CommandTest.php +++ b/src/Symfony/Component/Console/Tests/Command/CommandTest.php @@ -131,6 +131,8 @@ class CommandTest extends \PHPUnit_Framework_TestCase $ret = $command->setHelp('help1'); $this->assertEquals($command, $ret, '->setHelp() implements a fluent interface'); $this->assertEquals('help1', $command->getHelp(), '->setHelp() sets the help'); + $command->setHelp(''); + $this->assertEquals('description', $command->getHelp(), '->getHelp() fallback to the description'); } public function testGetProcessedHelp() diff --git a/src/Symfony/Component/Console/Tests/Fixtures/application_asxml1.txt b/src/Symfony/Component/Console/Tests/Fixtures/application_asxml1.txt index 71d2fcba35..3652d6613d 100644 --- a/src/Symfony/Component/Console/Tests/Fixtures/application_asxml1.txt +++ b/src/Symfony/Component/Console/Tests/Fixtures/application_asxml1.txt @@ -97,7 +97,7 @@ foo:bar The foo:bar command - + The foo:bar command afoobar diff --git a/src/Symfony/Component/Console/Tests/Fixtures/application_asxml2.txt b/src/Symfony/Component/Console/Tests/Fixtures/application_asxml2.txt index 0b30b201f2..3205f9cb5f 100644 --- a/src/Symfony/Component/Console/Tests/Fixtures/application_asxml2.txt +++ b/src/Symfony/Component/Console/Tests/Fixtures/application_asxml2.txt @@ -4,7 +4,7 @@ foo:bar The foo:bar command - + The foo:bar command afoobar From de7d4a7225c9444b6a8e389709943c864156688b Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Sat, 29 Aug 2015 20:06:03 +0200 Subject: [PATCH 2/8] [FrameworkBundle] Fix templating.helper.code.file_link_format when defined by ini setting --- .../FrameworkBundle/DependencyInjection/FrameworkExtension.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 75e45202de..c6801f56e2 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -364,7 +364,7 @@ class FrameworkExtension extends Extension 'sublime' => 'subl://open?url=file://%%f&line=%%l', ); - $container->setParameter('templating.helper.code.file_link_format', ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format') ?: (isset($links[$ide]) ? $links[$ide] : $ide)); + $container->setParameter('templating.helper.code.file_link_format', str_replace('%', '%%', ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format')) ?: (isset($links[$ide]) ? $links[$ide] : $ide)); } $container->setParameter('templating.helper.form.resources', $config['form']['resources']); $container->setParameter('fragment.renderer.hinclude.global_template', $config['hinclude_default_template']); From 7c87baab77068c0f8893286b5cdd3614372c2100 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 1 Sep 2015 17:38:42 +0200 Subject: [PATCH 3/8] updated CHANGELOG for 2.3.32 --- CHANGELOG-2.3.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/CHANGELOG-2.3.md b/CHANGELOG-2.3.md index e261767b55..c3b5656102 100644 --- a/CHANGELOG-2.3.md +++ b/CHANGELOG-2.3.md @@ -7,6 +7,38 @@ in 2.3 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.3.0...v2.3.1 +* 2.3.32 (2015-09-01) + + * bug #15601 [console] Use the description when no help is available (Nicofuma) + * bug #15603 [HttpKernel] Do not normalize the kernel root directory path #15567 (leofeyer) + * bug #15428 Fix the validation of form resources to register the default theme (stof) + * bug #15619 [Translation] Fix the string casting in the XliffFileLoader (stof) + * bug #15575 Add appveyor.yml for C.I. on Windows (nicolas-grekas) + * bug #15611 [Translation][Xliff Loader] Support omitting the node in an .xlf file. (leofeyer) + * bug #15549 [FrameworkBundle] Fix precedence of xdebug.file_link_format (nicolas-grekas) + * bug #15589 made Symfony compatible with both Twig 1.x and 2.x (fabpot) + * bug #15535 made Symfony compatible with both Twig 1.x and 2.x (fabpot) + * bug #14372 [DoctrineBridge][Form] fix EntityChoiceList when indexing by primary foreign key (giosh94mhz) + * bug #15489 Implement the support of timezone objects in the stub IntlDateFormatter (stof) + * bug #15426 [Serializer] Add support for variadic arguments in the GetSetNormalizer (stof) + * bug #15480 [Yaml] Nested merge keys (mathroc) + * bug #15445 do not remove space between attributes (greg0ire) + * bug #15263 [HttpFoundation] fixed the check of 'proxy-revalidate' in Response::mustRevalidate() (axiac) + * bug #15425 [Routing] Fix the retrieval of the default value for variadic arguments in the annotation loader (wdalmut, stof) + * bug #15074 Fixing DbalSessionHandler to work with a Oracle "limitation" or bug? (nuncanada) + * bug #15380 do not dump leading backslashes in class names (xabbuh) + * bug #15376 [ClassMapGenerator] Skip ::class constant (WouterJ) + * bug #15170 [Config] type specific check for emptiness (xabbuh) + * bug #15411 Fix the handling of null as locale in the stub intl classes (stof) + * bug #15413 Fix the return value on error for intl methods returning arrays (stof) + * bug #15392 Fix missing _route parameter notice in RouterListener logging case (Haehnchen) + * bug #15386 [php7] Fix for substr() always returning a string (nicolas-grekas) + * bug #15355 [Security] Do not save the target path in the session for a stateless firewall (lyrixx) + * bug #15330 [Console] Fix console output with closed stdout (jakzal) + * bug #15326 [Security] fix check for empty usernames (xabbuh) + * bug #15249 [HttpFoundation] [PSR-7] Allow to use resources as content body and to return resources from string content (dunglas) + * bug #15282 [HttpFoundation] Behaviour change in PHP7 for substr (Nicofuma) + * 2.3.31 (2015-07-13) * bug #15248 Added 'default' color (jaytaph) From a988449e4e32512f714cc5f6f3a28b07eca3bc11 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 1 Sep 2015 17:39:15 +0200 Subject: [PATCH 4/8] update CONTRIBUTORS for 2.3.32 --- CONTRIBUTORS.md | 61 +++++++++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index af5724f4a7..3ce8e41098 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -14,8 +14,8 @@ Symfony is the result of the work of many people who made the code better - Kris Wallsmith (kriswallsmith) - Christophe Coevoet (stof) - Jakub Zalas (jakubzalas) - - Pascal Borreli (pborreli) - Christian Flothmann (xabbuh) + - Pascal Borreli (pborreli) - Hugo Hamon (hhamon) - Joseph Bielawski (stloyd) - Karma Dordrak (drak) @@ -26,15 +26,16 @@ Symfony is the result of the work of many people who made the code better - Jean-François Simon (jfsimon) - Benjamin Eberlei (beberlei) - Igor Wiedler (igorw) - - Martin Hasoň (hason) - Abdellatif Ait boudad (aitboudad) + - Martin Hasoň (hason) - Eriksen Costa (eriksencosta) - Grégoire Pineau (lyrixx) - Wouter De Jong (wouterj) - Jonathan Wage (jwage) + - Javier Eguiluz (javier.eguiluz) + - Kévin Dunglas (dunglas) - Alexandre Salomé (alexandresalome) - William Durand (couac) - - Kévin Dunglas (dunglas) - ornicar - stealth35 ‏ (stealth35) - Alexander Mols (asm89) @@ -84,43 +85,42 @@ Symfony is the result of the work of many people who made the code better - excelwebzone - Jacob Dreesen (jdreesen) - Matthias Pigulla (mpdude) - - Javier Eguiluz (javier.eguiluz) - Fabien Pennequin (fabienpennequin) - Peter Rehm (rpet) - Peter Kokot (maastermedia) - Gordon Franke (gimler) - Robert Schönthal (digitalkaoz) + - Jérémy DERUSSÉ (jderusse) - Dariusz Ruminski - Michal Piotrowski (eventhorizon) - Stefano Sala (stefano.sala) + - David Buchmann (dbu) - Juti Noppornpitak (shiroyuki) - Sebastian Hörl (blogsh) - Daniel Gomes (danielcsgomes) - Hidenori Goto (hidenorigoto) - - David Buchmann (dbu) + - Alexander Schwenn (xelaris) - Guilherme Blanco (guilhermeblanco) - - Jérémy DERUSSÉ (jderusse) - Pablo Godel (pgodel) - Eric GELOEN (gelo) + - Vladimir Reznichenko (kalessil) - Jérémie Augustin (jaugustin) - - Alexander Schwenn (xelaris) + - Issei Murasawa (issei_m) - Rafael Dohms (rdohms) - Arnaud Kleinpeter (nanocom) + - Iltar van der Berg (kjarli) - Joshua Thijssen - - Vladimir Reznichenko (kalessil) - Tigran Azatyan (tigranazatyan) - - Issei Murasawa (issei_m) + - Sebastiaan Stok (sstok) - Richard Shank (iampersistent) - Clemens Tolboom - Helmer Aaviksoo - - Sebastiaan Stok (sstok) - Hiromi Hishida (77web) - Matthieu Ouellette-Vachon (maoueh) - Michał Pipa (michal.pipa) - Amal Raghav (kertz) - Jonathan Ingram (jonathaningram) - Artur Kotyrba - - Iltar van der Berg - Rouven Weßling (realityking) - Andréia Bohner (andreia) - Dmitrii Chekaliuk (lazyhammer) @@ -146,6 +146,7 @@ Symfony is the result of the work of many people who made the code better - fivestar - Dominique Bongiraud - Leszek Prabucki (l3l0) + - Alexander M. Turek (derrabus) - François Zaninotto (fzaninotto) - Dustin Whittle (dustinwhittle) - jeff @@ -164,7 +165,6 @@ Symfony is the result of the work of many people who made the code better - Francois Zaninotto - Alexander Kotynia (olden) - Daniel Tschinder - - Alexander M. Turek (derrabus) - Elnur Abdurrakhimov (elnur) - John Kary (johnkary) - Manuel Reinhard (sprain) @@ -197,6 +197,7 @@ Symfony is the result of the work of many people who made the code better - Robert Kiss (kepten) - Ruben Gonzalez (rubenrua) - Kim Hemsø Rasmussen (kimhemsoe) + - Diego Saint Esteben (dosten) - Florian Lonqueu-Brochard (florianlb) - Tom Van Looy (tvlooy) - Wouter Van Hecke @@ -212,6 +213,7 @@ Symfony is the result of the work of many people who made the code better - Andrew Moore (finewolf) - Bertrand Zuchuat (garfield-fr) - Gabor Toth (tgabi333) + - Grégoire Paris (greg0ire) - Alex Pott - realmfoo - Thomas Tourlourat (armetiz) @@ -232,8 +234,11 @@ Symfony is the result of the work of many people who made the code better - Thomas Schulz (king2500) - Marco Pivetta (ocramius) - Ricard Clau (ricardclau) + - Lorenz Schori + - Giorgio Premi - Erin Millard - Matthew Lewinski (lewinski) + - Marcos Sánchez - alquerci - Francesco Levorato - Vitaliy Zakharov (zakharovvi) @@ -260,13 +265,13 @@ Symfony is the result of the work of many people who made the code better - Kirill chEbba Chebunin (chebba) - Greg Thornton (xdissent) - Baptiste Clavié (talus) - - Grégoire Paris (greg0ire) - Costin Bereveanu (schniper) - Loïc Chardonnet (gnusat) - Marek Kalnik (marekkalnik) - Vyacheslav Salakhutdinov (megazoll) - Hassan Amouhzi - Tamas Szijarto + - Michaël Perrin (michael.perrin) - Pavel Volokitin (pvolok) - Endre Fejes - Tobias Naumann (tna) @@ -297,8 +302,8 @@ Symfony is the result of the work of many people who made the code better - Brian King - Michel Salib (michelsalib) - geoffrey - - Lorenz Schori - Jeanmonod David (jeanmonod) + - Thomas Lallement (raziel057) - Jan Schumann - Niklas Fiekas - lancergr @@ -370,6 +375,7 @@ Symfony is the result of the work of many people who made the code better - Florian Rey (nervo) - Rodrigo Borrego Bernabé (rodrigobb) - Denis Gorbachev (starfall) + - Titouan Galopin (tgalopin) - Steven Surowiec - Kevin Saliou (kbsali) - Daniel Tschinder @@ -393,7 +399,6 @@ Symfony is the result of the work of many people who made the code better - Mantas Var (mvar) - Sebastian Krebs - Christopher Davis (chrisguitarguy) - - Thomas Lallement (raziel057) - alcaeus - vitaliytv - Markus Bachmann (baachi) @@ -449,6 +454,7 @@ Symfony is the result of the work of many people who made the code better - Simon Schick (simonsimcity) - redstar504 - Hossein Bukhamsin + - origaminal - Paweł Wacławczyk (pwc) - Oleg Zinchenko (cystbear) - Johannes Klauss (cloppy) @@ -538,6 +544,7 @@ Symfony is the result of the work of many people who made the code better - Tony Malzhacker - Cyril Quintin (cyqui) - Gerard van Helden (drm) + - Johnny Peck (johnnypeck) - David Romaní - Patrick Allaert - Gustavo Falco (gfalco) @@ -545,6 +552,7 @@ Symfony is the result of the work of many people who made the code better - Aleksey Podskrebyshev - David Marín Carreño (davefx) - Jörn Lang (j.lang) + - Leo Feyer - mwsaz - Benoît Bourgeois - corphi @@ -562,7 +570,6 @@ Symfony is the result of the work of many people who made the code better - Christian Morgan - Alexander Miehe (engerim) - Morgan Auchede (mauchede) - - Titouan Galopin (tgalopin) - Don Pinkster - Maksim Muruev - Emil Einarsson @@ -595,6 +602,7 @@ Symfony is the result of the work of many people who made the code better - Reece Fowell (reecefowell) - stefan.r - Matthieu Napoli (mnapoli) + - Alexandru Furculita (afurculita) - Ben Ramsey (ramsey) - Christian Jul Jensen - The Whole Life to Learn @@ -610,7 +618,6 @@ Symfony is the result of the work of many people who made the code better - Sander Marechal - Radosław Benkel - Gennady Telegin (gtelegin) - - Marcos Sánchez - ttomor - Mei Gwilym (meigwilym) - Michael H. Arieli (excelwebzone) @@ -647,6 +654,7 @@ Symfony is the result of the work of many people who made the code better - Per Sandström (per) - Goran Juric - Laurent Ghirardotti (laurentg) + - Nicolas Macherey - Jan Rosier (rosier) - Lin Clark - Jeremy David (jeremy.david) @@ -695,7 +703,6 @@ Symfony is the result of the work of many people who made the code better - Jochen Bayer (jocl) - Jeremy Bush - wizhippo - - Diego Saint Esteben (dosten) - rpg600 - Péter Buri (burci) - Davide Borsatto (davide.borsatto) @@ -750,7 +757,6 @@ Symfony is the result of the work of many people who made the code better - Jakub Kulhan - Mo Di (modi) - Jeroen van den Enden (stoefke) - - origaminal - Quique Porta (quiqueporta) - Tomasz Szymczyk (karion) - ConneXNL @@ -782,8 +788,10 @@ Symfony is the result of the work of many people who made the code better - Adrien Gallou (agallou) - Karol Sójko (karolsojko) - sl_toto (sl_toto) + - Walter Dal Mut (wdalmut) - Sébastien HOUZÉ - Jingyu Wang + - Daniel Espendiller - steveYeah - Samy Dindane (dinduks) - Keri Henare (kerihenare) @@ -823,10 +831,12 @@ Symfony is the result of the work of many people who made the code better - Tadcka - Beth Binkovitz - Romain Geissler + - Tomaz Ahlin - Benjamin Cremer (bcremer) - Marcus Stöhr (dafish) - Emmanuel Vella (emmanuel.vella) - Carsten Nielsen (phreaknerd) + - Mathieu Rochette - Jay Severson - René Kerner - Nathaniel Catchpole @@ -861,6 +871,7 @@ Symfony is the result of the work of many people who made the code better - Sebastian Ionescu - Thomas Ploch - Simon Neidhold + - Valentin VALCIU - Kevin Dew - James Cowgill - Nicolas Schwartz (nicoschwartz) @@ -911,6 +922,7 @@ Symfony is the result of the work of many people who made the code better - 2manypeople - Wing - Thomas Bibb + - Matt Farmer - catch - Alexandre Segura - Josef Cech @@ -936,11 +948,11 @@ Symfony is the result of the work of many people who made the code better - Manatsawin Hanmongkolchai - Gunther Konig - Maciej Schmidt + - nuncanada - flack - František Bereň - Christoph Nissle (derstoffel) - Ionel Scutelnicu (ionelscutelnicu) - - Johnny Peck (johnnypeck) - Nicolas Tallefourtané (nicolab) - Botond Dani (picur) - Thierry Marianne (thierrymarianne) @@ -1035,6 +1047,7 @@ Symfony is the result of the work of many people who made the code better - Florian Pfitzer (marmelatze) - Martin Mayer (martin) - Grzegorz Łukaszewicz (newicz) + - Veres Lajos - grifx - Robert Campbell - Matt Lehner @@ -1095,11 +1108,11 @@ Symfony is the result of the work of many people who made the code better - Kevin Herrera (kherge) - Luis Ramón López López (lrlopez) - Muriel (metalmumu) - - Michaël Perrin (michael.perrin) - Michael Pohlers (mick_the_big) - Cayetano Soriano Gallego (neoshadybeat) - Pablo Monterde Perez (plebs) - Jimmy Leger (redpanda) + - Pavel Batanov (scaytrase) - Cyrille Jouineau (tuxosaurus) - Yorkie Chadwick (yorkie76) - Yanick Witschi @@ -1123,6 +1136,7 @@ Symfony is the result of the work of many people who made the code better - Ismail Asci (ismailasci) - Simon CONSTANS (kosssi) - Kristof Van Cauwenbergh (kristofvc) + - Tristan Darricau (nicofuma) - Ramon Henrique Ornelas (ramonornela) - Markus S. (staabm) - Till Klampaeckel (till) @@ -1180,6 +1194,7 @@ Symfony is the result of the work of many people who made the code better - Skorney - mieszko4 - Neophy7e + - bokonet - Arrilot - Markus Staab - Pierre-Louis LAUNAY @@ -1190,6 +1205,7 @@ Symfony is the result of the work of many people who made the code better - Abdulkadir N. A. - Yevgen Kovalienia - Sema + - Elan Ruusamäe - Thorsten Hallwas - Michael Squires - Norman Soetbeer @@ -1203,7 +1219,6 @@ Symfony is the result of the work of many people who made the code better - Penny Leach - Richard Trebichavský - g123456789l - - Giorgio Premi - oscartv - DanSync - Peter Zwosta @@ -1261,6 +1276,7 @@ Symfony is the result of the work of many people who made the code better - samuel laulhau (lalop) - Laurent Bachelier (laurentb) - Jérôme Parmentier (lctrs) + - Florent Viel (luxifer) - Matthieu Moquet (mattketmo) - Moritz Borgmann (mborgmann) - Matt Drollette (mdrollette) @@ -1279,6 +1295,7 @@ Symfony is the result of the work of many people who made the code better - Rich Sage (richsage) - Ruud Kamphuis (ruudk) - Bart Ruysseveldt (ruyss) + - Sascha Dens (saschadens) - scourgen hung (scourgen) - Sebastian Busch (sebu) - André Filipe Gonçalves Neves (seven) From 221da6edaf6514eca8efd728c74bf3dbf133a6fd Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 1 Sep 2015 17:40:52 +0200 Subject: [PATCH 5/8] updated VERSION for 2.3.32 --- 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 cf3510047d..80e1567d2f 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -60,12 +60,12 @@ abstract class Kernel implements KernelInterface, TerminableInterface protected $startTime; protected $loadClassCache; - const VERSION = '2.3.32-DEV'; + const VERSION = '2.3.32'; const VERSION_ID = '20332'; const MAJOR_VERSION = '2'; const MINOR_VERSION = '3'; const RELEASE_VERSION = '32'; - const EXTRA_VERSION = 'DEV'; + const EXTRA_VERSION = ''; /** * Constructor. From fedbf711a1c76bb2a9ff80e50a07526bedd6a639 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 1 Sep 2015 18:03:57 +0200 Subject: [PATCH 6/8] bumped Symfony version to 2.3.33 --- 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 80e1567d2f..5da1e8f716 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -60,12 +60,12 @@ abstract class Kernel implements KernelInterface, TerminableInterface protected $startTime; protected $loadClassCache; - const VERSION = '2.3.32'; - const VERSION_ID = '20332'; + const VERSION = '2.3.33-DEV'; + const VERSION_ID = '20333'; const MAJOR_VERSION = '2'; const MINOR_VERSION = '3'; - const RELEASE_VERSION = '32'; - const EXTRA_VERSION = ''; + const RELEASE_VERSION = '33'; + const EXTRA_VERSION = 'DEV'; /** * Constructor. From 79e29c1f2366caec387bdf4f760f336c87167873 Mon Sep 17 00:00:00 2001 From: Abdellatif Ait boudad Date: Wed, 2 Sep 2015 09:56:25 +0000 Subject: [PATCH 7/8] [Translator][fallback catalogues] fixed circular reference. --- .../Translation/MessageCatalogue.php | 7 +++++++ .../Tests/MessageCatalogueTest.php | 20 ++++++++++++++++--- .../Component/Translation/Translator.php | 5 +++-- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Component/Translation/MessageCatalogue.php b/src/Symfony/Component/Translation/MessageCatalogue.php index aa92a587fb..35beb3d947 100644 --- a/src/Symfony/Component/Translation/MessageCatalogue.php +++ b/src/Symfony/Component/Translation/MessageCatalogue.php @@ -190,6 +190,13 @@ class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterf public function addFallbackCatalogue(MessageCatalogueInterface $catalogue) { // detect circular references + $c = $catalogue; + while ($c = $c->getFallbackCatalogue()) { + if ($c->getLocale() === $this->getLocale()) { + throw new \LogicException(sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale())); + } + } + $c = $this; do { if ($c->getLocale() === $catalogue->getLocale()) { diff --git a/src/Symfony/Component/Translation/Tests/MessageCatalogueTest.php b/src/Symfony/Component/Translation/Tests/MessageCatalogueTest.php index 7d956553d9..6f55b8cc5e 100644 --- a/src/Symfony/Component/Translation/Tests/MessageCatalogueTest.php +++ b/src/Symfony/Component/Translation/Tests/MessageCatalogueTest.php @@ -127,7 +127,7 @@ class MessageCatalogueTest extends \PHPUnit_Framework_TestCase /** * @expectedException \LogicException */ - public function testAddFallbackCatalogueWithCircularReference() + public function testAddFallbackCatalogueWithParentCircularReference() { $main = new MessageCatalogue('en_US'); $fallback = new MessageCatalogue('fr_FR'); @@ -136,6 +136,20 @@ class MessageCatalogueTest extends \PHPUnit_Framework_TestCase $main->addFallbackCatalogue($fallback); } + /** + * @expectedException \LogicException + */ + public function testAddFallbackCatalogueWithFallbackCircularReference() + { + $fr = new MessageCatalogue('fr'); + $en = new MessageCatalogue('en'); + $es = new MessageCatalogue('es'); + + $fr->addFallbackCatalogue($en); + $es->addFallbackCatalogue($en); + $en->addFallbackCatalogue($fr); + } + /** * @expectedException \LogicException */ @@ -178,10 +192,10 @@ class MessageCatalogueTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array(), $catalogue->getMetadata('key2', 'messages'), 'Metadata key2 is array'); $catalogue->deleteMetadata('key2', 'messages'); - $this->assertEquals(null, $catalogue->getMetadata('key2', 'messages'), 'Metadata key2 should is deleted.'); + $this->assertNull($catalogue->getMetadata('key2', 'messages'), 'Metadata key2 should is deleted.'); $catalogue->deleteMetadata('key2', 'domain'); - $this->assertEquals(null, $catalogue->getMetadata('key2', 'domain'), 'Metadata key2 should is deleted.'); + $this->assertNull($catalogue->getMetadata('key2', 'domain'), 'Metadata key2 should is deleted.'); } public function testMetadataMerge() diff --git a/src/Symfony/Component/Translation/Translator.php b/src/Symfony/Component/Translation/Translator.php index 88178f8a83..38c5acd761 100644 --- a/src/Symfony/Component/Translation/Translator.php +++ b/src/Symfony/Component/Translation/Translator.php @@ -276,8 +276,9 @@ class Translator implements TranslatorInterface $this->doLoadCatalogue($fallback); } - $current->addFallbackCatalogue($this->catalogues[$fallback]); - $current = $this->catalogues[$fallback]; + $fallbackCatalogue = new MessageCatalogue($fallback, $this->catalogues[$fallback]->all()); + $current->addFallbackCatalogue($fallbackCatalogue); + $current = $fallbackCatalogue; } } From 79695037b0f949a1bee5ddfcdd5123c07a00cfad Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Wed, 2 Sep 2015 17:00:49 +0200 Subject: [PATCH 8/8] [Intl] Fix test --- .../DateFormat/TimeZoneTransformer.php | 2 +- .../Intl/NumberFormatter/NumberFormatter.php | 6 +++--- .../DateFormatter/AbstractIntlDateFormatterTest.php | 13 ++++++++++--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/Symfony/Component/Intl/DateFormatter/DateFormat/TimeZoneTransformer.php b/src/Symfony/Component/Intl/DateFormatter/DateFormat/TimeZoneTransformer.php index adca3eeb7d..6f9c0d5a02 100644 --- a/src/Symfony/Component/Intl/DateFormatter/DateFormat/TimeZoneTransformer.php +++ b/src/Symfony/Component/Intl/DateFormatter/DateFormat/TimeZoneTransformer.php @@ -29,7 +29,7 @@ class TimeZoneTransformer extends Transformer { $timeZone = substr($dateTime->getTimezone()->getName(), 0, 3); - if (!in_array($timeZone, array('Etc', 'UTC'))) { + if (!in_array($timeZone, array('Etc', 'UTC', 'GMT'))) { throw new NotImplementedException('Time zone different than GMT or UTC is not supported as a formatting output.'); } diff --git a/src/Symfony/Component/Intl/NumberFormatter/NumberFormatter.php b/src/Symfony/Component/Intl/NumberFormatter/NumberFormatter.php index 07c8e84c86..0ee222ee50 100644 --- a/src/Symfony/Component/Intl/NumberFormatter/NumberFormatter.php +++ b/src/Symfony/Component/Intl/NumberFormatter/NumberFormatter.php @@ -773,7 +773,7 @@ class NumberFormatter * @param mixed $value The value to be converted * @param int $type The type to convert. Can be TYPE_DOUBLE (float) or TYPE_INT32 (int) * - * @return int|float The converted value + * @return int|float|false The converted value */ private function convertValueDataType($value, $type) { @@ -793,7 +793,7 @@ class NumberFormatter * * @param mixed $value The value to be converted * - * @return int The converted value + * @return int|false The converted value */ private function getInt32Value($value) { @@ -809,7 +809,7 @@ class NumberFormatter * * @param mixed $value The value to be converted * - * @return int|float The converted value + * @return int|float|false The converted value * * @see https://bugs.php.net/bug.php?id=59597 Bug #59597 */ diff --git a/src/Symfony/Component/Intl/Tests/DateFormatter/AbstractIntlDateFormatterTest.php b/src/Symfony/Component/Intl/Tests/DateFormatter/AbstractIntlDateFormatterTest.php index 259f5e5d9d..0603394fe1 100644 --- a/src/Symfony/Component/Intl/Tests/DateFormatter/AbstractIntlDateFormatterTest.php +++ b/src/Symfony/Component/Intl/Tests/DateFormatter/AbstractIntlDateFormatterTest.php @@ -392,14 +392,21 @@ abstract class AbstractIntlDateFormatterTest extends \PHPUnit_Framework_TestCase ); } - public function testFormatWithDateTimeZone() + public function testFormatWithDateTimeZoneGmt() { if (PHP_VERSION_ID < 50500) { $this->markTestSkipped('Only in PHP 5.5+ IntlDateFormatter allows to use DateTimeZone objects.'); } - if (defined('HHVM_VERSION_ID')) { - $this->markTestSkipped('This test cannot work on HHVM. See https://github.com/facebook/hhvm/issues/5875 for the issue.'); + $formatter = $this->getDateFormatter('en', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT, new \DateTimeZone('GMT'), IntlDateFormatter::GREGORIAN, 'zzzz'); + + $this->assertEquals('GMT', $formatter->format(0)); + } + + public function testFormatWithDateTimeZoneGmtOffset() + { + if (defined('HHVM_VERSION_ID') || PHP_VERSION_ID <= 50509) { + $this->markTestSkipped('DateTimeZone GMT offsets are supported since 5.5.10. See https://github.com/facebook/hhvm/issues/5875 for HHVM.'); } $formatter = $this->getDateFormatter('en', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT, new \DateTimeZone('GMT+03:00'), IntlDateFormatter::GREGORIAN, 'zzzz');