Merge branch '2.2'

* 2.2: (22 commits)
  fixed doc references (closes #7515)
  fixed doc references (closes #7515)
  On OS X, sys_get_tmp_dir() returns /var/private/..., which really is below /private/var.
  Doctrine cannot handle bare random non-utf8 strings
  small changes
  [SecurityBundle] Fixed configuration exemple
  idAsIndex should be true with a smallint or bigint id field.
  [PropertyAccess] Remove trailing periods from doc blocks
  Fix param docs for PropertyAccessor read method
  Fixed long multibyte parameter logging in DbalLogger:startQuery
  Keep the file extension in the temporary copy and test that it exists (closes #7482)
  bumped Symfony version to 2.1.10-DEV
  [Validator][translation][japanese]replaced period to japanese one [Validator][translation][japanese]fixed japanese translation to more practical one [Validator][translation][japanese]fixed message ordering to be consistent with other languages [Validator][translation][japanese]added new validation messages in japanese translation
  updated VERSION for 2.1.9
  update CONTRIBUTORS for 2.1.9
  updated CHANGELOG for 2.1.9
  [Security] fixed wrong interface
  Remove already defined arguments
  Add missing use
  [FrameworkBundle] Reuse definition variable in FormPass
  ...

Conflicts:
	src/Symfony/Bridge/Doctrine/Logger/DbalLogger.php
	src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/config.html.twig
This commit is contained in:
Fabien Potencier 2013-04-01 10:07:30 +02:00
commit e1c741db9c
30 changed files with 392 additions and 158 deletions

View File

@ -7,6 +7,41 @@ in 2.1 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 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.1.0...v2.1.1 To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v2.1.0...v2.1.1
* 2.1.9 (2013-03-26)
* 9875c4b: Added '@@' escaping strategy for YamlFileLoader and YamlDumper
* bbcdfe2: [Yaml] fixed bugs with folded scalar parsing
* 5afea04: [Form] made DefaultCsrfProvider using session_status() when available
* c928ddc: [HttpFoudantion] fixed Request::getPreferredLanguage()
* e6b7515: [DomCrawler] added support for query string with slash
* 17dc2ff: [HttpRequest] fixes Request::getLanguages() bug
* e51432a: sub-requests are now created with the same class as their parent
* ef53456: [DoctrineBridge] Avoids blob values to be logged by doctrine
* 6575df6: [Security] use current request attributes to generate redirect url?
* 7216cb0: [Validator] fix showing wrong max file size for upload errors
* c423f16: [2.1][TwigBridge] Fixes Issue #7342 in TwigBridge
* 7d87ecd: [FrameworkBundle] fixed cahe:clear command's warmup
* fe4cc24: [TwigBridge] fixed fixed scope & trans_default_domain node visitor
* fc47589: [BrowserKit] added ability to ignored malformed set-cookie header
* 5bc30bb: [Translation] added xliff loader/dumper with resname support
* 7241be9: [Finder] fixed a potential issue on Solaris where INF value is wrong (refs #7269)
* 1d3da29: [FrameworkBundle] avoids cache:clear to break if new/old folders already exist
* b9cdb9a: [HttpKernel] Fixed possible profiler token collision (closes #7272, closes #7171)
* d1f5d25: [FrameworkBundle] Fixes invalid serialized objects in cache
* c82c754: RedisProfilerStorage wrong db-number/index-number selected
* e86fefa: Unset loading[$id] in ContainerBuilder on exception
* 73bead7: [ClassLoader] made DebugClassLoader idempotent
* a4ec677: [DomCrawler] Fix relative path handling in links
* 6681df0: [Console] fixed StringInput binding
* 5b19c89: [Console] fixed unparsed StringInput tokens
* bae83c7: [TwigBridge] fixed trans twig extractor
* 8f8ba38: [DomCrawler] fix handling of schemes by Link::getUri()
* 83382bc: [TwigBridge] fixed the translator extractor that were not trimming the text in trans tags (closes #7056)
* b1ea8e5: Fixed handling absent href attribute in base tag
* 8d9cd42: Routing issue with installation in a sub-directory ref: https://github.com/symfony/symfony/issues/7129
* 0690709: added a DebuClassLoader::findFile() method to make the wrapping less invasive
* 635b1fc: StringInput resets the given options.
* 2.1.8 (2013-02-23) * 2.1.8 (2013-02-23)
* b2080c4: [HttpFoundation] Remove Cache-Control when using https download via IE<9 (fixes #6750) * b2080c4: [HttpFoundation] Remove Cache-Control when using https download via IE<9 (fixes #6750)

View File

@ -20,10 +20,10 @@ Symfony2 is the result of the work of many people who made the code better
- Joseph Bielawski (stloyd) - Joseph Bielawski (stloyd)
- Igor Wiedler (igorw) - Igor Wiedler (igorw)
- Benjamin Eberlei (beberlei) - Benjamin Eberlei (beberlei)
- Jean-François Simon (jfsimon)
- Hugo Hamon (hhamon) - Hugo Hamon (hhamon)
- Eriksen Costa (eriksencosta) - Eriksen Costa (eriksencosta)
- Martin Hasoň (hason) - Martin Hasoň (hason)
- Jean-François Simon (jfsimon)
- Jonathan Wage (jwage) - Jonathan Wage (jwage)
- William Durand (couac) - William Durand (couac)
- Alexandre Salomé (alexandresalome) - Alexandre Salomé (alexandresalome)
@ -40,11 +40,11 @@ Symfony2 is the result of the work of many people who made the code better
- Arnaud Le Blanc (arnaud-lb) - Arnaud Le Blanc (arnaud-lb)
- Florin Patan (florinpatan) - Florin Patan (florinpatan)
- Eric Clemmons (ericclemmons) - Eric Clemmons (ericclemmons)
- Bilal Amarni (bamarni)
- Henrik Westphal (snc) - Henrik Westphal (snc)
- Romain Neutron (romain) - Romain Neutron (romain)
- Deni - Deni
- Dariusz Górecki (canni) - Dariusz Górecki (canni)
- Bilal Amarni (bamarni)
- Marc Weistroff (futurecat) - Marc Weistroff (futurecat)
- Jordan Alliot (jalliot) - Jordan Alliot (jalliot)
- Arnout Boks (aboks) - Arnout Boks (aboks)
@ -54,25 +54,25 @@ Symfony2 is the result of the work of many people who made the code better
- Andrej Hudec (pulzarraider) - Andrej Hudec (pulzarraider)
- Brikou Carré (brikou) - Brikou Carré (brikou)
- John Wards (johnwards) - John Wards (johnwards)
- Antoine Hérault (herzult)
- Fran Moreno (franmomu) - Fran Moreno (franmomu)
- Antoine Hérault (herzult)
- Daniel Holmes (dholmes) - Daniel Holmes (dholmes)
- Bart van den Burg (burgov)
- Christian Raue
- Tim Nagel (merk) - Tim Nagel (merk)
- Włodzimierz Gajda (gajdaw) - Włodzimierz Gajda (gajdaw)
- Bart van den Burg (burgov)
- Christian Raue
- Michal Piotrowski (eventhorizon) - Michal Piotrowski (eventhorizon)
- Toni Uebernickel (havvg)
- Colin Frei - Colin Frei
- lenar - lenar
- Toni Uebernickel (havvg)
- Fabien Pennequin (fabienpennequin) - Fabien Pennequin (fabienpennequin)
- excelwebzone - excelwebzone
- woodspire - woodspire
- Michel Weimerskirch (mweimerskirch)
- Grégoire Pineau (lyrixx) - Grégoire Pineau (lyrixx)
- Mario A. Alvarez Garcia (nomack84) - Mario A. Alvarez Garcia (nomack84)
- Douglas Greenshields (shieldo) - Douglas Greenshields (shieldo)
- Kevin Bond (kbond) - Kevin Bond (kbond)
- Michel Weimerskirch (mweimerskirch)
- Richard Miller (mr_r_miller) - Richard Miller (mr_r_miller)
- Jacob Dreesen (jdreesen) - Jacob Dreesen (jdreesen)
- Richard Shank (iampersistent) - Richard Shank (iampersistent)
@ -81,6 +81,7 @@ Symfony2 is the result of the work of many people who made the code better
- Robert Schönthal (digitalkaoz) - Robert Schönthal (digitalkaoz)
- Felix Labrecque - Felix Labrecque
- Michał Pipa (michal.pipa) - Michał Pipa (michal.pipa)
- Gordon Franke (gimler)
- Daniel Gomes (danielcsgomes) - Daniel Gomes (danielcsgomes)
- Gábor Egyed (1ed) - Gábor Egyed (1ed)
- Tigran Azatyan (tigranazatyan) - Tigran Azatyan (tigranazatyan)
@ -89,7 +90,6 @@ Symfony2 is the result of the work of many people who made the code better
- Arnaud Kleinpeter (nanocom) - Arnaud Kleinpeter (nanocom)
- David Buchmann (dbu) - David Buchmann (dbu)
- Jonathan Ingram (jonathaningram) - Jonathan Ingram (jonathaningram)
- Gordon Franke (gimler)
- Sebastiaan Stok (sstok) - Sebastiaan Stok (sstok)
- Javier Eguiluz (javier.eguiluz) - Javier Eguiluz (javier.eguiluz)
- Matthieu Ouellette-Vachon (maoueh) - Matthieu Ouellette-Vachon (maoueh)
@ -132,6 +132,7 @@ Symfony2 is the result of the work of many people who made the code better
- Alif Rachmawadi - Alif Rachmawadi
- boombatower - boombatower
- Florian Klein (docteurklein) - Florian Klein (docteurklein)
- Adrien Brault (adrienbrault)
- jules boussekeyt (gordonslondon) - jules boussekeyt (gordonslondon)
- Jan Sorgalla (jsor) - Jan Sorgalla (jsor)
- jdhoek - jdhoek
@ -148,7 +149,6 @@ Symfony2 is the result of the work of many people who made the code better
- Eric GELOEN (gelo) - Eric GELOEN (gelo)
- Sebastian Bergmann - Sebastian Bergmann
- arjen - arjen
- Adrien Brault (adrienbrault)
- sun (sun) - sun (sun)
- Manuel Kiessling (manuelkiessling) - Manuel Kiessling (manuelkiessling)
- Sergey Linnik - Sergey Linnik
@ -171,8 +171,10 @@ Symfony2 is the result of the work of many people who made the code better
- Jeanmonod David (jeanmonod) - Jeanmonod David (jeanmonod)
- Thomas Lallement (raziel057) - Thomas Lallement (raziel057)
- Niklas Fiekas - Niklas Fiekas
- Francesco Levorato
- Tom Van Looy (tvlooy) - Tom Van Looy (tvlooy)
- Brouznouf - Brouznouf
- Peter Kruithof (pkruithof)
- Greg Thornton (xdissent) - Greg Thornton (xdissent)
- Lars Strojny - Lars Strojny
- Terje Bråten - Terje Bråten
@ -194,13 +196,17 @@ Symfony2 is the result of the work of many people who made the code better
- Christophe L. (christophelau) - Christophe L. (christophelau)
- Michael Ridgway - Michael Ridgway
- Pavel Campr (pcampr) - Pavel Campr (pcampr)
- Emanuele Gaspari (inmarelibero)
- Brian King - Brian King
- Ricard Clau (ricardclau) - Ricard Clau (ricardclau)
- Jan Schumann - Jan Schumann
- Erin Millard
- Olivier Dolbeau (odolbeau) - Olivier Dolbeau (odolbeau)
- Konstantin Myakshin (koc) - Konstantin Myakshin (koc)
- Elnur Abdurrakhimov (elnur)
- Michele Orselli (orso) - Michele Orselli (orso)
- Asier Illarramendi (doup) - Asier Illarramendi (doup)
- Javier López (loalf)
- Chris Heng (gigablah) - Chris Heng (gigablah)
- Christoph Mewes (xrstf) - Christoph Mewes (xrstf)
- Jonas Flodén (flojon) - Jonas Flodén (flojon)
@ -226,7 +232,6 @@ Symfony2 is the result of the work of many people who made the code better
- mcben - mcben
- Maks Slesarenko - Maks Slesarenko
- Vicent Soria Durá (vicentgodella) - Vicent Soria Durá (vicentgodella)
- Peter Kruithof (pkruithof)
- Erik Trapman (eriktrapman) - Erik Trapman (eriktrapman)
- De Cock Xavier (xdecock) - De Cock Xavier (xdecock)
- Manuel Reinhard (sprain) - Manuel Reinhard (sprain)
@ -253,15 +258,14 @@ Symfony2 is the result of the work of many people who made the code better
- Lenar Lõhmus - Lenar Lõhmus
- Zach Badgett (zachbadgett) - Zach Badgett (zachbadgett)
- Aurélien Fredouelle - Aurélien Fredouelle
- Francesco Levorato
- Karoly Negyesi (chx) - Karoly Negyesi (chx)
- janschoenherr
- Thomas Tourlourat (armetiz) - Thomas Tourlourat (armetiz)
- jamogon - jamogon
- Geoffrey Tran (geoff) - Geoffrey Tran (geoff)
- Florian Rey (nervo) - Florian Rey (nervo)
- Maks - Maks
- Christian Schaefer (caefer) - Christian Schaefer (caefer)
- Emanuele Gaspari (inmarelibero)
- Elliot Anderson (elliot) - Elliot Anderson (elliot)
- Patrick Kaufmann - Patrick Kaufmann
- Ben Ramsey (ramsey) - Ben Ramsey (ramsey)
@ -272,7 +276,6 @@ Symfony2 is the result of the work of many people who made the code better
- aubx - aubx
- Max Rath (drak3) - Max Rath (drak3)
- Ruben Gonzalez (rubenrua) - Ruben Gonzalez (rubenrua)
- Elnur Abdurrakhimov (elnur)
- Sinan Eldem - Sinan Eldem
- DerManoMann - DerManoMann
- Nahuel Cuesta (ncuesta) - Nahuel Cuesta (ncuesta)
@ -280,7 +283,6 @@ Symfony2 is the result of the work of many people who made the code better
- Roumen Damianoff (roumen) - Roumen Damianoff (roumen)
- Pierre du Plessis (pierredup) - Pierre du Plessis (pierredup)
- Åsmund Garfors - Åsmund Garfors
- Erin Millard
- Jeremy David (jeremy.david) - Jeremy David (jeremy.david)
- Tobias Sjösten (tobiassjosten) - Tobias Sjösten (tobiassjosten)
- Dustin Dobervich (dustin10) - Dustin Dobervich (dustin10)
@ -293,12 +295,15 @@ Symfony2 is the result of the work of many people who made the code better
- yktd26 - yktd26
- Jakub Kucharovic - Jakub Kucharovic
- umpirski - umpirski
- Dmitrii Chekaliuk
- cedric lombardot (cedriclombardot) - cedric lombardot (cedriclombardot)
- John Kary (johnkary) - John Kary (johnkary)
- Hossein Bukhamsin - Hossein Bukhamsin
- Pierre-Yves LEBECQ (pylebecq) - Pierre-Yves LEBECQ (pylebecq)
- Fabrice Bernhard (fabriceb) - Fabrice Bernhard (fabriceb)
- Oleg Zinchenko (cystbear)
- Johannes Klauss (cloppy) - Johannes Klauss (cloppy)
- fzerorubigd
- Mark Sonnabaum - Mark Sonnabaum
- develop - develop
- Atsuhiro KUBO (iteman) - Atsuhiro KUBO (iteman)
@ -382,7 +387,6 @@ Symfony2 is the result of the work of many people who made the code better
- Miha Vrhovnik - Miha Vrhovnik
- Moritz Borgmann - Moritz Borgmann
- Daniel Cestari - Daniel Cestari
- Javier López (loalf)
- Magnus Nordlander (magnusnordlander) - Magnus Nordlander (magnusnordlander)
- Adam Monsen (meonkeys) - Adam Monsen (meonkeys)
- LOUARDI Abdeltif (ouardisoft) - LOUARDI Abdeltif (ouardisoft)
@ -405,6 +409,7 @@ Symfony2 is the result of the work of many people who made the code better
- Irmantas Šiupšinskas (irmantas) - Irmantas Šiupšinskas (irmantas)
- dantleech - dantleech
- Tero Alén (tero) - Tero Alén (tero)
- Artem (digi)
- Vadim Tyukov (vatson) - Vadim Tyukov (vatson)
- Sortex - Sortex
- arjenjb - arjenjb
@ -415,15 +420,16 @@ Symfony2 is the result of the work of many people who made the code better
- Sébastien Lavoie - Sébastien Lavoie
- Per Sandström (per) - Per Sandström (per)
- Ville Mattila - Ville Mattila
- Marcos Quesada (marcos_quesada)
- Robert Kiss (kepten) - Robert Kiss (kepten)
- Vitaliy Tverdokhlib (vitaliytv) - Vitaliy Tverdokhlib (vitaliytv)
- Martijn Evers - Martijn Evers
- Sergii Smertin (nfx) - Sergii Smertin (nfx)
- Eddie Jaoude
- Nerijus Arlauskas - Nerijus Arlauskas
- Haritz Iturbe (hizai) - Haritz Iturbe (hizai)
- SPolischook - SPolischook
- Diego Sapriza - Diego Sapriza
- fzerorubigd
- Joan Cruz - Joan Cruz
- Antoine Corcy - Antoine Corcy
- inspiran - inspiran
@ -433,11 +439,11 @@ Symfony2 is the result of the work of many people who made the code better
- Alex Demchenko (pilot) - Alex Demchenko (pilot)
- Tomasz Kowalczyk (thunderer) - Tomasz Kowalczyk (thunderer)
- Vincent AUBERT (vincent) - Vincent AUBERT (vincent)
- Benoit Garret
- DerManoMann - DerManoMann
- Jochen Bayer (jocl) - Jochen Bayer (jocl)
- Jeremy Bush - Jeremy Bush
- Evan Villemez - Evan Villemez
- Dmitrii Chekaliuk
- Davide Borsatto (davide.borsatto) - Davide Borsatto (davide.borsatto)
- kaiwa - kaiwa
- Albert Ganiev (helios-ag) - Albert Ganiev (helios-ag)
@ -468,6 +474,7 @@ Symfony2 is the result of the work of many people who made the code better
- Janusz Jablonski - Janusz Jablonski
- George Giannoulopoulos - George Giannoulopoulos
- Ilya Biryukov - Ilya Biryukov
- Lance McNearney
- Alberto Pirovano (geezmo) - Alberto Pirovano (geezmo)
- Xavier Briand (xavierbriand) - Xavier Briand (xavierbriand)
- Evan Kaufman - Evan Kaufman
@ -490,10 +497,14 @@ Symfony2 is the result of the work of many people who made the code better
- Simon Neidhold - Simon Neidhold
- Kevin Dew - Kevin Dew
- James Cowgill - James Cowgill
- Thomas Ploch (tploch)
- Benjamin Bender
- Konrad Mohrfeldt - Konrad Mohrfeldt
- Benoit Lévêque (benoit_leveque)
- Mephistofeles - Mephistofeles
- pscheit - pscheit
- Nicolas Badey (nico-b) - Nicolas Badey (nico-b)
- Gunnar Lium
- povilas - povilas
- Lars Strojny - Lars Strojny
- Bouke Haarsma - Bouke Haarsma
@ -504,8 +515,10 @@ Symfony2 is the result of the work of many people who made the code better
- Francisco Facioni (fran6co) - Francisco Facioni (fran6co)
- Paweł Wacławczyk (pwc) - Paweł Wacławczyk (pwc)
- Eric Caron - Eric Caron
- 2manypeople
- Thomas Bibb - Thomas Bibb
- Josef Cech - Josef Cech
- Ait Boudad Abdellatif (aitboudad)
- Andrey Esaulov (andremaha) - Andrey Esaulov (andremaha)
- hicham ELGUAROUANI (hiiimoo) - hicham ELGUAROUANI (hiiimoo)
- Stefan Koopmanschap (skoop) - Stefan Koopmanschap (skoop)
@ -514,7 +527,6 @@ Symfony2 is the result of the work of many people who made the code better
- Chris Tickner (tickner) - Chris Tickner (tickner)
- Luis Muñoz - Luis Muñoz
- Thomas Chmielowiec - Thomas Chmielowiec
- Oleg Zinchenko
- Christoph Nissle (derstoffel) - Christoph Nissle (derstoffel)
- Xavier HAUSHERR - Xavier HAUSHERR
- Benjamin Zikarsky - Benjamin Zikarsky
@ -538,6 +550,7 @@ Symfony2 is the result of the work of many people who made the code better
- Artyom Protaskin - Artyom Protaskin
- Nathanael d. Noblet - Nathanael d. Noblet
- helmer - helmer
- Julien Moulin (lizjulien)
- devel - devel
- gedrox - gedrox
- hirocaster - hirocaster
@ -569,6 +582,7 @@ Symfony2 is the result of the work of many people who made the code better
- Haritz - Haritz
- Grummfy - Grummfy
- Rowan Manning - Rowan Manning
- Kevin Herrera
- David Windell - David Windell
- Gabriel Birke - Gabriel Birke
- Alan Chen - Alan Chen
@ -595,6 +609,7 @@ Symfony2 is the result of the work of many people who made the code better
- Jorge Martin (jorgemartind) - Jorge Martin (jorgemartind)
- giulio de donato (liuggio) - giulio de donato (liuggio)
- Matthew Davis (mdavis1982) - Matthew Davis (mdavis1982)
- Muriel Lusseau (metalmumu)
- Matthias Pigulla (mpdude) - Matthias Pigulla (mpdude)
- Pablo Monterde Perez (plebs) - Pablo Monterde Perez (plebs)
- Jimmy Leger (redpanda) - Jimmy Leger (redpanda)
@ -650,6 +665,7 @@ Symfony2 is the result of the work of many people who made the code better
- kwiateusz - kwiateusz
- David Soria Parra - David Soria Parra
- Sergiy Sokolenko - Sergiy Sokolenko
- dinitrol
- Penny Leach - Penny Leach
- Gábor Fási - Gábor Fási
- oscartv - oscartv
@ -663,6 +679,8 @@ Symfony2 is the result of the work of many people who made the code better
- dorkitude - dorkitude
- tirnanog06 - tirnanog06
- Besnik Br - Besnik Br
- sualko
- Nicolas Roudaire
- Alex Olmos (alexolmos) - Alex Olmos (alexolmos)
- Juan Ases García (ases) - Juan Ases García (ases)
- Bernd Matzner (bmatzner) - Bernd Matzner (bmatzner)
@ -693,6 +711,7 @@ Symfony2 is the result of the work of many people who made the code better
- Alex Carol (picard89) - Alex Carol (picard89)
- Daniel Perez Pinazo (pitiflautico) - Daniel Perez Pinazo (pitiflautico)
- Ruud Kamphuis (ruudk) - Ruud Kamphuis (ruudk)
- Sarah Khalil (saro0h)
- Sebastian Busch (sebu) - Sebastian Busch (sebu)
- Simon Terrien (sterrien) - Simon Terrien (sterrien)
- Markus Tacker (tacker) - Markus Tacker (tacker)

View File

@ -113,7 +113,7 @@ class EntityChoiceList extends ObjectChoiceList
$this->idField = $identifier[0]; $this->idField = $identifier[0];
$this->idAsValue = true; $this->idAsValue = true;
if ('integer' === $this->classMetadata->getTypeOfField($this->idField)) { if (in_array($this->classMetadata->getTypeOfField($this->idField), array('integer', 'smallint', 'bigint'))) {
$this->idAsIndex = true; $this->idAsIndex = true;
} }
} }

View File

@ -61,10 +61,17 @@ class DbalLogger implements SQLLogger
continue; continue;
} }
// too long string must be shorten // detect if the too long string must be shorten
if (self::MAX_STRING_LENGTH < strlen($params[$index])) { if (function_exists('mb_detect_encoding') && false !== $encoding = mb_detect_encoding($params[$index])) {
$params[$index] = substr($params[$index], 0, self::MAX_STRING_LENGTH - 6).' [...]'; if (self::MAX_STRING_LENGTH < mb_strlen($params[$index], $encoding)) {
continue; $params[$index] = mb_substr($params[$index], 0, self::MAX_STRING_LENGTH - 6, $encoding).' [...]';
continue;
}
} else {
if (self::MAX_STRING_LENGTH < strlen($params[$index])) {
$params[$index] = substr($params[$index], 0, self::MAX_STRING_LENGTH - 6).' [...]';
continue;
}
} }
} }
} }

View File

@ -81,8 +81,10 @@ class DbalLoggerTest extends \PHPUnit_Framework_TestCase
->getMock() ->getMock()
; ;
$shortString = str_repeat('a', DbalLogger::MAX_STRING_LENGTH); $testString = 'abc';
$longString = str_repeat('a', DbalLogger::MAX_STRING_LENGTH + 1);
$shortString = str_pad('', DbalLogger::MAX_STRING_LENGTH, $testString);
$longString = str_pad('', DbalLogger::MAX_STRING_LENGTH+1, $testString);
$dbalLogger $dbalLogger
->expects($this->once()) ->expects($this->once())
@ -95,4 +97,43 @@ class DbalLoggerTest extends \PHPUnit_Framework_TestCase
'long' => $longString, 'long' => $longString,
)); ));
} }
public function testLogUTF8LongString()
{
if (!function_exists('mb_detect_encoding')) {
$this->markTestSkipped('Testing log shortening of utf8 charsets requires the mb_detect_encoding() function.');
}
$logger = $this->getMock('Symfony\\Component\\HttpKernel\\Log\\LoggerInterface');
$dbalLogger = $this
->getMockBuilder('Symfony\\Bridge\\Doctrine\\Logger\\DbalLogger')
->setConstructorArgs(array($logger, null))
->setMethods(array('log'))
->getMock()
;
$testStringArray = array('é', 'á', 'ű', 'ő', 'ú', 'ö', 'ü', 'ó', 'í');
$testStringCount = count($testStringArray);
$shortString = '';
$longString = '';
for($i=1; $i<=DbalLogger::MAX_STRING_LENGTH; $i++) {
$shortString .= $testStringArray[$i % $testStringCount];
$longString .= $testStringArray[$i % $testStringCount];
}
$longString .= $testStringArray[$i % $testStringCount];
$dbalLogger
->expects($this->once())
->method('log')
->with('SQL', array('short' => $shortString, 'long' => mb_substr($longString, 0, DbalLogger::MAX_STRING_LENGTH - 6, mb_detect_encoding($longString)).' [...]'))
;
$dbalLogger->startQuery('SQL', array(
'short' => $shortString,
'long' => $longString,
));
}
} }

View File

@ -28,6 +28,8 @@ class FormPass implements CompilerPassInterface
return; return;
} }
$definition = $container->getDefinition('form.extension');
// Builds an array with service IDs as keys and tag aliases as values // Builds an array with service IDs as keys and tag aliases as values
$types = array(); $types = array();
@ -40,7 +42,7 @@ class FormPass implements CompilerPassInterface
$types[$alias] = $serviceId; $types[$alias] = $serviceId;
} }
$container->getDefinition('form.extension')->replaceArgument(1, $types); $definition->replaceArgument(1, $types);
$typeExtensions = array(); $typeExtensions = array();
@ -52,11 +54,11 @@ class FormPass implements CompilerPassInterface
$typeExtensions[$alias][] = $serviceId; $typeExtensions[$alias][] = $serviceId;
} }
$container->getDefinition('form.extension')->replaceArgument(2, $typeExtensions); $definition->replaceArgument(2, $typeExtensions);
// Find all services annotated with "form.type_guesser" // Find all services annotated with "form.type_guesser"
$guessers = array_keys($container->findTaggedServiceIds('form.type_guesser')); $guessers = array_keys($container->findTaggedServiceIds('form.type_guesser'));
$container->getDefinition('form.extension')->replaceArgument(3, $guessers); $definition->replaceArgument(3, $guessers);
} }
} }

View File

@ -301,8 +301,7 @@ class MainConfiguration implements ConfigurationInterface
->children() ->children()
->arrayNode('providers') ->arrayNode('providers')
->example(array( ->example(array(
'memory' => array( 'my_memory_provider' => array(
'name' => 'memory',
'memory' => array( 'memory' => array(
'users' => array( 'users' => array(
'foo' => array('password' => 'foo', 'roles' => 'ROLE_USER'), 'foo' => array('password' => 'foo', 'roles' => 'ROLE_USER'),
@ -310,7 +309,7 @@ class MainConfiguration implements ConfigurationInterface
), ),
) )
), ),
'entity' => array('entity' => array('class' => 'SecurityBundle:User', 'property' => 'username')) 'my_entity_provider' => array('entity' => array('class' => 'SecurityBundle:User', 'property' => 'username'))
)) ))
->disallowNewKeysInSubsequentConfigs() ->disallowNewKeysInSubsequentConfigs()
->isRequired() ->isRequired()

