diff --git a/CHANGELOG-2.2.md b/CHANGELOG-2.2.md index 538c6e6191..2c7a93f004 100644 --- a/CHANGELOG-2.2.md +++ b/CHANGELOG-2.2.md @@ -7,6 +7,25 @@ in 2.2 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.2.0...v2.2.1 +* 2.2.5 (2013-08-07) + + * c35cc5b: added trusted hosts check + * 6d555bc: Fixed metadata serialization + * cd51d82: [Form] fixed wrong call to setTimeZone() (closes #8644) + * 5c359a8: Fix issue with \DateTimeZone::UTC / 'UTC' for PHP 5.4 + * 97cbb19: [Form] Removed the "disabled" attribute from the placeholder option in select fields due to problems with the BlackBerry 10 browser + * c138304: [routing] added ability for apache matcher to handle array values + * b41cf82: [Validator] fixed StaticMethodLoader trying to invoke methods of abstract classes (closes #8589) + * 3553c71: return 0 if there is no valid data + * ae7fa11: [Twig] fixed TwigEngine::exists() method when a template contains a syntax error (closes #8546) + * 28e0709: [Validator] fixed ConstraintViolation:: incorrect when nested + * 890934d: handle Optional and Required constraints from XML or YAML sources correctly + * a2eca45: Fixed #8455: PhpExecutableFinder::find() does not always return the correct binary + * 485d53a: [DependencyInjection] Fix Container::camelize to convert beginning and ending chars + * 2317443: [Security] fixed issue where authentication listeners clear unrelated tokens + * 2ebb783: fix issue #8499 modelChoiceList call getPrimaryKey on a non object + * d3eb9b7: [Validator] Fixed groups argument misplace for validateValue method from validator class + * 2.2.4 (2013-07-15) * 52e530d: Fixed NativeSessionStorage:regenerate when does not exists diff --git a/CHANGELOG-2.3.md b/CHANGELOG-2.3.md index 90d8a90749..db170b4f9a 100644 --- a/CHANGELOG-2.3.md +++ b/CHANGELOG-2.3.md @@ -7,6 +7,32 @@ 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.3 (2013-08-07) + + * c35cc5b: added trusted hosts check + * 6d555bc: Fixed metadata serialization + * cd51d82: [Form] fixed wrong call to setTimeZone() (closes #8644) + * 5c359a8: Fix issue with \DateTimeZone::UTC / 'UTC' for PHP 5.4 + * 85330a6: [Form] Fixed patched forms to be valid even if children are not submitted + * cb5e765: [Form] Fixed: If a form is not present in a request, it is not automatically submitted + * 97cbb19: [Form] Removed the "disabled" attribute from the placeholder option in select fields due to problems with the BlackBerry 10 browser + * c138304: [routing] added ability for apache matcher to handle array values + * 1bd45b3: [FrameworkBundle] fixed regression where the command might have the wrong container if the application is reused several times + * b41cf82: [Validator] fixed StaticMethodLoader trying to invoke methods of abstract classes (closes #8589) + * e5fba3c: [Form] fixes empty file-inputs get treated as extra field + * 3553c71: return 0 if there is no valid data + * 50d0727: [DependencyInjection] fixed regression where setting a service to null did not trigger a re-creation of the service when getting it + * dc1fff0: The ignoreAttributes itself should be ignored, too. + * ae7fa11: [Twig] fixed TwigEngine::exists() method when a template contains a syntax error (closes #8546) + * 28e0709: [Validator] fixed ConstraintViolation:: incorrect when nested + * 890934d: handle Optional and Required constraints from XML or YAML sources correctly + * a2eca45: Fixed #8455: PhpExecutableFinder::find() does not always return the correct binary + * 485d53a: [DependencyInjection] Fix Container::camelize to convert beginning and ending chars + * 2317443: [Security] fixed issue where authentication listeners clear unrelated tokens + * 2ebb783: fix issue #8499 modelChoiceList call getPrimaryKey on a non object + * 242b318: [DependencyInjection] Add exception for service name not dumpable in PHP + * d3eb9b7: [Validator] Fixed groups argument misplace for validateValue method from validator class + * 2.3.2 (2013-07-17) * bb59f40: Reverts JSON_NUMERIC_CHECK diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 10464d6236..5633e1af40 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -18,8 +18,8 @@ Symfony2 is the result of the work of many people who made the code better - Ryan Weaver (weaverryan) - Joseph Bielawski (stloyd) - Jeremy Mikola (jmikola) - - Igor Wiedler (igorw) - Jean-François Simon (jfsimon) + - Igor Wiedler (igorw) - Benjamin Eberlei (beberlei) - Jakub Zalas (jakubzalas) - Hugo Hamon (hhamon) @@ -50,8 +50,8 @@ Symfony2 is the result of the work of many people who made the code better - Arnout Boks (aboks) - Hidenori Goto (hidenorigoto) - Fran Moreno (franmomu) - - Andrej Hudec (pulzarraider) - Grégoire Pineau (lyrixx) + - Andrej Hudec (pulzarraider) - Lee McDermott - Brandon Turner - Daniel Holmes (dholmes) @@ -77,21 +77,21 @@ Symfony2 is the result of the work of many people who made the code better - Jacob Dreesen (jdreesen) - Richard Shank (iampersistent) - Sebastian Hörl (blogsh) - - Gábor Egyed (1ed) - David Buchmann (dbu) + - Gábor Egyed (1ed) - Juti Noppornpitak - Robert Schönthal (digitalkaoz) - Felix Labrecque - Michał Pipa (michal.pipa) - Gordon Franke (gimler) - Daniel Gomes (danielcsgomes) + - Jérémie Augustin (jaugustin) - Tigran Azatyan (tigranazatyan) - Pierre Minnieur (pminnieur) - Larry Garfield (crell) - Arnaud Kleinpeter (nanocom) - Jonathan Ingram (jonathaningram) - Sebastiaan Stok (sstok) - - Jérémie Augustin (jaugustin) - Javier Eguiluz (javier.eguiluz) - Matthieu Ouellette-Vachon (maoueh) - Amal Raghav (kertz) @@ -102,6 +102,7 @@ Symfony2 is the result of the work of many people who made the code better - Hiromi Hishida (77web) - Julien Brochet (mewt) - Rafael Dohms (rdohms) + - Wouter De Jong (wouterj) - Benjamin Dulau (dbenjamin) - Andreas Hucks (meandmymonkey) - Noel Guilbert (noel) @@ -122,7 +123,6 @@ Symfony2 is the result of the work of many people who made the code better - Dustin Whittle (dustinwhittle) - jeff - Clemens Tolboom - - Wouter De Jong (wouterj) - Justin Hileman (bobthecow) - Sven Paulus (subsven) - Xavier Perez @@ -132,6 +132,7 @@ Symfony2 is the result of the work of many people who made the code better - Francois Zaninotto - Alexander Kotynia (olden) - François Zaninotto (fzaninotto) + - Beau Simensen (simensen) - Xavier Montaña Carreras (xmontana) - Katsuhiro OGAWA - Andréia Bohner (andreia) @@ -155,6 +156,7 @@ Symfony2 is the result of the work of many people who made the code better - Gyula Sallai (salla) - Michael Holm (hollo) - Yaroslav Kiliba + - Jérôme Tamarelle (gromnan) - Sebastian Bergmann - arjen - Matthias Pigulla (mpdude) @@ -162,7 +164,6 @@ Symfony2 is the result of the work of many people who made the code better - Manuel Kiessling (manuelkiessling) - Sergey Linnik - Bertrand Zuchuat (garfield-fr) - - Beau Simensen (simensen) - Grégoire Paris (greg0ire) - Tamas Szijarto - Thomas Adam @@ -193,6 +194,7 @@ Symfony2 is the result of the work of many people who made the code better - Peter Kruithof (pkruithof) - Kristen Gilden (kgilden) - hossein zolfi (ocean) + - Christian Flothmann (xabbuh) - Greg Thornton (xdissent) - Lars Strojny - Costin Bereveanu (schniper) @@ -246,16 +248,18 @@ Symfony2 is the result of the work of many people who made the code better - Tiago Brito (blackmx) - Kevin McBride - Pablo Díez (pablodip) + - bronze1man - Michael Piecko (michael.piecko) - Sebastian Krebs - Manuel de Ruiter (manuel) + - Jérémy Romey (jeremyfreeagent) + - Eduardo Oliveira (entering) - Iker Ibarguren (ikerib) - Ricardo Oliveira (ricardolotr) - ondrowan - Roman Marintsenko (inori) - Stéphane PY (steph_py) - mcben - - Christian Flothmann (xabbuh) - Maks Slesarenko - Vicent Soria Durá (vicentgodella) - alexpods @@ -265,6 +269,7 @@ Symfony2 is the result of the work of many people who made the code better - Joel Wurtz - Nils Adermann (naderman) - Gábor Fási + - Benjamin Leveque (benji07) - Leevi Graham - Luis Cordova (cordoval) - Michaël Perrin (michael.perrin) @@ -301,6 +306,7 @@ Symfony2 is the result of the work of many people who made the code better - vitaliytv - Markus Bachmann (baachi) - aubx + - lancergr - Max Rath (drak3) - Sinan Eldem - DerManoMann @@ -329,14 +335,13 @@ Symfony2 is the result of the work of many people who made the code better - Hossein Bukhamsin - Fabrice Bernhard (fabriceb) - Oleg Zinchenko (cystbear) + - Diego Saint Esteben (dii3g0) - Johannes Klauss (cloppy) - fzerorubigd - develop - Atsuhiro KUBO (iteman) - Samy Dindane (dinduks) - yclian - - Jérôme Tamarelle (gromnan) - - Jérémy Romey (jeremyfreeagent) - Pascal Helfenstein - Matt Daum (daum) - Baldur Rensch @@ -344,6 +349,7 @@ Symfony2 is the result of the work of many people who made the code better - Yuen-Chi Lian - Joshua Nye - avorobiev + - Venu - Mark Challoner - Andrew Tchircoff (andrewtch) - BilgeXA @@ -361,7 +367,6 @@ Symfony2 is the result of the work of many people who made the code better - Andrew Udvare - Xavier Lacot (xavier) - Olivier Maisonneuve - - Eduardo Oliveira (entering) - Iwan van Staveren (istaveren) - cgonzalez - matt foster @@ -389,9 +394,11 @@ Symfony2 is the result of the work of many people who made the code better - Gerard van Helden (drm) - Johnny Peck (johnnypeck) - Kirill chEbba Chebunin - - Benjamin Leveque (benji07) + - Patrick Allaert - Gustavo Falco (gfalco) - Matt Robinson (inanimatt) + - Bob den Otter (bopp) + - Jörn Lang (j.lang) - julien pauli (jpauli) - mwsaz - Benoît Bourgeois @@ -428,13 +435,14 @@ Symfony2 is the result of the work of many people who made the code better - Raul Fraile (raulfraile) - sensio - Théophile Helleboid - chtitux + - alcaeus - The Whole Life to Learn - xaav - Mahmoud Mostafa (mahmoud) - Juti Noppornpitak - - lancergr - Mei Gwilym - ttomor + - Luciano Mammino (loige) - Sander Coolen - Nicolas Le Goff (nlegoff) - Manuele Menozzi @@ -460,6 +468,7 @@ Symfony2 is the result of the work of many people who made the code better - Sescandell (sescandell) - Ben Davies - Max Beutel + - Artem Lopata - Marcos Quesada (marcos_quesada) - Dan Finnie - Martijn Evers @@ -495,6 +504,7 @@ Symfony2 is the result of the work of many people who made the code better - Brooks Boyd - Roger Webb - Nicolas Fabre (nfabre) + - Raul Rodriguez (raul782) - Felicitus - Paul Matthews - Philipp Strube @@ -531,6 +541,7 @@ Symfony2 is the result of the work of many people who made the code better - m.chwedziak - Lance McNearney - Alberto Pirovano (geezmo) + - Philipp W (hifi) - Gabor Toth (tgabi333) - Martin Pärtel - Xavier Briand (xavierbriand) @@ -565,6 +576,7 @@ Symfony2 is the result of the work of many people who made the code better - Konrad Mohrfeldt - Benoit Lévêque (benoit_leveque) - Stelian Mocanita (stelian) + - Flavian (2much) - jskvara - Mephistofeles - Hoffmann András @@ -602,15 +614,15 @@ Symfony2 is the result of the work of many people who made the code better - Christoph Nissle (derstoffel) - Benjamin Zikarsky - Romain Dorgueil - - Patrick Allaert - Grayson Koonce (breerly) - Andy Stanberry + - Thomas Rothe - alefranz - alsar - Mike Meier - Warwick - efeen - - Bob den Otter (bopp) + - Dominik Zogg (dominik.zogg) - Simone Fumagalli (hpatoio) - Alessio Baglio (ioalessio) - John Bafford (jbafford) @@ -627,7 +639,6 @@ Symfony2 is the result of the work of many people who made the code better - Nathanael d. Noblet - helmer - Bram Van der Sype (brammm) - - Diego Saint Esteben (dii3g0) - Julien Moulin (lizjulien) - dened - devel @@ -636,7 +647,6 @@ Symfony2 is the result of the work of many people who made the code better - Andrey Chernykh - François Pluchino - Alexey Prilipko - - Jörn Lang (j.lang) - Jan Marek (janmarek) - Dan Patrick (mdpatrick) - Rares Vlaseanu (raresvla) @@ -663,6 +673,7 @@ Symfony2 is the result of the work of many people who made the code better - Alex Pods - timaschew - Christian Morgan + - Ian Phillips - Haritz - Grummfy - Rowan Manning @@ -707,6 +718,7 @@ Symfony2 is the result of the work of many people who made the code better - Stefan Oderbolz - Alexey Popkov - Piotr Błasiak + - Alexander M. Turek - Arnaud Buathier (arnapou) - chesteroni (chesteroni) - Daniele Cesarini (ijanki) @@ -746,6 +758,7 @@ Symfony2 is the result of the work of many people who made the code better - André Neves - Pierre-Louis LAUNAY - djama + - Jon Cave - Sébastien HOUZE - Abdulkadir N. A. - Sema @@ -807,6 +820,7 @@ Symfony2 is the result of the work of many people who made the code better - Ruud Kamphuis (ruudk) - Sarah Khalil (saro0h) - Sebastian Busch (sebu) + - Andrea Giuliano (shark) - Markus Tacker (tacker) - Tyler Stroud (tystr) - Víctor Mateo (victormateo) diff --git a/src/Symfony/Bridge/Twig/Extension/CodeExtension.php b/src/Symfony/Bridge/Twig/Extension/CodeExtension.php index a6202b24ba..40809fb7b4 100644 --- a/src/Symfony/Bridge/Twig/Extension/CodeExtension.php +++ b/src/Symfony/Bridge/Twig/Extension/CodeExtension.php @@ -46,14 +46,14 @@ class CodeExtension extends \Twig_Extension public function getFilters() { return array( - 'abbr_class' => new \Twig_Filter_Method($this, 'abbrClass', array('is_safe' => array('html'))), - 'abbr_method' => new \Twig_Filter_Method($this, 'abbrMethod', array('is_safe' => array('html'))), - 'format_args' => new \Twig_Filter_Method($this, 'formatArgs', array('is_safe' => array('html'))), - 'format_args_as_text' => new \Twig_Filter_Method($this, 'formatArgsAsText'), - 'file_excerpt' => new \Twig_Filter_Method($this, 'fileExcerpt', array('is_safe' => array('html'))), - 'format_file' => new \Twig_Filter_Method($this, 'formatFile', array('is_safe' => array('html'))), - 'format_file_from_text' => new \Twig_Filter_Method($this, 'formatFileFromText', array('is_safe' => array('html'))), - 'file_link' => new \Twig_Filter_Method($this, 'getFileLink', array('is_safe' => array('html'))), + new \Twig_SimpleFilter('abbr_class', array($this, 'abbrClass'), array('is_safe' => array('html'))), + new \Twig_SimpleFilter('abbr_method', array($this, 'abbrMethod'), array('is_safe' => array('html'))), + new \Twig_SimpleFilter('format_args', array($this, 'formatArgs'), array('is_safe' => array('html'))), + new \Twig_SimpleFilter('format_args_as_text', array($this, 'formatArgsAsText')), + new \Twig_SimpleFilter('file_excerpt', array($this, 'fileExcerpt'), array('is_safe' => array('html'))), + new \Twig_SimpleFilter('format_file', array($this, 'formatFile'), array('is_safe' => array('html'))), + new \Twig_SimpleFilter('format_file_from_text', array($this, 'formatFileFromText'), array('is_safe' => array('html'))), + new \Twig_SimpleFilter('file_link', array($this, 'getFileLink'), array('is_safe' => array('html'))), ); } diff --git a/src/Symfony/Bridge/Twig/Extension/FormExtension.php b/src/Symfony/Bridge/Twig/Extension/FormExtension.php index fbfa524310..429e65c519 100644 --- a/src/Symfony/Bridge/Twig/Extension/FormExtension.php +++ b/src/Symfony/Bridge/Twig/Extension/FormExtension.php @@ -80,7 +80,7 @@ class FormExtension extends \Twig_Extension public function getFilters() { return array( - 'humanize' => new \Twig_Filter_Method($this, 'renderer->humanize'), + new \Twig_SimpleFilter('humanize', array($this->renderer, 'humanize')), ); } @@ -90,7 +90,7 @@ class FormExtension extends \Twig_Extension public function getTests() { return array( - 'selectedchoice' => new \Twig_Test_Method($this, 'isSelectedChoice'), + new \Twig_SimpleTest('selectedchoice', array($this, 'isSelectedChoice')), ); } diff --git a/src/Symfony/Bridge/Twig/Extension/HttpKernelExtension.php b/src/Symfony/Bridge/Twig/Extension/HttpKernelExtension.php index a837723430..775fe42ee5 100644 --- a/src/Symfony/Bridge/Twig/Extension/HttpKernelExtension.php +++ b/src/Symfony/Bridge/Twig/Extension/HttpKernelExtension.php @@ -36,9 +36,9 @@ class HttpKernelExtension extends \Twig_Extension public function getFunctions() { return array( - 'render' => new \Twig_Function_Method($this, 'renderFragment', array('is_safe' => array('html'))), - 'render_*' => new \Twig_Function_Method($this, 'renderFragmentStrategy', array('is_safe' => array('html'))), - 'controller' => new \Twig_Function_Method($this, 'controller'), + new \Twig_SimpleFunction('render',array($this, 'renderFragment'), array('is_safe' => array('html'))), + new \Twig_SimpleFunction('render_*', array($this, 'renderFragmentStrategy'), array('is_safe' => array('html'))), + new \Twig_SimpleFunction('controller', array($this, 'controller')), ); } diff --git a/src/Symfony/Bridge/Twig/Extension/RoutingExtension.php b/src/Symfony/Bridge/Twig/Extension/RoutingExtension.php index 8274abf321..237c36c190 100644 --- a/src/Symfony/Bridge/Twig/Extension/RoutingExtension.php +++ b/src/Symfony/Bridge/Twig/Extension/RoutingExtension.php @@ -35,8 +35,8 @@ class RoutingExtension extends \Twig_Extension public function getFunctions() { return array( - 'url' => new \Twig_Function_Method($this, 'getUrl', array('is_safe_callback' => array($this, 'isUrlGenerationSafe'))), - 'path' => new \Twig_Function_Method($this, 'getPath', array('is_safe_callback' => array($this, 'isUrlGenerationSafe'))), + new \Twig_SimpleFunction('url', array($this, 'getUrl'), array('is_safe_callback' => array($this, 'isUrlGenerationSafe'))), + new \Twig_SimpleFunction('path', array($this, 'getPath'), array('is_safe_callback' => array($this, 'isUrlGenerationSafe'))), ); } diff --git a/src/Symfony/Bridge/Twig/Extension/SecurityExtension.php b/src/Symfony/Bridge/Twig/Extension/SecurityExtension.php index c9f4466c33..edba0e7b8b 100644 --- a/src/Symfony/Bridge/Twig/Extension/SecurityExtension.php +++ b/src/Symfony/Bridge/Twig/Extension/SecurityExtension.php @@ -47,7 +47,7 @@ class SecurityExtension extends \Twig_Extension public function getFunctions() { return array( - 'is_granted' => new \Twig_Function_Method($this, 'isGranted'), + new \Twig_SimpleFunction('is_granted', array($this, 'isGranted')), ); } diff --git a/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php b/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php index 2ab3832d89..81316e8fd4 100644 --- a/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php +++ b/src/Symfony/Bridge/Twig/Extension/TranslationExtension.php @@ -49,8 +49,8 @@ class TranslationExtension extends \Twig_Extension public function getFilters() { return array( - 'trans' => new \Twig_Filter_Method($this, 'trans'), - 'transchoice' => new \Twig_Filter_Method($this, 'transchoice'), + new \Twig_SimpleFilter('trans', array($this, 'trans')), + new \Twig_SimpleFilter('transchoice', array($this, 'transchoice')), ); } diff --git a/src/Symfony/Bridge/Twig/Extension/YamlExtension.php b/src/Symfony/Bridge/Twig/Extension/YamlExtension.php index f88829ee34..389dc8ed1c 100644 --- a/src/Symfony/Bridge/Twig/Extension/YamlExtension.php +++ b/src/Symfony/Bridge/Twig/Extension/YamlExtension.php @@ -26,8 +26,8 @@ class YamlExtension extends \Twig_Extension public function getFilters() { return array( - 'yaml_encode' => new \Twig_Filter_Method($this, 'encode'), - 'yaml_dump' => new \Twig_Filter_Method($this, 'dump'), + new \Twig_SimpleFilter('yaml_encode', array($this, 'encode')), + new \Twig_SimpleFilter('yaml_dump', array($this, 'dump')), ); } diff --git a/src/Symfony/Bundle/SecurityBundle/Twig/Extension/LogoutUrlExtension.php b/src/Symfony/Bundle/SecurityBundle/Twig/Extension/LogoutUrlExtension.php index bad5e79ee8..38f88e66a9 100644 --- a/src/Symfony/Bundle/SecurityBundle/Twig/Extension/LogoutUrlExtension.php +++ b/src/Symfony/Bundle/SecurityBundle/Twig/Extension/LogoutUrlExtension.php @@ -38,8 +38,8 @@ class LogoutUrlExtension extends \Twig_Extension public function getFunctions() { return array( - 'logout_url' => new \Twig_Function_Method($this, 'getLogoutUrl'), - 'logout_path' => new \Twig_Function_Method($this, 'getLogoutPath'), + new \Twig_SimpleFunction('logout_url', array($this, 'getLogoutUrl')), + new \Twig_SimpleFunction('logout_path', array($this, 'getLogoutPath')), ); } diff --git a/src/Symfony/Bundle/TwigBundle/Extension/AssetsExtension.php b/src/Symfony/Bundle/TwigBundle/Extension/AssetsExtension.php index 29bb2ec658..20834d7fa2 100644 --- a/src/Symfony/Bundle/TwigBundle/Extension/AssetsExtension.php +++ b/src/Symfony/Bundle/TwigBundle/Extension/AssetsExtension.php @@ -35,8 +35,8 @@ class AssetsExtension extends \Twig_Extension public function getFunctions() { return array( - 'asset' => new \Twig_Function_Method($this, 'getAssetUrl'), - 'assets_version' => new \Twig_Function_Method($this, 'getAssetsVersion'), + new \Twig_SimpleFunction('asset', array($this, 'getAssetUrl')), + new \Twig_SimpleFunction('assets_version', array($this, 'getAssetsVersion')), ); } diff --git a/src/Symfony/Bundle/TwigBundle/Loader/FilesystemLoader.php b/src/Symfony/Bundle/TwigBundle/Loader/FilesystemLoader.php index 64d5616c5f..94c930fef2 100644 --- a/src/Symfony/Bundle/TwigBundle/Loader/FilesystemLoader.php +++ b/src/Symfony/Bundle/TwigBundle/Loader/FilesystemLoader.php @@ -40,6 +40,25 @@ class FilesystemLoader extends \Twig_Loader_Filesystem $this->cache = array(); } + /** + * {@inheritdoc} + */ + public function exists($template) + { + if (parent::exists($template)) { + return true; + } + + // same logic as findTemplate below for the fallback + try { + $this->cache[(string) $template] = $this->locator->locate($this->parser->parse($template)); + } catch (\Exception $e) { + return false; + } + + return true; + } + /** * Returns the path to the template file. * diff --git a/src/Symfony/Bundle/TwigBundle/Tests/Loader/FilesystemLoaderTest.php b/src/Symfony/Bundle/TwigBundle/Tests/Loader/FilesystemLoaderTest.php index 8bb1c1691e..230fd92e40 100644 --- a/src/Symfony/Bundle/TwigBundle/Tests/Loader/FilesystemLoaderTest.php +++ b/src/Symfony/Bundle/TwigBundle/Tests/Loader/FilesystemLoaderTest.php @@ -38,6 +38,21 @@ class FilesystemLoaderTest extends TestCase $this->assertEquals("This is a layout\n", $loader->getSource('TwigBundle::layout.html.twig')); } + public function testExists() + { + // should return true for templates that Twig does not find, but Symfony does + $parser = $this->getMock('Symfony\Component\Templating\TemplateNameParserInterface'); + $locator = $this->getMock('Symfony\Component\Config\FileLocatorInterface'); + $locator + ->expects($this->once()) + ->method('locate') + ->will($this->returnValue($template = __DIR__.'/../DependencyInjection/Fixtures/Resources/views/layout.html.twig')) + ; + $loader = new FilesystemLoader($locator, $parser); + + return $this->assertTrue($loader->exists($template)); + } + /** * @expectedException Twig_Error_Loader */ diff --git a/src/Symfony/Component/Intl/DateFormatter/DateFormat/DayOfWeekTransformer.php b/src/Symfony/Component/Intl/DateFormatter/DateFormat/DayOfWeekTransformer.php index ee53a4e6d0..06eb72eab8 100644 --- a/src/Symfony/Component/Intl/DateFormatter/DateFormat/DayOfWeekTransformer.php +++ b/src/Symfony/Component/Intl/DateFormatter/DateFormat/DayOfWeekTransformer.php @@ -29,6 +29,8 @@ class DayOfWeekTransformer extends Transformer return $dayOfWeek; case 5: return $dayOfWeek[0]; + case 6: + return substr($dayOfWeek, 0, 2); default: return substr($dayOfWeek, 0, 3); } @@ -44,6 +46,8 @@ class DayOfWeekTransformer extends Transformer return 'Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday'; case 5: return '[MTWFS]'; + case 6: + return 'Mo|Tu|We|Th|Fr|Sa|Su'; default: return 'Mon|Tue|Wed|Thu|Fri|Sat|Sun'; } diff --git a/src/Symfony/Component/Intl/Intl.php b/src/Symfony/Component/Intl/Intl.php index c13899a441..d0373988d2 100644 --- a/src/Symfony/Component/Intl/Intl.php +++ b/src/Symfony/Component/Intl/Intl.php @@ -184,7 +184,7 @@ class Intl */ public static function getIcuStubVersion() { - return '50.1.2'; + return '51.2'; } /** diff --git a/src/Symfony/Component/Intl/Resources/bin/icu.ini b/src/Symfony/Component/Intl/Resources/bin/icu.ini index 902e336186..7f1ad90a6a 100644 --- a/src/Symfony/Component/Intl/Resources/bin/icu.ini +++ b/src/Symfony/Component/Intl/Resources/bin/icu.ini @@ -7,3 +7,4 @@ 4.8 = http://source.icu-project.org/repos/icu/icu/tags/release-4-8-1-1/source 49 = http://source.icu-project.org/repos/icu/icu/tags/release-49-1-2/source 50 = http://source.icu-project.org/repos/icu/icu/tags/release-50-1-2/source +51 = http://source.icu-project.org/repos/icu/icu/tags/release-51-2/source diff --git a/src/Symfony/Component/Intl/Tests/DateFormatter/AbstractIntlDateFormatterTest.php b/src/Symfony/Component/Intl/Tests/DateFormatter/AbstractIntlDateFormatterTest.php index 3ffb49092a..759dbc8e20 100644 --- a/src/Symfony/Component/Intl/Tests/DateFormatter/AbstractIntlDateFormatterTest.php +++ b/src/Symfony/Component/Intl/Tests/DateFormatter/AbstractIntlDateFormatterTest.php @@ -143,7 +143,7 @@ abstract class AbstractIntlDateFormatterTest extends \PHPUnit_Framework_TestCase array('EEE', 0, 'Thu'), array('EEEE', 0, 'Thursday'), array('EEEEE', 0, 'T'), - array('EEEEEE', 0, 'Thu'), + array('EEEEEE', 0, 'Th'), array('E', 1296540000, 'Tue'), // 2011-02-01 array('E', 1296950400, 'Sun'), // 2011-02-06 @@ -584,7 +584,7 @@ abstract class AbstractIntlDateFormatterTest extends \PHPUnit_Framework_TestCase array('EEE', 'Thu', 0), array('EEEE', 'Thursday', 0), array('EEEEE', 'T', 432000), - array('EEEEEE', 'Thu', 0), + array('EEEEEE', 'Th', 0), ); } diff --git a/src/Symfony/Component/Intl/Tests/NumberFormatter/AbstractNumberFormatterTest.php b/src/Symfony/Component/Intl/Tests/NumberFormatter/AbstractNumberFormatterTest.php index ad5581b44b..f8d0f3a18a 100644 --- a/src/Symfony/Component/Intl/Tests/NumberFormatter/AbstractNumberFormatterTest.php +++ b/src/Symfony/Component/Intl/Tests/NumberFormatter/AbstractNumberFormatterTest.php @@ -138,15 +138,15 @@ abstract class AbstractNumberFormatterTest extends \PHPUnit_Framework_TestCase return array( array(100, 'CHF', 'CHF', '%s100.00'), array(-100, 'CHF', 'CHF', '(%s100.00)'), - array(1000.12, 'CHF', 'CHF', '%s1,000.10'), - array('1000.12', 'CHF', 'CHF', '%s1,000.10'), + array(1000.12, 'CHF', 'CHF', '%s1,000.12'), + array('1000.12', 'CHF', 'CHF', '%s1,000.12'), // Rounding checks - array(1000.121, 'CHF', 'CHF', '%s1,000.10'), - array(1000.123, 'CHF', 'CHF', '%s1,000.10'), - array(1000.125, 'CHF', 'CHF', '%s1,000.10'), - array(1000.127, 'CHF', 'CHF', '%s1,000.15'), - array(1000.129, 'CHF', 'CHF', '%s1,000.15'), + array(1000.121, 'CHF', 'CHF', '%s1,000.12'), + array(1000.123, 'CHF', 'CHF', '%s1,000.12'), + array(1000.125, 'CHF', 'CHF', '%s1,000.12'), + array(1000.127, 'CHF', 'CHF', '%s1,000.13'), + array(1000.129, 'CHF', 'CHF', '%s1,000.13'), array(1200000.00, 'CHF', 'CHF', '%s1,200,000.00'), array(1200000.1, 'CHF', 'CHF', '%s1,200,000.10'),