diff --git a/CHANGELOG-4.4.md b/CHANGELOG-4.4.md index c16001b9e6c21..a265a13db9965 100644 --- a/CHANGELOG-4.4.md +++ b/CHANGELOG-4.4.md @@ -7,6 +7,17 @@ in 4.4 minor versions. To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v4.4.0...v4.4.1 +* 4.4.48 (2022-10-28) + + * bug #47907 [Console] Update Application.php (aleksandr-shevchenko) + * bug #47932 Throw LogicException instead of Error when trying to generate logout-… (addiks) + * bug #47857 [HttpKernel] Fix empty request stack when terminating with exception (krzyc) + * bug #47878 [HttpKernel] Remove EOL when using error_log() in HttpKernel Logger (cyve) + * bug #47883 [Console] Fix error output on windows cli (Maximilian.Beckers) + * bug #47884 [Cache] Reserve numeric keys when doing memory leak prevention (simoheinonen) + * bug #47822 [Mailer] fix: use message object from event (rogamoore) + * bug #47858 [DoctrineBridge] Implement `EventManager::getAllListeners()` (derrabus) + * 4.4.47 (2022-10-12) * bug #47621 [Serializer] Allow getting discriminated type by class name (TamasSzigeti) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index baf049c540d1d..72ef68321528f 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -47,9 +47,9 @@ The Symfony Connect username in parenthesis allows to get more information - Jean-François Simon (jfsimon) - Benjamin Eberlei (beberlei) - Igor Wiedler + - HypeMC (hypemc) - Valentin Udaltsov (vudaltsov) - Vasilij Duško (staff) - - HypeMC (hypemc) - Matthias Pigulla (mpdude) - Laurent VOULLEMIER (lvo) - Antoine Makdessi (amakdessi) @@ -64,6 +64,7 @@ The Symfony Connect username in parenthesis allows to get more information - Alexander Schranz (alexander-schranz) - ornicar - Dany Maillard (maidmaid) + - Mathieu Santostefano (welcomattic) - Eriksen Costa - Diego Saint Esteben (dosten) - stealth35 ‏ (stealth35) @@ -72,7 +73,6 @@ The Symfony Connect username in parenthesis allows to get more information - Francis Besset (francisbesset) - Alexandre Daubois (alexandre-daubois) - Vasilij Dusko | CREATION - - Mathieu Santostefano (welcomattic) - Bulat Shakirzyanov (avalanche123) - Iltar van der Berg - Miha Vrhovnik (mvrhov) @@ -112,17 +112,17 @@ The Symfony Connect username in parenthesis allows to get more information - Przemysław Bogusz (przemyslaw-bogusz) - Henrik Westphal (snc) - Dariusz Górecki (canni) + - Mathieu Lechat (mat_the_cat) - Maxime Helias (maxhelias) - Ener-Getick - Ruud Kamphuis (ruudk) - - Mathieu Lechat (mat_the_cat) + - Antoine Lamirault - Sebastiaan Stok (sstok) - Jérôme Vasseur (jvasseur) - Ion Bazan (ionbazan) - Lee McDermott - Brandon Turner - Luis Cordova (cordoval) - - Antoine Lamirault - Daniel Holmes (dholmes) - Toni Uebernickel (havvg) - Bart van den Burg (burgov) @@ -177,12 +177,13 @@ The Symfony Connect username in parenthesis allows to get more information - HeahDude - Richard van Laak (rvanlaak) - Paráda József (paradajozsef) + - Christopher Hertel (chertel) - Alessandro Lai (jean85) - Alexander Schwenn (xelaris) - Fabien Pennequin (fabienpennequin) - Gordon Franke (gimler) - François-Xavier de Guillebon (de-gui_f) - - Christopher Hertel (chertel) + - Andreas Schempp (aschempp) - Gabriel Caruso - Anthony GRASSIOT (antograssiot) - Jan Rosier (rosier) @@ -196,7 +197,6 @@ The Symfony Connect username in parenthesis allows to get more information - Tigran Azatyan (tigranazatyan) - Eric GELOEN (gelo) - Matthieu Napoli (mnapoli) - - Andreas Schempp (aschempp) - Tomáš Votruba (tomas_votruba) - Joshua Thijssen - Stefano Sala (stefano.sala) @@ -223,16 +223,17 @@ The Symfony Connect username in parenthesis allows to get more information - Daniel Gomes (danielcsgomes) - Michael Käfer (michael_kaefer) - Hidenori Goto (hidenorigoto) + - Dāvis Zālītis (k0d3r1s) - Albert Casademont (acasademont) - Arnaud Kleinpeter (nanocom) - Guilherme Blanco (guilhermeblanco) - Chi-teck - Michael Voříšek + - Farhad Safarov (safarov) - SpacePossum - Pablo Godel (pgodel) - Romaric Drigon (romaricdrigon) - Andréia Bohner (andreia) - - Dāvis Zālītis (k0d3r1s) - Jannik Zschiesche - Rafael Dohms (rdohms) - George Mponos (gmponos) @@ -243,7 +244,6 @@ The Symfony Connect username in parenthesis allows to get more information - David Prévot - Vincent Touzet (vincenttouzet) - Fabien Bourigault (fbourigault) - - Farhad Safarov (safarov) - Jérémy Derussé - Nicolas Philippe (nikophil) - Hubert Lenoir (hubert_lenoir) @@ -262,6 +262,7 @@ The Symfony Connect username in parenthesis allows to get more information - Andre Rømcke (andrerom) - Dmitrii Poddubnyi (karser) - soyuka + - Sergey (upyx) - Rouven Weßling (realityking) - BoShurik - Zmey @@ -287,13 +288,13 @@ The Symfony Connect username in parenthesis allows to get more information - Artur Kotyrba - Tyson Andre - Thomas Landauer (thomas-landauer) + - Phil Taylor (prazgod) - GDIBass - Samuel NELA (snela) - dFayet - Karoly Gossler (connorhu) - Vincent AUBERT (vincent) - Sebastien Morel (plopix) - - Sergey (upyx) - Yoann RENARD (yrenard) - Thomas Lallement (raziel057) - Timothée Barray (tyx) @@ -334,6 +335,7 @@ The Symfony Connect username in parenthesis allows to get more information - Islam Israfilov (islam93) - Oleg Andreyev (oleg.andreyev) - Daniel Gorgan + - Sébastien Alfaiate (seb33300) - Hendrik Luup (hluup) - Martin Herndl (herndlm) - Ruben Gonzalez (rubenrua) @@ -361,7 +363,6 @@ The Symfony Connect username in parenthesis allows to get more information - Philipp Wahala (hifi) - Nikolay Labinskiy (e-moe) - Martin Schuhfuß (usefulthink) - - Phil Taylor (prazgod) - apetitpa - Vladyslav Loboda - Pierre Minnieur (pminnieur) @@ -399,7 +400,6 @@ The Symfony Connect username in parenthesis allows to get more information - Tristan Darricau (tristandsensio) - Fabien S (bafs) - Victor Bocharsky (bocharsky_bw) - - Sébastien Alfaiate (seb33300) - Jan Sorgalla (jsor) - henrikbjorn - Alex Bowers @@ -409,6 +409,7 @@ The Symfony Connect username in parenthesis allows to get more information - Craig Duncan (duncan3dc) - Mantis Development - Pablo Lozano (arkadis) + - Romain Monteil (ker0x) - quentin neyrat (qneyrat) - Antonio Jose Cerezo (ajcerezo) - Marcin Szepczynski (czepol) @@ -496,7 +497,6 @@ The Symfony Connect username in parenthesis allows to get more information - Thomas Schulz (king2500) - Benjamin Morel - Bernd Stellwag - - Romain Monteil (ker0x) - Frank de Jonge - Chris Tanaskoski - julien57 @@ -531,6 +531,7 @@ The Symfony Connect username in parenthesis allows to get more information - Giso Stallenberg (gisostallenberg) - Blanchon Vincent (blanchonvincent) - William Arslett (warslett) + - Jérémy REYNAUD (babeuloula) - Christian Schmidt - Gonzalo Vilaseca (gonzalovilaseca) - Vadim Borodavko (javer) @@ -721,7 +722,6 @@ The Symfony Connect username in parenthesis allows to get more information - Guillaume Verstraete - vladimir.panivko - Jason Tan (jt2k) - - Jérémy REYNAUD (babeuloula) - Costin Bereveanu (schniper) - kick-the-bucket - Marek Kalnik (marekkalnik) @@ -834,12 +834,15 @@ The Symfony Connect username in parenthesis allows to get more information - Daniel González (daniel.gonzalez) - Renan (renanbr) - Webnet team (webnet) + - Tobias Bönner - Berny Cantos (xphere81) - Mátyás Somfai (smatyas) - Jan Schumann + - Matheo Daninos (mathdns) - Niklas Fiekas - Mark Challoner (markchalloner) - Markus Bachmann (baachi) + - Philippe SEGATORI (tigitz) - Roger Guasch (rogerguasch) - Luis Tacón (lutacon) - Alex Hofbauer (alexhofbauer) @@ -933,11 +936,13 @@ The Symfony Connect username in parenthesis allows to get more information - Vicent Soria Durá (vicentgodella) - Michael Moravec - Anthony Ferrara + - Glodzienski - Christian Gripp (core23) - Marcel Hernandez - Ioan Negulescu - Jakub Škvára (jskvara) - Andrew Udvare (audvare) + - Volodymyr Panivko - alexpods - Dennis Langen (nijusan) - Adam Szaraniec @@ -1051,7 +1056,6 @@ The Symfony Connect username in parenthesis allows to get more information - Grégoire Hébert (gregoirehebert) - alcaeus - Fred Cox - - Matheo Daninos (mathdns) - Iliya Miroslavov Iliev (i.miroslavov) - Safonov Nikita (ns3777k) - Simon DELICATA @@ -1081,7 +1085,6 @@ The Symfony Connect username in parenthesis allows to get more information - pizzaminded - Matthieu Calie (matth--) - Stéphane Escandell (sescandell) - - Philippe SEGATORI (tigitz) - ivan - linh - Oleg Krasavin (okwinza) @@ -1353,7 +1356,6 @@ The Symfony Connect username in parenthesis allows to get more information - Grinbergs Reinis (shima5) - Ruud Arentsen - Harald Tollefsen - - Tobias Bönner - Arend-Jan Tetteroo - Mbechezi Nawo - Andre Eckardt (korve) @@ -1433,6 +1435,7 @@ The Symfony Connect username in parenthesis allows to get more information - Gladhon - Kai - Bartłomiej Zając + - Maximilian.Beckers - Grégoire Penverne (gpenverne) - Venu - Jonatan Männchen @@ -1545,7 +1548,6 @@ The Symfony Connect username in parenthesis allows to get more information - Vitali Tsyrkin - Juga Paazmaya - afaricamp - - Glodzienski - riadh26 - Konstantinos Alexiou - Dilek Erkut @@ -1737,7 +1739,6 @@ The Symfony Connect username in parenthesis allows to get more information - Antoine M - Frank Jogeleit - Ondřej Frei - - Volodymyr Panivko - Jenne van der Meer - Storkeus - Anton Zagorskii @@ -1793,6 +1794,7 @@ The Symfony Connect username in parenthesis allows to get more information - Morgan Auchede - Christian Morgan - Alexander Miehe + - Simon (kosssi) - Sascha Dens (saschadens) - Maxime Aknin (3m1x4m) - Geordie @@ -1976,6 +1978,7 @@ The Symfony Connect username in parenthesis allows to get more information - Anton Dyshkant - Kirill Nesmeyanov (serafim) - Reece Fowell (reecefowell) + - Muhammad Aakash - Guillaume Gammelin - Valérian Galliat - d-ph @@ -2064,6 +2067,7 @@ The Symfony Connect username in parenthesis allows to get more information - Ariel J. Birnbaum - Danijel Obradović - Pablo Borowicz + - Ondřej Frei - Máximo Cuadros (mcuadros) - Lukas Mencl - EXT - THERAGE Kevin @@ -2207,6 +2211,7 @@ The Symfony Connect username in parenthesis allows to get more information - David de Boer (ddeboer) - Eno Mullaraj (emullaraj) - Stephan Vock (glaubinix) + - Guillem Fondin (guillemfondin) - Ryan Rogers - Arnaud - Klaus Purer @@ -2258,6 +2263,7 @@ The Symfony Connect username in parenthesis allows to get more information - gndk - Alberto Aldegheri - Dalibor Karlović + - Cyril Vermandé (cyve) - Dmitri Petmanson - heccjj - Alexandre Melard @@ -2331,6 +2337,7 @@ The Symfony Connect username in parenthesis allows to get more information - Clément LEFEBVRE (nemoneph) - Walter Dal Mut (wdalmut) - abluchet + - PabloKowalczyk - Matthieu - Albin Kerouaton - Sébastien HOUZÉ @@ -2372,6 +2379,7 @@ The Symfony Connect username in parenthesis allows to get more information - Sandro Hopf (senaria) - ChrisC - jack.shpartko + - Willem Verspyck - Kim Laï Trinh - Jason Desrosiers - m.chwedziak @@ -2386,6 +2394,7 @@ The Symfony Connect username in parenthesis allows to get more information - Ilya Biryukov (ibiryukov) - Roma (memphys) - Giorgio Premi + - Krzysztof Pyrkosz - ncou - Ian Carroll - caponica @@ -2418,6 +2427,7 @@ The Symfony Connect username in parenthesis allows to get more information - Emmanuel Vella (emmanuel.vella) - Guillaume BRETOU (guiguiboy) - Ibon Conesa (ibonkonesa) + - Yoann Chocteau (kezaweb) - nuryagdy mustapayev (nueron) - Carsten Nielsen (phreaknerd) - Jay Severson @@ -2443,6 +2453,7 @@ The Symfony Connect username in parenthesis allows to get more information - Pieter Jordaan - Tournoud (damientournoud) - Michael Dowling (mtdowling) + - Arnaud POINTET (oipnet) - Karlos Presumido (oneko) - Tony Vermeiren (tony) - Thomas Counsell @@ -2490,6 +2501,7 @@ The Symfony Connect username in parenthesis allows to get more information - James Cowgill - sensio - Julien Menth (cfjulien) + - Lyubomir Grozdanov (lubo13) - Nicolas Schwartz (nicoschwartz) - Tim Jabs (rubinum) - Stéphane Seng (stephaneseng) @@ -2541,6 +2553,7 @@ The Symfony Connect username in parenthesis allows to get more information - Alex Teterin (errogaht) - Gunnar Lium (gunnarlium) - Malte Wunsch (maltewunsch) + - Simo Heinonen (simoheinonen) - Tiago Garcia (tiagojsag) - Artiom - Jakub Simon @@ -2571,6 +2584,7 @@ The Symfony Connect username in parenthesis allows to get more information - Boris Betzholz - Eric Caron - Arnau González + - GurvanVgx - 2manypeople - Wing - Thomas Bibb @@ -2713,6 +2727,7 @@ The Symfony Connect username in parenthesis allows to get more information - Milos Colakovic (project2481) - Rénald Casagraude (rcasagraude) - Robin Duval (robin-duval) + - Mohammad Ali Sarbanha (sarbanha) - Artem Lopata (bumz) - alex - Roman Orlov @@ -2849,6 +2864,7 @@ The Symfony Connect username in parenthesis allows to get more information - Jelle Kapitein - Jochen Mandl - Marin Nicolae + - Gerrit Addiks - Albert Prat - Alessandro Loffredo - Ian Phillips @@ -2910,6 +2926,7 @@ The Symfony Connect username in parenthesis allows to get more information - Tomáš Polívka (draczris) - Dennis Smink (dsmink) - Franz Liedke (franzliedke) + - Alex (garrett) - Gaylord Poillon (gaylord_p) - gondo (gondo) - Joris Garonian (grifx) @@ -2955,6 +2972,7 @@ The Symfony Connect username in parenthesis allows to get more information - Francois Martin - Saem Ghani - Stefan Oderbolz + - Tamás Szigeti - Gabriel Moreira - Alexey Popkov - ChS @@ -2975,7 +2993,6 @@ The Symfony Connect username in parenthesis allows to get more information - HADJEDJ Vincent (hadjedjvincent) - Daniele Cesarini (ijanki) - Ismail Asci (ismailasci) - - Simon (kosssi) - Ondřej Mirtes (mirtes) - Paulius Jarmalavičius (pjarmalavicius) - Ramon Ornelas (ramonornela) @@ -3020,6 +3037,7 @@ The Symfony Connect username in parenthesis allows to get more information - Vyacheslav Slinko - Benjamin Laugueux - Jakub Chábek + - William Pinaud (DocFX) - Johannes - Jörg Rühl - wesleyh @@ -3067,6 +3085,7 @@ The Symfony Connect username in parenthesis allows to get more information - Skorney - Lucas Matte - fmarchalemisys + - MGatner - mieszko4 - Steve Preston - ibasaw @@ -3265,6 +3284,7 @@ The Symfony Connect username in parenthesis allows to get more information - Konstantin Scheumann - Michael - fh-github@fholzhauer.de + - rogamoore - AbdElKader Bouadjadja - DSeemiller - Jan Emrich diff --git a/UPGRADE-5.0.md b/UPGRADE-5.0.md index 67b5ef02c3787..17dbdc4759b88 100644 --- a/UPGRADE-5.0.md +++ b/UPGRADE-5.0.md @@ -525,10 +525,6 @@ Serializer were removed, use the default context instead. * The `AbstractNormalizer::handleCircularReference()` method has two new `$format` and `$context` arguments. * Removed support for instantiating a `DataUriNormalizer` with a default MIME type guesser when the `symfony/mime` component isn't installed. - -Serializer ----------- - * Removed the `XmlEncoder::TYPE_CASE_ATTRIBUTES` constant. Use `XmlEncoder::TYPE_CAST_ATTRIBUTES` instead. Stopwatch diff --git a/src/Symfony/Bridge/Doctrine/ContainerAwareEventManager.php b/src/Symfony/Bridge/Doctrine/ContainerAwareEventManager.php index 48385c93ac19e..bb0f62a95c76f 100644 --- a/src/Symfony/Bridge/Doctrine/ContainerAwareEventManager.php +++ b/src/Symfony/Bridge/Doctrine/ContainerAwareEventManager.php @@ -72,15 +72,23 @@ public function dispatchEvent($eventName, EventArgs $eventArgs = null) */ public function getListeners($event = null) { + if (null === $event) { + return $this->getAllListeners(); + } if (!$this->initializedSubscribers) { $this->initializeSubscribers(); } - if (null !== $event) { - if (!isset($this->initialized[$event])) { - $this->initializeListeners($event); - } + if (!isset($this->initialized[$event])) { + $this->initializeListeners($event); + } - return $this->listeners[$event]; + return $this->listeners[$event]; + } + + public function getAllListeners(): array + { + if (!$this->initializedSubscribers) { + $this->initializeSubscribers(); } foreach ($this->listeners as $event => $listeners) { diff --git a/src/Symfony/Bridge/Doctrine/Tests/ContainerAwareEventManagerTest.php b/src/Symfony/Bridge/Doctrine/Tests/ContainerAwareEventManagerTest.php index e9d260ec26608..868fc25cf6151 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/ContainerAwareEventManagerTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/ContainerAwareEventManagerTest.php @@ -165,6 +165,15 @@ public function testGetListeners() $this->assertSame([$listener1, $listener2], array_values($this->evm->getListeners()['foo'])); } + public function testGetAllListeners() + { + $this->container->set('lazy', $listener1 = new MyListener()); + $this->evm->addEventListener('foo', 'lazy'); + $this->evm->addEventListener('foo', $listener2 = new MyListener()); + + $this->assertSame([$listener1, $listener2], array_values($this->evm->getAllListeners()['foo'])); + } + public function testRemoveEventListener() { $this->container->set('lazy', $listener1 = new MyListener()); diff --git a/src/Symfony/Component/Cache/Adapter/RedisTagAwareAdapter.php b/src/Symfony/Component/Cache/Adapter/RedisTagAwareAdapter.php index 3d950f9352756..fd263da3cd58f 100644 --- a/src/Symfony/Component/Cache/Adapter/RedisTagAwareAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/RedisTagAwareAdapter.php @@ -204,7 +204,7 @@ protected function doInvalidate(array $tagIds): bool // and removes the linked items. When the set is still not empty after // the scan, it means we're in cluster mode and that the linked items // are on other nodes: we move the links to a temporary set and we - // gargage collect that set from the client side. + // garbage collect that set from the client side. $lua = <<<'EOLUA' redis.replicate_commands() diff --git a/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php b/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php index 01f17fdb8a729..60449e1d24bcc 100644 --- a/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php +++ b/src/Symfony/Component/Cache/Tests/Adapter/AdapterTestCase.php @@ -331,6 +331,19 @@ public function testNullByteInKey() $this->assertSame(123, $cache->getItem("a\0b")->get()); } + + public function testNumericKeysWorkAfterMemoryLeakPrevention() + { + $cache = $this->createCachePool(0, __FUNCTION__); + + for ($i = 0; $i < 1001; ++$i) { + $cacheItem = $cache->getItem((string) $i); + $cacheItem->set('value-'.$i); + $cache->save($cacheItem); + } + + $this->assertEquals('value-50', $cache->getItem((string) 50)->get()); + } } class NotUnserializable diff --git a/src/Symfony/Component/Cache/Traits/AbstractTrait.php b/src/Symfony/Component/Cache/Traits/AbstractTrait.php index f4902917d38b0..b047880661ff9 100644 --- a/src/Symfony/Component/Cache/Traits/AbstractTrait.php +++ b/src/Symfony/Component/Cache/Traits/AbstractTrait.php @@ -290,7 +290,7 @@ private function getId($key): string $this->ids[$key] = $key; if (\count($this->ids) > 1000) { - array_splice($this->ids, 0, 500); // stop memory leak if there are many keys + $this->ids = \array_slice($this->ids, 500, null, true); // stop memory leak if there are many keys } if (null === $this->maxIdLength) { diff --git a/src/Symfony/Component/Console/Application.php b/src/Symfony/Component/Console/Application.php index 1021a900f0972..42c4911a0f888 100644 --- a/src/Symfony/Component/Console/Application.php +++ b/src/Symfony/Component/Console/Application.php @@ -254,7 +254,9 @@ public function doRun(InputInterface $input, OutputInterface $output) $alternative = $alternatives[0]; $style = new SymfonyStyle($input, $output); - $style->block(sprintf("\nCommand \"%s\" is not defined.\n", $name), null, 'error'); + $output->writeln(''); + $formattedBlock = (new FormatterHelper())->formatBlock(sprintf('Command "%s" is not defined.', $name), 'error', true); + $output->writeln($formattedBlock); if (!$style->confirm(sprintf('Do you want to run "%s" instead? ', $alternative), false)) { if (null !== $this->dispatcher) { $event = new ConsoleErrorEvent($input, $output, $e); @@ -955,11 +957,21 @@ protected function configureIO(InputInterface $input, OutputInterface $output) } switch ($shellVerbosity = (int) getenv('SHELL_VERBOSITY')) { - case -1: $output->setVerbosity(OutputInterface::VERBOSITY_QUIET); break; - case 1: $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); break; - case 2: $output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); break; - case 3: $output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); break; - default: $shellVerbosity = 0; break; + case -1: + $output->setVerbosity(OutputInterface::VERBOSITY_QUIET); + break; + case 1: + $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); + break; + case 2: + $output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); + break; + case 3: + $output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); + break; + default: + $shellVerbosity = 0; + break; } if (true === $input->hasParameterOption(['--quiet', '-q'], true)) { diff --git a/src/Symfony/Component/Form/ChoiceList/ArrayChoiceList.php b/src/Symfony/Component/Form/ChoiceList/ArrayChoiceList.php index 7917f4a543da9..e5056d897fc9d 100644 --- a/src/Symfony/Component/Form/ChoiceList/ArrayChoiceList.php +++ b/src/Symfony/Component/Form/ChoiceList/ArrayChoiceList.php @@ -15,7 +15,7 @@ * A list of choices with arbitrary data types. * * The user of this class is responsible for assigning string values to the - * choices annd for their uniqueness. + * choices and for their uniqueness. * Both the choices and their values are passed to the constructor. * Each choice must have a corresponding value (with the same key) in * the values array. diff --git a/src/Symfony/Component/Form/Resources/translations/validators.lv.xlf b/src/Symfony/Component/Form/Resources/translations/validators.lv.xlf index e7c90c793ede1..54711cb5f88b0 100644 --- a/src/Symfony/Component/Form/Resources/translations/validators.lv.xlf +++ b/src/Symfony/Component/Form/Resources/translations/validators.lv.xlf @@ -132,7 +132,7 @@ Please enter a valid week. - Lūdzu, ievadiet derīgu nedeļu. + Lūdzu, ievadiet derīgu nedēļu. diff --git a/src/Symfony/Component/Form/Resources/translations/validators.ur.xlf b/src/Symfony/Component/Form/Resources/translations/validators.ur.xlf new file mode 100644 index 0000000000000..1ec61be6d840c --- /dev/null +++ b/src/Symfony/Component/Form/Resources/translations/validators.ur.xlf @@ -0,0 +1,139 @@ + + + + + + This form should not contain extra fields. + اس فارم میں اضافی فیلڈز نہیں ہونی چاہئیں + + + The uploaded file was too large. Please try to upload a smaller file. + اپ لوڈ کردھ فائل بہت بڑی تھی۔ براہ کرم ایک چھوٹی فائل اپ لوڈ کرنے کی کوشش کریں + + + The CSRF token is invalid. Please try to resubmit the form. + ٹوکن غلط ہے۔ براۓ کرم فارم کو دوبارہ جمع کرانے کی کوشش کریں CSRF + + + This value is not a valid HTML5 color. + ر نگ نھیں ھےHTML یھ ولیو در ست + + + Please enter a valid birthdate. + براۓ کرم درست تاریخ پیدائش درج کریں + + + The selected choice is invalid. + منتخب کردہ انتخاب غلط ہے + + + The collection is invalid. + یھ مجموعہ غلط ہے + + + Please select a valid color. + براۓ کرم ایک درست رنگ منتخب کریں + + + Please select a valid country. + براۓ کرم ایک درست ملک منتخب کریں + + + Please select a valid currency. + براۓ کرم ایک درست کرنسی منتخب کریں + + + Please choose a valid date interval. + براۓ کرم ایک درست تاریخی وقفھہ منتخب کریں + + + Please enter a valid date and time. + براۓ کرم ایک درست تاریخ اور وقت درج کریں + + + Please enter a valid date. + براۓ کرم ایک درست تاریخ درج کریں + + + Please select a valid file. + براۓ کرم ایک درست فائل منتخب کریں + + + The hidden field is invalid. + پوشیدھہ فیلڈ غلط ہے + + + Please enter an integer. + براۓ کرم ایک عدد درج کریں + + + Please select a valid language. + براۓ کرم ایک درست زبان منتخب کریں + + + Please select a valid locale. + براۓ کرم ایک درست مقام منتخب کریں + + + Please enter a valid money amount. + براۓ کرم ایک درست رقم درج کریں + + + Please enter a number. + براۓ کرم ایک نمبر درج کریں + + + The password is invalid. + پاس ورڈ غلط ہے + + + Please enter a percentage value. + براہ کرم فیصد کی ويلو درج کریں + + + The values do not match. + ويليوذ ٹھيک نہیں ہیں + + + Please enter a valid time. + براۓ کرم ایک درست وقت درج کریں + + + Please select a valid timezone. + براۓ کرم ایک درست ٹائم زون منتخب کریں + + + Please enter a valid URL. + براۓ کرم ایک درست ادريس درج کریں + + + Please enter a valid search term. + براۓ کرم ایک درست ويلو تلاش کيلۓ درج کریں + + + Please provide a valid phone number. + براۓ کرم ایک درست فون نمبر فراہم کریں + + + The checkbox has an invalid value. + چیک باکس میں ایک غلط ويلو ہے + + + Please enter a valid email address. + براۓ مہربانی قابل قبول ای میل ایڈریس لکھیں + + + Please select a valid option. + براۓ کرم ایک درست آپشن منتخب کریں + + + Please select a valid range. + براۓ کرم ایک درست رینج منتخب کریں + + + Please enter a valid week. + براۓ کرم ایک درست ہفتہ درج کریں + + + + diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/common.inc b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/common.inc index fd662e3a16236..ef87754235891 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/common.inc +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/common.inc @@ -54,10 +54,12 @@ ob_start(); class TestSessionHandler extends AbstractSessionHandler { private $data; + private $sessionId; - public function __construct($data = '') + public function __construct($data = '', $sessionId = null) { $this->data = $data; + $this->sessionId = $sessionId; } public function open($path, $name): bool @@ -131,7 +133,13 @@ class TestSessionHandler extends AbstractSessionHandler protected function doRead($sessionId): string { - echo __FUNCTION__.': ', $this->data, "\n"; + if (isset($this->sessionId) && $sessionId !== $this->sessionId) { + echo __FUNCTION__ . ": invalid sessionId\n"; + + return ''; + } + echo __FUNCTION__ . ': ', $this->data, "\n"; + $this->sessionId = $sessionId; return $this->data; } @@ -139,6 +147,7 @@ class TestSessionHandler extends AbstractSessionHandler protected function doWrite($sessionId, $data): bool { echo __FUNCTION__.': ', $data, "\n"; + $this->sessionId = $sessionId; return true; } @@ -146,6 +155,7 @@ class TestSessionHandler extends AbstractSessionHandler protected function doDestroy($sessionId): bool { echo __FUNCTION__, "\n"; + $this->sessionId = ''; return true; } diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected index d825f44f7cb86..95c96f0cccdf7 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/regenerate.expected @@ -9,9 +9,8 @@ close open validateId read -doRead: abc|i:123; +doRead: invalid sessionId read -doRead: abc|i:123; write doWrite: abc|i:123; diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.expected b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.expected index 8b5fc08bd375b..b7cae201ccb76 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.expected +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/Fixtures/with_samesite_and_migration.expected @@ -8,7 +8,7 @@ close open validateId read -doRead: +doRead: invalid sessionId read write diff --git a/src/Symfony/Component/HttpKernel/HttpKernel.php b/src/Symfony/Component/HttpKernel/HttpKernel.php index d53b80665b467..e23023d3c40ff 100644 --- a/src/Symfony/Component/HttpKernel/HttpKernel.php +++ b/src/Symfony/Component/HttpKernel/HttpKernel.php @@ -112,7 +112,17 @@ public function terminateWithException(\Throwable $exception, Request $request = throw $exception; } - $response = $this->handleThrowable($exception, $request, self::MASTER_REQUEST); + if ($pop = $request !== $this->requestStack->getMasterRequest()) { + $this->requestStack->push($request); + } + + try { + $response = $this->handleThrowable($exception, $request, self::MASTER_REQUEST); + } finally { + if ($pop) { + $this->requestStack->pop(); + } + } $response->sendHeaders(); $response->sendContent(); diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index f944b3d9e6ac6..54ea465379ba1 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -76,11 +76,11 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private static $freshCache = []; - public const VERSION = '4.4.47'; - public const VERSION_ID = 40447; + public const VERSION = '4.4.48'; + public const VERSION_ID = 40448; public const MAJOR_VERSION = 4; public const MINOR_VERSION = 4; - public const RELEASE_VERSION = 47; + public const RELEASE_VERSION = 48; public const EXTRA_VERSION = ''; public const END_OF_MAINTENANCE = '11/2022'; diff --git a/src/Symfony/Component/HttpKernel/Log/Logger.php b/src/Symfony/Component/HttpKernel/Log/Logger.php index d7f297f5864cd..1238517f64e5d 100644 --- a/src/Symfony/Component/HttpKernel/Log/Logger.php +++ b/src/Symfony/Component/HttpKernel/Log/Logger.php @@ -44,10 +44,14 @@ public function __construct(string $minLevel = null, $output = null, callable $f if (isset($_ENV['SHELL_VERBOSITY']) || isset($_SERVER['SHELL_VERBOSITY'])) { switch ((int) ($_ENV['SHELL_VERBOSITY'] ?? $_SERVER['SHELL_VERBOSITY'])) { - case -1: $minLevel = LogLevel::ERROR; break; - case 1: $minLevel = LogLevel::NOTICE; break; - case 2: $minLevel = LogLevel::INFO; break; - case 3: $minLevel = LogLevel::DEBUG; break; + case -1: $minLevel = LogLevel::ERROR; + break; + case 1: $minLevel = LogLevel::NOTICE; + break; + case 2: $minLevel = LogLevel::INFO; + break; + case 3: $minLevel = LogLevel::DEBUG; + break; } } } @@ -80,7 +84,7 @@ public function log($level, $message, array $context = []) $formatter = $this->formatter; if ($this->handle) { - @fwrite($this->handle, $formatter($level, $message, $context)); + @fwrite($this->handle, $formatter($level, $message, $context).\PHP_EOL); } else { error_log($formatter($level, $message, $context, false)); } @@ -105,7 +109,7 @@ private function format(string $level, string $message, array $context, bool $pr $message = strtr($message, $replacements); } - $log = sprintf('[%s] %s', $level, $message).\PHP_EOL; + $log = sprintf('[%s] %s', $level, $message); if ($prefixDate) { $log = date(\DateTime::RFC3339).' '.$log; } diff --git a/src/Symfony/Component/HttpKernel/Tests/HttpKernelTest.php b/src/Symfony/Component/HttpKernel/Tests/HttpKernelTest.php index 53e5f547d249f..a163715f81b22 100644 --- a/src/Symfony/Component/HttpKernel/Tests/HttpKernelTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/HttpKernelTest.php @@ -20,6 +20,7 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface; use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface; +use Symfony\Component\HttpKernel\Event\ExceptionEvent; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\ControllerDoesNotReturnResponseException; @@ -340,6 +341,22 @@ public function testTerminate() $this->assertEquals($response, $capturedResponse); } + public function testTerminateWithException() + { + $dispatcher = new EventDispatcher(); + $requestStack = new RequestStack(); + $kernel = $this->getHttpKernel($dispatcher, null, $requestStack); + + $dispatcher->addListener(KernelEvents::EXCEPTION, function (ExceptionEvent $event) use (&$capturedRequest, $requestStack) { + $capturedRequest = $requestStack->getCurrentRequest(); + $event->setResponse(new Response()); + }); + + $kernel->terminateWithException(new \Exception('boo'), $request = Request::create('/')); + $this->assertSame($request, $capturedRequest); + $this->assertNull($requestStack->getCurrentRequest()); + } + public function testVerifyRequestStackPushPopDuringHandle() { $request = new Request(); diff --git a/src/Symfony/Component/HttpKernel/Tests/Log/LoggerTest.php b/src/Symfony/Component/HttpKernel/Tests/Log/LoggerTest.php index fb2b43cc82aed..5996e6e72ad35 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Log/LoggerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Log/LoggerTest.php @@ -48,7 +48,7 @@ protected function tearDown(): void public static function assertLogsMatch(array $expected, array $given) { foreach ($given as $k => $line) { - self::assertThat(1 === preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[\+-][0-9]{2}:[0-9]{2} '.preg_quote($expected[$k]).'/', $line), self::isTrue(), "\"$line\" do not match expected pattern \"$expected[$k]\""); + self::assertSame(1, preg_match('/[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[\+-][0-9]{2}:[0-9]{2} '.preg_quote($expected[$k]).'/', $line), "\"$line\" do not match expected pattern \"$expected[$k]\""); } } @@ -186,7 +186,7 @@ public function testContextExceptionKeyCanBeExceptionOrOtherValues() public function testFormatter() { $this->logger = new Logger(LogLevel::DEBUG, $this->tmpFile, function ($level, $message, $context) { - return json_encode(['level' => $level, 'message' => $message, 'context' => $context]).\PHP_EOL; + return json_encode(['level' => $level, 'message' => $message, 'context' => $context]); }); $this->logger->error('An error', ['foo' => 'bar']); @@ -196,6 +196,26 @@ public function testFormatter() '{"level":"warning","message":"A warning","context":{"baz":"bar"}}', ], $this->getLogs()); } + + public function testLogsWithoutOutput() + { + $oldErrorLog = ini_set('error_log', $this->tmpFile); + + $logger = new Logger(); + $logger->error('test'); + $logger->critical('test'); + + $expected = [ + '[error] test', + '[critical] test', + ]; + + foreach ($this->getLogs() as $k => $line) { + $this->assertSame(1, preg_match('/\[[\w\/\-: ]+\] '.preg_quote($expected[$k]).'/', $line), "\"$line\" do not match expected pattern \"$expected[$k]\""); + } + + ini_set('error_log', $oldErrorLog); + } } class DummyTest diff --git a/src/Symfony/Component/Mailer/Transport/AbstractTransport.php b/src/Symfony/Component/Mailer/Transport/AbstractTransport.php index 7ee4513190b33..31dddaa63ace3 100644 --- a/src/Symfony/Component/Mailer/Transport/AbstractTransport.php +++ b/src/Symfony/Component/Mailer/Transport/AbstractTransport.php @@ -61,6 +61,7 @@ public function send(RawMessage $message, Envelope $envelope = null): ?SentMessa $event = new MessageEvent($message, $envelope, (string) $this); $this->dispatcher->dispatch($event); $envelope = $event->getEnvelope(); + $message = $event->getMessage(); } $message = new SentMessage($message, $envelope); diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.az.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.az.xlf index 735de0786567c..ca4401adad3e5 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.az.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.az.xlf @@ -70,6 +70,14 @@ Invalid or expired login link. Yanlış və ya müddəti keçmiş giriş keçidi. + + Too many failed login attempts, please try again in %minutes% minute. + Həddindən artıq uğursuz giriş cəhdi, lütfən %minutes% dəqiqə ərzində yenidən yoxlayın. + + + Too many failed login attempts, please try again in %minutes% minutes. + Həddindən artıq uğursuz giriş cəhdi, lütfən %minutes% dəqiqə ərzində yenidən yoxlayın. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.lv.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.lv.xlf index bdb4a22357f4b..0833b026f3961 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.lv.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.lv.xlf @@ -24,7 +24,7 @@ Not privileged to request the resource. - Nav tiesību ši resursa izsaukšanai. + Nav tiesību šī resursa izsaukšanai. Invalid CSRF token. @@ -64,11 +64,11 @@ Too many failed login attempts, please try again later. - Pārāk daudz atteiktu ieejas mēģinājumu, lūdzu, mēģiniet vēlreiz vēlāk. + Pārāk daudz atteiktu autentifikācijas mēģinājumu, lūdzu, mēģiniet vēlreiz vēlāk. Invalid or expired login link. - Ieejas saite ir nederīga vai arī tai ir beidzies derīguma termiņš. + Autentifikācijas saite ir nederīga vai arī tai ir beidzies derīguma termiņš. Too many failed login attempts, please try again in %minutes% minute. diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.ur.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.ur.xlf new file mode 100644 index 0000000000000..8fd59b691b8ee --- /dev/null +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.ur.xlf @@ -0,0 +1,83 @@ + + + + + + An authentication exception occurred. + ایک تصدیقي خرابی پیش آگئی ۓ + + + Authentication credentials could not be found. + درج کردھ ریکارڈ نہیں مل سکا + + + Authentication request could not be processed due to a system problem. + سسٹم کی خرابی کی وجہ سے تصدیق کی درخواست پر کارروائی نہیں ہو سکی + + + Invalid credentials. + غلط ڈیٹا + + + Cookie has already been used by someone else. + کوکی پہلے ہی کسی اور کے ذریعہ استعمال ہو چکی ہے + + + Not privileged to request the resource. + وسائل کی درخواست کرنے کا اختیار نہیں ہے + + + Invalid CSRF token. + ٹوکن غلط ہے CSRF + + + No authentication provider found to support the authentication token. + تصدیقی ٹوکن کو سپورٹ کرنے کے لیے کوئی تصدیقی کنندہ نہیں ملا + + + No session available, it either timed out or cookies are not enabled. + کوئی سیشن دستیاب نہیں ہے، یا تو اس کا وقت ختم ہو گیا ہے یا کوکیز فعال نہیں ہیں + + + No token could be found. + کوئی ٹوکن نہیں مل سکا + + + Username could not be found. + يوذر نہیں مل سکا + + + Account has expired. + اکاؤنٹ کی میعاد ختم ہو گئی ہے + + + Credentials have expired. + اسناد کی میعاد ختم ہو چکی ہے + + + Account is disabled. + اکاؤنٹ بند کر دیا گیا ہے + + + Account is locked. + اکاؤنٹ لاک ہے + + + Too many failed login attempts, please try again later. + لاگ ان کی بہت زیادہ ناکام کوششیں ہو چکی ہیں، براۓ کرم بعد میں دوبارہ کوشش کریں + + + Invalid or expired login link. + غلط یا ختم شدھ لاگ ان لنک + + + Too many failed login attempts, please try again in %minutes% minute. + منٹ باد %minutes% لاگ ان کی بہت زیادہ ناکام کوششیں ہو چکی ہیں، براۓ کرم دوبارھ کوشيش کريں + + + Too many failed login attempts, please try again in %minutes% minutes. + منٹ باد %minutes% لاگ ان کی بہت زیادہ ناکام کوششیں ہو چکی ہیں، براۓ کرم دوبارھ کوشيش کريں + + + + diff --git a/src/Symfony/Component/Security/Http/Logout/LogoutUrlGenerator.php b/src/Symfony/Component/Security/Http/Logout/LogoutUrlGenerator.php index 0ec1d60c90649..49638f3ced344 100644 --- a/src/Symfony/Component/Security/Http/Logout/LogoutUrlGenerator.php +++ b/src/Symfony/Component/Security/Http/Logout/LogoutUrlGenerator.php @@ -107,6 +107,10 @@ private function generateLogoutUrl(?string $key, int $referenceType): string $request = $this->requestStack->getCurrentRequest(); + if (!$request) { + throw new \LogicException('Unable to generate the logout URL without a Request.'); + } + $url = UrlGeneratorInterface::ABSOLUTE_URL === $referenceType ? $request->getUriForPath($logoutPath) : $request->getBaseUrl().$logoutPath; if (!empty($parameters)) { diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.af.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.af.xlf index 61b9eac232ca1..d1dcf3ec8fa50 100644 --- a/src/Symfony/Component/Validator/Resources/translations/validators.af.xlf +++ b/src/Symfony/Component/Validator/Resources/translations/validators.af.xlf @@ -382,6 +382,22 @@ This value is not a valid International Securities Identification Number (ISIN). Hierdie waarde is nie 'n geldige Internasionale veiligheidsidentifikasienommer (ISIN) nie. + + This value should be a valid expression. + Hierdie waarde moet 'n geldige uitdrukking wees. + + + This value is not a valid CSS color. + Hierdie waarde is nie 'n geldige CSS-kleur nie. + + + This value is not a valid CIDR notation. + Hierdie waarde is nie 'n geldige CIDR-notasie nie. + + + The value of the netmask should be between {{ min }} and {{ max }}. + Die waarde van die netmasker moet tussen {{ min }} en {{ max }} wees. + diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.az.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.az.xlf index 59480874fd387..b3e0999304ae7 100644 --- a/src/Symfony/Component/Validator/Resources/translations/validators.az.xlf +++ b/src/Symfony/Component/Validator/Resources/translations/validators.az.xlf @@ -386,6 +386,22 @@ This value is not a valid International Securities Identification Number (ISIN). Bu dəyər doğru bir Qiymətli Kağızın Beynəlxalq İdentifikasiya Kodu (ISIN) deyil. + + This value should be a valid expression. + Bu dəyər etibarlı ifadə olmalıdır. + + + This value is not a valid CSS color. + Bu dəyər etibarlı CSS rəngi deyil. + + + This value is not a valid CIDR notation. + Bu dəyər etibarlı CIDR notasiyası deyil. + + + The value of the netmask should be between {{ min }} and {{ max }}. + Şəbəkə maskasının dəyəri {{ min }} və {{ max }} arasında olmalıdır. + diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.ur.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.ur.xlf new file mode 100644 index 0000000000000..c2b114942972f --- /dev/null +++ b/src/Symfony/Component/Validator/Resources/translations/validators.ur.xlf @@ -0,0 +1,407 @@ + + + + + + This value should be false. + یہ ويليو غلط ہونی چاہیے + + + This value should be true. + یہ ويليو درست ہونی چاہیے + + + This value should be of type {{ type }}. + قسم کی ہونی چاہیے {{type}} يھ ويليو + + + This value should be blank. + یہ ويليو خالی ہونی چاہیے + + + The value you selected is not a valid choice. + آپ نے جو ويليو منتخب کی ہے وہ درست انتخاب نہیں ہے + + + You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices. + کا انتخاب کرنا چاہیے {{limit}} کا انتخاب کرنا چاہیے ۔آّپ کو کم اذ کم {{limit}} آپ کو کم از کم + + + You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices. + کا انتخاب کرنا چاہیے {{limit}} کا انتخاب کرنا چاہیے ۔آّپ کو ذيادھ سے ذيادھ {{limit}} آپ کو ذيادھ سے ذيادھ + + + One or more of the given values is invalid. + دی گئی ويليوذ میں سے ایک یا زیادھ ويليوذ غلط ہیں + + + This field was not expected. + اس فیلڈ کی توقع نہیں تھی + + + This field is missing. + یہ فیلڈ غائب ہے + + + This value is not a valid date. + یہ ويليو درست تاریخ نہیں ہے + + + This value is not a valid datetime. + یہ ويليو درست تاریخ وقت نہیں ہے + + + This value is not a valid email address. + یہ ويليو درست ای میل ایڈریس نہیں ہے + + + The file could not be found. + فائل نہیں مل سکی + + + The file is not readable. + فائل پڑھنے کے قابل نہیں ہے + + + The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}. + {{ suffix }} {{ limit }} زیادہ سے زیادہ سائز کی اجازت ہے {{ suffix }}) ({{ size }} فائل بہت بڑی ہے + + + The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}. + ہیں {{ types }} مائیم کی قسمیں ({{ type }}) فائل کی ماۂيم قسم غلط ہے + + + This value should be {{ limit }} or less. + یا اس سے کم ہونی چاہیے {{ limit }} یہ ويليو + + + This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less. + حروف یا اس سے کم ہونے چاہئیں {{ limit }} حرف یا اس سے کم ہونا چاہیے۔|یہ ويليو بہت لمبی ہے۔ اس میں{{ limit }} یہ ويليو بہت لمبی ہے۔ اس میں + + + This value should be {{ limit }} or more. + یا اس سے زیادہ ہونی چاہیے {{ limit }} یہ ويليو + + + This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more. + حروف یا اس سے زیادہ ہونے چاہئیں {{ limit }} حرف یا اس سے زیادہ ہونا چاہیے۔|یہ ويليو بہت چھوٹی ہے۔ اس میں{{ limit }} یہ ويليو بہت مختصر ہے۔ اس میں + + + This value should not be blank. + یہ ويليو خالی نہیں ہونی چاہیے + + + This value should not be null. + یہ ويليو خالی نہیں ہونی چاہیے + + + This value should be null. + یہ ويليو خالی ہونی چاہیے + + + This value is not valid. + یہ ويليو درست نہیں ہے + + + This value is not a valid time. + یہ ويليو درست وقت نہیں ہے + + + This value is not a valid URL. + نہیں ہے URL یہ ويليو درست + + + The two values should be equal. + دونوں ويليوذ برابر ہونی چاہئیں + + + The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}. + {{ suffix }} {{ limit }} فائل بہت بڑی ہے۔ زیادہ سے زیادہ سائز کی اجازت ہے + + + The file is too large. + فائل بہت بڑی ہے + + + The file could not be uploaded. + فائل اپ لوڈ نہیں ہو سکی + + + This value should be a valid number. + یہ ويليو ایک درست نمبر ہونی چاہیے + + + This file is not a valid image. + یہ فائل درست تصویر نہیں ہے + + + This is not a valid IP address. + ایڈریس نہیں ہے IP یہ ایک درست + + + This value is not a valid language. + یہ ويليو درست زبان نہیں ہے + + + This value is not a valid locale. + یہ ويليو درست مقام نہیں ہے + + + This value is not a valid country. + یہ ويليو ایک درست ملک نہیں ہے + + + This value is already used. + یہ ويليو پہلے ہی استعمال ہو چکی ہے + + + The size of the image could not be detected. + تصویر کے سائز کا پتہ نہیں چل سکا + + + The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px. + ہے {{ max_width }}px اجازت دی گئی زیادہ سے زیاد چوڑائی ({{ width }}px) تصویر کی چوڑائی بہت بڑی ہے + + + The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px. + ہے {{ min_width }}px کم از کم چوڑائی متوقع({{ width }}px) تصویر کی چوڑائی بہت چھوٹی ہے + + + The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px. + ہے {{ max_height }}px اجازت دی گئی زیادہ سے زیاد اونچائی ({{ height }}px) تصویر کی اونچائی بہت بڑی ہے + + + The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px. + ہے {{ min_height }}px متوقع کم از کم اونچائی ({{ height }}px) تصویر کی اونچائی بہت چھوٹی ہے + + + This value should be the user's current password. + یہ ويليو صارف کا موجودہ پاس ورڈ ہونا چاہیے + + + This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters. + حروف ہونے چاہئیں {{ limit }} حرف ہونا چاہیے۔|اس ويليو میں بالکل {{ limit }} اس ويليو میں بالکل + + + The file was only partially uploaded. + فائل صرف جزوی طور پر اپ لوڈ کی گئی تھی + + + No file was uploaded. + کوئی فائل اپ لوڈ نہیں کی گئی + + + No temporary folder was configured in php.ini. + میں کوئی عارضی فولڈر کنفیگر نہیں کیا گیا، یا کنفیگرڈ فولڈر موجود نہیں ہے php.ini + + + Cannot write temporary file to disk. + عارضی فائل کو ڈسک پر نہیں لکھا جا سکتا + + + A PHP extension caused the upload to fail. + پی ایچ پی کی توسیع کی وجہ سے اپ لوڈ ناکام ہو گیا + + + This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more. + عناصر یا اس سے زیادہ ہونا چاہیے {{ limit } عنصر یا اس سے زیادہ ہونا چاہیے۔|اس مجموعہ میں {{ limit }} اس مجموعہ میں + + + This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less. + عناصر یا اس سے کم ہونا چاہیے {{ limit } عنصر یا اس سے کم ہونا چاہیے۔|اس مجموعہ میں {{ limit }} اس مجموعہ میں + + + This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements. + عنصر ہونا چاہیے {{ limit }} عنصر ہونا چاہیے۔|اس مجموعے میں بالکل {{ limit }} اس مجموعہ میں بالکل + + + Invalid card number. + غلط کارڈ نمبر + + + Unsupported card type or invalid card number. + غیر تعاون یافتہ کارڈ کی قسم یا غلط کارڈ نمبر + + + This is not a valid International Bank Account Number (IBAN). + (IBAN)یہ ایک درست بین الاقوامی بینک اکاؤنٹ نمبر نہیں ہے + + + This value is not a valid ISBN-10. + نہیں ہے ISBN-10 یھ ويليو درست۔ + + + This value is not a valid ISBN-13. + نہیں ہے ISBN-13 یھ ويليو درست۔ + + + This value is neither a valid ISBN-10 nor a valid ISBN-13. + ISBN-13 ے اور نہ ہی درست ISBN-10 یہ ويليو نہ تو درست + + + This value is not a valid ISSN. + نہیں ہے ISSNیھ ويليو درست۔ + + + This value is not a valid currency. + یہ ويليو درست کرنسی نہیں ہے + + + This value should be equal to {{ compared_value }}. + کے برابر ہونا چاہیے {{ compared_value }} یھ ويليو + + + This value should be greater than {{ compared_value }}. + سے بڈي ہوني چاہیے {{ compared_value }} یھ ويليو + + + This value should be greater than or equal to {{ compared_value }}. + سے بڈي یا برابر ہوني چاہیے {{ compared_value }} یھ ويليو + + + This value should be identical to {{ compared_value_type }} {{ compared_value }}. + {{ compared_value }} {{ compared_value_type }} یہ ويليو ایک جیسی ہونی چاہیے۔ + + + This value should be less than {{ compared_value }}. + سے کم ہوني چاہیے {{ compared_value }} یھ ويليو + + + This value should be less than or equal to {{ compared_value }}. + سے کم یا برابر ہوني چاہیے {{ compared_value }} یھ ويليو + + + This value should not be equal to {{ compared_value }}. + کے برابر نھيں ہوني چاہیے {{ compared_value }} یھ ويليو + + + This value should not be identical to {{ compared_value_type }} {{ compared_value }}. + ایک جیسی نیيں ہونی چاہیے {{ compared_value }} {{ compared_value_type }} یہ ويليو + + + The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}. + ہے {{ max_ratio }} اجازت شدہ زیادہ سے زیادہ تناسب ({{ ratio }}) تصویر کا تناسب بہت بڑا ہے + + + The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}. + ہے{{ min_ratio }} ratio متوقع کم از کم ({{ ratio }}) بہت چھوٹا ہے ratio تصویر کا + + + The image is square ({{ width }}x{{ height }}px). Square images are not allowed. + مربع تصاویر کی اجازت نہیں ہے (px{{ height }}x{{ width }}) تصویر مربع ہے + + + The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed. + زمین کی تزئین پر مبنی تصاویر کی اجازت نہیں ہے ({{ width }}x{{ height }}px) تصویر زمین کی تزئین پر مبنی ہے + + + The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed. + پورٹریٹ پر مبنی تصاویر کی اجازت نہیں ہے ({{ width }}x{{ height }}px) تصویر پورٹریٹ پر مبنی ہے + + + An empty file is not allowed. + خالی فائل کی اجازت نہیں ہے + + + The host could not be resolved. + میزبان حل نہیں ہو سکا + + + This value does not match the expected {{ charset }} charset. + کے جيسي نہیں ہے charset {{ charset }} یہ ويليو متوقع + + + This is not a valid Business Identifier Code (BIC). + (BIC)یہ ایک درست کاروباری شناخت کنندہ کوڈ نہیں ہے + + + Error + خرابی + + + This is not a valid UUID. + نہیں ہے UUID یہ درست + + + This value should be a multiple of {{ compared_value }}. + کا ضرب ہوني چاہیے {{ compared_value }} یہ ويليو + + + This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}. + سے وابستہ نہیں ہے IBAN {{ iban }} (BIC) یہ کاروباری شناختی کوڈ + + + This value should be valid JSON. + ہونی چاہیے JSON یہ ويليو درست + + + This collection should contain only unique elements. + یہ مجموعہ صرف منفرد عناصر پر مشتمل ہونا چاہیے + + + This value should be positive. + یہ ويليو مثبت ہونی چاہیے + + + This value should be either positive or zero. + یہ ويليو یا تو مثبت یا صفر ہونی چاہیے + + + This value should be negative. + یہ ويليو منفی ہونی چاہیے + + + This value should be either negative or zero. + یہ ويليو یا تو منفی یا صفر ہونی چاہیے + + + This value is not a valid timezone. + یہ ويليو درست ٹائم زون نہیں ہے + + + This password has been leaked in a data breach, it must not be used. Please use another password. + یہ پاس ورڈ ڈیٹا کی خلاف ورزی میں لیک ہو گیا ہے، اسے استعمال نہیں کرنا چاہیے۔ براۓ کرم دوسرا پاس ورڈ استعمال کریں + + + This value should be between {{ min }} and {{ max }}. + کے درمیان ہونی چاہیے {{ max }} اور {{ min }} یہ ويليو + + + This value is not a valid hostname. + نہیں ہے hostname یہ ويليو درست + + + The number of elements in this collection should be a multiple of {{ compared_value }}. + کی ضرب ہونی چاہیے {{ compared_value }} اس مجموعہ میں عناصر کی تعداد + + + This value should satisfy at least one of the following constraints: + اس ويليو کو درج ذیل رکاوٹوں میں سے کم از کم ایک کو پورا کرنا چاہیے + + + Each element of this collection should satisfy its own set of constraints. + اس مجموعے کے ہر عنصر کو اپنی پابندیوں کے سیٹ کو پورا کرنا چاہیے + + + This value is not a valid International Securities Identification Number (ISIN). + نہیں ہے (ISIN) یہ ويليو درست بین الاقوامی سیکیورٹیز شناختی نمبر + + + This value should be a valid expression. + یہ ويليو ایک درست اظہار ہوني چاہیے + + + This value is not a valid CSS color. + رنگ نہیں ہے CSS یہ ويليو درست + + + This value is not a valid CIDR notation. + نوٹیشن نہیں ہے CIDR یہ ويليو ایک درست + + + The value of the netmask should be between {{ min }} and {{ max }}. + کے درمیان ہونی چاہیے {{ max }} اور {{ min }} نیٹ ماسک کی ويليو + + + + pFad - Phonifier reborn

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

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


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy