diff --git a/CHANGELOG-2.3.md b/CHANGELOG-2.3.md index 1fa2df288d..c7acce7993 100644 --- a/CHANGELOG-2.3.md +++ b/CHANGELOG-2.3.md @@ -7,6 +7,30 @@ 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.24 (2015-01-07) + + * bug #13286 [Security] Don't destroy the session on buggy php releases. (derrabus) + * bug #12417 [HttpFoundation] Fix an issue caused by php's Bug #66606. (wusuopu) + * bug #13200 Don't add Accept-Range header on unsafe HTTP requests (jaytaph) + * bug #12491 [Security] Don't send remember cookie for sub request (blanchonvincent) + * bug #12574 [HttpKernel] Fix UriSigner::check when _hash is not at the end of the uri (nyroDev) + * bug #13185 Fixes Issue #13184 - incremental output getters now return empty strings (Bailey Parker) + * bug #13145 [DomCrawler] Fix behaviour with tag (dkop, WouterJ) + * bug #13141 [TwigBundle] Moved the setting of the default escaping strategy from the Twig engine to the Twig environment (fabpot) + * bug #13114 [HttpFoundation] fixed error when an IP in the X-Forwarded-For HTTP head... (fabpot) + * bug #12572 [HttpFoundation] fix checkip6 (Neime) + * bug #13075 [Config] fix error handler restoration in test (nicolas-grekas) + * bug #13081 [FrameworkBundle] forward error reporting level to insulated Client (nicolas-grekas) + * bug #13053 [FrameworkBundle] Fixed Translation loader and update translation command. (saro0h) + * bug #13048 [Security] Delete old session on auth strategy migrate (xelaris) + * bug #12999 [FrameworkBundle] fix cache:clear command (nicolas-grekas) + * bug #13004 add a limit and a test to FlattenExceptionTest. (Daniel Wehner) + * bug #12961 fix session restart on PHP 5.3 (Tobion) + * bug #12761 [Filesystem] symlink use RealPath instead LinkTarget (aitboudad) + * bug #12855 [DependencyInjection] Perf php dumper (nicolas-grekas) + * bug #12894 [FrameworkBundle][Template name] avoid error message for the shortcut n... (aitboudad) + * bug #12858 [ClassLoader] Fix undefined index in ClassCollectionLoader (szicsu) + * 2.3.23 (2014-12-03) * bug #12811 Configure firewall's kernel exception listener with configured entry point or a default entry point (rjkip) diff --git a/CHANGELOG-2.5.md b/CHANGELOG-2.5.md index ad58ea619c..ea67e8bf47 100644 --- a/CHANGELOG-2.5.md +++ b/CHANGELOG-2.5.md @@ -7,6 +7,38 @@ in 2.5 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.5.0...v2.5.1 +* 2.5.9 (2015-01-07) + + * bug #13286 [Security] Don't destroy the session on buggy php releases. (derrabus) + * bug #12417 [HttpFoundation] Fix an issue caused by php's Bug #66606. (wusuopu) + * bug #13200 Don't add Accept-Range header on unsafe HTTP requests (jaytaph) + * bug #12491 [Security] Don't send remember cookie for sub request (blanchonvincent) + * bug #12574 [HttpKernel] Fix UriSigner::check when _hash is not at the end of the uri (nyroDev) + * bug #13185 Fixes Issue #13184 - incremental output getters now return empty strings (Bailey Parker) + * bug #13173 [Debug] fixes ClassNotFoundFatalErrorHandler to correctly handle class not found errors with Symfony ClassLoader component autoloaders. (hhamon) + * bug #13145 [DomCrawler] Fix behaviour with tag (dkop, WouterJ) + * bug #13027 fix #10054 - form data collector with dynamic fields (zulus) + * bug #13141 [TwigBundle] Moved the setting of the default escaping strategy from the Twig engine to the Twig environment (fabpot) + * bug #13114 [HttpFoundation] fixed error when an IP in the X-Forwarded-For HTTP head... (fabpot) + * bug #12572 [HttpFoundation] fix checkip6 (Neime) + * bug #13093 [TwigBundle] added missing absolute URL in Twig exceptions (fabpot) + * bug #12975 [FrameworkBundle] Allow custom services for validator mapping cache. (jakzal) + * bug #13075 [Config] fix error handler restoration in test (nicolas-grekas) + * bug #13085 [FrameworkBundle] Fix dependency on ExtensionInterface over implementation (xphere) + * bug #13081 [FrameworkBundle] forward error reporting level to insulated Client (nicolas-grekas) + * bug #13053 [FrameworkBundle] Fixed Translation loader and update translation command. (saro0h) + * bug #13048 [Security] Delete old session on auth strategy migrate (xelaris) + * bug #12999 [FrameworkBundle] fix cache:clear command (nicolas-grekas) + * bug #13004 add a limit and a test to FlattenExceptionTest. (Daniel Wehner) + * bug #12961 fix session restart on PHP 5.3 (Tobion) + * bug #12548 [Form] fixed a maxlength overring on a guessing (origaminal) + * bug #12761 [Filesystem] symlink use RealPath instead LinkTarget (aitboudad) + * bug #12848 [EventDispatcher] Fixed #12845 adding a listener to an event that is currently being dispatched (Pieter Jordaan) + * bug #12855 [DependencyInjection] Perf php dumper (nicolas-grekas) + * bug #12894 [FrameworkBundle][Template name] avoid error message for the shortcut n... (aitboudad) + * bug #12806 [Console] Removed the use of $this->getHelperSet() as it is null by default (saro0h) + * bug #12858 [ClassLoader] Fix undefined index in ClassCollectionLoader (szicsu) + * 2.5.8 (2014-12-03) * bug #12811 Configure firewall's kernel exception listener with configured entry point or a default entry point (rjkip) diff --git a/CHANGELOG-2.6.md b/CHANGELOG-2.6.md index 4c48fed5e9..ac39c80a1e 100644 --- a/CHANGELOG-2.6.md +++ b/CHANGELOG-2.6.md @@ -7,6 +7,61 @@ in 2.6 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.6.0...v2.6.1 +* 2.6.3 (2015-01-07) + + * bug #13286 [Security] Don't destroy the session on buggy php releases. (derrabus) + +* 2.6.2 (2015-01-07) + + * feature #13241 [Form] add back model_timezone and view_timezone options (xabbuh) + * bug #13297 [Process] Fix input reset in WindowsPipes (mpajunen) + * bug #12417 [HttpFoundation] Fix an issue caused by php's Bug #66606. (wusuopu) + * bug #13200 Don't add Accept-Range header on unsafe HTTP requests (jaytaph) + * bug #12491 [Security] Don't send remember cookie for sub request (blanchonvincent) + * bug #12574 [HttpKernel] Fix UriSigner::check when _hash is not at the end of the uri (nyroDev) + * bug #13185 Fixes Issue #13184 - incremental output getters now return empty strings (Bailey Parker) + * bug #13153 [TwigBridge] bootstrap_3_layout.html.twig inline form rendering button problem fix #13150 (edvinasme) + * bug #13183 [DependencyInjection] force ExpressionLanguage version >= 2.6 (xabbuh) + * bug #13173 [Debug] fixes ClassNotFoundFatalErrorHandler to correctly handle class not found errors with Symfony ClassLoader component autoloaders. (hhamon) + * bug #13166 Fix a web profiler form issue with fields added to the form after the form was built (jakzal) + * bug #12911 Fix wrong DateTransformer timezone param for non-UTC configuration (Soullivaneuh) + * bug #13145 [DomCrawler] Fix behaviour with tag (dkop, WouterJ) + * bug #13027 fix #10054 - form data collector with dynamic fields (zulus) + * bug #13141 [TwigBundle] Moved the setting of the default escaping strategy from the Twig engine to the Twig environment (fabpot) + * bug #13114 [HttpFoundation] fixed error when an IP in the X-Forwarded-For HTTP head... (fabpot) + * bug #12572 [HttpFoundation] fix checkip6 (Neime) + * bug #13109 [Filesystem] restore ability to create broken symlinks (nicolas-grekas) + * bug #13093 [TwigBundle] added missing absolute URL in Twig exceptions (fabpot) + * bug #13087 [DependencyInjection] use/fix newest Definition::setFactory (nicolas-grekas) + * bug #12975 [FrameworkBundle] Allow custom services for validator mapping cache. (jakzal) + * bug #13068 Add LegacyPdoSessionHandler class (jeremylivingston) + * bug #13075 [Config] fix error handler restoration in test (nicolas-grekas) + * bug #13073 [VarDumper] fix and test PdoCaster (nicolas-grekas) + * bug #13085 [FrameworkBundle] Fix dependency on ExtensionInterface over implementation (xphere) + * bug #13081 [FrameworkBundle] forward error reporting level to insulated Client (nicolas-grekas) + * bug #13053 [FrameworkBundle] Fixed Translation loader and update translation command. (saro0h) + * bug #12900 [WebProfilerBundle] Fixed IE8 support (korotovsky) + * bug #13047 [FrameworkBundle][Logging Translator] skip if param "translator.logging" doesn't exist. (aitboudad) + * bug #13048 [Security] Delete old session on auth strategy migrate (xelaris) + * bug #13035 Added the function providers as container resources (stof) + * bug #13021 [FrameworkBundle] skip compiler pass if interface doesn't exist (xabbuh) + * bug #12999 [FrameworkBundle] fix cache:clear command (nicolas-grekas) + * bug #13004 add a limit and a test to FlattenExceptionTest. (Daniel Wehner) + * bug #13013 Unify the way to provide expression functions for the DI container (stof) + * bug #13009 [DebugBundle] fix link format handling with disabled templating (xabbuh) + * bug #12996 [WebProfilerBundle] Fix placeholder date format (mvar) + * bug #12961 fix session restart on PHP 5.3 (Tobion) + * bug #12548 [Form] fixed a maxlength overring on a guessing (origaminal) + * bug #12761 [Filesystem] symlink use RealPath instead LinkTarget (aitboudad) + * bug #12848 [EventDispatcher] Fixed #12845 adding a listener to an event that is currently being dispatched (Pieter Jordaan) + * bug #12935 [Security] Fixed ExpressionVoter - addExpressionLanguageProvider (Luca Genuzio) + * bug #12855 [DependencyInjection] Perf php dumper (nicolas-grekas) + * bug #12899 [WebProfiler] Tweaked ajax requests toolbar css reset (1ed) + * bug #12913 Fix missing space in label_attr (garak) + * bug #12894 [FrameworkBundle][Template name] avoid error message for the shortcut n... (aitboudad) + * bug #12806 [Console] Removed the use of $this->getHelperSet() as it is null by default (saro0h) + * bug #12858 [ClassLoader] Fix undefined index in ClassCollectionLoader (szicsu) + * 2.6.1 (2014-12-03) * bug #12823 [DependencyInjection] fix PhpDumper (nicolas-grekas) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 75afab4337..0598e0ee35 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -12,10 +12,12 @@ Symfony is the result of the work of many people who made the code better - Johannes S (johannes) - Kris Wallsmith (kriswallsmith) - Christophe Coevoet (stof) + - Nicolas Grekas (nicolas-grekas) - Pascal Borreli (pborreli) - Jakub Zalas (jakubzalas) - Karma Dordrak (drak) - Joseph Bielawski (stloyd) + - Hugo Hamon (hhamon) - Ryan Weaver (weaverryan) - Lukas Kahwe Smith (lsmith) - Romain Neutron (romain) @@ -23,11 +25,9 @@ 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) - - Hugo Hamon (hhamon) - - Nicolas Grekas (nicolas-grekas) + - Christian Flothmann (xabbuh) - Martin Hasoň (hason) - Eriksen Costa (eriksencosta) - - Christian Flothmann (xabbuh) - Jonathan Wage (jwage) - Grégoire Pineau (lyrixx) - Alexandre Salomé (alexandresalome) @@ -35,12 +35,12 @@ Symfony is the result of the work of many people who made the code better - ornicar - stealth35 ‏ (stealth35) - Alexander Mols (asm89) + - Wouter De Jong (wouterj) - Bulat Shakirzyanov (avalanche123) - Francis Besset (francisbesset) - Saša Stamenković (umpirsky) - - Wouter De Jong (wouterj) - - Miha Vrhovnik - Henrik Bjørnskov (henrikbjorn) + - Miha Vrhovnik - Konstantin Kudryashov (everzet) - Bilal Amarni (bamarni) - Florin Patan (florinpatan) @@ -49,8 +49,10 @@ Symfony is the result of the work of many people who made the code better - Deni - Henrik Westphal (snc) - Dariusz Górecki (canni) - - Christian Raue - Arnout Boks (aboks) + - Christian Raue + - Sarah Khalil (saro0h) + - Ait Boudad Abdellatif (aitboudad) - Michel Weimerskirch (mweimerskirch) - Lee McDermott - Brandon Turner @@ -62,7 +64,6 @@ Symfony is the result of the work of many people who made the code better - Fran Moreno (franmomu) - Antoine Hérault (herzult) - Toni Uebernickel (havvg) - - Ait Boudad Abdellatif (aitboudad) - Luis Cordova (cordoval) - Arnaud Le Blanc (arnaud-lb) - Kevin Bond (kbond) @@ -70,15 +71,17 @@ Symfony is the result of the work of many people who made the code better - Brice BERNARD (brikou) - marc.weistroff - lenar + - Graham Campbell (graham) - Włodzimierz Gajda (gajdaw) - Colin Frei + - Gábor Egyed (1ed) - excelwebzone - Jacob Dreesen (jdreesen) - Florian Voutzinos (florianv) - Jérôme Tamarelle (gromnan) - Adrien Brault (adrienbrault) - - Gábor Egyed (1ed) - Fabien Pennequin (fabienpennequin) + - Kévin Dunglas (dunglas) - Michal Piotrowski (eventhorizon) - Gordon Franke (gimler) - Robert Schönthal (digitalkaoz) @@ -93,11 +96,10 @@ Symfony is the result of the work of many people who made the code better - Jérémie Augustin (jaugustin) - Rafael Dohms (rdohms) - Jérémy DERUSSÉ (jderusse) + - Stefano Sala (stefano.sala) - Tigran Azatyan (tigranazatyan) - Javier Eguiluz (javier.eguiluz) - Richard Shank (iampersistent) - - Kévin Dunglas (dunglas) - - Stefano Sala (stefano.sala) - Clemens Tolboom - Helmer Aaviksoo - Sebastiaan Stok (sstok) @@ -111,9 +113,11 @@ Symfony is the result of the work of many people who made the code better - Rouven Weßling (realityking) - Dmitrii Chekaliuk (lazyhammer) - Clément JOBEILI (dator) + - Peter Rehm (rpet) - Dorian Villet (gnutix) - Richard Miller (mr_r_miller) - Arnaud Kleinpeter (nanocom) + - hacfi (hifi) - Mario A. Alvarez Garcia (nomack84) - Dennis Benkert (denderello) - Benjamin Dulau (dbenjamin) @@ -121,7 +125,7 @@ Symfony is the result of the work of many people who made the code better - Andreas Hucks (meandmymonkey) - Andréia Bohner (andreia) - Noel Guilbert (noel) - - Peter Rehm (rpet) + - Joel Wurtz (brouznouf) - Charles Sarrazin (csarrazi) - bronze1man - sun (sun) @@ -139,14 +143,12 @@ Symfony is the result of the work of many people who made the code better - Justin Hileman (bobthecow) - Sven Paulus (subsven) - Lars Strojny (lstrojny) - - Joel Wurtz (brouznouf) - Rui Marinho (ruimarinho) - Julien Brochet (mewt) - Tugdual Saunier (tucksaun) - - Graham Campbell (graham) - Sergey Linnik (linniksa) - Marcel Beerta (mazen) - - hacfi (hifi) + - Iltar van der Berg - Francois Zaninotto - Alexander Kotynia (olden) - Daniel Tschinder @@ -172,9 +174,9 @@ Symfony is the result of the work of many people who made the code better - Thomas Adam - Albert Casademont (acasademont) - jdhoek + - Jeremy Livingston (jeremylivingston) - Nikita Konstantinov - Wodor Wodorski - - Iltar van der Berg - julien pauli (jpauli) - Beau Simensen (simensen) - Robert Kiss (kepten) @@ -193,6 +195,7 @@ Symfony is the result of the work of many people who made the code better - Bertrand Zuchuat (garfield-fr) - Gabor Toth (tgabi333) - realmfoo + - Chris Wilkinson (thewilkybarkid) - Thomas Tourlourat (armetiz) - Andrey Esaulov (andremaha) - Grégoire Passault (gregwar) @@ -216,6 +219,7 @@ Symfony is the result of the work of many people who made the code better - alquerci - Francesco Levorato - Vitaliy Zakharov (zakharovvi) + - Florian Lonqueu-Brochard (florianlb) - Gyula Sallai (salla) - Inal DJAFAR (inalgnu) - Christian Gärtner (dagardner) @@ -223,8 +227,10 @@ Symfony is the result of the work of many people who made the code better - Yaroslav Kiliba - Sébastien Lavoie (lavoiesl) - Terje Bråten + - Joshua Thijssen - Kristen Gilden (kgilden) - Robbert Klarenbeek (robbertkl) + - Blanchon Vincent (blanchonvincent) - hossein zolfi (ocean) - Clément Gautier (clementgautier) - Eduardo Gulias (egulias) @@ -234,13 +240,13 @@ Symfony is the result of the work of many people who made the code better - Kirill chEbba Chebunin (chebba) - Greg Thornton (xdissent) - Grégoire Paris (greg0ire) - - Chris Wilkinson (thewilkybarkid) - Costin Bereveanu (schniper) - Loïc Chardonnet (gnusat) - Marek Kalnik (marekkalnik) - Vyacheslav Salakhutdinov (megazoll) - Alex Pott - Tamas Szijarto + - Mikael Pajunen - Pavel Volokitin (pvolok) - Endre Fejes - Tobias Naumann (tna) @@ -248,6 +254,7 @@ Symfony is the result of the work of many people who made the code better - Shein Alexey - Joe Lencioni - Kai + - Maximilian Reichel (phramz) - Karoly Negyesi (chx) - Xavier HAUSHERR - Albert Jessurum (ajessu) @@ -255,6 +262,7 @@ Symfony is the result of the work of many people who made the code better - Miha Vrhovnik - Alessandro Desantis - hubert lecorche (hlecorche) + - Marc Morales Valldepérez (kuert) - Oscar Cubo Medina (ocubom) - Karel Souffriau - Christophe L. (christophelau) @@ -262,6 +270,7 @@ Symfony is the result of the work of many people who made the code better - Jáchym Toušek - Jannik Zschiesche (apfelbox) - Emanuele Gaspari (inmarelibero) + - Dariusz Rumiński - Brian King - Michel Salib (michelsalib) - geoffrey @@ -275,6 +284,7 @@ Symfony is the result of the work of many people who made the code better - Olivier Dolbeau (odolbeau) - Roumen Damianoff (roumen) - Tobias Sjösten (tobiassjosten) + - Konstantin Myakshin (koc) - vagrant - Asier Illarramendi (doup) - Chris Sedlmayr (catchamonkey) @@ -307,6 +317,7 @@ Symfony is the result of the work of many people who made the code better - Iker Ibarguren (ikerib) - Ricardo Oliveira (ricardolotr) - ondrowan + - Jerzy Zawadzki (jzawadzki) - Evan S Kaufman (evanskaufman) - mcben - Maks Slesarenko @@ -316,7 +327,6 @@ Symfony is the result of the work of many people who made the code better - Ioan Negulescu - Jakub Škvára (jskvara) - Andrew Udvare (audvare) - - Sarah Khalil (saro0h) - alexpods - Erik Trapman (eriktrapman) - De Cock Xavier (xdecock) @@ -327,8 +337,8 @@ Symfony is the result of the work of many people who made the code better - Nils Adermann (naderman) - Gábor Fási - Benjamin Leveque (benji07) - - Maximilian Reichel (phramz) - sasezaki + - Dawid Pakuła (zulusx) - Florian Rey (nervo) - Rodrigo Borrego Bernabé (rodrigobb) - Denis Gorbachev (starfall) @@ -346,8 +356,8 @@ Symfony is the result of the work of many people who made the code better - Zach Badgett (zachbadgett) - Aurélien Fredouelle - Pavel Campr (pcampr) + - Alexander Schwenn (xelaris) - Disquedur - - Marc Morales Valldepérez (kuert) - Geoffrey Tran (geoff) - Jan Behrens - Sebastian Krebs @@ -364,7 +374,6 @@ Symfony is the result of the work of many people who made the code better - Max Rath (drak3) - Stéphane Escandell (sescandell) - Sinan Eldem - - Konstantin Myakshin (koc) - Nahuel Cuesta (ncuesta) - Chris Boden (cboden) - Asmir Mustafic (goetas) @@ -383,7 +392,6 @@ Symfony is the result of the work of many people who made the code better - Erkhembayar Gantulga (erheme318) - David Fuhr - Kamil Kokot (pamil) - - Florian Lonqueu-Brochard (florianlb) - Rostyslav Kinash - Daisuke Ohata - Vincent Simonin @@ -433,7 +441,6 @@ Symfony is the result of the work of many people who made the code better - Alex Xandra Albert Sim - Yuen-Chi Lian - Besnik Br - - Jerzy Zawadzki (jzawadzki) - Joshua Nye - avorobiev - Venu @@ -445,9 +452,11 @@ Symfony is the result of the work of many people who made the code better - 1emming - Leevi Graham (leevigraham) - Casper Valdemar Poulsen + - Daniel Wehner - Josiah (josiah) - Marek Štípek (maryo) - John Bohn (jbohn) + - Marc Morera (mmoreram) - Andrew Hilobok (hilobok) - Christian Soronellas (theunic) - Yosmany Garcia (yosmanyga) @@ -459,7 +468,6 @@ Symfony is the result of the work of many people who made the code better - Krzysiek Łabuś - Xavier Lacot (xavier) - Olivier Maisonneuve (olineuve) - - Blanchon Vincent (blanchonvincent) - Francis Turmel (fturmel) - Loick Piera (pyrech) - cgonzalez @@ -482,6 +490,7 @@ Symfony is the result of the work of many people who made the code better - frost-nzcr4 - Abhoryo - Fabian Vogler (fabian) + - Javier Spagnoletti (phansys) - Korvin Szanto - Maksim Kotlyar (makasim) - Neil Ferreira @@ -529,6 +538,7 @@ Symfony is the result of the work of many people who made the code better - Maks - Gábor Tóth - Daniel Cestari + - Massimiliano Arione (garak) - Brunet Laurent (lbrunet) - Magnus Nordlander (magnusnordlander) - Mikhail Yurasov (mym) @@ -601,12 +611,14 @@ Symfony is the result of the work of many people who made the code better - Dan Finnie - Ken Marfilla (marfillaster) - benatespina (benatespina) + - Denis Kop - jfcixmedia - Martijn Evers - Benjamin Paap (benjaminpaap) - Christian - Sergii Smertin (nfx) - Artur Eshenbrener + - Bailey Parker - Eddie Jaoude - Haritz Iturbe (hizai) - Nerijus Arlauskas (nercury) @@ -638,6 +650,7 @@ Symfony is the result of the work of many people who made the code better - Albert Ganiev (helios-ag) - Neil Katin - David Otton + - Will Donohoe - peter - Jérémy Jourdin (jjk801) - Artem Kolesnikov (tyomo4ka) @@ -645,6 +658,7 @@ Symfony is the result of the work of many people who made the code better - Yannick - Luc Vieillescazes (iamluc) - Eduardo García Sanz (coma) + - Szijarto Tamas - Roy Van Ginneken - David de Boer (ddeboer) - Gilles Doge (gido) @@ -666,6 +680,7 @@ Symfony is the result of the work of many people who made the code better - Philipp Strube - Christian Sciberras - Clement Herreman (clemherreman) + - Nyro (nyro) - Trent Steel (trsteel88) - Marco - Marc Torres @@ -678,6 +693,7 @@ 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 @@ -685,6 +701,7 @@ Symfony is the result of the work of many people who made the code better - Abdul.Mohsen B. A. A - Benoît Burnichon - Malaney J. Hill + - Christian Flach (cmfcmf) - Cédric Girard (enk_) - Oriol Mangas Abellan (oriolman) - Sebastian Göttschkes (sgoettschkes) @@ -697,7 +714,6 @@ Symfony is the result of the work of many people who made the code better - Erika Heidi Reinaldo (erikaheidi) - Pierre Tachoire (krichprollsch) - Marc J. Schmidt (marcjs) - - Marc Morera (mmoreram) - Marco Jantke - Saem Ghani - Sebastian Utz @@ -708,6 +724,7 @@ Symfony is the result of the work of many people who made the code better - steveYeah - Samy Dindane (dinduks) - Keri Henare (kerihenare) + - Mickaël Andrieu (mickaelandrieu) - Cédric Lahouste (rapotor) - Samuel Vogel (samuelvogel) - Berat Doğan @@ -736,6 +753,7 @@ Symfony is the result of the work of many people who made the code better - Felds Liscia - James Halsall (jaitsu) - Maxime Veber (nek-) + - Sullivan SENECHAL - Tadcka - Beth Binkovitz - Romain Geissler @@ -754,6 +772,7 @@ Symfony is the result of the work of many people who made the code better - Timothy Anido (xanido) - Rick Prent - Martin Eckhardt + - Pieter Jordaan - Damien Tournoud - Jon Gotlin (jongotlin) - Michael Dowling (mtdowling) @@ -777,7 +796,6 @@ Symfony is the result of the work of many people who made the code better - Simon Neidhold - Kevin Dew - James Cowgill - - Jeremy Livingston (jeremylivingston) - Nicolas Schwartz (nicoschwartz) - Patrik Gmitter (patie) - Jonathan Gough @@ -798,12 +816,14 @@ Symfony is the result of the work of many people who made the code better - César Suárez (csuarez) - Nicolas Badey (nico-b) - Shane Preece (shane) + - wusuopu - povilas - Diego Agulló - Alexander Obuhovich - Alessandro Tagliapietra (alex88) - Gunnar Lium (gunnarlium) - Tiago Garcia (tiagojsag) + - Artiom - Bouke Haarsma - Martin Eckhardt - Denis Zunke @@ -836,7 +856,6 @@ Symfony is the result of the work of many people who made the code better - Michal Gebauer - Gleb Sidora - David Stone - - Javier Spagnoletti (phansys) - Pablo Maria Martelletti (pmartelletti) - Yassine Guedidi (yguedidi) - Luis Muñoz @@ -852,6 +871,7 @@ Symfony is the result of the work of many people who made the code better - Ionel Scutelnicu (ionelscutelnicu) - Johnny Peck (johnnypeck) - Nicolas Tallefourtané (nicolab) + - Botond Dani (picur) - Thierry Marianne (thierrymarianne) - Nick Stemerdink - jjanvier @@ -871,7 +891,6 @@ Symfony is the result of the work of many people who made the code better - Mike Meier - Warwick - Chris - - Daniel Wehner - efeen - Michał Dąbrowski (defrag) - Dominik Zogg (dominik.zogg) @@ -897,6 +916,7 @@ Symfony is the result of the work of many people who made the code better - Kevin Decherf - Jason Woods - dened + - Dmitry Korotovsky - Sam Ward - Walther Lalk - Adam @@ -905,16 +925,19 @@ Symfony is the result of the work of many people who made the code better - gedrox - dropfen - Andrey Chernykh + - Edvinas Klovas - Drew Butler - J Bruni - Alexey Prilipko - bertillon + - Luca Genuzio (genuzio) - Hans Nilsson (hansnilsson) - Ioana Hazsda (ioana-hazsda) - Jan Marek (janmarek) - Mark de Haan (markdehaan) - Dan Patrick (mdpatrick) - Rares Vlaseanu (raresvla) + - Sofiane HADDAG (sofhad) - tante kinast (tante) - Vincent LEFORT (vlefort) - Alexander Zogheb @@ -941,6 +964,7 @@ Symfony is the result of the work of many people who made the code better - Hein Zaw Htet™ - Ruben Kruiswijk - Michael J + - Berny Cantos - Alex Pods - timaschew - Ian Phillips @@ -964,10 +988,12 @@ Symfony is the result of the work of many people who made the code better - ddebree - Alex - Klaas Naaijkens + - Daniel González Cerviño - Rafał - Adria Lopez (adlpz) - Rosio (ben-rosio) - Simon Paarlberg (blamh) + - Jeroen Thora (bolle) - Masao Maeda (brtriver) - Darius Leskauskas (darles) - Dave Hulbert (dave1010) @@ -989,6 +1015,7 @@ Symfony is the result of the work of many people who made the code better - Muriel (metalmumu) - Michaël Perrin (michael.perrin) - Michael Pohlers (mick_the_big) + - Mantas Var (mvar) - Cayetano Soriano Gallego (neoshadybeat) - Pablo Monterde Perez (plebs) - Jimmy Leger (redpanda) @@ -1093,6 +1120,7 @@ Symfony is the result of the work of many people who made the code better - tirnanog06 - phc - ilyes kooli + - Matthias Althaus - Michaël VEROUX - sualko - Nicolas Roudaire @@ -1117,7 +1145,6 @@ Symfony is the result of the work of many people who made the code better - Fabien D. (fabd) - Sorin Gitlan (forapathy) - Yohan Giarelli (frequence-web) - - Massimiliano Arione (garak) - Gerry Vandermaesen (gerryvdm) - Ghazy Ben Ahmed (ghazy) - Arash Tabriziyan (ghost098) @@ -1141,6 +1168,7 @@ Symfony is the result of the work of many people who made the code better - Matt Drollette (mdrollette) - Adam Monsen (meonkeys) - Ala Eddine Khefifi (nayzo) + - emilienbouard (neime) - ollie harridge (ollietb) - Paweł Szczepanek (pauluz) - Christian López Espínola (penyaskito) @@ -1153,7 +1181,9 @@ Symfony is the result of the work of many people who made the code better - scourgen hung (scourgen) - Sebastian Busch (sebu) - André Filipe Gonçalves Neves (seven) + - Bruno Ziegler (sfcoder) - Andrea Giuliano (shark) + - Schuyler Jager (sjager) - Volker (skydiablo) - Julien Sanchez (sumbobyboys) - Guillermo Gisinger (t3chn0r) @@ -1163,8 +1193,6 @@ Symfony is the result of the work of many people who made the code better - Vincent (vincent1870) - Eugene Babushkin (warl) - Xavier Amado (xamado) - - Alexander Schwenn (xelaris) - - Dawid Pakuła (zulusx) - Florent Cailhol - szymek - craigmarvelley @@ -1181,6 +1209,7 @@ Symfony is the result of the work of many people who made the code better - Philipp Scheit - max - Mohamed Karnichi (amiral) + - Daniel Kolvik (dkvk) - Jeroen De Dauw (jeroendedauw) - Muharrem Demirci (mdemirci) - Evgeny Z (meze) diff --git a/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php b/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php index 06e6e90756..13971d82e0 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php +++ b/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php @@ -295,7 +295,7 @@ class Controller extends ContainerAware } /** - * Get a user from the Security Context. + * Get a user from the Security Token Storage. * * @return mixed * @@ -305,15 +305,16 @@ class Controller extends ContainerAware */ public function getUser() { - if (!$this->container->has('security.context')) { + if (!$this->container->has('security.token_storage')) { throw new \LogicException('The SecurityBundle is not registered in your application.'); } - if (null === $token = $this->container->get('security.context')->getToken()) { + if (null === $token = $this->container->get('security.token_storage')->getToken()) { return; } if (!is_object($user = $token->getUser())) { + // e.g. anonymous authentication return; } diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Controller/ControllerTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Controller/ControllerTest.php index 6ff09c348c..650316860c 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Controller/ControllerTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Controller/ControllerTest.php @@ -13,9 +13,13 @@ namespace Symfony\Bundle\FrameworkBundle\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Tests\TestCase; use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken; +use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; +use Symfony\Component\Security\Core\User\User; class ControllerTest extends TestCase { @@ -37,10 +41,99 @@ class ControllerTest extends TestCase $container->expects($this->at(0))->method('get')->will($this->returnValue($requestStack)); $container->expects($this->at(1))->method('get')->will($this->returnValue($kernel)); - $controller = new Controller(); + $controller = new TestController(); $controller->setContainer($container); $response = $controller->forward('a_controller'); $this->assertEquals('xml--fr', $response->getContent()); } + + public function testGetUser() + { + $user = new User('user', 'pass'); + $token = new UsernamePasswordToken($user, 'pass', 'default', array('ROLE_USER')); + + $controller = new TestController(); + $controller->setContainer($this->getContainerWithTokenStorage($token)); + + $this->assertSame($controller->getUser(), $user); + } + + public function testGetUserAnonymousUserConvertedToNull() + { + $token = new AnonymousToken('default', 'anon.'); + + $controller = new TestController(); + $controller->setContainer($this->getContainerWithTokenStorage($token)); + + $this->assertNull($controller->getUser()); + } + + public function testGetUserWithEmptyTokenStorage() + { + $controller = new TestController(); + $controller->setContainer($this->getContainerWithTokenStorage(null)); + + $this->assertNull($controller->getUser()); + } + + /** + * @expectedException \LogicException + * @expectedExceptionMessage The SecurityBundle is not registered in your application. + */ + public function testGetUserWithEmptyContainer() + { + $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface'); + $container + ->expects($this->once()) + ->method('has') + ->with('security.token_storage') + ->will($this->returnValue(false)); + + $controller = new TestController(); + $controller->setContainer($container); + + $controller->getUser(); + } + + /** + * @param $token + * @return ContainerInterface + */ + private function getContainerWithTokenStorage($token = null) + { + $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage'); + $tokenStorage + ->expects($this->once()) + ->method('getToken') + ->will($this->returnValue($token)); + + $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface'); + $container + ->expects($this->once()) + ->method('has') + ->with('security.token_storage') + ->will($this->returnValue(true)); + + $container + ->expects($this->once()) + ->method('get') + ->with('security.token_storage') + ->will($this->returnValue($tokenStorage)); + + return $container; + } +} + +class TestController extends Controller +{ + public function forward($controller, array $path = array(), array $query = array()) + { + return parent::forward($controller, $path, $query); + } + + public function getUser() + { + return parent::getUser(); + } } diff --git a/src/Symfony/Component/Form/CHANGELOG.md b/src/Symfony/Component/Form/CHANGELOG.md index cd5f619b25..4611542054 100644 --- a/src/Symfony/Component/Form/CHANGELOG.md +++ b/src/Symfony/Component/Form/CHANGELOG.md @@ -1,13 +1,20 @@ CHANGELOG ========= +2.6.2 +----- + +* Added back the `model_timezone` and `view_timezone` options for `TimeType`, `DateType` + and `BirthdayType` + 2.6.0 ----- * added "html5" option to Date, Time and DateTimeFormType to be able to enable/disable HTML5 input date when widget option is "single_text" * added "label_format" option with possible placeholders "%name%" and "%id%" - * [BC BREAK] drop support for model_timezone and view_timezone options in TimeType, DateType and BirthdayType + * [BC BREAK] drop support for model_timezone and view_timezone options in TimeType, DateType and BirthdayType, + update to 2.6.2 to get back support for these options 2.5.0 ------ diff --git a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php index 63d56d6899..4fd2cba56c 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php @@ -197,6 +197,8 @@ class TimeType extends AbstractType 'input' => 'datetime', 'with_minutes' => true, 'with_seconds' => false, + 'model_timezone' => null, + 'view_timezone' => null, 'empty_value' => $emptyValue, // deprecated 'placeholder' => $placeholder, 'html5' => true, diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php index 185656ee23..d8b3312b1f 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php @@ -60,6 +60,8 @@ class DateTypeTest extends TestCase public function testSubmitFromSingleTextDateTimeWithDefaultFormat() { $form = $this->factory->create('date', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'widget' => 'single_text', 'input' => 'datetime', )); @@ -74,6 +76,8 @@ class DateTypeTest extends TestCase { $form = $this->factory->create('date', null, array( 'format' => \IntlDateFormatter::MEDIUM, + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'widget' => 'single_text', 'input' => 'datetime', )); @@ -88,6 +92,8 @@ class DateTypeTest extends TestCase { $form = $this->factory->create('date', null, array( 'format' => \IntlDateFormatter::MEDIUM, + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'widget' => 'single_text', 'input' => 'string', )); @@ -102,6 +108,8 @@ class DateTypeTest extends TestCase { $form = $this->factory->create('date', null, array( 'format' => \IntlDateFormatter::MEDIUM, + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'widget' => 'single_text', 'input' => 'timestamp', )); @@ -118,6 +126,8 @@ class DateTypeTest extends TestCase { $form = $this->factory->create('date', null, array( 'format' => \IntlDateFormatter::MEDIUM, + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'widget' => 'single_text', 'input' => 'array', )); @@ -137,6 +147,8 @@ class DateTypeTest extends TestCase public function testSubmitFromText() { $form = $this->factory->create('date', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'widget' => 'text', )); @@ -157,6 +169,8 @@ class DateTypeTest extends TestCase public function testSubmitFromChoice() { $form = $this->factory->create('date', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'widget' => 'choice', )); @@ -177,6 +191,8 @@ class DateTypeTest extends TestCase public function testSubmitFromChoiceEmpty() { $form = $this->factory->create('date', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'widget' => 'choice', 'required' => false, )); @@ -196,6 +212,8 @@ class DateTypeTest extends TestCase public function testSubmitFromInputDateTimeDifferentPattern() { $form = $this->factory->create('date', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'format' => 'MM*yyyy*dd', 'widget' => 'single_text', 'input' => 'datetime', @@ -210,6 +228,8 @@ class DateTypeTest extends TestCase public function testSubmitFromInputStringDifferentPattern() { $form = $this->factory->create('date', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'format' => 'MM*yyyy*dd', 'widget' => 'single_text', 'input' => 'string', @@ -224,6 +244,8 @@ class DateTypeTest extends TestCase public function testSubmitFromInputTimestampDifferentPattern() { $form = $this->factory->create('date', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'format' => 'MM*yyyy*dd', 'widget' => 'single_text', 'input' => 'timestamp', @@ -240,6 +262,8 @@ class DateTypeTest extends TestCase public function testSubmitFromInputRawDifferentPattern() { $form = $this->factory->create('date', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'format' => 'MM*yyyy*dd', 'widget' => 'single_text', 'input' => 'array', @@ -358,10 +382,25 @@ class DateTypeTest extends TestCase public function testSetDataWithDifferentNegativeUTCTimezoneDateTime() { - date_default_timezone_set('Pacific/Tahiti'); - $form = $this->factory->create('date', null, array( 'format' => \IntlDateFormatter::MEDIUM, + 'model_timezone' => 'America/New_York', + 'view_timezone' => 'Pacific/Tahiti', + 'input' => 'string', + 'widget' => 'single_text', + )); + + $form->setData('2010-06-02'); + + $this->assertEquals('01.06.2010', $form->getViewData()); + } + + public function testSetDataWithDifferentTimezonesDateTime() + { + $form = $this->factory->create('date', null, array( + 'format' => \IntlDateFormatter::MEDIUM, + 'model_timezone' => 'America/New_York', + 'view_timezone' => 'Pacific/Tahiti', 'input' => 'datetime', 'widget' => 'single_text', )); @@ -371,7 +410,7 @@ class DateTypeTest extends TestCase $form->setData($dateTime); $this->assertDateTimeEquals($dateTime, $form->getData()); - $this->assertEquals('02.06.2010', $form->getViewData()); + $this->assertEquals('01.06.2010', $form->getViewData()); } public function testSetDataWithDifferentPositiveUTCTimezoneDateTime() @@ -520,6 +559,8 @@ class DateTypeTest extends TestCase $this->markTestIncomplete('Needs to be reimplemented using validators'); $form = $this->factory->create('date', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'widget' => 'single_text', )); @@ -533,6 +574,8 @@ class DateTypeTest extends TestCase $this->markTestIncomplete('Needs to be reimplemented using validators'); $form = $this->factory->create('date', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'widget' => 'choice', )); @@ -550,6 +593,8 @@ class DateTypeTest extends TestCase $this->markTestIncomplete('Needs to be reimplemented using validators'); $form = $this->factory->create('date', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'widget' => 'choice', )); @@ -567,6 +612,8 @@ class DateTypeTest extends TestCase $this->markTestIncomplete('Needs to be reimplemented using validators'); $form = $this->factory->create('date', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'widget' => 'choice', )); diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/Type/TimeTypeTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/Type/TimeTypeTest.php index 3ad3bd46f9..dfa8fbc5a1 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/Type/TimeTypeTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/Type/TimeTypeTest.php @@ -18,25 +18,18 @@ use Symfony\Component\Intl\Util\IntlTestHelper; class TimeTypeTest extends TestCase { - private $defaultTimezone; - protected function setUp() { IntlTestHelper::requireIntl($this); parent::setUp(); - - $this->defaultTimezone = date_default_timezone_get(); - } - - protected function tearDown() - { - date_default_timezone_set($this->defaultTimezone); } public function testSubmitDateTime() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'datetime', )); @@ -56,6 +49,8 @@ class TimeTypeTest extends TestCase public function testSubmitString() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'string', )); @@ -73,6 +68,8 @@ class TimeTypeTest extends TestCase public function testSubmitTimestamp() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'timestamp', )); @@ -92,6 +89,8 @@ class TimeTypeTest extends TestCase public function testSubmitArray() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'array', )); @@ -109,6 +108,8 @@ class TimeTypeTest extends TestCase public function testSubmitDatetimeSingleText() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'datetime', 'widget' => 'single_text', )); @@ -122,6 +123,8 @@ class TimeTypeTest extends TestCase public function testSubmitDatetimeSingleTextWithoutMinutes() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'datetime', 'widget' => 'single_text', 'with_minutes' => false, @@ -136,6 +139,8 @@ class TimeTypeTest extends TestCase public function testSubmitArraySingleText() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'array', 'widget' => 'single_text', )); @@ -154,6 +159,8 @@ class TimeTypeTest extends TestCase public function testSubmitArraySingleTextWithoutMinutes() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'array', 'widget' => 'single_text', 'with_minutes' => false, @@ -172,6 +179,8 @@ class TimeTypeTest extends TestCase public function testSubmitArraySingleTextWithSeconds() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'array', 'widget' => 'single_text', 'with_seconds' => true, @@ -192,6 +201,8 @@ class TimeTypeTest extends TestCase public function testSubmitStringSingleText() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'string', 'widget' => 'single_text', )); @@ -205,6 +216,8 @@ class TimeTypeTest extends TestCase public function testSubmitStringSingleTextWithoutMinutes() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'string', 'widget' => 'single_text', 'with_minutes' => false, @@ -219,6 +232,8 @@ class TimeTypeTest extends TestCase public function testSetDataWithoutMinutes() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'datetime', 'with_minutes' => false, )); @@ -231,6 +246,8 @@ class TimeTypeTest extends TestCase public function testSetDataWithSeconds() { $form = $this->factory->create('time', null, array( + 'model_timezone' => 'UTC', + 'view_timezone' => 'UTC', 'input' => 'datetime', 'with_seconds' => true, )); @@ -240,23 +257,53 @@ class TimeTypeTest extends TestCase $this->assertEquals(array('hour' => 3, 'minute' => 4, 'second' => 5), $form->getViewData()); } - public function testSetDataWithTimezoneDateTime() + public function testSetDataDifferentTimezones() { - date_default_timezone_set('Asia/Hong_Kong'); - $form = $this->factory->create('time', null, array( + 'model_timezone' => 'America/New_York', + 'view_timezone' => 'Asia/Hong_Kong', + 'input' => 'string', + 'with_seconds' => true, + )); + + $dateTime = new \DateTime('2013-01-01 12:04:05'); + $dateTime->setTimezone(new \DateTimeZone('America/New_York')); + + $form->setData($dateTime->format('H:i:s')); + + $outputTime = clone $dateTime; + $outputTime->setTimezone(new \DateTimeZone('Asia/Hong_Kong')); + + $displayedData = array( + 'hour' => (int) $outputTime->format('H'), + 'minute' => (int) $outputTime->format('i'), + 'second' => (int) $outputTime->format('s'), + ); + + $this->assertEquals($displayedData, $form->getViewData()); + } + + public function testSetDataDifferentTimezonesDateTime() + { + $form = $this->factory->create('time', null, array( + 'model_timezone' => 'America/New_York', + 'view_timezone' => 'Asia/Hong_Kong', 'input' => 'datetime', 'with_seconds' => true, )); - $dateTime = new \DateTime('12:04:05', new \DateTimeZone('America/New_York')); + $dateTime = new \DateTime('12:04:05'); + $dateTime->setTimezone(new \DateTimeZone('America/New_York')); $form->setData($dateTime); + $outputTime = clone $dateTime; + $outputTime->setTimezone(new \DateTimeZone('Asia/Hong_Kong')); + $displayedData = array( - 'hour' => 12, - 'minute' => 4, - 'second' => 5, + 'hour' => (int) $outputTime->format('H'), + 'minute' => (int) $outputTime->format('i'), + 'second' => (int) $outputTime->format('s'), ); $this->assertDateTimeEquals($dateTime, $form->getData()); diff --git a/src/Symfony/Component/Form/Tests/ResolvedFormTypeTest.php b/src/Symfony/Component/Form/Tests/ResolvedFormTypeTest.php index ebb83a8333..2f3fe61020 100644 --- a/src/Symfony/Component/Form/Tests/ResolvedFormTypeTest.php +++ b/src/Symfony/Component/Form/Tests/ResolvedFormTypeTest.php @@ -100,10 +100,6 @@ class ResolvedFormTypeTest extends \PHPUnit_Framework_TestCase public function testCreateBuilder() { - if (version_compare(\PHPUnit_Runner_Version::id(), '3.7', '<')) { - $this->markTestSkipped('This test requires PHPUnit 3.7.'); - } - $givenOptions = array('a' => 'a_custom', 'c' => 'c_custom'); $resolvedOptions = array('a' => 'a_custom', 'b' => 'b_default', 'c' => 'c_custom', 'd' => 'd_default'); $optionsResolver = $this->getMock('Symfony\Component\OptionsResolver\OptionsResolverInterface'); @@ -132,10 +128,6 @@ class ResolvedFormTypeTest extends \PHPUnit_Framework_TestCase public function testCreateBuilderWithDataClassOption() { - if (version_compare(\PHPUnit_Runner_Version::id(), '3.7', '<')) { - $this->markTestSkipped('This test requires PHPUnit 3.7.'); - } - $givenOptions = array('data_class' => 'Foo'); $resolvedOptions = array('data_class' => '\stdClass'); $optionsResolver = $this->getMock('Symfony\Component\OptionsResolver\OptionsResolverInterface'); @@ -164,10 +156,6 @@ class ResolvedFormTypeTest extends \PHPUnit_Framework_TestCase public function testBuildForm() { - if (version_compare(\PHPUnit_Runner_Version::id(), '3.7', '<')) { - $this->markTestSkipped('This test requires PHPUnit 3.7.'); - } - $test = $this; $i = 0; diff --git a/src/Symfony/Component/Process/Pipes/WindowsPipes.php b/src/Symfony/Component/Process/Pipes/WindowsPipes.php index ecdf50eee2..86cde67d02 100644 --- a/src/Symfony/Component/Process/Pipes/WindowsPipes.php +++ b/src/Symfony/Component/Process/Pipes/WindowsPipes.php @@ -230,7 +230,7 @@ class WindowsPipes extends AbstractPipes if (false === $data || (true === $close && feof($r['input']) && '' === $data)) { // no more data to read on input resource // use an empty buffer in the next reads - unset($this->input); + $this->input = null; } } diff --git a/src/Symfony/Component/Security/Http/Session/SessionAuthenticationStrategy.php b/src/Symfony/Component/Security/Http/Session/SessionAuthenticationStrategy.php index dd258a086f..ccfa6ba67a 100644 --- a/src/Symfony/Component/Security/Http/Session/SessionAuthenticationStrategy.php +++ b/src/Symfony/Component/Security/Http/Session/SessionAuthenticationStrategy.php @@ -47,7 +47,10 @@ class SessionAuthenticationStrategy implements SessionAuthenticationStrategyInte return; case self::MIGRATE: - $request->getSession()->migrate(true); + // Destroying the old session is broken in php 5.4.0 - 5.4.10 + // See php bug #63379 + $destroy = PHP_VERSION_ID < 50400 || PHP_VERSION_ID >= 50411; + $request->getSession()->migrate($destroy); return; diff --git a/src/Symfony/Component/Security/Http/Tests/Session/SessionAuthenticationStrategyTest.php b/src/Symfony/Component/Security/Http/Tests/Session/SessionAuthenticationStrategyTest.php index a1f960fde4..4aef4b203b 100644 --- a/src/Symfony/Component/Security/Http/Tests/Session/SessionAuthenticationStrategyTest.php +++ b/src/Symfony/Component/Security/Http/Tests/Session/SessionAuthenticationStrategyTest.php @@ -39,6 +39,10 @@ class SessionAuthenticationStrategyTest extends \PHPUnit_Framework_TestCase public function testSessionIsMigrated() { + if (PHP_VERSION_ID >= 50400 && PHP_VERSION_ID < 50411) { + $this->markTestSkipped('We cannot destroy the old session on PHP 5.4.0 - 5.4.10.'); + } + $session = $this->getMock('Symfony\Component\HttpFoundation\Session\SessionInterface'); $session->expects($this->once())->method('migrate')->with($this->equalTo(true)); @@ -46,6 +50,19 @@ class SessionAuthenticationStrategyTest extends \PHPUnit_Framework_TestCase $strategy->onAuthentication($this->getRequest($session), $this->getToken()); } + public function testSessionIsMigratedWithPhp54Workaround() + { + if (PHP_VERSION_ID < 50400 || PHP_VERSION_ID >= 50411) { + $this->markTestSkipped('This PHP version is not affected.'); + } + + $session = $this->getMock('Symfony\Component\HttpFoundation\Session\SessionInterface'); + $session->expects($this->once())->method('migrate')->with($this->equalTo(false)); + + $strategy = new SessionAuthenticationStrategy(SessionAuthenticationStrategy::MIGRATE); + $strategy->onAuthentication($this->getRequest($session), $this->getToken()); + } + public function testSessionIsInvalidated() { $session = $this->getMock('Symfony\Component\HttpFoundation\Session\SessionInterface');