View File

@ -45,11 +45,6 @@
class="%security.authentication.rememberme.services.persistent.class%" class="%security.authentication.rememberme.services.persistent.class%"
parent="security.authentication.rememberme.services.abstract" parent="security.authentication.rememberme.services.abstract"
abstract="true"> abstract="true">
<argument type="collection" /> <!-- User Providers -->
<argument /> <!-- Shared Token Key -->
<argument /> <!-- Shared Provider Key -->
<argument type="collection" /> <!-- Options -->
<argument type="service" id="logger" on-invalid="null" />
<argument type="service" id="security.secure_random" /> <argument type="service" id="security.secure_random" />
</service> </service>

View File

@ -5,15 +5,26 @@
{% set icon %} {% set icon %}
<a href="http://symfony.com/"> <a href="http://symfony.com/">
<img width="26" height="28" alt="Symfony" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAcCAMAAABIzV/hAAACZFBMVEUwLjL///////////////////////////////////////////////////////////////////+Eg4b///+Ni46Xlpj///////////+op6n///////////////////////////////////////////////////////////9ZWFv///////9qaWz///////+mpaf///////////////9ZWFv///////////////9PTVH///91dHb////////////////////g4OD///9NTE+Ih4r///////+Ni47///////92dHeRkJLk5OTLy8xlY2b///////+cm53///////+5ubr////o6Oj////////U1NT///9DQURsa22rq6ysq61hX2L///+LioxTUVVBP0NEQkZpZ2rGxsf///9ram3////s7O2SkZNfXmFxcHKmpae4uLnKysuXlpiop6l3dXiIh4pYVlmrq6ycm52trK7Nzc48Oj5dW158e36dnJ49Oz/Pz9BiYGPAv8BDQUTQz9BVU1aioaNHRUnBwcJXVVk6ODxJR0t3dnmko6U8Oj6lpKY9Oz+0tLXDwsRQTlF7en1QTlHi4eJhX2LFxcZTUVViYGNwb3J+fX83NTlFQ0dUUlW4t7icm524uLk8Oj5YVlmPjpBLSU2enZ9aWVw/PkFBP0NdW153dnk0MjZQTlE1MzdQT1JdXF9ram15eHqGhYdDQkV5eHo2NThEQkZRUFNFQ0dta244NjpGREhTUVU5NztUUlVhX2JubG9HRUlVU1ZiYGM7OTxIRkk7OT1IR0o8Oj4wLjI9Oz8YdG13AAAAynRSTlMAAAEDBAUGCgsMDQ4QEhMUGRobGx0gISIkJiYnKCktLi8wMjM0NTk6Ozw+P0NFSEpLTE5PUFBTWlteXmBiZGVmaWxtcHBxc3R0dnl5fX+BgoOGi46Pj5CRmZqanZ6eoKeoq6ytsLCwsrO0tbe5urq8vL+/wsTFx8jJycvLy8vM0NHR0tLU1NfX2NnZ2trc3N3d3eHh4uLl5ebm5ubn5+fo6urt7e3u7vDx8/Pz9PT19fX19fX29vf39/j4+fn5+vr6+vv7+/z8/f3+yR5EtwAAAbVJREFUeNpl0mVXVFEYhuF3zhkOFqMjYmCi2MUYYKGIYiJ2YCd2t4IBFqgoKjZ2jg3igI2KyO2f8sTMngGvj/te71r7wyMuk4jofZccAihcMzJKXDYnuYcVotyeYKiktV5LA0faaE7S4s7TyMsBupnMcoH/vO6gmanJaiLV1Py+Xwn5zc0fjCbSi2LI2QdkGdLyFBG+rHwMzz4BD7wyGEfFk8pfsD2TkGmyFNvFHfDj55v02VD6DcteOYylatY8oG7boA2QV4vlklzB8tU3/DIwo+dWv58guY5tRcLMtwSGdi1DkTvAn9Jqsgbu4kafRBqlV4sDFCWuIjdhMsp7yQU49rB28/QPLOu2DuWqLMfmfw6M716GskdGVRMSGDKRsEzpvZ+Qs0lFKDd94s2oArh2F7K3oNQt6ChGr5x6+Dx3J7d2E3Ygqam4PCkngRNnngYIO5cWq4lLb5t+vJ6GiifFR1nbMNqP3fSOCN8PZnQynEW5W/nmHy0PXv79eHpRSjsjtEOtWZcRc9YXlNx7VFKwceGYHjG6s0Ob3iK+X3LqlKnjkvt39rjD6w3W6BhvrCdaVw//ADrWicJIvtkmAAAAAElFTkSuQmCC"> <img width="26" height="28" alt="Symfony" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAcCAMAAABIzV/hAAACZFBMVEUwLjL///////////////////////////////////////////////////////////////////+Eg4b///+Ni46Xlpj///////////+op6n///////////////////////////////////////////////////////////9ZWFv///////9qaWz///////+mpaf///////////////9ZWFv///////////////9PTVH///91dHb////////////////////g4OD///9NTE+Ih4r///////+Ni47///////92dHeRkJLk5OTLy8xlY2b///////+cm53///////+5ubr////o6Oj////////U1NT///9DQURsa22rq6ysq61hX2L///+LioxTUVVBP0NEQkZpZ2rGxsf///9ram3////s7O2SkZNfXmFxcHKmpae4uLnKysuXlpiop6l3dXiIh4pYVlmrq6ycm52trK7Nzc48Oj5dW158e36dnJ49Oz/Pz9BiYGPAv8BDQUTQz9BVU1aioaNHRUnBwcJXVVk6ODxJR0t3dnmko6U8Oj6lpKY9Oz+0tLXDwsRQTlF7en1QTlHi4eJhX2LFxcZTUVViYGNwb3J+fX83NTlFQ0dUUlW4t7icm524uLk8Oj5YVlmPjpBLSU2enZ9aWVw/PkFBP0NdW153dnk0MjZQTlE1MzdQT1JdXF9ram15eHqGhYdDQkV5eHo2NThEQkZRUFNFQ0dta244NjpGREhTUVU5NztUUlVhX2JubG9HRUlVU1ZiYGM7OTxIRkk7OT1IR0o8Oj4wLjI9Oz8YdG13AAAAynRSTlMAAAEDBAUGCgsMDQ4QEhMUGRobGx0gISIkJiYnKCktLi8wMjM0NTk6Ozw+P0NFSEpLTE5PUFBTWlteXmBiZGVmaWxtcHBxc3R0dnl5fX+BgoOGi46Pj5CRmZqanZ6eoKeoq6ytsLCwsrO0tbe5urq8vL+/wsTFx8jJycvLy8vM0NHR0tLU1NfX2NnZ2trc3N3d3eHh4uLl5ebm5ubn5+fo6urt7e3u7vDx8/Pz9PT19fX19fX29vf39/j4+fn5+vr6+vv7+/z8/f3+yR5EtwAAAbVJREFUeNpl0mVXVFEYhuF3zhkOFqMjYmCi2MUYYKGIYiJ2YCd2t4IBFqgoKjZ2jg3igI2KyO2f8sTMngGvj/te71r7wyMuk4jofZccAihcMzJKXDYnuYcVotyeYKiktV5LA0faaE7S4s7TyMsBupnMcoH/vO6gmanJaiLV1Py+Xwn5zc0fjCbSi2LI2QdkGdLyFBG+rHwMzz4BD7wyGEfFk8pfsD2TkGmyFNvFHfDj55v02VD6DcteOYylatY8oG7boA2QV4vlklzB8tU3/DIwo+dWv58guY5tRcLMtwSGdi1DkTvAn9Jqsgbu4kafRBqlV4sDFCWuIjdhMsp7yQU49rB28/QPLOu2DuWqLMfmfw6M716GskdGVRMSGDKRsEzpvZ+Qs0lFKDd94s2oArh2F7K3oNQt6ChGr5x6+Dx3J7d2E3Ygqam4PCkngRNnngYIO5cWq4lLb5t+vJ6GiifFR1nbMNqP3fSOCN8PZnQynEW5W/nmHy0PXv79eHpRSjsjtEOtWZcRc9YXlNx7VFKwceGYHjG6s0Ob3iK+X3LqlKnjkvt39rjD6w3W6BhvrCdaVw//ADrWicJIvtkmAAAAAElFTkSuQmCC">
<span>{{ collector.symfonyversion }}</span> <span>
{% if collector.applicationname %}
{{ collector.applicationname }} {{ collector.applicationversion }}
{% else %}
{{ collector.symfonyversion }}
{% endif %}
</span>
</a> </a>
{% endset %} {% endset %}
{% set text %} {% set text %}
{% if collector.applicationname %}
<div class="sf-toolbar-info-piece">
{{ collector.applicationname }} <b>{{ collector.applicationversion }}</b>
</div>
{% endif %}
<div class="sf-toolbar-info-piece"> <div class="sf-toolbar-info-piece">
Symfony <b>{{ collector.symfonyversion }}</b> Symfony <b>{{ collector.symfonyversion }}</b>
</div> </div>
<div class="sf-toolbar-info-piece"> <div class="sf-toolbar-info-piece">
<a href="http://symfony.com/doc/{{ collector.symfonyversion }}/index.html" rel="help">Documentation</a> <a href="http://symfony.com/doc/{{ collector.symfonyversion }}/index.html" rel="help">Symfony Documentation</a>
</div> </div>
{% endset %} {% endset %}
{% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': false } %} {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': false } %}
@ -106,8 +117,13 @@
<th>Value</th> <th>Value</th>
</tr> </tr>
<tr> <tr>
<th>Symfony version</th> {% if collector.applicationname %}
<td>{{ collector.symfonyversion }}</td> <th>Application</th>
<td>{{ collector.applicationname }} {{ collector.applicationversion }} (on Symfony {{ collector.symfonyversion }})</td>
{% else %}
<th>Symfony version</th>
<td>{{ collector.symfonyversion }}</td>
{% endif %}
</tr> </tr>
{% if 'n/a' != collector.appname %} {% if 'n/a' != collector.appname %}
<tr> <tr>

View File

@ -59,11 +59,17 @@ class FileFormField extends FormField
if (null !== $value && is_readable($value)) { if (null !== $value && is_readable($value)) {
$error = UPLOAD_ERR_OK; $error = UPLOAD_ERR_OK;
$size = filesize($value); $size = filesize($value);
$name = basename($value); $info = pathinfo($value);
$name = $info['basename'];
// copy to a tmp location // copy to a tmp location
$tmp = tempnam(sys_get_temp_dir(), 'upload'); $tmp = sys_get_temp_dir().'/'.sha1(uniqid(mt_rand(), true));
unlink($tmp); if (array_key_exists('extension', $info)) {
$tmp .= '.'.$info['extension'];
}
if (is_file($tmp)) {
unlink($tmp);
}
copy($value, $tmp); copy($value, $tmp);
$value = $tmp; $value = $tmp;
} else { } else {

View File

@ -56,8 +56,26 @@ class FileFormFieldTest extends FormFieldTestCase
$this->assertEquals(basename(__FILE__), $value['name'], "->$method() sets the name of the file field"); $this->assertEquals(basename(__FILE__), $value['name'], "->$method() sets the name of the file field");
$this->assertEquals('', $value['type'], "->$method() sets the type of the file field"); $this->assertEquals('', $value['type'], "->$method() sets the type of the file field");
$this->assertInternalType('string', $value['tmp_name'], "->$method() sets the tmp_name of the file field"); $this->assertInternalType('string', $value['tmp_name'], "->$method() sets the tmp_name of the file field");
$this->assertFileExists($value['tmp_name'], "->$method() creates a copy of the file at the tmp_name path");
$this->assertEquals(0, $value['error'], "->$method() sets the error of the file field"); $this->assertEquals(0, $value['error'], "->$method() sets the error of the file field");
$this->assertEquals(filesize(__FILE__), $value['size'], "->$method() sets the size of the file field"); $this->assertEquals(filesize(__FILE__), $value['size'], "->$method() sets the size of the file field");
$origInfo = pathinfo(__FILE__);
$tmpInfo = pathinfo($value['tmp_name']);
$this->assertEquals(
$origInfo['extension'],
$tmpInfo['extension'],
"->$method() keeps the same file extension in the tmp_name copy"
);
$field->$method(__DIR__.'/../Fixtures/no-extension');
$value = $field->getValue();
$this->assertArrayNotHasKey(
'extension',
pathinfo($value['tmp_name']),
"->$method() does not add a file extension in the tmp_name copy"
);
} }
public function getSetValueMethods() public function getSetValueMethods()

View File

@ -0,0 +1 @@
Test

View File

@ -19,7 +19,7 @@ abstract class RealIteratorTestCase extends IteratorTestCase
public static function setUpBeforeClass() public static function setUpBeforeClass()
{ {
self::$tmpDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'symfony2_finder'; self::$tmpDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'symfony2_finder';
self::$files = array( self::$files = array(
'.git/', '.git/',
@ -75,7 +75,7 @@ abstract class RealIteratorTestCase extends IteratorTestCase
* Without the call to setUpBeforeClass() property can be null. * Without the call to setUpBeforeClass() property can be null.
*/ */
if (!self::$tmpDir) { if (!self::$tmpDir) {
self::$tmpDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'symfony2_finder'; self::$tmpDir = realpath(sys_get_temp_dir()) . DIRECTORY_SEPARATOR . 'symfony2_finder';
} }
if (is_array($files)) { if (is_array($files)) {

View File

@ -14,7 +14,7 @@ https://github.com/fabpot/Silex/blob/master/src/Silex/Provider/FormServiceProvid
Documentation: Documentation:
http://symfony.com/doc/2.0/book/forms.html http://symfony.com/doc/2.2/book/forms.html
Resources Resources
--------- ---------

View File

@ -117,6 +117,6 @@ class DateTimeToRfc3339TransformerTest extends DateTimeTestCase
{ {
$transformer = new DateTimeToRfc3339Transformer('UTC', 'UTC'); $transformer = new DateTimeToRfc3339Transformer('UTC', 'UTC');
var_dump($transformer->reverseTransform('2010-04-31T04:05Z')); $transformer->reverseTransform('2010-04-31T04:05Z');
} }
} }

View File

@ -149,7 +149,7 @@ class HeaderBag implements \IteratorAggregate, \Countable
* *
* @param string $key The key * @param string $key The key
* @param string|array $values The value or an array of values * @param string|array $values The value or an array of values
* @param Boolean $replace Whether to replace the actual value of not (true by default) * @param Boolean $replace Whether to replace the actual value or not (true by default)
* *
* @api * @api
*/ */

View File

@ -25,10 +25,24 @@ use Symfony\Component\HttpFoundation\Response;
class ConfigDataCollector extends DataCollector class ConfigDataCollector extends DataCollector
{ {
private $kernel; private $kernel;
private $name;
private $version;
/** /**
* Constructor. * Constructor.
* *
* @param string $name The name of the application using the web profiler
* @param string $version The version of the application using the web profiler
*/
public function __construct($name = null, $version = null)
{
$this->name = $name;
$this->version = $version;
}
/**
* Sets the Kernel associated with this Request.
*
* @param KernelInterface $kernel A KernelInterface instance * @param KernelInterface $kernel A KernelInterface instance
*/ */
public function setKernel(KernelInterface $kernel = null) public function setKernel(KernelInterface $kernel = null)
@ -42,6 +56,8 @@ class ConfigDataCollector extends DataCollector
public function collect(Request $request, Response $response, \Exception $exception = null) public function collect(Request $request, Response $response, \Exception $exception = null)
{ {
$this->data = array( $this->data = array(
'app_name' => $this->name,
'app_version' => $this->version,
'token' => $response->headers->get('X-Debug-Token'), 'token' => $response->headers->get('X-Debug-Token'),
'symfony_version' => Kernel::VERSION, 'symfony_version' => Kernel::VERSION,
'name' => isset($this->kernel) ? $this->kernel->getName() : 'n/a', 'name' => isset($this->kernel) ? $this->kernel->getName() : 'n/a',
@ -64,6 +80,16 @@ class ConfigDataCollector extends DataCollector
} }
} }
public function getApplicationName()
{
return $this->data['app_name'];
}
public function getApplicationVersion()
{
return $this->data['app_version'];
}
/** /**
* Gets the token. * Gets the token.
* *

View File

@ -21,7 +21,7 @@ final class PropertyAccess
/** /**
* Creates a property accessor with the default configuration. * Creates a property accessor with the default configuration.
* *
* @return PropertyAccessor The new property accessor. * @return PropertyAccessor The new property accessor
*/ */
public static function getPropertyAccessor() public static function getPropertyAccessor()
{ {

View File

@ -96,9 +96,9 @@ class PropertyAccessor implements PropertyAccessorInterface
/** /**
* Reads the path from an object up to a given path index. * Reads the path from an object up to a given path index.
* *
* @param object|array $objectOrArray The object or array to read from. * @param object|array $objectOrArray The object or array to read from
* @param PropertyPathInterface $propertyPath The property path to read. * @param PropertyPathInterface $propertyPath The property path to read
* @param integer $lastIndex The integer up to which should be read. * @param integer $lastIndex The index up to which should be read
* *
* @return array The values read in the path. * @return array The values read in the path.
* *
@ -139,12 +139,12 @@ class PropertyAccessor implements PropertyAccessorInterface
/** /**
* Reads a key from an array-like structure. * Reads a key from an array-like structure.
* *
* @param \ArrayAccess|array $array The array or \ArrayAccess object to read from. * @param \ArrayAccess|array $array The array or \ArrayAccess object to read from
* @param string|integer $index The key to read. * @param string|integer $index The key to read
* *
* @return mixed The value of the key * @return mixed The value of the key
* *
* @throws NoSuchPropertyException If the array does not implement \ArrayAccess or it is not an array. * @throws NoSuchPropertyException If the array does not implement \ArrayAccess or it is not an array
*/ */
private function &readIndex(&$array, $index) private function &readIndex(&$array, $index)
{ {
@ -180,9 +180,9 @@ class PropertyAccessor implements PropertyAccessorInterface
* *
* @return mixed The value of the read property * @return mixed The value of the read property
* *
* @throws NoSuchPropertyException If the property does not exist. * @throws NoSuchPropertyException If the property does not exist
* @throws PropertyAccessDeniedException If the property cannot be accessed due to * @throws PropertyAccessDeniedException If the property cannot be accessed due to
* access restrictions (private or protected). * access restrictions (private or protected)
*/ */
private function &readProperty(&$object, $property) private function &readProperty(&$object, $property)
{ {
@ -250,11 +250,11 @@ class PropertyAccessor implements PropertyAccessorInterface
/** /**
* Sets the value of the property at the given index in the path * Sets the value of the property at the given index in the path
* *
* @param \ArrayAccess|array $array An array or \ArrayAccess object to write to. * @param \ArrayAccess|array $array An array or \ArrayAccess object to write to
* @param string|integer $index The index to write at. * @param string|integer $index The index to write at
* @param mixed $value The value to write. * @param mixed $value The value to write
* *
* @throws NoSuchPropertyException If the array does not implement \ArrayAccess or it is not an array. * @throws NoSuchPropertyException If the array does not implement \ArrayAccess or it is not an array
*/ */
private function writeIndex(&$array, $index, $value) private function writeIndex(&$array, $index, $value)
{ {
@ -268,14 +268,14 @@ class PropertyAccessor implements PropertyAccessorInterface
/** /**
* Sets the value of the property at the given index in the path * Sets the value of the property at the given index in the path
* *
* @param object|array $object The object or array to write to. * @param object|array $object The object or array to write to
* @param string $property The property to write. * @param string $property The property to write
* @param string|null $singular The singular form of the property name or null. * @param string|null $singular The singular form of the property name or null
* @param mixed $value The value to write. * @param mixed $value The value to write
* *
* @throws NoSuchPropertyException If the property does not exist. * @throws NoSuchPropertyException If the property does not exist
* @throws PropertyAccessDeniedException If the property cannot be accessed due to * @throws PropertyAccessDeniedException If the property cannot be accessed due to
* access restrictions (private or protected). * access restrictions (private or protected)
*/ */
private function writeProperty(&$object, $property, $singular, $value) private function writeProperty(&$object, $property, $singular, $value)
{ {
@ -368,9 +368,9 @@ class PropertyAccessor implements PropertyAccessorInterface
/** /**
* Camelizes a given string. * Camelizes a given string.
* *
* @param string $string Some string. * @param string $string Some string
* *
* @return string The camelized version of the string. * @return string The camelized version of the string
*/ */
private function camelize($string) private function camelize($string)
{ {
@ -381,11 +381,11 @@ class PropertyAccessor implements PropertyAccessorInterface
* Searches for add and remove methods. * Searches for add and remove methods.
* *
* @param \ReflectionClass $reflClass The reflection class for the given object * @param \ReflectionClass $reflClass The reflection class for the given object
* @param array $singulars The singular form of the property name or null. * @param array $singulars The singular form of the property name or null
* *
* @return array|null An array containing the adder and remover when found, null otherwise. * @return array|null An array containing the adder and remover when found, null otherwise
* *
* @throws NoSuchPropertyException If the property does not exist. * @throws NoSuchPropertyException If the property does not exist
*/ */
private function findAdderAndRemover(\ReflectionClass $reflClass, array $singulars) private function findAdderAndRemover(\ReflectionClass $reflClass, array $singulars)
{ {
@ -416,12 +416,12 @@ class PropertyAccessor implements PropertyAccessorInterface
/** /**
* Returns whether a method is public and has a specific number of required parameters. * Returns whether a method is public and has a specific number of required parameters.
* *
* @param \ReflectionClass $class The class of the method. * @param \ReflectionClass $class The class of the method
* @param string $methodName The method name. * @param string $methodName The method name
* @param integer $parameters The number of parameters. * @param integer $parameters The number of parameters
* *
* @return Boolean Whether the method is public and has $parameters * @return Boolean Whether the method is public and has $parameters
* required parameters. * required parameters
*/ */
private function isAccessible(\ReflectionClass $class, $methodName, $parameters) private function isAccessible(\ReflectionClass $class, $methodName, $parameters)
{ {

View File

@ -39,15 +39,15 @@ interface PropertyAccessorInterface
* *
* If neither is found, an exception is thrown. * If neither is found, an exception is thrown.
* *
* @param object|array $objectOrArray The object or array to modify. * @param object|array $objectOrArray The object or array to modify
* @param string|PropertyPathInterface $propertyPath The property path to modify. * @param string|PropertyPathInterface $propertyPath The property path to modify
* @param mixed $value The value to set at the end of the property path. * @param mixed $value The value to set at the end of the property path
* *
* @throws Exception\NoSuchPropertyException If a property does not exist. * @throws Exception\NoSuchPropertyException If a property does not exist
* @throws Exception\PropertyAccessDeniedException If a property cannot be accessed due to * @throws Exception\PropertyAccessDeniedException If a property cannot be accessed due to
* access restrictions (private or protected). * access restrictions (private or protected)
* @throws Exception\UnexpectedTypeException If a value within the path is neither object * @throws Exception\UnexpectedTypeException If a value within the path is neither object
* nor array. * nor array
*/ */
public function setValue(&$objectOrArray, $propertyPath, $value); public function setValue(&$objectOrArray, $propertyPath, $value);
@ -73,7 +73,7 @@ interface PropertyAccessorInterface
* If none of them are found, an exception is thrown. * If none of them are found, an exception is thrown.
* *
* @param object|array $objectOrArray The object or array to traverse * @param object|array $objectOrArray The object or array to traverse
* @param string|PropertyPathInterface $propertyPath The property path to modify. * @param string|PropertyPathInterface $propertyPath The property path to read
* *
* @return mixed The value at the end of the property path * @return mixed The value at the end of the property path
* *

View File

@ -62,10 +62,10 @@ class PropertyPath implements \IteratorAggregate, PropertyPathInterface
/** /**
* Constructs a property path from a string. * Constructs a property path from a string.
* *
* @param PropertyPath|string $propertyPath The property path as string or instance. * @param PropertyPath|string $propertyPath The property path as string or instance
* *
* @throws UnexpectedTypeException If the given path is not a string. * @throws UnexpectedTypeException If the given path is not a string
* @throws InvalidPropertyPathException If the syntax of the property path is not valid. * @throws InvalidPropertyPathException If the syntax of the property path is not valid
*/ */
public function __construct($propertyPath) public function __construct($propertyPath)
{ {

View File

@ -44,9 +44,9 @@ class PropertyPathBuilder
/** /**
* Appends a (sub-) path to the current path. * Appends a (sub-) path to the current path.
* *
* @param PropertyPathInterface $path The path to append. * @param PropertyPathInterface $path The path to append
* @param integer $offset The offset where the appended piece * @param integer $offset The offset where the appended piece
* starts in $path. * starts in $path
* @param integer $length The length of the appended piece. * @param integer $length The length of the appended piece.
* If 0, the full path is appended. * If 0, the full path is appended.
*/ */
@ -67,7 +67,7 @@ class PropertyPathBuilder
/** /**
* Appends an index element to the current path. * Appends an index element to the current path.
* *
* @param string $name The name of the appended index. * @param string $name The name of the appended index
*/ */
public function appendIndex($name) public function appendIndex($name)
{ {
@ -78,7 +78,7 @@ class PropertyPathBuilder
/** /**
* Appends a property element to the current path. * Appends a property element to the current path.
* *
* @param string $name The name of the appended property. * @param string $name The name of the appended property
*/ */
public function appendProperty($name) public function appendProperty($name)
{ {
@ -89,8 +89,8 @@ class PropertyPathBuilder
/** /**
* Removes elements from the current path. * Removes elements from the current path.
* *
* @param integer $offset The offset at which to remove. * @param integer $offset The offset at which to remove
* @param integer $length The length of the removed piece. * @param integer $length The length of the removed piece
* *
* @throws OutOfBoundsException if offset is invalid * @throws OutOfBoundsException if offset is invalid
*/ */
@ -106,15 +106,15 @@ class PropertyPathBuilder
/** /**
* Replaces a sub-path by a different (sub-) path. * Replaces a sub-path by a different (sub-) path.
* *
* @param integer $offset The offset at which to replace. * @param integer $offset The offset at which to replace
* @param integer $length The length of the piece to replace. * @param integer $length The length of the piece to replace
* @param PropertyPathInterface $path The path to insert. * @param PropertyPathInterface $path The path to insert
* @param integer $pathOffset The offset where the inserted piece * @param integer $pathOffset The offset where the inserted piece
* starts in $path. * starts in $path
* @param integer $pathLength The length of the inserted piece. * @param integer $pathLength The length of the inserted piece.
* If 0, the full path is inserted. * If 0, the full path is inserted.
* *
* @throws OutOfBoundsException If the offset is invalid. * @throws OutOfBoundsException If the offset is invalid
*/ */
public function replace($offset, $length, PropertyPathInterface $path, $pathOffset = 0, $pathLength = 0) public function replace($offset, $length, PropertyPathInterface $path, $pathOffset = 0, $pathLength = 0)
{ {
@ -137,10 +137,10 @@ class PropertyPathBuilder
/** /**
* Replaces a property element by an index element. * Replaces a property element by an index element.
* *
* @param integer $offset The offset at which to replace. * @param integer $offset The offset at which to replace
* @param string $name The new name of the element. Optional. * @param string $name The new name of the element. Optional.
* *
* @throws OutOfBoundsException If the offset is invalid. * @throws OutOfBoundsException If the offset is invalid
*/ */
public function replaceByIndex($offset, $name = null) public function replaceByIndex($offset, $name = null)
{ {
@ -158,10 +158,10 @@ class PropertyPathBuilder
/** /**
* Replaces an index element by a property element. * Replaces an index element by a property element.
* *
* @param integer $offset The offset at which to replace. * @param integer $offset The offset at which to replace
* @param string $name The new name of the element. Optional. * @param string $name The new name of the element. Optional.
* *
* @throws OutOfBoundsException If the offset is invalid. * @throws OutOfBoundsException If the offset is invalid
*/ */
public function replaceByProperty($offset, $name = null) public function replaceByProperty($offset, $name = null)
{ {
@ -179,7 +179,7 @@ class PropertyPathBuilder
/** /**
* Returns the length of the current path. * Returns the length of the current path.
* *
* @return integer The path length. * @return integer The path length
*/ */
public function getLength() public function getLength()
{ {
@ -189,7 +189,7 @@ class PropertyPathBuilder
/** /**
* Returns the current property path. * Returns the current property path.
* *
* @return PropertyPathInterface The constructed property path. * @return PropertyPathInterface The constructed property path
*/ */
public function getPropertyPath() public function getPropertyPath()
{ {
@ -201,7 +201,7 @@ class PropertyPathBuilder
/** /**
* Returns the current property path as string. * Returns the current property path as string.
* *
* @return string The property path as string. * @return string The property path as string
*/ */
public function __toString() public function __toString()
{ {
@ -225,9 +225,9 @@ class PropertyPathBuilder
* removed at $offset and another chunk of length $insertionLength * removed at $offset and another chunk of length $insertionLength
* can be inserted. * can be inserted.
* *
* @param integer $offset The offset where the removed chunk starts. * @param integer $offset The offset where the removed chunk starts
* @param integer $cutLength The length of the removed chunk. * @param integer $cutLength The length of the removed chunk
* @param integer $insertionLength The length of the inserted chunk. * @param integer $insertionLength The length of the inserted chunk
*/ */
private function resize($offset, $cutLength, $insertionLength) private function resize($offset, $cutLength, $insertionLength)
{ {

View File

@ -21,14 +21,14 @@ interface PropertyPathInterface extends \Traversable
/** /**
* Returns the string representation of the property path * Returns the string representation of the property path
* *
* @return string The path as string. * @return string The path as string
*/ */
public function __toString(); public function __toString();
/** /**
* Returns the length of the property path, i.e. the number of elements. * Returns the length of the property path, i.e. the number of elements.
* *
* @return integer The path length. * @return integer The path length
*/ */
public function getLength(); public function getLength();
@ -40,7 +40,7 @@ interface PropertyPathInterface extends \Traversable
* *
* If this property path only contains one item, null is returned. * If this property path only contains one item, null is returned.
* *
* @return PropertyPath The parent path or null. * @return PropertyPath The parent path or null
*/ */
public function getParent(); public function getParent();
@ -58,7 +58,7 @@ interface PropertyPathInterface extends \Traversable
* *
* @return string A property or index name * @return string A property or index name
* *
* @throws Exception\OutOfBoundsException If the offset is invalid. * @throws Exception\OutOfBoundsException If the offset is invalid
*/ */
public function getElement($index); public function getElement($index);
@ -69,7 +69,7 @@ interface PropertyPathInterface extends \Traversable
* *
* @return Boolean Whether the element at this index is a property * @return Boolean Whether the element at this index is a property
* *
* @throws Exception\OutOfBoundsException If the offset is invalid. * @throws Exception\OutOfBoundsException If the offset is invalid
*/ */
public function isProperty($index); public function isProperty($index);
@ -80,7 +80,7 @@ interface PropertyPathInterface extends \Traversable
* *
* @return Boolean Whether the element at this index is an array index * @return Boolean Whether the element at this index is an array index
* *
* @throws Exception\OutOfBoundsException If the offset is invalid. * @throws Exception\OutOfBoundsException If the offset is invalid
*/ */
public function isIndex($index); public function isIndex($index);
} }

View File

@ -261,7 +261,7 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt
} }
// add a query string if needed // add a query string if needed
$extra = array_diff_key($parameters, $variables); $extra = array_diff_key($parameters, $variables, $defaults);
if ($extra && $query = http_build_query($extra, '', '&')) { if ($extra && $query = http_build_query($extra, '', '&')) {
$url .= '?'.$query; $url .= '?'.$query;
} }

View File

@ -297,8 +297,8 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
{ {
$routes = $this->getRoutes('test', new Route('/test', array('default' => 'value'))); $routes = $this->getRoutes('test', new Route('/test', array('default' => 'value')));
$this->assertSame('/app.php/test?default=foo', $this->getGenerator($routes)->generate('test', array('default' => 'foo'))); $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test', array('default' => 'foo')));
$this->assertSame('/app.php/test?default=value', $this->getGenerator($routes)->generate('test', array('default' => 'value'))); $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test', array('default' => 'value')));
$this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test')); $this->assertSame('/app.php/test', $this->getGenerator($routes)->generate('test'));
} }

View File

@ -20,6 +20,7 @@ use Symfony\Component\Security\Core\Exception\CookieTheftException;
use Symfony\Component\Security\Core\Authentication\RememberMe\PersistentToken; use Symfony\Component\Security\Core\Authentication\RememberMe\PersistentToken;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Util\SecureRandomInterface; use Symfony\Component\Security\Core\Util\SecureRandomInterface;
use Psr\Log\LoggerInterface;
/** /**
* Concrete implementation of the RememberMeServicesInterface which needs * Concrete implementation of the RememberMeServicesInterface which needs
@ -98,7 +99,7 @@ class PersistentTokenBasedRememberMeServices extends AbstractRememberMeServices
} }
$series = $persistentToken->getSeries(); $series = $persistentToken->getSeries();
$tokenValue = $this->secureRandom->nextBytes(64); $tokenValue = base64_encode($this->secureRandom->nextBytes(64));
$this->tokenProvider->updateToken($series, $tokenValue, new \DateTime()); $this->tokenProvider->updateToken($series, $tokenValue, new \DateTime());
$request->attributes->set(self::COOKIE_ATTR_NAME, $request->attributes->set(self::COOKIE_ATTR_NAME,
new Cookie( new Cookie(
@ -120,8 +121,8 @@ class PersistentTokenBasedRememberMeServices extends AbstractRememberMeServices
*/ */
protected function onLoginSuccess(Request $request, Response $response, TokenInterface $token) protected function onLoginSuccess(Request $request, Response $response, TokenInterface $token)
{ {
$series = $this->secureRandom->nextBytes(64); $series = base64_encode($this->secureRandom->nextBytes(64));
$tokenValue = $this->secureRandom->nextBytes(64); $tokenValue = base64_encode($this->secureRandom->nextBytes(64));
$this->tokenProvider->createNewToken( $this->tokenProvider->createNewToken(
new PersistentToken( new PersistentToken(

View File

@ -11,7 +11,7 @@ Resources
Documentation: Documentation:
http://symfony.com/doc/2.0/book/security.html http://symfony.com/doc/2.2/book/security.html
Resources Resources
--------- ---------

View File

@ -26,7 +26,7 @@ https://github.com/fabpot/Silex/blob/master/src/Silex/Provider/TranslationServic
Documentation: Documentation:
http://symfony.com/doc/2.0/book/translation.html http://symfony.com/doc/2.2/book/translation.html
You can run the unit tests with the following command: You can run the unit tests with the following command:

View File

@ -107,7 +107,7 @@ https://github.com/fabpot/Silex/blob/master/src/Silex/Provider/ValidatorServiceP
Documentation: Documentation:
http://symfony.com/doc/2.0/book/validation.html http://symfony.com/doc/2.2/book/validation.html
JSR-303 Specification: JSR-303 Specification:

View File

@ -4,23 +4,23 @@
<body> <body>
<trans-unit id="1"> <trans-unit id="1">
<source>This value should be false.</source> <source>This value should be false.</source>
<target>値はfalseでなければなりません.</target> <target>falseでなければなりません。</target>
</trans-unit> </trans-unit>
<trans-unit id="2"> <trans-unit id="2">
<source>This value should be true.</source> <source>This value should be true.</source>
<target>値はtrueでなければなりません.</target> <target>trueでなければなりません。</target>
</trans-unit> </trans-unit>
<trans-unit id="3"> <trans-unit id="3">
<source>This value should be of type {{ type }}.</source> <source>This value should be of type {{ type }}.</source>
<target>値の型は{{ type }}でなければなりません.</target> <target>型は{{ type }}でなければなりません。</target>
</trans-unit> </trans-unit>
<trans-unit id="4"> <trans-unit id="4">
<source>This value should be blank.</source> <source>This value should be blank.</source>
<target>値は空でなければなりません.</target> <target>空でなければなりません。</target>
</trans-unit> </trans-unit>
<trans-unit id="5"> <trans-unit id="5">
<source>The value you selected is not a valid choice.</source> <source>The value you selected is not a valid choice.</source>
<target>選択された値は選択肢として有効な値ではありません.</target> <target>有効な選択肢ではありません。</target>
</trans-unit> </trans-unit>
<trans-unit id="6"> <trans-unit id="6">
<source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source> <source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
@ -32,47 +32,47 @@
</trans-unit> </trans-unit>
<trans-unit id="8"> <trans-unit id="8">
<source>One or more of the given values is invalid.</source> <source>One or more of the given values is invalid.</source>
<target>1つまたは複数の選択された値が正しくありません.</target> <target>無効な選択肢が含まれています。</target>
</trans-unit> </trans-unit>
<trans-unit id="9"> <trans-unit id="9">
<source>The fields {{ fields }} were not expected.</source> <source>The fields {{ fields }} were not expected.</source>
<target>フィールド{{ fields }}は無効です.</target> <target>フィールド{{ fields }}は無効です</target>
</trans-unit> </trans-unit>
<trans-unit id="10"> <trans-unit id="10">
<source>The fields {{ fields }} are missing.</source> <source>The fields {{ fields }} are missing.</source>
<target>フィールド{{ fields }}は必須です.</target> <target>フィールド{{ fields }}は必須です</target>
</trans-unit> </trans-unit>
<trans-unit id="11"> <trans-unit id="11">
<source>This value is not a valid date.</source> <source>This value is not a valid date.</source>
<target>値が有効な日付ではありません.</target> <target>有効な日付ではありません。</target>
</trans-unit> </trans-unit>
<trans-unit id="12"> <trans-unit id="12">
<source>This value is not a valid datetime.</source> <source>This value is not a valid datetime.</source>
<target>値が有効な日時ではありません.</target> <target>有効な日時ではありません。</target>
</trans-unit> </trans-unit>
<trans-unit id="13"> <trans-unit id="13">
<source>This value is not a valid email address.</source> <source>This value is not a valid email address.</source>
<target>値が有効なメールアドレスではありません.</target> <target>有効なメールアドレスではありません</target>
</trans-unit> </trans-unit>
<trans-unit id="14"> <trans-unit id="14">
<source>The file could not be found.</source> <source>The file could not be found.</source>
<target>ファイルが見つかりません.</target> <target>ファイルが見つかりません</target>
</trans-unit> </trans-unit>
<trans-unit id="15"> <trans-unit id="15">
<source>The file is not readable.</source> <source>The file is not readable.</source>
<target>ファイルを読み込めません.</target> <target>ファイルを読み込めません</target>
</trans-unit> </trans-unit>
<trans-unit id="16"> <trans-unit id="16">
<source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source> <source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
<target>ファイルのサイズが大きすぎます({{ size }} {{ suffix }})。有効な最大サイズは{{ limit }} {{ suffix }}です.</target> <target>ファイルのサイズが大きすぎます({{ size }} {{ suffix }})。有効な最大サイズは{{ limit }} {{ suffix }}です</target>
</trans-unit> </trans-unit>
<trans-unit id="17"> <trans-unit id="17">
<source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source> <source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
<target>ファイルのMIMEタイプが無効です({{ type }})。有効なMIMEタイプは{{ types }}です.</target> <target>ファイルのMIMEタイプが無効です({{ type }})。有効なMIMEタイプは{{ types }}です</target>
</trans-unit> </trans-unit>
<trans-unit id="18"> <trans-unit id="18">
<source>This value should be {{ limit }} or less.</source> <source>This value should be {{ limit }} or less.</source>
<target>値は{{ limit }}以下でなければなりません.</target> <target>{{ limit }}以下でなければなりません。</target>
</trans-unit> </trans-unit>
<trans-unit id="19"> <trans-unit id="19">
<source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source> <source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
@ -80,7 +80,7 @@
</trans-unit> </trans-unit>
<trans-unit id="20"> <trans-unit id="20">
<source>This value should be {{ limit }} or more.</source> <source>This value should be {{ limit }} or more.</source>
<target>値は{{ limit }}以上でなければなりません.</target> <target>{{ limit }}以上でなければなりません。</target>
</trans-unit> </trans-unit>
<trans-unit id="21"> <trans-unit id="21">
<source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source> <source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
@ -88,63 +88,131 @@
</trans-unit> </trans-unit>
<trans-unit id="22"> <trans-unit id="22">
<source>This value should not be blank.</source> <source>This value should not be blank.</source>
<target>値が空であってはなりません.</target> <target>空であってはなりません。</target>
</trans-unit> </trans-unit>
<trans-unit id="23"> <trans-unit id="23">
<source>This value should not be null.</source> <source>This value should not be null.</source>
<target>値がnullであってはなりません.</target> <target>nullであってはなりません。</target>
</trans-unit> </trans-unit>
<trans-unit id="24"> <trans-unit id="24">
<source>This value should be null.</source> <source>This value should be null.</source>
<target>値はnullでなければなりません.</target> <target>nullでなければなりません。</target>
</trans-unit> </trans-unit>
<trans-unit id="25"> <trans-unit id="25">
<source>This value is not valid.</source> <source>This value is not valid.</source>
<target>値が無効です.</target> <target>有効な値ではありません。</target>
</trans-unit> </trans-unit>
<trans-unit id="26"> <trans-unit id="26">
<source>This value is not a valid time.</source> <source>This value is not a valid time.</source>
<target>値が有効な時刻ではありません.</target> <target>有効な時刻ではありません。</target>
</trans-unit> </trans-unit>
<trans-unit id="27"> <trans-unit id="27">
<source>This value is not a valid URL.</source> <source>This value is not a valid URL.</source>
<target>値が有効なURLではありません.</target> <target>有効なURLではありません。</target>
</trans-unit> </trans-unit>
<trans-unit id="31"> <trans-unit id="31">
<source>The two values should be equal.</source> <source>The two values should be equal.</source>
<target>2つの値が同じでなければなりません.</target> <target>2つの値が同じでなければなりません</target>
</trans-unit> </trans-unit>
<trans-unit id="32"> <trans-unit id="32">
<source>This value is not a valid country.</source> <source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
<target>値は有効な国名ではありません.</target> <target>ファイルのサイズが大きすぎます。有効な最大サイズは{{ limit }} {{ suffix }}です。</target>
</trans-unit> </trans-unit>
<trans-unit id="33"> <trans-unit id="33">
<source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source> <source>The file is too large.</source>
<target>ファイルのサイズが大きすぎます。有効な最大サイズは{{ limit }} {{ suffix }}です.</target> <target>ファイルのサイズが大きすぎます。</target>
</trans-unit> </trans-unit>
<trans-unit id="34"> <trans-unit id="34">
<source>The file is too large.</source> <source>The file could not be uploaded.</source>
<target>ファイルのサイズが大きすぎます.</target> <target>ファイルをアップロードできませんでした。</target>
</trans-unit> </trans-unit>
<trans-unit id="35"> <trans-unit id="35">
<source>The file could not be uploaded.</source> <source>This value should be a valid number.</source>
<target>ファイルをアップロードできませんでした.</target> <target>有効な数字ではありません。</target>
</trans-unit> </trans-unit>
<trans-unit id="36"> <trans-unit id="36">
<source>This file is not a valid image.</source> <source>This file is not a valid image.</source>
<target>ファイルが画像ではありません.</target> <target>ファイルが画像ではありません</target>
</trans-unit> </trans-unit>
<trans-unit id="37"> <trans-unit id="37">
<source>This is not a valid IP address.</source> <source>This is not a valid IP address.</source>
<target>値は有効なIPアドレスではありません.</target> <target>有効なIPアドレスではありません。</target>
</trans-unit> </trans-unit>
<trans-unit id="38"> <trans-unit id="38">
<source>This value is not a valid language.</source> <source>This value is not a valid language.</source>
<target>値は有効な言語名ではありません.</target> <target>有効な言語名ではありません。</target>
</trans-unit> </trans-unit>
<trans-unit id="39"> <trans-unit id="39">
<source>This value is not a valid locale.</source> <source>This value is not a valid locale.</source>
<target>値は有効なロケールではありません.</target> <target>有効なロケールではありません。</target>
</trans-unit>
<trans-unit id="40">
<source>This value is not a valid country.</source>
<target>有効な国名ではありません。</target>
</trans-unit>
<trans-unit id="41">
<source>This value is already used.</source>
<target>既に使用されています。</target>
</trans-unit>
<trans-unit id="42">
<source>The size of the image could not be detected.</source>
<target>画像のサイズが検出できません。</target>
</trans-unit>
<trans-unit id="43">
<source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
<target>画像の幅が大きすぎます({{ width }}ピクセル)。{{ max_width }}ピクセルまでにしてください。</target>
</trans-unit>
<trans-unit id="44">
<source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
<target>画像の幅が小さすぎます({{ width }}ピクセル)。{{ min_width }}ピクセル以上にしてください。</target>
</trans-unit>
<trans-unit id="45">
<source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
<target>画像の高さが大きすぎます({{ height }}ピクセル)。{{ max_height }}ピクセルまでにしてください。</target>
</trans-unit>
<trans-unit id="46">
<source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
<target>画像の高さが小さすぎます({{ height }}ピクセル)。{{ min_height }}ピクセル以上にしてください。</target>
</trans-unit>
<trans-unit id="47">
<source>This value should be the user current password.</source>
<target>ユーザーの現在のパスワードでなければなりません。</target>
</trans-unit>
<trans-unit id="48">
<source>This value should have exactly {{ limit }} characters.</source>
<target>ちょうど{{ limit }}文字でなければなりません。</target>
</trans-unit>
<trans-unit id="49">
<source>The file was only partially uploaded.</source>
<target>ファイルのアップロードは完全ではありません。</target>
</trans-unit>
<trans-unit id="50">
<source>No file was uploaded.</source>
<target>ファイルがアップロードされていません。</target>
</trans-unit>
<trans-unit id="51">
<source>No temporary folder was configured in php.ini.</source>
<target>php.iniで一時フォルダが設定されていません。</target>
</trans-unit>
<trans-unit id="52">
<source>Cannot write temporary file to disk.</source>
<target>一時ファイルをディスクに書き込むことができません。</target>
</trans-unit>
<trans-unit id="53">
<source>A PHP extension caused the upload to fail.</source>
<target>PHP拡張によってアップロードに失敗しました。</target>
</trans-unit>
<trans-unit id="54">
<source>This collection should contain {{ limit }} elements or more.</source>
<target>{{ limit }}個以上の要素を含んでなければいけません。</target>
</trans-unit>
<trans-unit id="55">
<source>This collection should contain {{ limit }} elements or less.</source>
<target>要素は{{ limit }}個までです。</target>
</trans-unit>
<trans-unit id="56">
<source>This collection should contain exactly {{ limit }} elements.</source>
<target>要素はちょうど{{ limit }}個でなければなりません。</target>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>