Commit Graph

32249 Commits

Author SHA1 Message Date
Nicolas Grekas
01b064d97a Merge branch '5.1' into 5.x
* 5.1:
  Fix branch-version
2020-10-13 15:22:54 +02:00
Nicolas Grekas
1a0ea4d2f7 Merge branch '4.4' into 5.1
* 4.4:
  Fix branch-version
2020-10-13 15:21:37 +02:00
Nicolas Grekas
58f803f356 Merge branch '3.4' into 4.4
* 3.4:
  Fix branch-version
2020-10-13 15:20:53 +02:00
Nicolas Grekas
44a7e3e920 Fix branch-version 2020-10-13 15:20:16 +02:00
Nicolas Grekas
59db41386f Merge branch '4.4' into 5.1
* 4.4:
  Fix merge
2020-10-13 14:46:35 +02:00
Nicolas Grekas
7f0015ee35 Merge branch '5.1' into 5.x
* 5.1:
  Remove "version" from composer.json files, use "branch-version" instead
  [String] fix "is too large" ValueError on PHP 8
2020-10-13 14:43:06 +02:00
Nicolas Grekas
e95f87d1c8 bug #38546 [String] fix "is too large" ValueError on PHP 8 (nicolas-grekas)
This PR was merged into the 5.1 branch.

Discussion
----------

[String] fix "is too large" ValueError on PHP 8

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

15c22c69e4 [String] fix "is too large" ValueError on PHP 8
2020-10-13 14:36:28 +02:00
Nicolas Grekas
23ab908213 Merge branch '4.4' into 5.1
* 4.4:
  Remove "version" from composer.json files, use "branch-version" instead
2020-10-13 14:35:38 +02:00
Nicolas Grekas
e953dd3e0d Merge branch '3.4' into 4.4
* 3.4:
  Remove "version" from composer.json files, use "branch-version" instead
2020-10-13 14:30:56 +02:00
Nicolas Grekas
56a7571bab minor #38460 Remove "version" from composer.json files, use "branch-version" instead (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

Remove "version" from composer.json files, use "branch-version" instead

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Waiting for confirmation from @Seldaek or @naderman

Commits
-------

f9ed6940fd Remove "version" from composer.json files, use "branch-version" instead
2020-10-13 14:24:32 +02:00
Nicolas Grekas
f9ed6940fd Remove "version" from composer.json files, use "branch-version" instead 2020-10-13 14:21:16 +02:00
Nicolas Grekas
15c22c69e4 [String] fix "is too large" ValueError on PHP 8 2020-10-13 14:06:13 +02:00
Nicolas Grekas
5baa123aac Merge branch '5.1' into 5.x
* 5.1:
  [DI] fix dumping env vars
  [HttpClient] skip executing the multi handle when it's freed already
  [HttpClient] fix using freed curl resource at destruct time
  [HttpClient] shutdown verbose output from curl at destruction
  fix warning for preloading TranslatorTrait class
  [Typography] Remove unneeded description comments
2020-10-13 13:14:51 +02:00
Nicolas Grekas
63288a6e2e Merge branch '4.4' into 5.1
* 4.4:
  [DI] fix dumping env vars
  [HttpClient] skip executing the multi handle when it's freed already
  [HttpClient] fix using freed curl resource at destruct time
  [HttpClient] shutdown verbose output from curl at destruction
  fix warning for preloading TranslatorTrait class
  [Typography] Remove unneeded description comments
2020-10-13 13:14:18 +02:00
Nicolas Grekas
d79912d3d2 Merge branch '3.4' into 4.4
* 3.4:
  [Typography] Remove unneeded description comments
2020-10-13 13:09:48 +02:00
Nicolas Grekas
746a8d1a09 [DI] fix dumping env vars 2020-10-13 11:53:00 +02:00
Nicolas Grekas
f52f090230 feature #38532 [HttpClient] simplify retry mechanism around RetryStrategyInterface (nicolas-grekas)
This PR was merged into the 5.x branch.

Discussion
----------

[HttpClient] simplify retry mechanism around RetryStrategyInterface

| Q             | A
| ------------- | ---
| Branch?       | 5.2
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Replaces #38466

I feel like the mechanism behind RetryableHttpClient is too bloated for no pragmatic reasons.

I propose to merge RetryDeciderInterface and RetryBackoffInterface into one single RetryStrategyInterface.

Having two separate interfaces supports no real-world use case. The only implementations we provide are trivial, and they can be reused by extending the provided GenericRetryStrategy implementation if one really doesn't want to duplicate that.

The methods are also simplified by accepting an AsyncContext as argument. This makes the signatures shorter and allows accessing the "info" of the request (allowing to decide based on the IP of the host, etc).

/cc @jderusse

Commits
-------

544c3e8678 [HttpClient] simplify retry mechanism around RetryStrategyInterface
2020-10-13 10:09:30 +02:00
Nicolas Grekas
a580688ee5 [HttpClient] skip executing the multi handle when it's freed already 2020-10-13 10:06:18 +02:00
Nicolas Grekas
4f8384829c [HttpClient] fix using freed curl resource at destruct time 2020-10-13 09:54:33 +02:00
Nicolas Grekas
a279d22d25 [HttpClient] shutdown verbose output from curl at destruction 2020-10-13 09:44:15 +02:00
Nicolas Grekas
544c3e8678 [HttpClient] simplify retry mechanism around RetryStrategyInterface 2020-10-13 09:28:31 +02:00
Nicolas Grekas
9c3a9282f1 Fix CS 2020-10-12 21:59:40 +02:00
Fabien Potencier
ef1253b7c4 Fix tests 2020-10-12 20:55:37 +02:00
Fabien Potencier
a319090109 feature #38525 [Serializer] Enabled mapping configuration via attributes (derrabus)
This PR was merged into the 5.x branch.

Discussion
----------

[Serializer] Enabled mapping configuration via attributes

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | TODO

Let's use attributes for the serializer mapping configuration!

```php
class MyEntity
{
    #[Groups(['list', 'detail])]
    #[SerializedName('some-property')]
    public $someProperty;

    #[Ignore]
    public string $secret;
}
```

Commits
-------

cfb9986203 [Serializer] Enabled mapping configuration via attributes.
2020-10-12 20:19:00 +02:00
Fabien Potencier
1d9c7a9376 Fix composer.json 2020-10-12 20:08:13 +02:00
Karoly Gossler
b9b20d782b Added Discord bridge notifier embeds and test 2020-10-12 20:07:15 +02:00
Mathieu Piot
14790d8140 Add Discord bridge notifier 2020-10-12 20:07:15 +02:00
Fabien Potencier
88b158d989 bug #38477 [Form] fix ViolationMapper was always generating a localized label for each FormType (romaricdrigon)
This PR was merged into the 5.x branch.

Discussion
----------

[Form] fix ViolationMapper was always generating a localized label for each FormType

| Q             | A
| ------------- | ---
| Branch?       | 5.x (fix new behavior from 5.2)
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | /

Follow-up of #38435, with branch changed

**Explanation of the issue**

In Symfony 5.2, the `{{ label }}` placeholder can be used in constraint messages (-> introduced in commit 0d9f44235c)

However, the way it was coded is introducing a small side effect: now, every time there is validation error, `ViolationMapper` will ask the Form Type its `label`, and if not `false`, it will try to translate it.

**Why it is important/why it causes a BC break**

Since by default `AbstractType` does not have any `label`, it also introduces a minor BC break.
I will explain it with an example: in a project I work on, we check we don't have any missing translation. Sometimes we have violation errors bound to form ; then current code will get Form `label`, which in `null` in form type classes (which is quite usual I believe), so it will generate one, and pass that one to translator. And we see a lot on erroneous missing translations.

**Proposed fix**

This fix moves all this logic into a `if`, so `ViolationMapper` call the translator component only if `{{ label }}` placeholder is used in constraint error message.
On top of fixing BC, it has the benefit of lowering the performance cost for every violation when the feature is not used.

I added a test, as I believe the behavior should be guaranteed from now on.

Commits
-------

aee5571a71 [Form] fix ViolationMapper was always generating a localized label for each FormType
2020-10-12 20:01:17 +02:00
Fabien Potencier
19c550db7b bug #38529 [Mailer] Fix mailjet image embedding (Sandldan)
This PR was merged into the 5.x branch.

Discussion
----------

[Mailer] Fix mailjet image embedding

Filename is not enough to embed the image through cid, ContentID field
has to be set with the cid identifier used in the HTMLPart

| Q             | A
| ------------- | ---
| Branch?       | 5.1 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | none <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | not needed <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch 5.x.
-->

Hello!

While switching from `Mandrill` to `Mailjet` I noticed that embedding images was not working properly, the `Content-ID` mime is not set properly without setting the `ContentID` key. With this change things will work as described in the [symfony documentation](https://symfony.com/doc/current/mailer.html#embedding-images)

[Mailjet reference](https://dev.mailjet.com/email/guides/send-api-v31/#send-with-attached-files)

Commits
-------

7ab772eeea [Mailer] Fix mailjet image embedding
2020-10-12 19:58:26 +02:00
Nicolas Grekas
444626bbfc Merge branch '5.1' into 5.x
* 5.1:
  [HttpClient] fix reading the body after a ClientException
  [HttpClient] fix tests and merge
2020-10-12 18:54:56 +02:00
Nicolas Grekas
b9e76b2bd9 Merge branch '4.4' into 5.1
* 4.4:
  [HttpClient] fix reading the body after a ClientException
2020-10-12 18:39:05 +02:00
Nicolas Grekas
0159a39709 [HttpClient] fix reading the body after a ClientException 2020-10-12 18:35:20 +02:00
Nicolas Grekas
481a2917c1 [HttpClient] fix tests and merge 2020-10-12 17:25:56 +02:00
Nicolas Grekas
c31015e456 [HttpClient] fix tests and merge 2020-10-12 17:16:53 +02:00
Andre Johnson
7ab772eeea
[Mailer] Fix mailjet image embedding
Filename is not enough to embed the image through cid, ContentID field
has to be set with the cid identifier used in the HTMLPart
2020-10-12 15:57:02 +02:00
Nicolas Grekas
8a70d35a5f Merge branch '5.1' into 5.x
* 5.1:
  [Validator] remove phpunit-bridge from dev deps
2020-10-12 14:57:48 +02:00
Nicolas Grekas
d83f806e5f [Validator] remove phpunit-bridge from dev deps 2020-10-12 14:57:15 +02:00
Alexander M. Turek
cfb9986203 [Serializer] Enabled mapping configuration via attributes. 2020-10-12 14:52:41 +02:00
idetox
48e6976ac8 [Typography] Remove unneeded description comments 2020-10-12 14:32:39 +02:00
Nicolas Grekas
6844cb8685 bug #38523 [HttpClient] Fix multiple timeout with multiple retry (jderusse)
This PR was merged into the 5.x branch.

Discussion
----------

[HttpClient] Fix multiple timeout with multiple retry

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | /

Fix #38518 when retryied request also failed.

Commits
-------

79a9392468 Fix multiple timeou with multiple retry
2020-10-12 14:06:18 +02:00
Nicolas Grekas
e4024e80ed Merge branch '5.1' into 5.x
* 5.1:
  Disable the PhpUnit bridge when testing it
  [PropertyInfo] Support for the mixed type.
  Don't unset the inflate resource on close as it might still be needed
  [HttpClient] Fix CurlHttpClient memory leak
  [Form] Add Bosnian (bs) validators translation
  [Form] Add missing Serbian (latn & cyrl) validators translation
  [Cache] skip igbinary < 3.1.6
  [Ldap] Bypass the use of `ldap_control_paged_result` on PHP >= 7.3
  [Form] [Validator] added pt_BR translations
  Estonian update
  Fix no collection in extract default value
  [PhpUnitBridge] fix running parallel tests with phpunit 9
  [VarDumper] fix truncating big arrays
2020-10-12 14:05:07 +02:00
Nicolas Grekas
a1616a76eb Merge branch '4.4' into 5.1
* 4.4:
  Disable the PhpUnit bridge when testing it
  [PropertyInfo] Support for the mixed type.
  Don't unset the inflate resource on close as it might still be needed
  [HttpClient] Fix CurlHttpClient memory leak
  [Form] Add Bosnian (bs) validators translation
  [Form] Add missing Serbian (latn & cyrl) validators translation
  [Cache] skip igbinary < 3.1.6
  [Ldap] Bypass the use of `ldap_control_paged_result` on PHP >= 7.3
  [Form] [Validator] added pt_BR translations
  Estonian update
  [PhpUnitBridge] fix running parallel tests with phpunit 9
  [VarDumper] fix truncating big arrays
2020-10-12 13:21:05 +02:00
Nicolas Grekas
6000e51629 Merge branch '3.4' into 4.4
* 3.4:
  Disable the PhpUnit bridge when testing it
  [PropertyInfo] Support for the mixed type.
  [Form] Add Bosnian (bs) validators translation
  [Form] Add missing Serbian (latn & cyrl) validators translation
  [Form] [Validator] added pt_BR translations
  Estonian update
  [PhpUnitBridge] fix running parallel tests with phpunit 9
  [VarDumper] fix truncating big arrays
2020-10-12 13:11:24 +02:00
Jérémy Derussé
79a9392468
Fix multiple timeou with multiple retry 2020-10-12 11:08:06 +02:00
Jérémy Derussé
8ba54c17be Fix nesteed stream in AsyncResponse 2020-10-12 09:56:41 +02:00
Nicolas Grekas
62d40d5866 bug #38518 [HttpClient] fix decorating timeout errors (nicolas-grekas)
This PR was merged into the 5.x branch.

Discussion
----------

[HttpClient] fix decorating timeout errors

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Replaces #38501
| License       | MIT
| Doc PR        | -

/cc @jderusse

Commits
-------

84cda3f02b [HttpClient] fix decorating timeout errors
2020-10-12 09:54:11 +02:00
Nicolas Grekas
84cda3f02b [HttpClient] fix decorating timeout errors 2020-10-12 09:45:36 +02:00
Fabien Potencier
87920d266e feature #38499 [Validator] Upgraded constraints to enable named arguments and attributes (derrabus)
This PR was squashed before being merged into the 5.x branch.

Discussion
----------

[Validator] Upgraded constraints to enable named arguments and attributes

| Q             | A
| ------------- | ---
| Branch?       | 5.2
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | #38096
| License       | MIT
| Doc PR        | TODO with symfony/symfony-docs#14305

This PR enables all remaining atomic (!= composite) constraints to be used as attributes.

The only exception is `UniqueEntity` from Doctrine bridge because we don't have a Doctrine ORM release yet that supports PHP 8. So I could migrate that one as well, but I cannot really test it.

Commits
-------

fb99eb2052 [Validator] Upgraded constraints to enable named arguments and attributes
2020-10-11 08:04:09 +02:00
Alexander M. Turek
fb99eb2052 [Validator] Upgraded constraints to enable named arguments and attributes 2020-10-11 08:04:04 +02:00
Alexander M. Turek
1a3b538e16 [PropertyInfo] Support for the mixed type. 2020-10-11 00:15:38 +02:00
HypeMC
8fa4f85013 Don't unset the inflate resource on close as it might still be needed 2020-10-10 18:24:13 +02:00
Wouter de Jong
0f947b2e84 Allow null and DateTime objects to be used as signatureProperties
Returning DateTime objects seems like a common use-case to automatically expire
all login links when one is used or to only allow the login link to be used
once.
2020-10-10 15:09:30 +02:00
HypeMC
aeb4ddf316 [HttpClient] Fix CurlHttpClient memory leak 2020-10-10 09:23:15 +02:00
Fabien Potencier
b95ad419f8 minor #38481 [Form] Add Bosnian (bs) validators translation (tambait)
This PR was squashed before being merged into the 3.4 branch.

Discussion
----------

[Form] Add Bosnian (bs) validators translation

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| License       | MIT

Commits
-------

bd80b1e08d [Form] Add Bosnian (bs) validators translation
2020-10-09 08:39:07 +02:00
ivan
bd80b1e08d [Form] Add Bosnian (bs) validators translation 2020-10-09 08:39:00 +02:00
ivan
80bcd0ee20 [Form] Add missing Serbian (latn & cyrl) validators translation 2020-10-09 08:37:47 +02:00
Nyholm
c5de1eb53c [Messenger] Add DelayStamp::delayFor() and DelayStamp::delayUntil() 2020-10-08 18:18:51 +02:00
Romaric Drigon
aee5571a71 [Form] fix ViolationMapper was always generating a localized label for each FormType 2020-10-08 09:30:12 +02:00
Jan Schädlich
5701e89960 Introduce NullMessage and remove transport setter in MessageInterface 2020-10-07 22:09:56 +02:00
Nicolas Grekas
744e245371 bug #38456 [Cache] skip igbinary < 3.1.6 (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[Cache] skip igbinary < 3.1.6

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38440
| License       | MIT
| Doc PR        | -

v3.1.6 will embed https://github.com/igbinary/igbinary/pull/289

Commits
-------

065474c94f [Cache] skip igbinary < 3.1.6
2020-10-07 11:31:50 +02:00
Nicolas Grekas
065474c94f [Cache] skip igbinary < 3.1.6 2020-10-07 11:30:25 +02:00
Nicolas Grekas
45cad64255 bug #38392 [Ldap] Bypass the use of ldap_control_paged_result on PHP >= 7.3 (lucasaba)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Ldap] Bypass the use of `ldap_control_paged_result` on PHP >= 7.3

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38352
| License       | MIT
| Doc PR        |

As stated on #38352 [ldap_control_paged_result](https://www.php.net/manual/en/function.ldap-control-paged-result.php) and [ldap_control_paged_result_response](https://www.php.net/manual/en/function.ldap-control-paged-result-response.php) have been deprecated since PHP 7.4 and will be removed on PHP 8.0.

With this fix, Query uses serverctrls to handle LDAP results pagination.

Since `serverctrls` where introduced in PHP 7.3 and they are the only way to circumvent the usage of `ldap_control_paged_result`, I've added a new Query class implementation which uses `serverctrls` to control pagination.

To do so I've also had to update the LDAP Adapter in order to use the new class if PHP version 7.3 or greater are found

Commits
-------

d332b30526 [Ldap] Bypass the use of `ldap_control_paged_result` on PHP >= 7.3
2020-10-07 10:55:20 +02:00
Luca Saba
d332b30526 [Ldap] Bypass the use of ldap_control_paged_result on PHP >= 7.3 2020-10-07 10:55:12 +02:00
Jérémy Derussé
eb934e9015
Mark Key unserializable whith PgsqlStore 2020-10-07 10:29:02 +02:00
Fabien Potencier
494ef421c5 feature #38434 [HttpClient] Add jitter to RetryBackoff (jderusse)
This PR was merged into the 5.x branch.

Discussion
----------

[HttpClient] Add jitter to RetryBackoff

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | TODO

From the idea https://twitter.com/mtdowling/status/1313205613158043648 this PR adds a new `jitter` parameter to the ExponentialBackOff implementation.

jitter is a percentage (float between 0 and 1) of randomness to apply to the computed delay.
ie. if the initial delay is 1000ms, and jitter=0.2, the finale delay will be an number between 800 and 1200 (1000 +/- 20%)

Commits
-------

ace731437e Add jitter to RetryBackof
2020-10-07 08:15:11 +02:00
Jérémy Derussé
3d114be680 [lock] Add store dedicated to postgresql 2020-10-07 08:05:14 +02:00
Nate Wiebe
0d4e25f4a6 Rename Translatable class to TranslatableMessage 2020-10-07 07:51:02 +02:00
Fabien Potencier
c4aeb6fd80 bug #38442 [VarDumper] fix truncating big arrays (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[VarDumper] fix truncating big arrays

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  |
| Deprecations? | no
| Tickets       | Fix #38428
| License       | MIT
| Doc PR        | -

Commits
-------

a8b986e35e [VarDumper] fix truncating big arrays
2020-10-07 07:50:22 +02:00
Fabien Potencier
9ffad84e46 minor #38450 [Form] [Validator] added pt_BR translations (cenoura)
This PR was squashed before being merged into the 3.4 branch.

Discussion
----------

[Form] [Validator] added pt_BR translations

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | --
| License       | MIT
| Doc PR        | --

Added missing pt_BR translations to Form and Validator components.

Commits
-------

4bede2824c [Form] [Validator] added pt_BR translations
2020-10-07 07:46:14 +02:00
Guilherme Augusto Henschel
4bede2824c [Form] [Validator] added pt_BR translations 2020-10-07 07:46:06 +02:00
Sheitak
96499920a2 Estonian update 2020-10-07 07:43:03 +02:00
Jérémy Derussé
ace731437e
Add jitter to RetryBackof 2020-10-06 23:46:00 +02:00
Baptiste Leduc
33d37e56ba
Fix no collection in extract default value 2020-10-06 22:24:13 +02:00
Erwan
614b8d68a8 [String][AsciiSlugger] Fix typo 2020-10-06 19:37:38 +02:00
Nicolas Grekas
a8b986e35e [VarDumper] fix truncating big arrays 2020-10-06 18:42:49 +02:00
Nicolas Grekas
6066462be2 Merge branch '5.1' into 5.x
* 5.1:
  Update versions in composer.json
  [Mime] Fix serialization of RawMessage
2020-10-06 17:53:16 +02:00
Nicolas Grekas
3e492d6e5d Merge branch '4.4' into 5.1
* 4.4:
  Update versions in composer.json
  [Mime] Fix serialization of RawMessage
2020-10-06 17:50:31 +02:00
Nicolas Grekas
55396f90a3 Merge branch '3.4' into 4.4
* 3.4:
  Update versions in composer.json
2020-10-06 17:45:41 +02:00
Nicolas Grekas
8f714a2fd6 Update versions in composer.json 2020-10-06 17:25:25 +02:00
Fabien Potencier
87f328428e bug #38433 [Mime] Fix serialization of RawMessage (gilbertsoft)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Mime] Fix serialization of RawMessage

| Q             | A
| ------------- | ---
| Branch?       | 4.4 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #38430, Related #33394 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | - <!-- required for new features -->

The serialization of RawMessage is currently broken if using a generator for message like done by `Symfony\Component\Mailer\SentMessage` see 5f1c3a7972/src/Symfony/Component/Mailer/SentMessage.php (L45)
This patch converts the message to a string so further serialization can be done.

This patch probably also solves #33394.

<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch 5.x.
-->

Commits
-------

fd99eb26d8 [Mime] Fix serialization of RawMessage
2020-10-06 16:40:04 +02:00
Gilbertsoft
fd99eb26d8 [Mime] Fix serialization of RawMessage 2020-10-06 16:40:02 +02:00
Nicolas Grekas
11c4f28137 Merge branch '5.1' into 5.x
* 5.1:
  fix merge
  [appveyor] fix checking for the .x branch
  Remove "branch-alias", populate "version"
2020-10-06 14:00:29 +02:00
Nicolas Grekas
9f2a66871c Merge branch '4.4' into 5.1
* 4.4:
  fix merge
2020-10-06 13:57:58 +02:00
Nicolas Grekas
2f7751f0df fix merge 2020-10-06 13:56:58 +02:00
Nicolas Grekas
097c8c6f27 Merge branch '4.4' into 5.1
* 4.4:
  [appveyor] fix checking for the .x branch
  Remove "branch-alias", populate "version"
2020-10-06 13:49:34 +02:00
Nicolas Grekas
e553f424d0 Merge branch '3.4' into 4.4
* 3.4:
  Remove "branch-alias", populate "version"
2020-10-06 13:41:17 +02:00
Nicolas Grekas
9d40c796c4 Remove "branch-alias", populate "version" 2020-10-06 13:22:52 +02:00
Alexander M. Turek
66fbf0a671 [SecurityGuard] Implement PostAuthenticationGuardToken::getFirewallName(). 2020-10-06 11:21:13 +02:00
Fabien Potencier
8df5aad90a Merge branch '5.1' into 5.x
* 5.1:
  Move to the new default 5.x branch
  Use PHPUnit 9.4 to run the test suite.
  Fix type annotation
2020-10-06 10:08:38 +02:00
Fabien Potencier
da99063ccd Merge branch '4.4' into 5.1
* 4.4:
  Move to the new default 5.x branch
  Use PHPUnit 9.4 to run the test suite.
  Fix type annotation
2020-10-06 10:08:25 +02:00
Fabien Potencier
b47ba231ef Merge branch '3.4' into 4.4
* 3.4:
  Move to the new default 5.x branch
  Use PHPUnit 9.4 to run the test suite.
  Fix type annotation
2020-10-06 10:07:23 +02:00
Fabien Potencier
2f925df4db feature #38410 [Validator] Migrate File and Image constraints to attributes (derrabus)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Validator] Migrate File and Image constraints to attributes

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | #38096
| License       | MIT
| Doc PR        | TODO with symfony/symfony-docs#14305

I have migrated a lot of the constraints already and am preparing a big PR with them at the moment. I decided to pull this part out because it might raise some discussion.

This PR enables the `File` and `Image` constraints to be used as attributes. Especially the constructor signature of the `Image` constraint has grown pretty large this way. This by itself should be a big problem, if we don't expect the constructor to be called with ordered parameters by userland code. But it shows that the constraints have grown a bit too large. We might want to consider to split it.

Commits
-------

d8c186938e [Validator] Migrate File and Image constraints to attributes.
2020-10-06 07:32:58 +02:00
Fabien Potencier
a324b22d1a bug #38418 [HttpClient] minor fixes in RetryableHttpClient (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] minor fixes in RetryableHttpClient

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

495562836a [HttpClient] minor fixes in RetryableHttpClient
2020-10-05 19:15:39 +02:00
Nicolas Grekas
495562836a [HttpClient] minor fixes in RetryableHttpClient 2020-10-05 18:23:31 +02:00
Fabien Potencier
28129c81d7 Bump Symfony version to 5.2.0 2020-10-05 16:44:01 +02:00
Fabien Potencier
7f6a21cd6b Update VERSION for 5.2.0-BETA1 2020-10-05 16:36:53 +02:00
Lars Strojny
a2508ac3e7 [Cache] Allow ISO 8601 time intervals to specify default lifetime 2020-10-05 15:19:55 +02:00
Alexander M. Turek
d8c186938e [Validator] Migrate File and Image constraints to attributes. 2020-10-04 21:22:16 +02:00
Fabien Potencier
a60c0af953 minor #38408 Fix type annotation in ExpressionLanguage\Token (m-vo)
This PR was merged into the 3.4 branch.

Discussion
----------

Fix type annotation in ExpressionLanguage\Token

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

The expected argument `$type` should be a string - the strict comparison would always fail with the current annotated types (`array|int`).

See the constructor + constants for reference:
7db7dcc431/src/Symfony/Component/ExpressionLanguage/Token.php (L33)

7db7dcc431/src/Symfony/Component/ExpressionLanguage/Token.php (L25-L30)

Commits
-------

bfde15b728 Fix type annotation
2020-10-04 18:40:24 +02:00
Fabien Potencier
5e808b59ec Merge branch '4.4' into 5.1
* 4.4:
  Change test
2020-10-04 18:35:53 +02:00
Fabien Potencier
20969e604b Merge branch '3.4' into 4.4
* 3.4:
  Change test
2020-10-04 18:35:43 +02:00
Fabien Potencier
bfcf65f61c Change test 2020-10-04 18:34:28 +02:00
Fabien Potencier
57ad83e7e1 Merge branch '5.1'
* 5.1:
  Added Stopwatch example to the README
  Bump Symfony version to 5.1.8
  Update VERSION for 5.1.7
  Update CHANGELOG for 5.1.7
  Bump Symfony version to 4.4.16
  Update VERSION for 4.4.15
  Update CHANGELOG for 4.4.15
2020-10-04 18:29:51 +02:00
Fabien Potencier
84bec1df2d Merge branch '4.4' into 5.1
* 4.4:
  Added Stopwatch example to the README
  Bump Symfony version to 4.4.16
  Update VERSION for 4.4.15
  Update CHANGELOG for 4.4.15
2020-10-04 18:29:28 +02:00
Wouter de Jong
e2461c90d2 Added Stopwatch example to the README 2020-10-04 14:01:13 +02:00
M. Vondano
bfde15b728
Fix type annotation 2020-10-04 12:25:24 +02:00
Fabien Potencier
c91ad1239f feature #38382 [Validator] Use comparison constraints as attributes (derrabus)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Validator] Use comparison constraints as attributes

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | yes
| Tickets       | #38096
| License       | MIT
| Doc PR        | TODO, let's add it to symfony/symfony-docs#14305

This PR enables all child classes of `AbstractComparison` to be used as attributes.

Some of those constraints used a trait called `NumberConstraintTrait` for a shared implementation. After my changes, that trait did not fit well anymore, so I've added a new `ZeroComparisonConstraintTrait` as a replacement. Although I don't expect `NumberConstraintTrait` to provide much value outside of the Symfony codebase, I think we cannot safely change it because it was not labelled as `@internal`. This is basically why I went for the deprecation.

Commits
-------

b5bdf8288f [Validator] Use comparison constraints as attributes.
2020-10-04 10:54:16 +02:00
Fabien Potencier
dfcde5b409 feature #38369 [HttpFoundation] Expired cookies string representation consistency & tests (iquito)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[HttpFoundation] Expired cookies string representation consistency & tests

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT

These changes add consistent behavior when converting expired cookies back and forth from string representation into `Symfony\Component\HttpFoundation\Cookie` instances in `Cookie::fromString`:

- When `Max-Age` is zero and `expires` is in the past, the `expires` date is kept as is (previous behavior: `expires` is overwritten with current timestamp because it is reset to current timestamp + `Max-Age`)
- When `Max-Age` is zero and `expires` is in the future, expires is reset to current timestamp, as `Max-Age` is the preferred "source of truth" (same as previous behavior)
- Add tests for how the Cookie class handles `Max-Age` in a cookie string and how `expires` and `Max-Age` interact
- Extract helper function `expiresTimestamp` so converting to a unix timestamp can be reused in `Cookie::fromString`

This is more a new feature than a bug fix in my mind, therefore I would include it in 5.1+.

Commits
-------

4f5d5eceb0 [HttpFoundation] Expired cookies string representation consistency & tests
2020-10-04 10:45:41 +02:00
Andreas
4f5d5eceb0 [HttpFoundation] Expired cookies string representation consistency & tests 2020-10-04 10:45:35 +02:00
Fabien Potencier
89adb2133b [Mime] Prefer .jpg instead of .jpeg 2020-10-04 10:36:21 +02:00
Fabien Potencier
a6103adcf9 Bump Symfony version to 5.1.8 2020-10-04 10:00:52 +02:00
Fabien Potencier
1d18312db6 Update VERSION for 5.1.7 2020-10-04 09:57:28 +02:00
Fabien Potencier
8cb3387ce2 Bump Symfony version to 4.4.16 2020-10-04 09:55:30 +02:00
Fabien Potencier
e42cfee451 Update VERSION for 4.4.15 2020-10-04 09:48:13 +02:00
Fabien Potencier
edb5fed4bb feature #36479 [Notifier][WebProfilerBundle][FrameworkBundle] Add notifier section to profiler (jschaedl)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Notifier][WebProfilerBundle][FrameworkBundle] Add notifier section to profiler

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | - <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | - <!-- required for new features -->

This is the first iteration of adding a profiler panel for the new Notifier component:

WebProfiler Toolbar:
![Screenshot 2020-10-02 at 10 26 35](https://user-images.githubusercontent.com/1880467/94903474-28bece00-049a-11eb-945c-d6ce047b35e8.png)

WebProfiler Notifier Panel:

![Screenshot 2020-10-02 at 10 28 19](https://user-images.githubusercontent.com/1880467/94903594-5277f500-049a-11eb-8c1e-27e6ec87a51c.png)
![Screenshot 2020-10-02 at 10 28 29](https://user-images.githubusercontent.com/1880467/94903591-51df5e80-049a-11eb-935a-9ba130ef69f0.png)
![Screenshot 2020-10-02 at 10 28 35](https://user-images.githubusercontent.com/1880467/94903589-5146c800-049a-11eb-8a69-28d362ef6640.png)
![Screenshot 2020-10-02 at 10 28 42](https://user-images.githubusercontent.com/1880467/94903586-50159b00-049a-11eb-97bd-382a823087a6.png)

An example project can to test the new profiler panel can be found here: https://github.com/jschaedl/notifier-profiler-integration

Commits
-------

f39e74ba9f [Notifier][WebProfilerBundle][FrameworkBundle] Add notifier section to profiler
2020-10-04 09:43:38 +02:00
Jan Schädlich
f39e74ba9f [Notifier][WebProfilerBundle][FrameworkBundle] Add notifier section to profiler 2020-10-04 09:43:31 +02:00
Fabien Potencier
f8212cc9e3 Merge branch '5.1'
* 5.1:
  Update security.he.xlf
2020-10-04 09:09:29 +02:00
Fabien Potencier
936c6afdf0 Merge branch '4.4' into 5.1
* 4.4:
  Update security.he.xlf
2020-10-04 09:09:21 +02:00
Fabien Potencier
9c1b6fc985 Merge branch '3.4' into 4.4
* 3.4:
  Update security.he.xlf
2020-10-04 09:09:09 +02:00
Fabien Potencier
62a76ba871 Merge branch '5.1'
* 5.1:
  Handle consecutive supports() calls in the RememberMeAuthenticator
2020-10-04 09:09:00 +02:00
Fabien Potencier
3b524f6d70 feature #38395 [lock] Prevent user serializing the key when store does not support it. (jderusse)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[lock] Prevent user serializing the key when store does not support it.

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | /

Some store relies on connection with the running process. ie. kernel relaease flock/semaphore, or zookeeper neeeds a connection to the database.

When the users tries to serialize the key to send it to another process, they are not aware that they lose the lock.

This PR throws an exception in that situation.

Commits
-------

1ec0630262 Prevent user serializing the key
2020-10-04 09:08:28 +02:00
Fabien Potencier
c6a747d64b minor #38403 Remove array return type from Request::toArray() (GrahamCampbell)
This PR was merged into the 5.2-dev branch.

Discussion
----------

Remove array return type from Request::toArray()

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38400
| License       | MIT
| Doc PR        | -

Laravel already extends Symfony's `Request` class and defines it's own `toArray` method. https://github.com/symfony/symfony/pull/38224 added a new `toArray` method to this class with a different signature to the one that is in Laravel, causing fatal errors (https://github.com/laravel/framework/issues/34660). I think the best course of action here is to remove the return type for now, and only add it in Symfony 6. This will allow Symfony 6.0 and Laravel 11 to synchronize adding the return type.

Older versions of Laravel can't just change their signature to add an array return type to them, because that would be a breaking change for Laravel users extending Laravel's request class. I'm thinking, in particular, API packages and the like, or just straight up application code.

Commits
-------

8b291a49a6 Remove array return type from Request::toArray()
2020-10-04 09:07:32 +02:00
Ben Hakim
8d4c2f052d Update security.he.xlf 2020-10-04 09:06:34 +02:00
Fabien Potencier
b94fef4670 bug #38396 Handle consecutive supports() calls in the RememberMeAuthenticator (wouterj)
This PR was merged into the 5.1 branch.

Discussion
----------

Handle consecutive supports() calls in the RememberMeAuthenticator

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38206
| License       | MIT
| Doc PR        | -

If I read the issue correctly, the problem is not so much that `autoLogin()` is called in supports, but that it is called multiple times in the same request (in lazy firewalls). This is fixed by this issue.

@qurben or @fancyweb do you have an application with this error, and can you please test the patch in this PR? Please let me know if this actually fixed the issue. (if you can't, I'll create a small demo app to test this one)

Commits
-------

e0d1867b54 Handle consecutive supports() calls in the RememberMeAuthenticator
2020-10-04 09:05:27 +02:00
Fabien Potencier
200392e473 minor #38404 [HttpClient] Minor fix of type and message in ExponentialBackOff (bohanyang)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] Minor fix of type and message in ExponentialBackOff

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Make the type consistent and fix an error message

Commits
-------

6149a0c04b [HttpClient] Minor fix of type and message in ExponentialBackOff
2020-10-04 09:03:11 +02:00
Fabien Potencier
42d86cf2af minor #38397 [Console] Remove "php" invokation from help messages. (rodrigoaguilera)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Console] Remove "php" invokation from help messages.

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT

Discusstion started here:
https://github.com/symfony/symfony/pull/38349

I was a bit puzzled to find that the help for the list and help commands suggests that you call the console application by prefixing it with `php myconsoleapp`.

As suggested in the PR above I am removing the `php ` prefix from the help.

I am providing a script with a shebang like the first example suggested in the following link:
https://symfony.com/doc/current/components/console.html
Eventually I want to distribute my console app as docker image so there is no need for php installed or the users even knowing is written in php.
The script name is easy to override by just setting a different value to `$_SERVER['PHP_SELF']` but this php prefix is hardcoded into the help strings for the the two default commands available.

Slightly related to #38347 as I am trying to improve the console help output.

Commits
-------

e036c30e7a [Console] Remove "php" invokation from help messages.
2020-10-04 09:01:38 +02:00
Bohan Yang
6149a0c04b [HttpClient] Minor fix of type and message in ExponentialBackOff 2020-10-04 10:23:35 +08:00
Graham Campbell
8b291a49a6
Remove array return type from Request::toArray() 2020-10-03 23:39:59 +01:00
Rodrigo Aguilera
e036c30e7a [Console] Remove "php" invokation from help messages. 2020-10-03 16:00:31 +02:00
Fabien Potencier
8fa6b3625b Merge branch '5.1'
* 5.1:
  Fix tests
  [Lock] Fix StoreFactory to accept same DSN syntax as AbstractAdapter
  [Serializer][Minor] Fix exception message
2020-10-03 15:58:25 +02:00
Fabien Potencier
40bc14ab78 Merge branch '4.4' into 5.1
* 4.4:
  Fix tests
  [Lock] Fix StoreFactory to accept same DSN syntax as AbstractAdapter
  [Serializer][Minor] Fix exception message
2020-10-03 15:58:17 +02:00
Wouter de Jong
e0d1867b54 Handle consecutive supports() calls in the RememberMeAuthenticator 2020-10-03 15:02:03 +02:00
Jérémy Derussé
1ec0630262
Prevent user serializing the key 2020-10-03 14:03:42 +02:00
Fabien Potencier
6a79f3e06f Fix tests 2020-10-03 08:31:32 +02:00
Fabien Potencier
35e04d9136 bug #36291 [Lock] Fix StoreFactory to accept same DSN syntax as AbstractAdapter (Jontsa)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Lock] Fix StoreFactory to accept same DSN syntax as AbstractAdapter

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #35350
| License       | MIT
| Doc PR        |

Updates `Symfony\Component\Lock\Store\StoreFactory` to accept same DSN syntax as `Symfony\Component\Cache\Adapter\AbstractAdapter` which is used to create Redis class instance.

Commits
-------

4ebbe3d86b [Lock] Fix StoreFactory to accept same DSN syntax as AbstractAdapter
2020-10-03 08:30:09 +02:00
Joni Halme
4ebbe3d86b [Lock] Fix StoreFactory to accept same DSN syntax as AbstractAdapter 2020-10-03 08:30:00 +02:00
Fabien Potencier
534466d1cf feature #38177 [Security] Magic login link authentication (weaverryan)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Security] Magic login link authentication

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | none
| License       | MIT
| Doc PR        | TODO

Hi!

This adds a Slack-style "magic link" login authenticator to the new login system: (A) enter your email into a form, (B) receive an email with a link in it (C) click that link and you are authenticated!

For most users, implementing this would require:

A) Create a [controller](https://github.com/weaverryan/symfony-magic-login-link-example/blob/master/src/Controller/MagicLinkLoginController.php) with the "enter your email" form and a route for the "check" functionality (similar to `form_login`)
B) Activate in `security.yaml`:

```yml
security:
    enable_authenticator_manager: true
    # ...
    firewalls:
        # ...
        main:
            # ...
            login_link:
                check_route: 'magic_link_verify'
                # this is an important and powerful option
                # An array of properties on your User that are used to sign the link.
                # If any of these change, all existing links will become invalid
                # tl;dr If you want the modification of ANY field to invalidate ALL existing magic links immediately,
                # then you can add it to this list. You could even add a "lastLoginLinkSentAt" to invalid
                # all existing login links when a new one is sent.
                signature_properties: [id, password, email]

                # optional - by default, links can be reused but have a 10 minute lifetime
                #max_uses: 3
                #used_link_cache: cache.app
```

Done! This will generate a URL that looks something like this:

> https://127.0.0.1:9033/login/verify?user=weaverryan@gmail.com&expires=1601342578&hash=YzE1ZDJlYjM3YTMyMjgwZDdkYzg2ZjFlMjZhN2E5ZWRmMzk3NjAxNjRjYThiMjMzNmIxYzAzYzQ4NmQ2Zjk4NA%3D%3D

We would implement a Maker command this config + login/controller. The implementation is done via a "signed URL" and an optional cache pool to "expire" links. The hash of the signed URL can contain any user fields you want, which give you a powerful mechanism to invalidate magic tokens on user data changes. See `signature_properties` above.

#### Security notes:

There is a LOT of variability about how secure these need to be:

* A) Many/most implementation only allow links to be used ONE time. That is *possible* with this implementation, but is not the *default*. You CAN add a `max_uses` config which stores the expired links in a cache so they cannot be re-used. However, to make this work, you need to do more work by adding some "page" between the link the users clicks and *actually* using the login link. Why? Because unless you do this, email clients may follow the link to "preview" it and will "consume" the link.

* B) Many implementations will invalidate all other login links for a user when a new one is created. We do *not* do that, but that IS possible (and we could even generate the code for it) by adding a `lastLoginLinkSentAt` field to `User` and including this in `signature_properties`.

* C) We *do* invalidate all links if the user's email address is changed (assuming the `email` is included in `signature_properties`, which it should be). You can also invalidate on password change or whatever you want.

* D) Some implementations add a "state" so that you can only use the link on the same device that created it. That is, in many cases, quite annoying. We do not currently support that, but we could in the future (and the user could add it themselves).

Thanks!

#### TODOS:

* [x] A) more tests: functional (?) traits
* [ ] B) documentation
* [ ] C) MakerBundle PR
* [ ] D) Make sure we have what we need to allow that "in between" page
* [ ] E) Create a new cache pool instead of relying on cache.app?

Commits
-------

a8afe109d8 [Security] Magic login link authentication
2020-10-03 08:23:42 +02:00
Ryan Weaver
a8afe109d8 [Security] Magic login link authentication 2020-10-03 08:23:35 +02:00
Fabien Potencier
f589ff41ca feature #38224 [HttpFoundation] Add Request::toArray() for JSON content (Nyholm)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[HttpFoundation] Add Request::toArray() for JSON content

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | ni
| New feature?  | yes
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

The past few months I've been working more and more with javascript and APIs. I've written controllers that parse json from the request body. I've found myself copying code between projects so I looked at the possibility to add this code to the `Request` class itself.

### Usage

```http
POST /add-user
Content-Type: application/json

{"name": "Tobias", "email": "tobias.nyholm@gmail.com"}
```

```php
use Symfony\Component\HttpFoundation\Exception\JsonException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;

class MyController
    // ...
    public function addUser(Request $request): JsonResponse
    {
        try {
            $data = $request->toArray();
        } catch (JsonException $e) {
            return new JsonResponse(['message'=>'Request does not contain valid json'], 415);
        }

        $command = new AddUser($data['email'] ?? '', $data['name'] ?? '');

        try {
            $this->commandBus->dispatch($command);
        } catch (ValidationFailedException $e) {
            return new JsonResponse(['message' => 'Unexpected JSON body'], 400);
        }

        return new JsonResponse(['message' => 'User successfully added']);
    }
}
```
----------

I've searched but I have not found that this has been proposed before.. With is strange.. ¯\\_(ツ)_/¯

Commits
-------

83c1a2666d [HttpFoundation] Add Request::toArray() for JSON content
2020-10-03 08:14:02 +02:00
Nyholm
83c1a2666d [HttpFoundation] Add Request::toArray() for JSON content 2020-10-03 08:13:56 +02:00
Fabien Potencier
f8b154357d Fix CS 2020-10-03 08:07:27 +02:00
Fabien Potencier
d69b525000 bug #38385 [PropertyInfo] Fix failure over array<string,mixed> PhpDoc type (romaricdrigon)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[PropertyInfo] Fix failure over array<string,mixed> PhpDoc type

| Q             | A
| ------------- | ---
| Branch?       | master (issue introduced in master)
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | /

**Background**

Since a few days ago ([this commit](80e5a7fbd8)), PropertyInfo 5.2 component supports array PhpDoc types, such as `array<string,string>`.
While testing SF 5.2 over my project, it was failing over:
```php
class SomeDoctrineEntityProxy implements \Doctrine\ORM\Proxy\Proxy
{
    /**
     * @var array<string, mixed> default values of properties to be lazy loaded, with keys being the property names
     *
     * @see \Doctrine\Common\Proxy\Proxy::__getLazyProperties
     */
    public static $lazyPropertiesDefaults = array();
}
```

Upon investigation, it appears `array<string,mixed>` is causing the issue: `mixed` type is not handled.

**Expected behavior**

PropertyInfo component should not guess anything for `mixed` type (return `NULL`), but it should not throw any exception.

**Comment about my fix**

I added a test case (`arrayOfMixed`) you can use to reproduce the issue.
Since array PhpDoc types were not tested at all, I also added a test case over `array<string,string>`.

Commits
-------

590177ff8e [PropertyInfo] Fix failure over array<string,mixed> PhpDoc type
2020-10-03 08:03:47 +02:00
Yonel Ceruto
3d83f94a89 Fixed undefined property in Firewall\ExceptionListener 2020-10-02 17:21:50 -04:00
Laurent VOULLEMIER
36ce9029f7 [Serializer][Minor] Fix exception message
Wrong circular reference limit displayed.
2020-10-02 22:12:42 +02:00
Romaric Drigon
590177ff8e [PropertyInfo] Fix failure over array<string,mixed> PhpDoc type 2020-10-02 16:56:39 +02:00
Nicolas Grekas
5e48c1e1c6 Merge branch '5.1'
* 5.1:
  [HttpClient] Always "buffer" empty responses
2020-10-02 16:25:10 +02:00
Nicolas Grekas
c453c3dbd5 Merge branch '4.4' into 5.1
* 4.4:
  [HttpClient] Always "buffer" empty responses
2020-10-02 16:24:03 +02:00
Nicolas Grekas
700462f118 [HttpClient] fix last fix 2020-10-02 16:15:25 +02:00
Nicolas Grekas
993525a366 [HttpClient] Fix dealing with empty responses in AsyncResponse 2020-10-02 16:11:19 +02:00
Nicolas Grekas
1f7b8fdf7b bug #38378 [HttpClient] Fix exception triggered with AsyncResponse (jderusse)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] Fix exception triggered with AsyncResponse

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | https://github.com/symfony/symfony/pull/38289#issuecomment-702573975
| License       | MIT
| Doc PR        | /

When a request is replayed with the AsyncResponse and the 2nd request failed, users get an exception even when they pass `$throw=false`.

In fact, there are 2 exceptions:

1. Cannot get the content of the response twice: buffering is disabled.

73ca97c97a/src/Symfony/Component/HttpClient/Response/CommonResponseTrait.php (L51-L68)

Because CommonResponseTrait::$content is null and `self::stream` yield only the LastChunk. The content is stays null

2. HTTP/2 429  returned for "https://httpbin.org/status/429"

73ca97c97a/src/Symfony/Component/HttpClient/Response/AsyncResponse.php (L209-L225)

Because on the second request passthru is null, it didn't disable the the exception thrown on destruct for the wrapped response.
This

Commits
-------

3aedb51dd8 [HttpClient] Fix exception triggered with AsyncResponse
2020-10-02 15:57:56 +02:00
Jérémy Derussé
3aedb51dd8 [HttpClient] Fix exception triggered with AsyncResponse 2020-10-02 15:57:08 +02:00
Nicolas Grekas
03d60fce47 [HttpClient] Always "buffer" empty responses 2020-10-02 15:41:48 +02:00
Fabien Potencier
a3e8c112c2 feature #38323 [Mime] Allow multiple parts with the same name in FormDataPart (HypeMC)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Mime] Allow multiple parts with the same name in FormDataPart

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #38258
| License       | MIT
| Doc PR        | -

Added the possibility to choose whether multiple parts with the same name should be suffixed or not:

```php
$f1 = new FormDataPart([
    'foo' => [
        'one',
        'two',
    ],
]);

var_dump($f1->toString());
```

```
Content-Type: multipart/form-data; boundary=6rqazwiG

--6rqazwiG
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Content-Disposition: form-data; name="foo[0]"

one
--6rqazwiG
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Content-Disposition: form-data; name="foo[1]"

two
--6rqazwiG--
```

```php
$f1 = new FormDataPart([
    ['foo' => 'one'],
    ['foo' => 'two'],
]);

var_dump($f1->toString());
```

```
Content-Type: multipart/form-data; boundary=xxW9dGzq

--xxW9dGzq
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Content-Disposition: form-data; name="foo"

one
--xxW9dGzq
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Content-Disposition: form-data; name="foo"

two
--xxW9dGzq--
```

Only applies to numeric keys:

```php
$f1 = new FormDataPart([
    'foo' => [
        'a' => 'one',
        'b' => 'two',
    ],
], true);

var_dump($f1->toString());
```

```
Content-Type: multipart/form-data; boundary=W6qkqgrD

--W6qkqgrD
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Content-Disposition: form-data; name="foo[a]"

one
--W6qkqgrD
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Content-Disposition: form-data; name="foo[b]"

two
--W6qkqgrD--
```

Commits
-------

1f7f2c6ddc Allow multiple parts with the same name in FormDataPart
2020-10-02 15:33:43 +02:00
Alexander M. Turek
b5bdf8288f [Validator] Use comparison constraints as attributes. 2020-10-02 15:13:55 +02:00
Nicolas Grekas
9d6333a7ff Merge branch '5.1'
* 5.1:
  [5.1] Ignore more deprecations for Mockery mocks
  [PhpUnitBridge] Fix Deprecation file when it comes from the TestsListener
  disallow FrameworkBundle 4.4+
  propagate validation groups to subforms
  [Form] [Validator] Add failing testcase to demonstrate group sequence issue
2020-10-02 15:09:26 +02:00
Thomas Calvet
58e6cb1ddc [5.1] Ignore more deprecations for Mockery mocks 2020-10-02 15:05:43 +02:00
Nicolas Grekas
8ea3e7a6bb Merge branch '4.4' into 5.1
* 4.4:
  disallow FrameworkBundle 4.4+
  propagate validation groups to subforms
  [Form] [Validator] Add failing testcase to demonstrate group sequence issue
2020-10-02 14:58:01 +02:00
Nicolas Grekas
3d39874a2c Merge branch '3.4' into 4.4
* 3.4:
  disallow FrameworkBundle 4.4+
  propagate validation groups to subforms
  [Form] [Validator] Add failing testcase to demonstrate group sequence issue
2020-10-02 14:43:11 +02:00
Fabien Potencier
bd8c3c1c42 feature #38354 [RateLimiter] add Limit::ensureAccepted() which throws RateLimitExceededException if not accepted (kbond)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[RateLimiter] add Limit::ensureAccepted() which throws RateLimitExceededException if not accepted

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Ref https://github.com/symfony/symfony/issues/38241#issuecomment-695212027
| License       | MIT
| Doc PR        | todo

Example:

```php
try {
    $limit = $limiter->consume()->ensureAccepted();
} catch (RateLimitExceededException $e) {
    $limit = $e->getLimit();
}
```

Commits
-------

a7ecd0ed08 [RateLimiter] add Limit::ensureAccepted() and RateLimitExceededException
2020-10-02 13:18:49 +02:00
Nicolas Grekas
48adfb2e4b Merge branch '5.1'
* 5.1:
  [HttpClient] fix unsetting context[ssl][peer_name]
2020-10-02 12:20:36 +02:00
Nicolas Grekas
56679fe735 Merge branch '4.4' into 5.1
* 4.4:
  [HttpClient] fix unsetting context[ssl][peer_name]
2020-10-02 12:20:30 +02:00
Nicolas Grekas
8eb8a7c400 [HttpClient] fix unsetting context[ssl][peer_name] 2020-10-02 12:07:58 +02:00
Christian Flothmann
04f5698e29 propagate validation groups to subforms 2020-10-02 11:43:30 +02:00
Johan de Ruijter
e2c7c3373d [Form] [Validator] Add failing testcase to demonstrate group sequence issue
When using group sequences on a form, sometimes constraints are ignored even though they should fail.
2020-10-02 11:43:30 +02:00
HypeMC
1f7f2c6ddc Allow multiple parts with the same name in FormDataPart 2020-10-02 11:11:56 +02:00
Nicolas Grekas
73ca97c97a Merge branch '5.1'
* 5.1:
  [HttpClient] fix using proxies with NativeHttpClient
  [4.4] Ignore more deprecations for Mockery mocks
  [Routing] fix using !important and defaults/reqs in inline route definitions
  [ErrorHandler][DebugClassLoader] Do not check Mockery mocks classes
  [HttpClient] Fix using https with proxies
  [TwigBundle] Only remove kernel exception listener if twig is used
  [DI] Fix changelog
  Remove CHANGELOG files for 4.x
  Adjust expired range check
  Fix redis connection error message
  [DI] fix dumping non-shared lazy services
2020-10-02 10:56:13 +02:00
Nicolas Grekas
d8255138ae Merge branch '4.4' into 5.1
* 4.4:
  [HttpClient] fix using proxies with NativeHttpClient
  [4.4] Ignore more deprecations for Mockery mocks
  [Routing] fix using !important and defaults/reqs in inline route definitions
  [ErrorHandler][DebugClassLoader] Do not check Mockery mocks classes
  [HttpClient] Fix using https with proxies
  [TwigBundle] Only remove kernel exception listener if twig is used
  Adjust expired range check
  Fix redis connection error message
2020-10-02 10:49:02 +02:00
Nicolas Grekas
0d8721fc01 Merge branch '3.4' into 4.4
* 3.4:
  Adjust expired range check
2020-10-02 10:38:15 +02:00
Nicolas Grekas
3cfd991ae6 bug #38377 [4.4] Ignore more deprecations for Mockery mocks (fancyweb)
This PR was merged into the 4.4 branch.

Discussion
----------

[4.4] Ignore more deprecations for Mockery mocks

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

1a801e8452 [4.4] Ignore more deprecations for Mockery mocks
2020-10-02 10:36:26 +02:00
Nicolas Grekas
aca260fbd0 bug #38375 [HttpClient] fix using proxies with NativeHttpClient (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] fix using proxies with NativeHttpClient

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

As spotted by @stof in https://github.com/symfony/symfony/pull/38368#issuecomment-702272737, we cannot use local DNS resolution with HTTP proxies.

Commits
-------

28f301bf03 [HttpClient] fix using proxies with NativeHttpClient
2020-10-02 10:29:59 +02:00
Nicolas Grekas
9c8a3009cf bug #38372 [Routing] fix using !important and defaults/reqs in inline route definitions (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[Routing] fix using !important and defaults/reqs in inline route definitions

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #33224
| License       | MIT
| Doc PR        | -

Commits
-------

826db225b7 [Routing] fix using !important and defaults/reqs in inline route definitions
2020-10-02 10:22:10 +02:00
Nicolas Grekas
28f301bf03 [HttpClient] fix using proxies with NativeHttpClient 2020-10-02 10:17:19 +02:00
Thomas Calvet
1a801e8452 [4.4] Ignore more deprecations for Mockery mocks 2020-10-02 09:34:48 +02:00
Fabien Potencier
d0ded920e6 bug #38367 [RateLimiter] Fix cache storage (use namespaced pool + remove \Serializable) (wouterj)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[RateLimiter] Fix cache storage (use namespaced pool + remove \Serializable)

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38365, fix #38338
| License       | MIT
| Doc PR        | -

Commits
-------

251c202874 Use a dedicated cache.rate_limiter cache pool
5dc562a318 Use __sleep/__wakeup instead of Serializable
2020-10-02 08:02:03 +02:00
Fabien Potencier
67a7be2bd0 Fix CS 2020-10-02 07:59:23 +02:00
Fabien Potencier
954009a4d7 feature #32904 [Messenger] Added ErrorDetailsStamp (TimoBakx)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Messenger] Added ErrorDetailsStamp

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #32311
| License       | MIT
| Doc PR        | No doc changes are needed

#SymfonyHackday

This PR is part of the work started in #32341. That PR has a workaround for showing exceptions added to a previous retry. This PR stores error messages in a separate stamp, so they're more easily accessed.

I also added the exceptionClass as a separate string (independant of FlattenException), so that information is always available, even if the trace is not (due to FlattenException not being available).

Duplicated exceptions (compared to the last one) are not stored separately.

**Questions:**
- Should we limit the total amount of exceptions (remove the oldest when adding a new one)?
  - Yes, but in a new PR
- The current implementation adds this stamp in the Worker instead of the listeners to prevent duplicate code (due to the immutability of the envelope in the event). Is this the proper way to do this?
  - No, create a new listener and a way to add stamps to the envelope inside the event.
- When adding details of a `HandlerFailedException`, should we add a stamp per wrapped `Throwable`? There can be multiple errors wrapped by a single `HandlerFailedException`.
  - Yes, but in a later PR

**Todo:**
- [x] only add new information if it differs from the previous exception
- [x] add deprecations
- [x] fall back to old stamp data if no new stamp is available
- [x] rebase and retarget to master
- [x] update CHANGELOG.md
- [x] check for docs PR

**BC Breaks:**
When this PR is merged, RedeliveryStamps will no longer be populated with exception data. Any implementations that use `RedeliveryStamp::getExceptionMessage()` or `RedeliveryStamp::getFlattenedException()` will receive an empty string or `null` respectively for stamps added after this update. They should rely on `ErrorDetailsStamp` instead.

**New stuff:**
- New stamp `ErrorDetailsStamp`.
- New event subscriber `AddErrorDetailsStampListener`.
- New method `AbstractWorkerMessageEvent::addStamps`.

Commits
-------

cd27b863f9 [Messenger] Added FailedMessageErrorDetailsStamp
2020-10-02 07:56:41 +02:00
Fabien Potencier
14942dbbe8 feature #36152 [Messenger] dispatch event when a message is retried (nikophil)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Messenger] dispatch event when a message is retried

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT

Hello,

i'm working on a bundle which helps to monitor messenger queues (add some stats for queues/transports + ability to manage failed messages from the browser)
https://github.com/SymfonyCasts/messenger-monitor-bundle/

and we're missing some hooks in the messaging system:
1. a way to know when a message has been retried (fixed by dispatching a new `WorkerMessageRetriedEvent` in `SendFailedMessageForRetryListener::onMessageFailed()`)
2. a way to update the enveloppe in worker message events (fixed by adding `AbstractWorkerMessageEvent::setEnvelope()`)

if needed i can provide some precise use cases.

thanks.

Commits
-------

55bddcb721 [Messenger] dispatch event when a message is retried
2020-10-02 07:48:00 +02:00
Nicolas PHILIPPE
55bddcb721 [Messenger] dispatch event when a message is retried 2020-10-02 07:47:55 +02:00
Olivier Dolbeau
09c9bde479 Can define ChatMessage transport to null 2020-10-02 07:42:01 +02:00
Fabien Potencier
b35bbdbde5 feature #38289 [HttpClient] provide response body to the RetryDecider (jderusse)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] provide response body to the RetryDecider

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | yes but for not-yet released 5.2 feature
| Tickets       | /
| License       | MIT
| Doc PR        | TODO

Some servers, like AWS, does not always return standard HTTP code. The strategy needs to parse the body to take a decision.
example:
```
400
x-amzn-requestid: XXXXX
content-type: application/x-amz-json-1.1
content-length: 58
date: Thu, 24 Sep 2020 11:17:35 GMT
connection: close

{"__type":"ThrottlingException","message":"Rate exceeded"}
````

This PR update the `RetryDeciderInterface` interface to let the decider notifying the Client when it need the body to take a decision. in that case, the Client, fetch te client, and call again the decider with the full body.

usage
```php
class Decider implements RetryDeciderInterface {
    public function shouldRetry(string $requestMethod, string $requestUrl, array $requestOptions, int $responseCode, array $responseHeaders, ?string $responseContent, \Throwable $throwable = null): ?bool
    {
        if (null !== $throwable) {
            return true;
        }
        if (in_array($responseCode, [423, 425, 429, 500, 502, 503, 504, 507, 510])) {
            return true;
        }
        if (
            $responseCode !== 400
            || $headers['content-type'][0] ?? null !== 'application/x-amz-json-1.1'
            || (int) $headers['content-length'][0] ?? '0' > 1024
        ) {
            return false;
        }
        if (null === $responseContent) {
            return null; // null mean no decision taken and need to be called again with the body
        }

        $data = json_decode($responseContent, true);

        return $data['__type'] ?? '' === 'ThrottlingException';
    }
}
```

Commits
-------

321be5884d [HttpClient] provide response body to the RetryDecider
2020-10-02 07:36:08 +02:00
Kevin Bond
a7ecd0ed08
[RateLimiter] add Limit::ensureAccepted() and RateLimitExceededException 2020-10-01 20:04:22 -04:00
Nicolas Grekas
826db225b7 [Routing] fix using !important and defaults/reqs in inline route definitions 2020-10-01 18:25:17 +02:00
Thomas Calvet
bbd12fe27f [ErrorHandler][DebugClassLoader] Do not check Mockery mocks classes 2020-10-01 18:21:20 +02:00
Bohan Yang
7e0cd4e621 [HttpClient] Fix using https with proxies 2020-10-01 18:05:21 +02:00
Jérémy Derussé
321be5884d
[HttpClient] provide response body to the RetryDecider 2020-10-01 17:55:44 +02:00
Timo Bakx
cd27b863f9 [Messenger] Added FailedMessageErrorDetailsStamp 2020-10-01 16:25:39 +02:00
Wouter de Jong
5dc562a318 Use __sleep/__wakeup instead of Serializable
Fixes #38338
2020-10-01 14:20:33 +02:00
Roland Franssen
d784b50da3
[DI] Fix changelog 2020-10-01 14:14:45 +02:00
Fabien Potencier
1b6894781c bug #38360 [BrowserKit] Cookie expiration at current timestamp (iquito)
This PR was merged into the 3.4 branch.

Discussion
----------

[BrowserKit] Cookie expiration at current timestamp

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| License       | MIT

In `Symfony\Component\BrowserKit\Cookie` a cookie is expired if the `expires` timestamp is in the past. I would like to change it to also be expired if the `expires` timestamp equals the current exact timestamp. This would still be in line with [RFC 6265](https://tools.ietf.org/html/rfc6265#section-4.1.2.1), as it states `The Expires attribute indicates the maximum lifetime of the cookie, represented as the date and time at which the cookie expires`.

Reason for this change: Cookies usually both have `expires` and `Max-Age` set, and Symfony sets `Max-Age` to zero if a cookie is expired (in `Symfony\Component\HttpFoundation\Cookie`). When converting cookies between string and object representations, `Max-Age` is the preferred source of truth for the expiration, but `Max-Age` set to zero is converted to an `expires` timestamp at this exact second, currently making the cookie not expired in `Symfony\Component\BrowserKit\Cookie`, even though it should be.

I noticed this discrepancy in my tests when checking if a cookie no longer existed after deleting it, yet it was still there, because `Cookie` thought it would only expire after the `expires` timestamp had passed. I am also thinking of raising an issue for `Symfony\Component\HttpFoundation\Cookie`, as importing and exporting an expired cookie (via strings) changes the `expired` value. I thought this change was a simpler one for now, and should have no negative/unexpected impact.

Commits
-------

9d187c0d1a Adjust expired range check
2020-10-01 12:44:36 +02:00
Andreas
9d187c0d1a Adjust expired range check
Include current second when deciding if cooke has expired.
2020-10-01 12:06:12 +02:00
Fabien Potencier
127724d519 feature #38308 [Security][RateLimiter] Added request rate limiter to prevent breadth-first attacks (wouterj)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Security][RateLimiter] Added request rate limiter to prevent breadth-first attacks

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

This allows limiting on different elements of a request. The normal `CompoundLimiter` requires the same key for all its limiters.

This request limiter is useful to e.g. prevent breadth-first attacks, by allowing to enforce a limit on both IP and IP+username. It can also be useful for applications using some sort of API request limiting (or e.g. file upload limiting).

The default login throttling limiter will allow `max_attempts` (default: 5) attempts per minute for `username + IP` and `5 * max_attempts` for `IP`. Customizing this will require creating a new service that extends `AbstractRequestRateLimiter` and implementing `getLimiters(Request $request): LimiterInterface[]`.

Commits
-------

5d03afea99 Added request rate limiters and improved login throttling
2020-10-01 08:42:40 +02:00
Robin Chalas
e8dd14ac9e bug #38351 [Console] clone stream on multiline questions so EOT doesn't close input (ramsey)
This PR was squashed before being merged into the 5.2-dev branch (closes #38351).

Discussion
----------

[Console] clone stream on multiline questions so EOT doesn't close input

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

This fixes a bug in the multiline question feature that was introduced in #37683.

Today, @epitre commented on https://github.com/symfony/symfony/pull/37683#issuecomment-700666826:

> If I ask a question AFTER using the multiline option in a previous question, then it seems that the ctrl+d is kind of saved, and the command gets aborted.

I'm honestly not sure how I missed this while working on #37683, since I was testing it with multiple questions, but I think it might have resulted from some of the back-and-forth and the lack of ability to effectively test the EOT character from a unit test.

The solution was to _clone_ the input stream resource and use the clone to read the multiline input and capture the EOT byte. In this way, the primary input stream is not closed by the EOT.

This is similar to @epitre's solution in https://github.com/symfony/symfony/pull/38345, but I'm using the `uri` and `mode` from `stream_get_meta_data()` to create the new stream, and if the existing stream has any data and is seekable and writable (like the streams used in the tests), I add the data to the clone and seek to the same offset.

I've ensured that this solution works on a question that is in the middle of a series of other questions, and I've tested in on *nix and Windows. I've also improved the tests for multiline questions. While I'm unable to test (with a unit test) that an EOT character effectively stops reading from STDIN while continuing to the next question and prompt, I feel confident that the tests here provide sufficient coverage.

Commits
-------

ec688a361e [Console] clone stream on multiline questions so EOT doesn't close input
2020-09-30 21:48:20 +02:00
Ben Ramsey
ec688a361e [Console] clone stream on multiline questions so EOT doesn't close input 2020-09-30 21:34:12 +02:00
Wouter de Jong
5d03afea99 Added request rate limiters and improved login throttling
This allows limiting on different elements of a request. This is usefull to
e.g. prevent breadth-first attacks, by allowing to enforce a limit on both IP
and IP+username.
2020-09-30 21:18:40 +02:00
Alexander Schranz
f4e42ad3d4 Fix redis connection error message
Use correct instance of redis to getLastError
2020-09-30 18:06:18 +02:00
Nicolas Grekas
e33a0b0f94 [DI] fix dumping non-shared lazy services 2020-09-30 17:55:21 +02:00
Wouter de Jong
0279f88e6c Call all compound limiters on failure and added IO blocking 2020-09-30 12:14:20 +02:00
Fabien Potencier
aa661492d2 feature #38257 [RateLimiter] Add limit object on RateLimiter consume method (Valentin, vasilvestre)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[RateLimiter] Add limit object on RateLimiter consume method

| Q             | A
| ------------- | ---
| Branch?       | master (should be merged in 5.2 before 31 September if possible)
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #38241
| License       | MIT
| Doc PR        | Not yet :/ <!-- https://github.com/symfony/symfony-docs/pull/X -->

Commits
-------

8f62afc5f9 [RateLimiter] Return Limit object on Consume method
2020-09-30 07:47:32 +02:00
Valentin
8f62afc5f9 [RateLimiter] Return Limit object on Consume method 2020-09-30 07:47:20 +02:00
Fabien Potencier
5eb442ec18 feature #38309 [Validator] Constraints as php 8 Attributes (derrabus)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Validator] Constraints as php 8 Attributes

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | #38096
| License       | MIT
| Doc PR        | TODO

This is my attempt to teach the validator to load constraints from PHP attributes. Like we've done it for the `Route` attribute, I've hooked into the existing `AnnotationLoader`, so we can again mix and match annotations and attributes.

### Named Arguments

An attribute declaration is basically a constructor call. This is why, in order to effectively use a constraint as attribute, we need to equip it with a constructor that works nicely with named arguments. This way, IDEs like PhpStorm can provide auto-completion and guide a developer when declaring a constraint without the need for additional plugins. Right now, PhpStorm supports neither attributes nor named arguments, but I expect those features to be implemented relatively soon.

To showcase this, I have migrated the `Range` and `Choice` constraints. The example presented in #38096 works with this PR.

```php
#[Assert\Choice(
    choices: ['fiction', 'non-fiction'],
    message: 'Choose a valid genre.',
)]
private $genre;
```

A nice side effect is that we get a more decent constructor call in php 8 in situations where we directly instantiate constraints, for instance when attaching constraints to a form field via the form builder.

```php
$builder->add('genre, TextType::class, [
    'constraints' => [new Assert\Choice(
        choices: ['fiction', 'non-fiction'],
        message: 'Choose a valid genre.',
    )],
]);
```

The downside is that all those constructors generate the need for some boilerplate code that was previously abstracted away by the `Constraint` class.

The alternative to named arguments would be leaving the constructors as they are. That would basically mean that when declaring a constraint we would have to emulate the array that Doctrine annotations would crate. We would lose IDE support and the declarations would be uglier, but it would work.

```php
#[Assert\Choice([
    'choices' => ['fiction', 'non-fiction'],
    'message' => 'Choose a valid genre.',
])]
private $genre;
```

### Nested Attributes

PHP does not support nesting attributes (yet?). This is why I could not recreate composite annotations like `All` and `Collection`. I think it's okay if they're not included in the first iteration of attribute constraints and we can work on a solution in a later PR. Possible options:
* A later PHP 8.x release might give us nested attributes.
* We could find a way to flatten those constraints so we can recreate them without nesting.
* We could come up with a convention for a structure that lets us emulate nested attributes in userland.

### Repeatable attributes

In order to attach two instances of the same attribute class to an element, we explicitly have to allow repetition via the flag `Attribute::IS_REPEATABLE`. While we could argue if it really makes sense to do this for certain constraints (like `NotNull` for instance), there are others (like `Callback`) where having two instances with different configurations could make sense. On the other hand, the validator certainly won't break if we repeat any of the constraints and all other ways to configure constraints allow repetition. This is why I decided to allow repetition for all constraints I've marked as attributes in this PR and propose to continue with that practice for all other constraints.

### Migration Path

This PR only migrates a handful of constraints. My plan is to discuss the general idea with this PR first and use it as a blueprint to migrate the individual constraints afterwards. Right now, the migration path would look like this:

* Attach the `#[Attribute]` attribute.
* Recreate all options of the constraint as constructor arguments.
* Add test cases for constructor calls with named arguments to the test class of the constraint's validator.

Commits
-------

d1cb2d6354 [Validator] Constraints as php 8 Attributes.
2020-09-30 07:35:13 +02:00
Fabien Potencier
dbedd284f4 minor #38315 [Notifier] Add Dsn test case (jschaedl)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Notifier] Add Dsn test case

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | - <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | - <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

Commits
-------

6a0510d859 Add Dsn test case
2020-09-30 07:33:36 +02:00
Rodrigo Aguilera
c451c48258 [Console] Improve description for the help flag. 2020-09-30 07:13:00 +02:00
Alexander M. Turek
d1cb2d6354 [Validator] Constraints as php 8 Attributes. 2020-09-30 00:43:35 +02:00
Nicolas Grekas
55c17e1af7 [Validator] Add support for UUIDv6 in Uuid constraint 2020-09-29 08:56:19 +02:00
Fabien Potencier
d5ce0e3bc9 feature #38330 [Contracts] add TranslatableInterface (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Contracts] add TranslatableInterface

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | #38319
| License       | MIT
| Doc PR        | -

An alternative to #38328:

- `TranslatableInterface` is added to symfony/contracts;
- `Translatable`, still in the component, implements it (and is not final as it makes no sense for a value-object)
- the `t()` function is kept in the component - it doesn't fit in the contracts IMHO;
- `Translatable::trans()` is not static anymore;
- the domain is nullable instead of defaulting to "messages";
- the `t()` function moved in the `Symfony\Component\Translation` namespace (for reference, the `s()` function from String is also namespaced.);
- the Twig extension is made strictly polymorphic: if you pass a Translatable, you cannot pass arguments/domain/count.

Commits
-------

9224f7ac5b [Contracts] add TranslatableInterface
2020-09-29 08:51:20 +02:00
Fabien Potencier
e159dff938 feature #38322 [Validator] Add Ulid constraint and validator (Laurent Clouet)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Validator] Add Ulid constraint and validator

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #38152
| License       | MIT

ULID constraint and validator as mentioned in ticket #38103
I checked for it ulid specifications https://github.com/ulid/spec

Commits
-------

e36fd559da [Validator] Add Ulid constraint and validator
2020-09-29 08:36:34 +02:00
Laurent Clouet
e36fd559da [Validator] Add Ulid constraint and validator 2020-09-29 08:36:29 +02:00
Fabien Potencier
3113fce1df feature #38333 [Uid] make UUIDv6 always return truly random nodes to prevent leaking the MAC of the host (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Uid] make UUIDv6 always return truly random nodes to prevent leaking the MAC of the host

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

As explained in http://gh.peabody.io/uuidv6/, the wording of the UUIDv1 spec suggests that using the MAC of the host is preferred to compute the "node" field of UUIDs. This is what the uuid extension does, and the reason why the 12 last chars of the UUIDv1 it generates are stable. But this is a privacy leak. There are stories in the wild about how knowing the MAC has been abused in the past.

UUIDv6 prefers putting a secure random number there.

So here is the PR to do so.

Commits
-------

b9c61ca86c [Uid] make UUIDv6 always return truly random nodes to prevent leaking the MAC of the host
2020-09-29 08:35:35 +02:00
Nicolas Grekas
b9c61ca86c [Uid] make UUIDv6 always return truly random nodes to prevent leaking the MAC of the host 2020-09-29 08:01:16 +02:00
Nicolas Grekas
9224f7ac5b [Contracts] add TranslatableInterface 2020-09-28 15:05:58 +02:00
Jérémy Derussé
7a80e41cd8
Fix non-blocking store fallback 2020-09-28 12:11:42 +02:00
Nicolas Grekas
6349a1b2fc Merge branch '5.1'
* 5.1:
  [HttpFoundation] skip tests when the IANA server is throttling the list of status codes
  [DoctrineBridge] fix DBAL v3 compat
2020-09-27 16:15:50 +02:00
Nicolas Grekas
66758ad5dc Merge branch '4.4' into 5.1
* 4.4:
  [HttpFoundation] skip tests when the IANA server is throttling the list of status codes
  [DoctrineBridge] fix DBAL v3 compat
2020-09-27 16:14:57 +02:00
Nicolas Grekas
cbb0b1d54b Merge branch '3.4' into 4.4
* 3.4:
  [HttpFoundation] skip tests when the IANA server is throttling the list of status codes
  [DoctrineBridge] fix DBAL v3 compat
2020-09-27 16:14:06 +02:00
Nicolas Grekas
feaa9a6b2a [HttpFoundation] skip tests when the IANA server is throttling the list of status codes 2020-09-27 16:13:16 +02:00
Nicolas Grekas
cde8ffecce Merge branch '5.1'
* 5.1:
  [Filesystem] fix for PHP 8
  [Cache] fix DBAL v3 compat
  Bump Symfony version to 5.1.7
  Update VERSION for 5.1.6
  Update CHANGELOG for 5.1.6
  Bump Symfony version to 4.4.15
  Update VERSION for 4.4.14
  Update CHANGELOG for 4.4.14
  Bump Symfony version to 3.4.46
  Update VERSION for 3.4.45
  Update CONTRIBUTORS for 3.4.45
  Update CHANGELOG for 3.4.45
2020-09-27 16:05:32 +02:00
Nicolas Grekas
b93dea7244 Merge branch '4.4' into 5.1
* 4.4:
  [Filesystem] fix for PHP 8
  [Cache] fix DBAL v3 compat
  Bump Symfony version to 4.4.15
  Update VERSION for 4.4.14
  Update CHANGELOG for 4.4.14
  Bump Symfony version to 3.4.46
  Update VERSION for 3.4.45
  Update CONTRIBUTORS for 3.4.45
  Update CHANGELOG for 3.4.45
2020-09-27 16:02:37 +02:00
Nicolas Grekas
7529d131cc Merge branch '3.4' into 4.4
* 3.4:
  [Filesystem] fix for PHP 8
2020-09-27 15:54:16 +02:00
Nicolas Grekas
a4324447f1 [Filesystem] fix for PHP 8 2020-09-27 15:07:29 +02:00
Jan Schädlich
6a0510d859 Add Dsn test case 2020-09-27 14:45:53 +02:00
Nicolas Grekas
911e120fa4 Merge branch '3.4' into 4.4
* 3.4:
  [Cache] fix DBAL v3 compat
  Bump Symfony version to 3.4.46
  Update VERSION for 3.4.45
  Update CONTRIBUTORS for 3.4.45
  Update CHANGELOG for 3.4.45
2020-09-27 14:40:39 +02:00
Nicolas Grekas
3d1ed2e90d [Cache] fix DBAL v3 compat 2020-09-27 14:33:10 +02:00
Jonas Hünig
91a44524ff [HttpFoundation][Cache][Messenger] Replace redis "DEL" commands with "UNLINK" 2020-09-27 12:41:29 +02:00
Fabien Potencier
176262b3b9 Bump Symfony version to 5.1.7 2020-09-27 06:36:47 +02:00
Fabien Potencier
81bcd90f08 Update VERSION for 5.1.6 2020-09-27 06:33:19 +02:00
Fabien Potencier
08e27e9f03 Bump Symfony version to 4.4.15 2020-09-27 06:29:46 +02:00
Fabien Potencier
9e8f2e7db6 Update VERSION for 4.4.14 2020-09-27 06:25:44 +02:00
Fabien Potencier
2abc465335 Merge branch '5.1'
* 5.1:
  Fix wrong merge
2020-09-27 06:23:47 +02:00
Fabien Potencier
46e609b262 Fix wrong merge 2020-09-27 06:23:37 +02:00
Fabien Potencier
9a774ede48 Bump Symfony version to 3.4.46 2020-09-27 06:03:03 +02:00
Fabien Potencier
bc38373380 Update VERSION for 3.4.45 2020-09-27 05:46:58 +02:00
Fabien Potencier
6ca92258d7 Merge branch '5.1'
* 5.1:
  [ErrorHandler] Return false directly and remove unused variable
  [OptionsResolver] Assert that the error type is valid in deprecations test
  [OptionsResolver] Fix deprecation message access
  [HttpClient] Allow bearer token with colon
  [Form] Fix custom formats deprecation with HTML5 widgets
  [Translator] Optional Intl dependency
  [Contracts][Translation] Optional Intl dependency
  [ErrorHandler] Escape JSON encoded log context
  update missing translations arabic
  [Yaml] simplify the test
  fix test by letting mock throw the actual expected exception
2020-09-27 05:44:38 +02:00
Fabien Potencier
5685496974 Merge branch '4.4' into 5.1
* 4.4:
  [ErrorHandler] Return false directly and remove unused variable
  [OptionsResolver] Assert that the error type is valid in deprecations test
  [HttpClient] Allow bearer token with colon
  [Form] Fix custom formats deprecation with HTML5 widgets
  [Translator] Optional Intl dependency
  [Contracts][Translation] Optional Intl dependency
  [ErrorHandler] Escape JSON encoded log context
  update missing translations arabic
  [Yaml] simplify the test
  fix test by letting mock throw the actual expected exception
2020-09-27 05:44:28 +02:00
Fabien Potencier
55a450d827 Merge branch '3.4' into 4.4
* 3.4:
  update missing translations arabic
  [Yaml] simplify the test
  fix test by letting mock throw the actual expected exception
2020-09-27 05:36:23 +02:00
Fabien Potencier
a6aa08e166 feature #38296 [lock] Provides default implementation when store does not supports the behavior (jderusse)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[lock] Provides default implementation when store does not supports the behavior

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | yes
| Tickets       | /
| License       | MIT
| Doc PR        | /

All stores does not provide the same behaviors. Some are blocking, some allows shared Locks, ...
Issue is: When people use `lock` to use a behavior that is not supported by the store, they get an `UnsuportedException`, but they don't have any way to know if the store supports or not the behavior they want to use.

ie: when using the FrameworkBundle
```yaml
framework:
    lock: '%env(LOCK_DSN)%'
```
User (or bundle) can't use safely `$lock->acquire(true)` or `$lock->acquireRead()`.

Given it's very easy to provide an fallback implementation to those behavior, this PR
- use fallback implementation when store does not support the behavior
- deprecate the RetryTillSaveStore (not needed anymore)

Commits
-------

575b391b9b [lock] Provides default implementation when store does not supports the behavior
2020-09-27 05:25:42 +02:00
Jérémy Derussé
575b391b9b [lock] Provides default implementation when store does not supports the behavior 2020-09-27 05:25:36 +02:00
Fabien Potencier
934b125dff feature #38298 [Notifier] Add Sendinblue notifier. (ptondereau)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Notifier] Add Sendinblue notifier.

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | no <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | todo <!-- required for new features -->

Add Sendinblue SMS notifier bridge.

Commits
-------

e7300a8580 Add Sendinblue notifier.
2020-09-27 05:14:32 +02:00
Pierre Tondereau
e7300a8580 Add Sendinblue notifier. 2020-09-26 11:58:00 +02:00
Fabien Potencier
9e4f511cbf Fix CS 2020-09-26 07:31:43 +02:00
Fabien Potencier
013bbcc23e minor #38303 [Messenger] Fix misleading comment about time-limit (sylfabre)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Messenger] Fix misleading comment about time-limit

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | n/a
| License       | MIT
| Doc PR        | n/a

The current explanation of the time-limit option of the `messenger:consume` command is misleading as it lets you think that this is an enforced hard limit.

For instance, you may think that a command started with `--time-limit=10` will stop once 10 seconds are elapsed, no matter what.

Actually, two things happen:
- Once 10 seconds have elapsed, then the worker won't receive and handle any other message
- The worker will keep running until the currently handled message is fully handled so it can last way longer than 10 seconds, then it will stop.

I'm not sure this is behavior is actually a bug or not, but the current documentation does not describe the current behavior

Commits
-------

21176646e9 [Messenger] Fix misleading comment about time-limit
2020-09-26 07:30:40 +02:00
Titouan Galopin
0ba206420e [Translation] Allow Translatable objects to be used as strings 2020-09-25 18:10:29 +02:00
Sylvain Fabre
21176646e9 [Messenger] Fix misleading comment about time-limit 2020-09-25 15:58:44 +02:00
Thomas Calvet
3933957d1a [ErrorHandler] Return false directly and remove unused variable 2020-09-25 10:51:35 +02:00
Thomas Calvet
926d18f2f9 [OptionsResolver] Assert that the error type is valid in deprecations test 2020-09-24 18:40:22 +02:00
Thomas Calvet
232af423aa [OptionsResolver] Fix deprecation message access 2020-09-24 18:12:55 +02:00
Fabien Potencier
2bdcf4ac8f feature #36326 [Validator] Add invalid datetime message in Range validator (przemyslaw-bogusz)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Validator] Add invalid datetime message in Range validator

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

When the validated value is invalid (it isn't a number nor a datetime), but `min` or `max` option indicate that the `Range` constraint is being used to validate a datetime, the displayed message will be `This value should be a valid datetime` instead of `This value should be a valid number`. This PR replaces #35998.

Commits
-------

c77730699e [Validator] Add invalid datetime message in Range validator
2020-09-24 16:49:32 +02:00
Przemysław Bogusz
c77730699e [Validator] Add invalid datetime message in Range validator 2020-09-24 16:49:16 +02:00
Fabien Potencier
59f712475b feature #38243 [HttpKernel] Auto-register kernel as an extension (HypeMC)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpKernel] Auto-register kernel as an extension

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Symfony already supports having the kernel as an extension. This is evident by the fact that the [`config:dump-reference` and `debug:config`](https://github.com/symfony/symfony/pull/36186) commands check whether the kernel implements the `ExtensionInterface`. Nonetheless, it's still required to register the kernel manually as an extension.

With this PR the kernel will be automatically registered as an extension if it implements the `ExtensionInterface`. This is the same logic as when the kernel implements the `CompilerPassInterface`.

Commits
-------

9c34980869 Auto-register kernel as an extension
2020-09-24 16:31:11 +02:00
Fabien Potencier
5c48235e71 feature #38277 [Mailer] Added Sendinblue bridge (drixs6o9)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Mailer] Added Sendinblue bridge

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT
| Doc PR        | [https://github.com/symfony/symfony-docs/pull/14272](https://github.com/symfony/symfony-docs/pull/14272)
| Recipe | [https://github.com/symfony/recipes/pull/822](https://github.com/symfony/recipes/pull/822)

<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

N.B. I had a little help from [Pierre TONDEREAU](https://github.com/ptondereau) for the API.

Commits
-------

836a20350b [Mailer] Added Sendinblue bridge
2020-09-24 16:10:39 +02:00
drixs6o9
836a20350b [Mailer] Added Sendinblue bridge 2020-09-24 16:10:25 +02:00
Fabien Potencier
6e9949b9b2 feature #35956 [Form] Added "html5" option to both MoneyType and PercentType (romaricdrigon)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Form] Added "html5" option to both MoneyType and PercentType

| Q             | A
| ------------- | ---
| Branch?       | master for features
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       |  -
| License       | MIT
| Doc PR        | TBD

Hello,

In the same way that [NumberType](https://symfony.com/doc/current/reference/forms/types/number.html) offers a `html5` option to render a `number` input instead of a `text` input, this PR adds the same option to both `MoneyType` and `PercentType`. Number inputs offer a better UI, especially on mobile (specific keyboard), and they accept extra HTML attributes, such as `max=100`, which are quite useful.

The challenge is that `number` inputs need a "raw" value, nor formatted nor localized.
Format is described here https://www.w3.org/TR/html51/sec-forms.html#date-time-and-number-formats (non-normative, but tested on a few browsers). It matches number formatting for `en` locale (which is great, since it is the one provided by Symfony Intl polyflil), without grouping.

Implementation was done in a manner similar to `NumberType` for `MoneyType`.
`PercentType` required to modify `PercentToLocalizedStringTransformer` too.

As a bonus, `PercentType` had no tests at all, I added a few.

I wanted to get some feedback on the idea first, remaining steps:
 - update `CHANGELOG.md`
 - update the doc

Commits
-------

f7312a48ea [Form] Added "html5" option to both MoneyType and PercentType
2020-09-24 15:56:19 +02:00
Fabien Potencier
2e819f3ba9 Revert "feature #33381 [Form] dispatch submit events for disabled forms too (xabbuh)"
This reverts commit dc63d712ab, reversing
changes made to 59ae592909.
2020-09-24 15:50:42 +02:00
Romaric Drigon
f7312a48ea [Form] Added "html5" option to both MoneyType and PercentType 2020-09-24 15:48:47 +02:00
Nicolas Grekas
caab0f1b4f bug #38248 [HttpClient] Allow bearer token with colon (stephanvierkant)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[HttpClient] Allow bearer token with colon

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | n/a
| License       | MIT
| Doc PR        | n/a

The JetBrains Hub (YouTrack API) creates tokens with a `perm:` prefix. This doesn't work right now, because HttpClient doesn't allow a colon in the bearer token.

As far as I can see, there is no reason to disallow the use of the semicolon in the bearer token, so this PR fixes it.

Example of a token: `perm:c3RlcGhhbg==.NTUtMw==.NiZw16agafhsQAShTvclhb78hyJh2H`

Commits
-------

82ed1ec20a [HttpClient] Allow bearer token with colon
2020-09-24 15:25:52 +02:00
Stephan Vierkant
82ed1ec20a [HttpClient] Allow bearer token with colon 2020-09-24 15:25:24 +02:00
Fabien Potencier
9e7e2a87c9 bug #37837 [Form] Fix custom formats deprecation with HTML5 widgets (fancyweb)
This PR was merged into the 4.4 branch.

Discussion
----------

[Form] Fix custom formats deprecation with HTML5 widgets

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | https://github.com/symfony/symfony/issues/37698
| License       | MIT
| Doc PR        | -

1. The options resolver only show the deprecations for user defined (overidden) options.
2. The default value of the `html5` option is enough to pass the logical condition of the callback.

That means that only setting the `format` option (like in the reproducer) does not trigger the deprecation while it should. I think we need a feature in the options resolver component to handle those kind of cases 🤷‍♂️

Meanwhile, we can fix the issue by "deprecating" all the concerned options of the logical condition of the callback.

Commits
-------

d28182f99b [Form] Fix custom formats deprecation with HTML5 widgets
2020-09-24 12:57:15 +02:00
Kevin Bond
f20a318f37 [String] allow passing null to string functions 2020-09-24 11:57:23 +02:00
Thomas Calvet
d28182f99b [Form] Fix custom formats deprecation with HTML5 widgets 2020-09-24 11:52:40 +02:00
Fabien Potencier
d9bcb64fc0 bug #38283 [Translator] Optional Intl dependency (ro0NL)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Translator] Optional Intl dependency

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38279
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

i decided to cast $locale at construct, given its property is documented to be string

Commits
-------

a2eb263457 [Translator] Optional Intl dependency
2020-09-24 11:40:07 +02:00
Roland Franssen
a2eb263457 [Translator] Optional Intl dependency 2020-09-24 11:40:01 +02:00
Robin Chalas
02be26a39c bug #38271 [ErrorHandler] Escape JSON encoded log context (ro0NL)
This PR was merged into the 4.4 branch.

Discussion
----------

[ErrorHandler] Escape JSON encoded log context

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | eno <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #... <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Fixes https://github.com/symfony/symfony/issues/35569#issuecomment-581317792
Fixes https://github.com/symfony/symfony/issues/35569#issuecomment-696767559

The initial issue remains though (the webprofiler showing the logs tab in the exception panel), i'll try to give it another look sometime, but this is a quick win nevertheless.

cc @yceruto

Commits
-------

5572a68ed7 [ErrorHandler] Escape JSON encoded log context
2020-09-24 11:16:22 +02:00
Christian Flothmann
9323b75603 Merge branch '5.1' into master
* 5.1:
  fix compatibility with Doctrine DBAL 3
2020-09-24 10:13:58 +02:00
Christian Flothmann
79686c63ef Merge branch '4.4' into 5.1
* 4.4:
  fix compatibility with Doctrine DBAL 3
2020-09-24 09:56:38 +02:00
Christian Flothmann
a03885168e fix compatibility with Doctrine DBAL 3 2020-09-24 08:54:33 +02:00
Roland Franssen
5572a68ed7
[ErrorHandler] Escape JSON encoded log context 2020-09-22 18:24:16 +02:00
Fabien Potencier
7cb8ba585d Fix CS 2020-09-22 11:22:20 +02:00
Fabien Potencier
90056b871a feature #38176 [Config] Adding the "info" to a missing option error messages (weaverryan)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Config] Adding the "info" to a missing option error messages

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | None
| License       | MIT
| Doc PR        | Not needed

New error:

<img width="1063" alt="Screen Shot 2020-09-13 at 10 51 32 AM" src="https://user-images.githubusercontent.com/121003/93021186-6329ff00-f5af-11ea-83c6-98581b12ef75.png">

I used the missing `class` just as an example. I hit this while building a new feature in Symfony. It occurred to me that if, for example, you activate some feature in config and that feature has a required sub-key, why not print the `info()` for that sub key to make it discoverable?

Commits
-------

3780f122c7 adding the description to a missing option
2020-09-22 11:20:33 +02:00
Zairig Imad
76a47b38e2 update missing translations arabic 2020-09-22 10:56:57 +02:00
Christian Flothmann
593a94c932 replace expectExceptionMessageRegExp() with expectExceptionMessageMatches() 2020-09-20 09:51:18 +02:00
Christian Flothmann
ccecffeff6 Merge branch '5.1' into master
* 5.1: (25 commits)
  stop using the deprecated at() PHPUnit matcher
  fix lowest allowed version of the HTTP client contracts
  fix lowest allowed version for the PHPUnit bridge
  fix merge
  fix merge
  drop logger mock in favor of using the BufferingLogger
  catch ValueError thrown on PHP 8
  [Yaml Parser] Fix edge cases when parsing multiple documents
  fix parsing comments not prefixed by a space
  [Translator] Make sure a null locale is handled properly
  deal with errors being thrown on PHP 8
  loadRoutes shoud receive RoutingPhpFileLoader
  [Cache] Allow cache tags to be objects implementing __toString()
  [HttpKernel] Do not override max_redirects option in HttpClientKernel
  Log notice when no entry point is configured
  remove superfluous cast
  [HttpClient] Support for CURLOPT_LOCALPORT.
  Upgrade PHPUnit to 8.5 (php 7.2) and 9.3 (php >= 7.3).
  Fixed exception message formatting
  [FrameworkBundle] Fix error in xsd which prevent to register more than one metadata
  ...
2020-09-20 09:20:17 +02:00
HypeMC
9c34980869 Auto-register kernel as an extension 2020-09-20 02:47:54 +02:00
Christian Flothmann
2a76d51da5 minor #38238 [Validator] stop using the deprecated at() PHPUnit matcher (xabbuh)
This PR was merged into the 5.1 branch.

Discussion
----------

[Validator] stop using the deprecated at() PHPUnit matcher

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

0d0f92b7c6 stop using the deprecated at() PHPUnit matcher
2020-09-18 20:37:45 +02:00
Christian Flothmann
0d0f92b7c6 stop using the deprecated at() PHPUnit matcher 2020-09-18 20:24:55 +02:00
Christian Flothmann
f88caa81da minor #38237 [HttpClient] fix lowest allowed version of the HTTP client contracts (xabbuh)
This PR was merged into the 5.1 branch.

Discussion
----------

[HttpClient] fix lowest allowed version of the HTTP client contracts

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

fixes `deps=low` builds for the HttpClient component by making sure that the installed version of the HTTP client contracts package contains the changes from #37831

Commits
-------

edca581889 fix lowest allowed version of the HTTP client contracts
2020-09-18 19:14:44 +02:00
Christian Flothmann
edca581889 fix lowest allowed version of the HTTP client contracts 2020-09-18 18:31:55 +02:00
Alexander M. Turek
34dbf01618 [VarDumper] Support for ReflectionAttribute. 2020-09-18 18:10:35 +02:00
Christian Flothmann
fb7ee79dba fix lowest allowed version for the PHPUnit bridge 2020-09-18 18:07:05 +02:00
Christian Flothmann
bb64fc9c3b [Yaml] simplify the test 2020-09-18 17:58:55 +02:00
Christian Flothmann
9610daf1bc fix merge 2020-09-18 17:39:40 +02:00
Christian Flothmann
4ee591bec6 Merge branch '4.4' into 5.1
* 4.4:
  fix merge
  drop logger mock in favor of using the BufferingLogger
  catch ValueError thrown on PHP 8
  [Yaml Parser] Fix edge cases when parsing multiple documents
  fix parsing comments not prefixed by a space
  [Translator] Make sure a null locale is handled properly
  deal with errors being thrown on PHP 8
  [Cache] Allow cache tags to be objects implementing __toString()
  [HttpKernel] Do not override max_redirects option in HttpClientKernel
  remove superfluous cast
  [HttpClient] Support for CURLOPT_LOCALPORT.
  Upgrade PHPUnit to 8.5 (php 7.2) and 9.3 (php >= 7.3).
  Fixed exception message formatting
  [FrameworkBundle] Fix error in xsd which prevent to register more than one metadata
  [Console] work around disabled putenv()
  [PhpUnitBridge] Fix error with ReflectionClass
  [HttpClient][HttpClientTrait] don't calculate alternatives if option is auth_ntlm
  Change 'cache_key' to AbstractRendererEngine::CACHE_KEY_VAR
  Upgrade PHPUnit to 8.5 (php 7.2) and 9.3 (php >= 7.3).
2020-09-18 16:27:32 +02:00
Christian Flothmann
50f37f0ccc fix merge 2020-09-18 16:07:46 +02:00
Christian Flothmann
d1353c0602 Merge branch '3.4' into 4.4
* 3.4:
  drop logger mock in favor of using the BufferingLogger
  [Yaml Parser] Fix edge cases when parsing multiple documents
  fix parsing comments not prefixed by a space
2020-09-18 15:54:02 +02:00
Christian Flothmann
f6f162dcdd fix test by letting mock throw the actual expected exception 2020-09-18 15:46:38 +02:00
Christian Flothmann
86a7e3289b drop logger mock in favor of using the BufferingLogger 2020-09-18 14:06:50 +02:00
Alexander M. Turek
14642fb6dd Added missing changelog entries. 2020-09-18 12:11:46 +02:00
Christian Flothmann
e299544639 minor #38231 [Validator] catch ValueError thrown on PHP 8 (xabbuh)
This PR was merged into the 4.4 branch.

Discussion
----------

[Validator] catch ValueError thrown on PHP 8

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

see php/php-src@95f4ee38bb

Commits
-------

fb0d7beaaf catch ValueError thrown on PHP 8
2020-09-18 12:06:31 +02:00
Fabien Potencier
2eeb75dd6f bug #38228 [Yaml Parser] Fix edge cases when parsing multiple documents (digilist)
This PR was merged into the 3.4 branch.

Discussion
----------

[Yaml Parser] Fix edge cases when parsing multiple documents

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

I identified some edge cases when parsing multiple YAML documents with the same parser instance, because the totalNumberOfLines was not reset and so any subsequent parsing considered the number of lines of the first document.

Consider this document:
```yaml
a:
    b: |
        row
        row2
c: d
```

Normally, `a.b` would be parsed as `row\nrow2\n`. But if the parser parsed a shorter document before, the `\n` after row2 was missing, as the parser considered it as the end of the file (that's why the `c: d` at the end is important).

So this fix resets the `totalNumberOfLines` in the YAML parser to `null` so that any subsequent parsing will initialize the value for the new document and does not use the file length of the first parsed document.

I stumbled upon this because of a flickering unit test that was using the translation component. Sometimes the translated string contained a trailing `\n` and sometimes not. In the end it was based on this bug, as the translation files were not loaded in the same order every time (not really sure why. It's somehow related to the cache state, but even with a warm cache it was not totally deterministic).

Commits
-------

012ee4fa59 [Yaml Parser] Fix edge cases when parsing multiple documents
2020-09-18 12:04:33 +02:00
Christian Flothmann
fb0d7beaaf catch ValueError thrown on PHP 8 2020-09-18 11:45:13 +02:00
Christian Flothmann
74f41f3313 bug #38229 [Yaml] fix parsing comments not prefixed by a space (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Yaml] fix parsing comments not prefixed by a space

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38223
| License       | MIT
| Doc PR        |

Commits
-------

35b223aaa4 fix parsing comments not prefixed by a space
2020-09-18 11:29:40 +02:00
Markus Fasselt
012ee4fa59 [Yaml Parser] Fix edge cases when parsing multiple documents 2020-09-18 11:21:31 +02:00
Christian Flothmann
35b223aaa4 fix parsing comments not prefixed by a space 2020-09-18 11:15:17 +02:00
Fabien Potencier
785a06653c bug #38127 [Translator] Make sure a null locale is handled properly (jschaedl)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Translator] Make sure a null locale is handled properly

| Q             | A
| ------------- | ---
| Branch?       | 4.4<!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #38124  <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | - <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

Commits
-------

080ea5a0f7 [Translator] Make sure a null locale is handled properly
2020-09-18 10:46:54 +02:00
Jan Schädlich
080ea5a0f7 [Translator] Make sure a null locale is handled properly 2020-09-18 10:46:47 +02:00
Christian Flothmann
948e107a1b Merge branch '3.4' into 4.4
* 3.4:
  deal with errors being thrown on PHP 8
2020-09-18 10:35:10 +02:00
Christian Flothmann
6175d528e8 deal with errors being thrown on PHP 8 2020-09-18 10:10:16 +02:00
Fabien Potencier
791761277d bug #38221 [Cache] Allow cache tags to be objects implementing __toString() (lstrojny)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Cache] Allow cache tags to be objects implementing __toString()

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | maybe
| New feature?  | maybe
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

`\Symfony\Contracts\Cache\CacheInterface::get(string $key, …)` implicitly converts objects with `__toString` while `CacheItem::tag()` will throw an exception. That’s a bit of a sharp edge.

Commits
-------

c2c03e050f [Cache] Allow cache tags to be objects implementing __toString()
2020-09-17 12:06:33 +02:00
Lars Strojny
c2c03e050f [Cache] Allow cache tags to be objects implementing __toString() 2020-09-17 12:06:27 +02:00
Fabien Potencier
2f67bf3a37 bug #38212 [HttpKernel] Do not override max_redirects option in HttpClientKernel (dmolineus)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[HttpKernel] Do not override max_redirects option in HttpClientKernel

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38207
| License       | MIT
| Doc PR        | -

As [proposed](https://github.com/symfony/symfony/issues/38207#issuecomment-693382336) by @nicolas-grekas this pull request removes the `max_redirects` setting in the `\Symfony\Component\HttpKernel\HttpClientKernel::handle` method.

It solves the issue that requests made by the `\Symfony\Component\HttpClient\CachingHttpClient` wouldn't follow redirects as described in the linked issue.

Commits
-------

981a11beed [HttpKernel] Do not override max_redirects option in HttpClientKernel
2020-09-17 12:05:06 +02:00
David Molineus
981a11beed [HttpKernel] Do not override max_redirects option in HttpClientKernel 2020-09-17 12:05:00 +02:00
Wouter de Jong
68f891ff65 Log notice when no entry point is configured 2020-09-17 11:39:20 +02:00
Fabien Potencier
8d450130e0 feature #38182 [HttpClient] Added RetryHttpClient (jderusse)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] Added RetryHttpClient

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | TODO

This PR adds a new HttpClient decorator to automatically retry failed requests.

When calling API, A very small % of requests are expected to timeout due to transient network issues. Some providers like AWS recommends retrying these requests and use a lower connection timeout so that the clients can fail fast and retry.

I used the almost the same configuration as Messenger
```yaml
framework:
    http_client:
        default_options:
            retry_failed:
                enabled: true // default false
                decider_service: null
                backoff_service: null
                http_codes: [423, 425, 429, 500, 502, 503, 504, 507, 510]
                max_retries: 3
                delay: 1000
                multiplier: 2
                max_delay: 0
                response_header: true
        scoped_clients:
            github:
                scope: 'https://api\.github\.com'
                retry_failed:
                    max_delay: 2000
```

Commits
-------

712ac5999d [HttpClient] Added RetryHttpClient
2020-09-17 11:07:30 +02:00
Jérémy Derussé
712ac5999d [HttpClient] Added RetryHttpClient 2020-09-17 11:07:22 +02:00
Fabien Potencier
86c7113994 Merge branch '5.1'
* 5.1:
  [String] improve slugger's portability accross implementations of iconv()
  Fix errors parsing in FirebaseTransport
2020-09-17 09:22:48 +02:00
Wouter de Jong
afdd805b1c [Security] Added login throttling feature 2020-09-17 07:36:46 +02:00
Fabien Potencier
ad226185af bug #38215 [HttpClient] Support for CURLOPT_LOCALPORT (derrabus)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] Support for CURLOPT_LOCALPORT

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | https://github.com/symfony/symfony/issues/38081#issuecomment-688166943
| License       | MIT
| Doc PR        | N/A

Commits
-------

45fa6b8f24 [HttpClient] Support for CURLOPT_LOCALPORT.
2020-09-17 06:58:25 +02:00
Fabien Potencier
c965be8aaa minor #38214 Upgrade PHPUnit to 8.5 (php 7.2) and 9.3 (php >= 7.3) (derrabus)
This PR was merged into the 4.4 branch.

Discussion
----------

Upgrade PHPUnit to 8.5 (php 7.2) and 9.3 (php >= 7.3)

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | #37564
| License       | MIT
| Doc PR        | N/A

This is #38103 on the 4.4 branch.

Commits
-------

73647e5ffe Upgrade PHPUnit to 8.5 (php 7.2) and 9.3 (php >= 7.3).
2020-09-17 06:54:14 +02:00
Fabien Potencier
ee0f5a2a4d Merge branch '3.4' into 4.4
* 3.4:
  remove superfluous cast
  Change 'cache_key' to AbstractRendererEngine::CACHE_KEY_VAR
  Upgrade PHPUnit to 8.5 (php 7.2) and 9.3 (php >= 7.3).
2020-09-17 06:53:48 +02:00
Tom Klingenberg
05a9660a1e remove superfluous cast
in YAML component.

minor.
2020-09-17 01:52:20 +02:00
Alexander M. Turek
45fa6b8f24 [HttpClient] Support for CURLOPT_LOCALPORT. 2020-09-17 00:10:08 +02:00
Alexander M. Turek
73647e5ffe Upgrade PHPUnit to 8.5 (php 7.2) and 9.3 (php >= 7.3). 2020-09-16 23:25:34 +02:00
Fabien Potencier
83910df242 feature #38007 [Amqp] Add amqps support (vasilvestre-OS)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Amqp] Add amqps support

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #37002
| License       | MIT
| Doc PR        | symfony/symfony-docs#... TODO <!-- required for new features -->

### Cases

_Case 1 (simple):_
I want to set up my app with a locally installed amqp broker supporting SSL. No auth is needed, no vhost, only SSL certificate file located at /etc/ssl/cafile.
'amqps://'

_Case 2 (complex):_
I use a special port, special file locations for SSL. I pass it through php.ini or configuration.

### Questions

1) Actually AmqpTransportFactory use `supports` function to see if 'amqp://' is contained in dsn string and accept cacert argument to use SSL
How are we supposed to cover AMQPS's case in your opinion?

cacert argument is settable through php.ini and code.

### Observations

I think this PR should aim at:

- Having correct defaults ssl values in case of 'amqps://' eg : case 1
- Being able to pass cacert file path and verify argument. eg : case 2
- Test: but test what?

#### EDIT

As discuted with @nicolas-grekas, we should check that cacert is existing in php.ini or is passed in configuration and throw an exception to give a nice feedback about what's wrong. Php amqp lib isn't actually precise about why it fails when you forget it.

### Steps

- [x] Ensure AMQPS can be used out of the box without DSN.
- [x] If not, try to modify vendor directly to fix it.
- [x] Modify vendor to make AMQPS works with DSN.
- [x] Check cacert to throw a better exception.
- [x] Add test related to last point.
- [ ] Pass CI

Commits
-------

99fc3f3b89 [Amqp] Add amqps support
2020-09-16 15:50:25 +02:00
Fabien Potencier
7cd5bbf458 feature #37546 [RFC] Introduce a RateLimiter component (wouterj)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[RFC] Introduce a RateLimiter component

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Refs #37444
| License       | MIT
| Doc PR        | tbd

Based on the discussions in #37444, I decided to write a general purpose RateLimiter component. This implementation uses the token bucket algorithm, inspired by the [Go's time/rate](3af7569d3a/rate/rate.go) library and the [PHP `bandwidth-throttle/token-bucket` package](https://github.com/bandwidth-throttle/token-bucket) (which is [unmaintained for years](https://github.com/bandwidth-throttle/token-bucket/issues/19)).

### Usage

The component has two main methods:

* `Limiter::reserve(int $tokens, int $maxTime)`, allocates `$tokens` and returns a `Reservation` containing the wait time. Use this method if your process wants to wait before consuming the token.
* `Limiter::consume(int $tokens)`, checks if `$tokens` are available now and discards the reservation if that's not the case. Use this method if you want to skip when there are not enough tokens at this moment.

The component uses the Lock component to make sure it can be used in parallel processes.

Example:

```php
<?php

namespace App\EventListener;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\RateLimiter\LimiterFactory;

class LimitListener
{
    private $limiterFactory;

    public function __construct(LimiterFactory $apiLimiterFactory)
    {
        $this->limiterFactory = $apiLimiterFactory;
    }

    public function __invoke(RequestEvent $event)
    {
        $ip = $event->getRequest()->getClientIp();

        $limiter = $this->limiterFactory->createLimiter(preg_replace('/[^a-zA-Z0-9]/', '-', $ip));
        if (!$limiter->consume()) {
            $event->setResponse(new Response('Too many requests', 429));
        }
    }
}
```

### Usefullness of the component

I think a generic rate limiter is usefull in quite some places:

* Add a login throttling feature in Symfony
* <s>Rate limiting outgoing API calls (e.g. HttpClient), to prevent hitting upstream API limits.</s> See #37471 (and https://blog.heroku.com/rate-throttle-api-client )
* Allowing users to easily implement API rate limits in their own Symfony-based APIs.

### State of the art

There are some rate limiting packages in PHP, but I think there is no precendent for this component:

* [`graham-campbell/throttle`](https://github.com/GrahamCampbell/Laravel-Throttle) is heavily relying on Laravel. It is however very popular, proofing there is a need for such feature
* [`nikolaposa/rate-limit`](https://github.com/nikolaposa/rate-limit) does not implement reservation of tokens and as such less feature complete. Also its architecture combines the rate limiter and storage, making it harder to implement different storages.

### Todo

If it is agreed that this component can bring something to Symfony, it needs some more love:

* [x] Add more tests
* [x] Integrate with the FrameworkBundle
* [x] Add sliding window implementation
* [x] Add integration with the Security component
* <s>Maybe add more storage implementations? I didn't want to duplicate storage functionalities already existing in the Lock and Cache component, thus I for now focused mostly on integrating the Cache adapters. But maybe a special Doctrine adapter makes sense?</s>

Commits
-------

67417a693e [RFC] Introduce a RateLimiter component
2020-09-16 15:45:08 +02:00
Wouter de Jong
67417a693e [RFC] Introduce a RateLimiter component 2020-09-16 15:45:01 +02:00
Fabien Potencier
128bbd11eb feature #38193 Make RetryTillSaveStore implements the SharedLockStoreInterface (jderusse)
This PR was merged into the 5.2-dev branch.

Discussion
----------

Make RetryTillSaveStore implements the SharedLockStoreInterface

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | /

The `RetryTillSaveStore` decorates a non blocking store (ie. `RedisStore`) to make it blockable.
The issue is: if the decorate store manage SharedLock, the Decorator does not implements this interface. It's currently not possible to get both `blocking` and `sharable` store.

Commits
-------

a0321e66c9 Make RetryTillSaveStore implements the SharedLockStoreInterface
2020-09-16 14:38:44 +02:00
Fabien Potencier
c34865f175 feature #37968 [Form] Add new way of mapping data using callback functions (yceruto)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Form] Add new way of mapping data using callback functions

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | yes
| Tickets       | Fix #37597 (partially)
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/14241

Replaces https://github.com/symfony/symfony/pull/37614

## What this solves

Objects and Forms have different mechanisms for structuring data. When you build an object model with a lot of business logic it's valuable to use these mechanisms to better collect the data and the behavior that goes with it. Doing so leads to variant schemas; that is, the object model schema and the form schema don't match up.

You still need to transfer data between the two schemas, and this data transfer becomes a complexity in its own right. If the objects know about the form structure, changes in one tend to ripple to the other.

Currently, the Data Mapper layer separates the objects from the form, transfering data between the two and also isolating them from each other. That's fine, but at present the default data mapper has a limitation: _it's very tied to one property path_ (see [`PropertyPathMapper`](https://github.com/symfony/symfony/blob/5.1/src/Symfony/Component/Form/Extension/Core/DataMapper/PropertyPathMapper.php)).

That said, you'll have to write your own data mapper in the following situations:
 * When the property path differs for reading and writing
 * When several form fields are mapped to a single method
 * When you need to read data based on the model's state
 * When the mapping of the model depends on the submitted form data
 * ...

Also, when we create a new data mapper, we usually forget about checking the status of the given data and forms. Whether the data is empty or not; throw an exception if the given data is not an object/array and whether the form field is submitted/synchronized/disabled or not. Not doing that could lead to unwanted behavior.

## What this proposes

Create a new way to write and read values to/from an object/array using callback functions. This feature would be tied to each form field and would also mean a new way of mapping data, but a very convenient one, in which it won't be necessary to define a new data mapper and take into account all what it would imply when you only need to map one field in a different manner or perhaps in only one direction (writing or reading the value).

This PR adds two new options for each form type: `getter` and `setter`, allowed to be `null` or `callable`:
```php
$builder->add('name', TextType::class, [
    'getter' => function (Person $person, FormInterface $form): string {
        return $person->firstName().' '.$person->lastName();
    },
    'setter' => function (Person &$person, ?string $name, FormInterface $form): void {
        $person->rename($name);
    },
]);
```
This would give us the same possibilities as data mappers, but within the form field scope, where:
 * `$person` is the view data, basically the underlying data to the form.
 * `$form` is the current child form that is being mapped.
 * `$name` is the submitted data that belongs to that field.

These two callbacks will be executed following the same rules as for property paths before read and write any value (e.i. early return if empty data, skip mapping if the form field is not mapped or it's disabled, etc).

## What this also proposes

I based the implementation on solving this problem first:

> https://github.com/symfony/symfony/pull/37614#issuecomment-662957865
> [...] the property_path option defines the rules on how it's accessed. From there, the actual way it is accessed (direct property access, accessors, reflection, whatever) are hidden from view. All that matters is the property path (which is deduced from the name if not explicitly set). [...]

So splitting the default data mapper `PropertyPathMapper` into two artifacts: "[DataMapper](https://github.com/yceruto/symfony/blob/data_accessor/src/Symfony/Component/Form/Extension/Core/DataMapper/DataMapper.php)" and "[DataAccessor](https://github.com/yceruto/symfony/blob/data_accessor/src/Symfony/Component/Form/DataAccessorInterface.php)" would allow us adding multiple data accessors along the way (the code that varies in this case) without having to reinvent the wheel over and over again (the data mapper code).

You can also think about a new `ReflectionAccessor` for instance? or use this `CallbackAccessor` to map your form partially from an external API? yes, you could do it :)

Here is a view of the proposed changes:

![data_accessor](https://user-images.githubusercontent.com/2028198/91452859-16bf8f00-e84d-11ea-8564-d497c2f73730.png)

Where "DataMapper" will take care of common checks, iterates the given child forms, manages the form data and all what is needed for mapping a standard form, whereas "DataAccessor" will take care of how to read and write values to/from the underlying object or array.

## BC

The `PropertyPathMapper` is being deprecated in favor of `DataMapper` class, which uses the `PropertyPathAccessor` by default.

Although `DataMapper` is now the default for each compound form, the behavior must remains the same (tests prove it). So that if `getter` or `setter` option is null (they're by default) the `CallbackAccessor` will falls back to `PropertyPathAccessor` either for reading or writing values.

---

Sorry for the long description, but I think that sometimes it is necessary for too complex issues and big changes. Besides, now you know a little more about what these changes is about.

/cc @xabbuh as creator of [rich-model-forms-bundle](https://github.com/sensiolabs-de/rich-model-forms-bundle) and @alcaeus as you had worked on this issue.

WDYT?

Commits
-------

878effaf47 add new way of mapping data using callback functions
2020-09-16 14:32:39 +02:00
Jérémy Derussé
a0321e66c9
Make RetryTillSaveStore implements the SharedLockStoreInterface 2020-09-16 13:06:13 +02:00
Yonel Ceruto
878effaf47 add new way of mapping data using callback functions 2020-09-15 10:00:10 -04:00
Nicolas Grekas
21e4e320b4 [String] improve slugger's portability accross implementations of iconv() 2020-09-15 14:23:47 +02:00
Nicolas Grekas
0bb48df2b0 [String] allow translit rules to be given as closure 2020-09-15 14:13:10 +02:00
SenTisso
d3f909bff3 [Console] work around disabled putenv() 2020-09-15 09:58:55 +02:00
Nicolas Grekas
ae655bf6d4 bug #38190 [Notifier] Fix errors parsing in FirebaseTransport (jderusse)
This PR was merged into the 5.1 branch.

Discussion
----------

[Notifier] Fix errors parsing in FirebaseTransport

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | /

I noticed that, when parsing the response, this transport use `getHeader()` like a `string[]` instead of `string[][]`.

I did not test it and I'm not sure about this fix: could you have a look @Jeroeny ?

Commits
-------

2818e2cd43 Fix errors parsing in FirebaseTransport
2020-09-15 09:17:03 +02:00
Nicolas Grekas
61c1175d05 bug #38173 [HttpClient][HttpClientTrait] don't calculate alternatives if option is auth_ntlm (ybenhssaien)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[HttpClient][HttpClientTrait] don't calculate alternatives if option is auth_ntlm

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | no
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

If option is `auth_ntlm` an exception is thrown, `$alternatives` then is not used.

Commits
-------

ab1a96c999 [HttpClient][HttpClientTrait] don't calculate alternatives if option is auth_ntlm
2020-09-15 09:11:04 +02:00
Youssef BENHSSAIEN
ab1a96c999 [HttpClient][HttpClientTrait] don't calculate alternatives if option is auth_ntlm 2020-09-15 09:10:35 +02:00
Jérémy Derussé
2818e2cd43
Fix errors parsing in FirebaseTransport 2020-09-15 08:07:14 +02:00
Thibault RICHARD
1ff3e293e0 [Mailer] Mailjet - Allow using Reply-To with Mailjet API 2020-09-15 07:09:07 +02:00
vladyslavstartsev
4fcb41c3ba
Change 'cache_key' to AbstractRendererEngine::CACHE_KEY_VAR
The purpose of this change is to find all usages of AbstractRendererEngine::CACHE_KEY_VAR. Currently, if you search for AbstractRendererEngine::CACHE_KEY_VAR you will see only access to it, i.e. (`$view->vars[AbstractRendererEngine::CACHE_KEY_VAR]`), but you can't find it in write level. With this pull request you can see where is was used for write.
2020-09-14 19:22:49 +03:00
Fabien Potencier
28edd705e8 * 5.1:
[Messenger] Improve error message readability
  fix filename being cleaned up at end of tests
2020-09-14 17:02:31 +02:00
Fabien Potencier
2df87a36bd Merge branch '4.4' into 5.1
* 4.4:
  [Messenger] Improve error message readability
  fix filename being cleaned up at end of tests
2020-09-14 17:02:15 +02:00
Laurent VOULLEMIER
63bc620efa [Messenger] Improve error message readability
Since slashes are escaped, vhosts are not very readable.
2020-09-14 16:48:28 +02:00
Alexander M. Turek
ff47516ea0 Upgrade PHPUnit to 8.5 (php 7.2) and 9.3 (php >= 7.3). 2020-09-14 08:11:19 +02:00
Ryan Weaver
3780f122c7 adding the description to a missing option 2020-09-13 10:51:40 -04:00
Valentin
99fc3f3b89 [Amqp] Add amqps support 2020-09-13 07:20:39 +02:00
Fabien Potencier
3b1ab7bfac Merge branch '5.1'
* 5.1:
  Internal classes are not legacy.
  [HttpFoundation] Skip the cookie_max_age fixture on PHP 8.
  add choice_translation_domain tests to prevent further regressions
  Update validators.tr.xlf
2020-09-13 07:01:37 +02:00
Fabien Potencier
9fae49fb20 Merge branch '4.4' into 5.1
* 4.4:
  Internal classes are not legacy.
  [HttpFoundation] Skip the cookie_max_age fixture on PHP 8.
  add choice_translation_domain tests to prevent further regressions
  Update validators.tr.xlf
2020-09-13 07:01:27 +02:00
Fabien Potencier
f2e7158bc0 Merge branch '3.4' into 4.4
* 3.4:
  [HttpFoundation] Skip the cookie_max_age fixture on PHP 8.
  add choice_translation_domain tests to prevent further regressions
  Update validators.tr.xlf
2020-09-13 07:00:26 +02:00
Alexander M. Turek
d6d9b2927d [HttpFoundation] Skip the cookie_max_age fixture on PHP 8. 2020-09-12 22:41:00 +02:00
Fabien Potencier
f1f37a899c Fix CS 2020-09-12 10:28:26 +02:00
Jérôme Vasseur
20f316906e [RFC][HttpKernel][Security] Allowed adding attributes on controller arguments that will be passed to argument resolvers. 2020-09-12 10:22:10 +02:00
Jérémy Derussé
a7d51937f0 [RFC][lock] Introduce Shared Lock (or Read/Write Lock) 2020-09-12 07:27:01 +02:00
Fabien Potencier
8a89170284 Fix CHANGELOG 2020-09-12 07:23:15 +02:00
Fabien Potencier
9b84bc0e78 feature #37759 [Messenger] - Add option to confirm message delivery in Amqp connection (scyzoryck)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Messenger] - Add option to confirm message delivery in Amqp connection

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Hello! My first PR here.

Sometimes we need to be sure that messages are delivered to Amqp. To make it work we need to wait for the confirmation from the Amqp server. So let's wait for it confirmation if confirmation timeout is defined. Default behaviour are not modified - waiting for confirmation will impact performance of sending message.

Commits
-------

5682d76b2a Messenger - Add option to confirm message delivery in Amqp connection
2020-09-12 07:22:34 +02:00
Fabien Potencier
adedd76a3d feature #30572 [Cache] add integration with Messenger to allow computing cached values in a worker (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Cache] add integration with Messenger to allow computing cached values in a worker

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

~~This PR needs and for now embeds #30334. See 2nd commit.~~

Using the new `CacheInterface` enables probabilistic early expiration by default. This means that from time to time, items are elected as early-expired while they are still fresh ([see Wikipedia](https://en.wikipedia.org/wiki/Cache_stampede#Probabilistic_early_expiration) for details).

This PR adds a new `early_expiration_message_bus` option when configuring cache pools. When this option is set, cache pools are configured to send those early-expired items on a Messenger bus, then serve the current value immediately, while the updated value is computed in a worker in the background.

`CacheInterface::get($key, $callback)` accepts any callable, but sending any callable on a bus is not possible (e.g. a `Closure` cannot be serialized). To bypass this constraint, this feature works only with callables in the form `[$service, 'publicMethod']`, where `$service` is any public or [reversible service](https://github.com/symfony/symfony/pull/30334).

This constraint is a serious one: this $service must compute a value when knowing only its key. This means keys should embed enough information for this to happen. I think that's not that hard - and we may find ways to provide additional context in the future.

At least the goal is worth it: in theory, this strategy allows achieving a 100% hit ratio even when invalidation-by-expiration is used.

There are two things one needs to do to enable this behavior:

1. bind a message bus to a cache pool:
```yaml
framework:
    cache:
        pools:
            test.cache:
                early_expiration_message_bus: messenger.default_bus
```

2. route EarlyExpirationMessage to a transport:
```yaml
framework:
    messenger:
        routing:
            'Symfony\Component\Cache\Messenger\EarlyExpirationMessage': amqp
```

Commits
-------

6c0911f58c [Cache] add integration with Messenger to allow computing cached values in a worker
2020-09-12 07:07:36 +02:00
Fabien Potencier
11b142928a feature #38149 [SecurityBundle] Comma separated ips for security.access_control (a-menshchikov)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[SecurityBundle] Comma separated ips for security.access_control

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/14219

There is currently no way to use env vars to configure `security.access_control` ips with multiple values. Ability to use comma separated ips make it able.

Commits
-------

0412e91060 [SecurityBundle] Comma separated ips for security.access_control
2020-09-12 07:06:14 +02:00
Zmey
0412e91060 [SecurityBundle] Comma separated ips for security.access_control 2020-09-12 07:06:09 +02:00
Ramazan
f346eccb60 Update validators.tr.xlf
Turkish Spelling error corrected.
2020-09-11 17:36:36 +02:00
Nicolas Grekas
fce331a978 Merge branch '5.1'
* 5.1:
  [Cache] fix merge
2020-09-11 15:55:47 +02:00
Nicolas Grekas
ca8944b512 [Cache] fix merge 2020-09-11 15:55:31 +02:00
Nicolas Grekas
6c0911f58c [Cache] add integration with Messenger to allow computing cached values in a worker 2020-09-11 15:42:58 +02:00
Christian Flothmann
6d5617d08d Merge branch '5.1' into master
* 5.1:
  fix merge
  [Cache] fix previous PR
  add mising sr (latn & cyrl) translations
  [Cache] fix ProxyAdapter not persisting items with infinite expiration
  [HttpClient] fail properly when the server replies with HTTP/0.9
  Fix CS
  [Cache] Limit cache version character range
  [Mailer] Fixed Mailgun API bridge JsonException when API response is not applicaton/json
  [String] improve fix
  fix tests
  [DI] dump OS-indepent paths in the compiled container
  [DI] dump OS-indepent paths in the preload file
  Run postgres setup trigger in transaction
  allow consumers to mock all methods
2020-09-11 14:25:32 +02:00
Christian Flothmann
f5b08da897 fix merge 2020-09-11 14:17:27 +02:00
Nicolas Grekas
25941ffe73 [Cache] fix previous PR 2020-09-11 13:46:01 +02:00
Nicolas Grekas
da71a5d933 Merge branch '4.4' into 5.1
* 4.4:
  add mising sr (latn & cyrl) translations
  [Cache] fix ProxyAdapter not persisting items with infinite expiration
  [HttpClient] fail properly when the server replies with HTTP/0.9
  Fix CS
  [Cache] Limit cache version character range
  [DI] dump OS-indepent paths in the compiled container
  allow consumers to mock all methods
2020-09-11 13:43:06 +02:00
Nicolas Grekas
ac188871c2 bug #38156 [Cache] fix ProxyAdapter not persisting items with infinite expiration (dmaicher)
This PR was merged into the 4.4 branch.

Discussion
----------

[Cache] fix ProxyAdapter not persisting items with infinite expiration

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38066
| License       | MIT
| Doc PR        | -

Commits
-------

d3af877022 [Cache] fix ProxyAdapter not persisting items with infinite expiration
2020-09-11 13:34:06 +02:00
Nicolas Grekas
77530a9b75 Merge remote-tracking branch 'origin/3.4' into 4.4
* origin/3.4:
  add mising sr (latn & cyrl) translations
  allow consumers to mock all methods
2020-09-11 13:33:24 +02:00
ivan
e927c7cf69 add mising sr (latn & cyrl) translations 2020-09-11 11:15:49 +02:00
David Maicher
d3af877022 [Cache] fix ProxyAdapter not persisting items with infinite expiration 2020-09-11 11:01:32 +02:00
Nicolas Grekas
0383e53e5c bug #38148 [HttpClient] fail properly when the server replies with HTTP/0.9 (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] fail properly when the server replies with HTTP/0.9

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37923
| License       | MIT
| Doc PR        | -

Commits
-------

96759af1da [HttpClient] fail properly when the server replies with HTTP/0.9
2020-09-11 09:06:13 +02:00
Nicolas Grekas
96759af1da [HttpClient] fail properly when the server replies with HTTP/0.9 2020-09-11 08:30:42 +02:00
Fabien Potencier
dafcc58e6b bug #38153 Move form error normalizer to the Serializer component (fabpot)
This PR was merged into the 5.2-dev branch.

Discussion
----------

Move form error normalizer to the Serializer component

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a<!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | n/a

Commits
-------

c053db5553 Move form error normalizer to the Serializer component
2020-09-11 08:29:22 +02:00
Fabien Potencier
c053db5553 Move form error normalizer to the Serializer component 2020-09-11 08:19:30 +02:00
Fabien Potencier
1b5f996378 Fix CS 2020-09-11 07:50:30 +02:00
Fabien Potencier
cc9c48fe14 Fix tests 2020-09-11 07:35:08 +02:00
Fabien Potencier
7a0cc2c0e4 Fix CS 2020-09-11 07:25:20 +02:00
Fabien Potencier
8cb2d296f9 Fix previous merge 2020-09-11 07:20:58 +02:00
Tomas
d6a899395b Update based on feedback 2020-09-11 07:18:37 +02:00
Guillaume Pédelagrabe
1c21c78d25 UidNormalizer. 2020-09-11 07:18:37 +02:00
Nicolas Grekas
be6146c566 [HttpClient] fix compat with older PHP/curl versions 2020-09-10 20:24:52 +02:00
Nicolas Grekas
5aadd607ce [HttpClient] forbid CURLOPT_HTTP09_ALLOWED 2020-09-10 20:22:28 +02:00
Maxime Steinhausser
1e8ae43372 [Messenger] Don't prevent dispatch out of another bus 2020-09-10 19:13:35 +02:00
Fabien Potencier
4bbb250d83 bug #38140 [DI] dump OS-indepent paths in the preload file (nicolas-grekas)
This PR was merged into the 5.1 branch.

Discussion
----------

[DI] dump OS-indepent paths in the preload file

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38123
| License       | MIT
| Doc PR        | -

This allows generating the file on Windows and running it on Linux (Docker).

Commits
-------

e8feba5c36 [DI] dump OS-indepent paths in the preload file
2020-09-10 19:00:34 +02:00
Fabien Potencier
44dd80f3fd bug #38139 [DI] dump OS-indepent paths in the compiled container (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[DI] dump OS-indepent paths in the compiled container

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38123
| License       | MIT
| Doc PR        | -

This allows compiling on Windows and running on Linux (Docker).

Commits
-------

4dcf9e7d13 [DI] dump OS-indepent paths in the compiled container
2020-09-10 18:59:53 +02:00
Fabien Potencier
9cd3e674e6 bug #38141 [Messenger] Added factory methods to DelayStamp for better DX (Toflar)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Messenger] Added factory methods to DelayStamp for better DX

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        | not necessary imho

I often find myself delaying messages for a few minutes or so and I always have to remember the `DelayStamp` uses milliseconds. I guess these simple factories could improve DX quite a bit :)

Commits
-------

fdc8da0aaa [Messenger] Added factory methods to DelayStamp for better DX
2020-09-10 18:59:02 +02:00
Yanick Witschi
fdc8da0aaa [Messenger] Added factory methods to DelayStamp for better DX 2020-09-10 18:54:55 +02:00
Nicolas Grekas
474e877035 feature #38134 [Lock] Fix wrong interface for MongoDbStore (jderusse)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Lock] Fix wrong interface for MongoDbStore

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | /

The MongoDbStore is not a `BlockingStore` because does not "really" implements  the method `waitAndSave`.

This PR changes the interface of `MongoDbStore` and remove the dummy implementation of `waitAndSave`.

Commits
-------

4c2d32ce11 Fix wrong interface for MongoDbStore
2020-09-10 18:54:54 +02:00
Jérémy Derussé
4c2d32ce11 Fix wrong interface for MongoDbStore 2020-09-10 18:54:38 +02:00
Fabien Potencier
b84f3cea9a bug #38147 [Mailer] Fixed Mailgun API bridge JsonException when API response is not applicaton/json (asprega)
This PR was merged into the 5.1 branch.

Discussion
----------

[Mailer] Fixed Mailgun API bridge JsonException when API response is not applicaton/json

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38146
| License       | MIT
| Doc PR        | -

Handles gracefully cases in which the Mailgun API does not return JSON responses.

Commits
-------

ce8f7e5c02 [Mailer] Fixed Mailgun API bridge JsonException when API response is not applicaton/json
2020-09-10 18:48:58 +02:00
Lars Strojny
15c21db856 [Cache] Limit cache version character range 2020-09-10 18:47:22 +02:00
Nicolas Grekas
ff29f3ae11 minor #38144 [String] improve fix (nicolas-grekas)
This PR was merged into the 5.1 branch.

Discussion
----------

[String] improve fix

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Improves https://github.com/symfony/symfony/pull/38128
(let's wait for the CI before merging)

Commits
-------

db4b1df062 [String] improve fix
2020-09-10 18:40:56 +02:00
Nicolas Grekas
f1fd3c0069 bug #38136 [Messenger] Run postgres setup trigger in transaction (akondas)
This PR was merged into the 5.1 branch.

Discussion
----------

[Messenger] Run postgres setup trigger in transaction

| Q             | A
| ------------- | ---
| Branch?       | 5.1 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #37179 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | n/a <!-- required for new features -->

This PR fix `messenger:setup-transports` command when using with ` doctrine/doctrine-bundle` version >= 2.1

Commits
-------

7ed93b4dc0 Run postgres setup trigger in transaction
2020-09-10 18:35:00 +02:00
Andrea Sprega
ce8f7e5c02 [Mailer] Fixed Mailgun API bridge JsonException when API response is not applicaton/json
- Fixes issue #38146
2020-09-10 17:34:37 +02:00
Nicolas Grekas
db4b1df062 [String] improve fix 2020-09-10 15:37:03 +02:00
Fabien Potencier
4c873fe501 feature #38135 [AmazonSqsMessenger] Added the count message awareness on the transport (raphahardt)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[AmazonSqsMessenger] Added the count message awareness on the transport

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | /

Added the possibility of have message count awareness of the receiver on the transport.

Commits
-------

96b63b83bf [AmazonSqsMessenger] Added the count message awareness on the transport
2020-09-10 14:42:05 +02:00
Fabien Potencier
ad0c9f5d62 Merge branch '5.1'
* 5.1:
  [FrameworkBundle] adopt src/.preload.php
  [Cache] Fix key encoding issue in Memcached adapter
  [HttpClient] Fix Array to string conversion notice when parsing JSON error body with non-scalar detail property
2020-09-10 14:33:14 +02:00
Fabien Potencier
4409a30dee Merge branch '4.4' into 5.1
* 4.4:
  [FrameworkBundle] adopt src/.preload.php
  [Cache] Fix key encoding issue in Memcached adapter
  [HttpClient] Fix Array to string conversion notice when parsing JSON error body with non-scalar detail property
2020-09-10 14:33:01 +02:00
Nicolas Grekas
4dcf9e7d13 [DI] dump OS-indepent paths in the compiled container 2020-09-10 12:08:39 +02:00
Nicolas Grekas
e8feba5c36 [DI] dump OS-indepent paths in the preload file 2020-09-10 11:51:08 +02:00
Tobias Schultze
38e414003c minor #38138 [Translation] fix parsing tokens on PHP 8 (xabbuh)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Translation] fix parsing tokens on PHP 8

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

1d1194e973 fix parsing tokens on PHP 8
2020-09-10 11:38:32 +02:00
Christian Flothmann
6bf856cd15 Merge branch '5.1' into master
* 5.1:
  ensure that the offset is part of the string
2020-09-10 10:46:37 +02:00
Nicolas Grekas
0ceafbcbea feature #38026 [HttpClient] Allow to provide additional curl options to CurlHttpClient (pizzaminded)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] Allow to provide additional curl options  to CurlHttpClient

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #37798
| License       | MIT
| Doc PR        | symfony/symfony-docs#14195

~~**Tagging as a draft because:**~~
- ~~there is no Doc PR Ready yet~~
- probably there are better test cases required here.

This PR introduces an option to override default curl options defined in `CurlHttpClient`.  To override them, there is a special place in `$options` provided:

````php
$response = $httpClient->request('GET', 'http://your.url.here', [
            'extra' => [
                'curl' => [
                    CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4,
                ]
            ]
        ]);
````

This feature is available only in `CurlHttpClient` and would be ignored in another clients.

Commits
-------

89329bd979 [HttpClient] Allow to provide additional curl options  to CurlHttpClient
2020-09-10 10:40:05 +02:00
pizzaminded
89329bd979 [HttpClient] Allow to provide additional curl options to CurlHttpClient 2020-09-10 10:39:47 +02:00
Christian Flothmann
1d1194e973 fix parsing tokens on PHP 8 2020-09-10 10:35:47 +02:00
Arkadiusz Kondas
7ed93b4dc0
Run postgres setup trigger in transaction 2020-09-10 10:05:16 +02:00
Raphael Hardt
96b63b83bf [AmazonSqsMessenger] Added the count message awareness on the transport 2020-09-10 02:04:08 -03:00
Christian Flothmann
3227303dab allow consumers to mock all methods 2020-09-09 19:04:53 +02:00
Christian Flothmann
a6c046f3ab ensure that the offset is part of the string 2020-09-09 14:58:41 +02:00
Christian Flothmann
1bdae34365 Merge branch '5.1' into master
* 5.1:
  [Intl] promote warnings to value errors on PHP 8
  Fix CS
  DateTime validator support for trailing data
  Remove some leftover for HHVM support
  Simplify code
  Fix tests on 5.6
  [Debug] Skip a test that was meant for HHVM.
  [Console] Silence warnings on sapi_windows_cp_set() call
  guard $argv + $token against null, preventing unnecessary exceptions
2020-09-09 14:41:49 +02:00
Nicolas Grekas
afd4027c11 bug #38108 [Cache] Fix key encoding issue in Memcached adapter (lstrojny)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Cache] Fix key encoding issue in Memcached adapter

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | n.A.
| License       | MIT
| Doc PR        | Fix double encoding in memcached which lead to overlong keys being generated

Because the memcached adapter uses `rawurlencode()` to encode each and every key, keys will sometimes be too long and therefore hit the memcached limit of 250 bytes. This happens when the key is small enough to be below 250 when passed to `AbstractAdapterTrait::getId()` and is then blown up over the 250 bytes limit in memcached adapter without validating the length again.

Looking through the code, it seems that the double encoding is wholly unnecessary assuming if one makes sure the namespace is properly encoded. This PR therefore removes the double encoding and instead uses rawurlencode on the namespace (which is in turn properly accounted for when calculating whether or not we are over the ID limit).

Commits
-------

23bf9be8ce [Cache] Fix key encoding issue in Memcached adapter
2020-09-09 11:22:51 +02:00
Lars Strojny
23bf9be8ce [Cache] Fix key encoding issue in Memcached adapter 2020-09-09 11:22:35 +02:00
Nicolas Grekas
9bb80841ed bug #38122 [HttpClient] Fix Array to string conversion notice when parsing JSON error body with non-scalar detail property (emarref)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[HttpClient] Fix Array to string conversion notice when parsing JSON error body with non-scalar detail property

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38118
| License       | MIT
| Doc PR        | no

An earlier commit added the ability to detect common API formats and extract a useful error message from the error response payload. To achieve this, if a `title` and `detail` property are found in the error response, the response is considered to be in a known format (RFC 7807) and these values are concatenated to form a helpful error message.

However, when either `title` or `detail` property are present, but the document is not intended to follow the RFC semantics, if the properties are not scalar (e.g. if the detail property is an array of field validation violations) then the concatenation of the strings causes a notice to be raised.

This pull request checks that the `title` and `detail` properties are scalar before attempting to concatenate them. If they are not, no enhanced error message is provided.

Commits
-------

76fa884319 [HttpClient] Fix Array to string conversion notice when parsing JSON error body with non-scalar detail property
2020-09-09 11:17:46 +02:00
Malcolm Fell
76fa884319 [HttpClient] Fix Array to string conversion notice when parsing JSON error body with non-scalar detail property 2020-09-09 11:17:34 +02:00
Christian Flothmann
41cb27beb0 Merge branch '4.4' into 5.1
* 4.4:
  [Intl] promote warnings to value errors on PHP 8
  Fix CS
  DateTime validator support for trailing data
  Remove some leftover for HHVM support
  Simplify code
  Fix tests on 5.6
  [Debug] Skip a test that was meant for HHVM.
  [Console] Silence warnings on sapi_windows_cp_set() call
  guard $argv + $token against null, preventing unnecessary exceptions
2020-09-09 10:28:14 +02:00
Christian Flothmann
0ed20be407 Merge branch '3.4' into 4.4
* 3.4:
  [Intl] promote warnings to value errors on PHP 8
  Fix CS
  DateTime validator support for trailing data
2020-09-09 10:00:22 +02:00
Christian Flothmann
82d9d41d57 [Intl] promote warnings to value errors on PHP 8 2020-09-09 09:45:25 +02:00
Fabien Potencier
799624b6f1 Fix CS 2020-09-09 07:35:36 +02:00
Fabien Potencier
1e52146339 bug #37097 DateTime validator support for trailing data (stefankleff)
This PR was squashed before being merged into the 3.4 branch.

Discussion
----------

DateTime validator support for trailing data

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37094
| License       | MIT

Commits
-------

27f6e28f5b DateTime validator support for trailing data
2020-09-09 07:34:53 +02:00
Stefan Kleff
27f6e28f5b DateTime validator support for trailing data 2020-09-09 07:34:45 +02:00
Fabien Potencier
cf9e75614b Remove some leftover for HHVM support 2020-09-09 07:20:36 +02:00
Fabien Potencier
80e5a7fbd8 feature #37559 [PropertyInfo] fix array types with keys (array<string, string>) (digilist)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[PropertyInfo] fix array types with keys (array<string, string>)

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | n/a
| License       | MIT
| Doc PR        | n/a

Array types with keys are currently not detected correctly from the PropertyInfo component:

```
@var array<string, string>
@var array<string, array<integer, string>>
```

Those are currently identified as object with class `rray<string, string>`.

This PR tries to fix it.

What I noticed while fixing this, is that union types in arrays are not supported in general at the moment, because the `Type` class supports only one collectionValueType and I do not see how to pass a Union Type there. But I guess that's a different issue and for those types I decided to return null as collection value type for now. (Or better throw on exception?)

Commits
-------

64f7bd7832 [PropertyInfo] fix array types with keys (array<string, string>)
2020-09-09 07:17:12 +02:00
Fabien Potencier
656fc3b82a Simplify code 2020-09-09 07:14:52 +02:00
Fabien Potencier
5ad8c2a630 Merge branch '3.4' into 4.4
* 3.4:
  Fix tests on 5.6
  [Debug] Skip a test that was meant for HHVM.
  [Console] Silence warnings on sapi_windows_cp_set() call
  guard $argv + $token against null, preventing unnecessary exceptions
2020-09-09 07:14:20 +02:00
Fabien Potencier
1df26c20a0 minor #38117 [Debug] Skip a test that was meant for HHVM (derrabus)
This PR was merged into the 3.4 branch.

Discussion
----------

[Debug] Skip a test that was meant for HHVM

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | #36872
| License       | MIT
| Doc PR        | N/A

This PR skips a test that fails on php 8. If I read the test correctly, it is meant to run on HHVM, so I assumed it's save to skip it if we're on PHP.

Commits
-------

bf62a4d622 [Debug] Skip a test that was meant for HHVM.
2020-09-09 07:12:18 +02:00
Fabien Potencier
336946a499 Fix tests on 5.6 2020-09-09 07:09:37 +02:00
Alexander M. Turek
bf62a4d622 [Debug] Skip a test that was meant for HHVM. 2020-09-09 00:19:14 +02:00
Robin Chalas
2a57ba5267 [Console] Silence warnings on sapi_windows_cp_set() call 2020-09-08 23:46:32 +02:00
bilogic
dbe335d9be guard $argv + $token against null, preventing unnecessary exceptions 2020-09-08 22:57:41 +02:00
Nicolas Grekas
966514c46b Merge branch '5.1'
* 5.1:
  [Debug] fix merge
2020-09-08 16:53:50 +02:00
Nicolas Grekas
11596bc02f Merge branch '4.4' into 5.1
* 4.4:
  [Debug] fix merge
2020-09-08 16:52:05 +02:00
Nicolas Grekas
bf9ce8b8b0 [Debug] fix merge 2020-09-08 16:30:03 +02:00
Nicolas Grekas
d96c7a0f40 Merge branch '5.1'
* 5.1:
  [Debug] fix test
  consistently use same types for strict comparisons
  [PhpUnitBridge] Skip internal classes in CoverageListenerTrait
  [VarExporter] unserialize() might throw an Exception on php 8.
  [SecurityHttp] Don't call createMock() with multiple interfaces.
  [ErrorHandler] Parse "x not found" errors correctly on php 8.
  Prevent parsing invalid octal digits as octal numbers
  remove unnecessary check for  existing request
  [DI] fix ContainerBuilder on PHP8
  [Console] Make sure $maxAttempts is an int or null.
  [VarDumper] Fix caster for invalid SplFileInfo objects on php 8.
  [Intl] Skip test cases that produce a TypeError on php 8.
  [PhpUnitBridge] Adjust output parsing for PHPUnit 9.3.
  [PhpUnitBridge] CoverageListenerTrait update for PHPUnit 8.5/9.x
  add bosnian (bs) translation
  [Debug] Parse "x not found" errors correctly on php 8.
2020-09-08 16:20:09 +02:00
Nicolas Grekas
62a4559619 Merge branch '4.4' into 5.1
* 4.4:
  [Debug] fix test
  consistently use same types for strict comparisons
  [PhpUnitBridge] Skip internal classes in CoverageListenerTrait
  [VarExporter] unserialize() might throw an Exception on php 8.
  [ErrorHandler] Parse "x not found" errors correctly on php 8.
  Prevent parsing invalid octal digits as octal numbers
  remove unnecessary check for  existing request
  [DI] fix ContainerBuilder on PHP8
  [Console] Make sure $maxAttempts is an int or null.
  [VarDumper] Fix caster for invalid SplFileInfo objects on php 8.
  [Intl] Skip test cases that produce a TypeError on php 8.
  [PhpUnitBridge] Adjust output parsing for PHPUnit 9.3.
  [PhpUnitBridge] CoverageListenerTrait update for PHPUnit 8.5/9.x
  add bosnian (bs) translation
  [Debug] Parse "x not found" errors correctly on php 8.
2020-09-08 16:19:54 +02:00
Nicolas Grekas
702916b5a8 minor #38110 [Debug] fix test (xabbuh)
This PR was merged into the 4.4 branch.

Discussion
----------

[Debug] fix test

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

16a76739c0 [Debug] fix test
2020-09-08 16:12:36 +02:00
Fabien Potencier
4b2b64a97f feature #37519 [Process] allow setting options esp. "create_new_console" to detach a subprocess (andrei0x309)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Process] allow setting options esp. "create_new_console" to detach a subprocess

Process.php to include support for create_new_console (Windows ONLY)

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      |  no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | #36583 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Based on this issue: https://github.com/symfony/symfony/issues/36583
I created a quick repo [ https://github.com/andrei0x309/tets_sym_proc]( https://github.com/andrei0x309/tets_sym_proc) to illustrate
how this feature can be used, it essentially lets you run something even if your main script has terminated.

It is useful if you want to create something like
`new Process(['php', 'script_with_long_execution_time.php']);`
This was impossible to do on windows until the **create_new_console** flag was added in PHP 7.4.4.
With this feature Process can be used like this:

```
// Start a process and detach form it on Win only
$process = new Process(['php', 'worker.php']);
$process->setOptions(["create_new_console" => true]); // New method I added
$process->disableOutput();
$process->start();
Process Class behavior will never change if the user doesn't use setWinOptions()
```

Commits
-------

e9ab235b66 [Process] allow setting options esp. "create_new_console" to detach a subprocess
2020-09-08 15:25:06 +02:00
Christian Flothmann
16a76739c0 [Debug] fix test 2020-09-08 15:04:06 +02:00
Nicolas Grekas
638f9ecc15 minor #38107 [DependencyInjection] consistently use same types for strict comparisons (xabbuh)
This PR was merged into the 4.4 branch.

Discussion
----------

[DependencyInjection] consistently use same types for strict comparisons

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

afc11684e0 consistently use same types for strict comparisons
2020-09-08 15:02:55 +02:00
Andrei O
e9ab235b66 [Process] allow setting options esp. "create_new_console" to detach a subprocess 2020-09-08 14:47:24 +02:00
Christian Flothmann
261a939ea6 Merge branch '3.4' into 4.4
* 3.4:
  Prevent parsing invalid octal digits as octal numbers
  [DI] fix ContainerBuilder on PHP8
  [Console] Make sure $maxAttempts is an int or null.
  [VarDumper] Fix caster for invalid SplFileInfo objects on php 8.
  [Intl] Skip test cases that produce a TypeError on php 8.
  [PhpUnitBridge] Adjust output parsing for PHPUnit 9.3.
  [PhpUnitBridge] CoverageListenerTrait update for PHPUnit 8.5/9.x
  add bosnian (bs) translation
  [Debug] Parse "x not found" errors correctly on php 8.
2020-09-08 13:16:46 +02:00
Christian Flothmann
afc11684e0 consistently use same types for strict comparisons 2020-09-08 10:26:11 +02:00
Nicolas Grekas
f8fddf3917 bug #38101 [VarExporter] unserialize() might throw an Exception on php 8 (derrabus)
This PR was merged into the 4.4 branch.

Discussion
----------

[VarExporter] unserialize() might throw an Exception on php 8

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | #36872
| License       | MIT
| Doc PR        | N/A

VarExporter attempts a deserialization in order to check if a given object can be exported in serialized form. On php 8, the `unserialize` call might throw an exception that needs to be caught and converted to the expected `NotInstantiableTypeException`.

Commits
-------

65112e11bc [VarExporter] unserialize() might throw an Exception on php 8.
2020-09-08 09:04:33 +02:00
Alexander M. Turek
65112e11bc [VarExporter] unserialize() might throw an Exception on php 8. 2020-09-07 23:10:21 +02:00
Alexander M. Turek
028ec0cf68 [SecurityHttp] Don't call createMock() with multiple interfaces. 2020-09-07 21:55:33 +02:00
Alexander M. Turek
d9c9aea7ee [ErrorHandler] Parse "x not found" errors correctly on php 8. 2020-09-07 20:45:32 +02:00
Julien Falque
c7dcd82f03
Prevent parsing invalid octal digits as octal numbers 2020-09-07 20:13:13 +02:00
Markus Fasselt
64f7bd7832 [PropertyInfo] fix array types with keys (array<string, string>) 2020-09-07 14:53:44 +02:00
Fabien Potencier
38926159e3 Merge branch '5.1'
* 5.1:
  Bump ext-igbinary to 3.1.5 to fix compile error on php 8.
  [HttpClient] with "bindto" with NativeHttpClient
2020-09-07 14:08:32 +02:00
Fabien Potencier
60350341ea Merge branch '4.4' into 5.1
* 4.4:
  Bump ext-igbinary to 3.1.5 to fix compile error on php 8.
  [HttpClient] with "bindto" with NativeHttpClient
2020-09-07 14:08:23 +02:00
Nicolas Grekas
a3275a7be9 [DI] fix ContainerBuilder on PHP8 2020-09-07 14:07:49 +02:00
Fabien Potencier
b26f11ca0b feature #37545 [DependencyInjection] Add the Required attribute (derrabus)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[DependencyInjection] Add the Required attribute

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | TODO

This PR proposes a new attribute `#[Required]` that can be used instead of the `@required` annotation.

Commits
-------

ea262441e7 [DependencyInjection] Add the Required attribute.
2020-09-07 14:06:46 +02:00
Alexander M. Turek
ea262441e7 [DependencyInjection] Add the Required attribute. 2020-09-07 13:33:47 +02:00
Alexander M. Turek
f0978de493 [Routing] Added the Route attribute. 2020-09-07 11:14:39 +02:00
Nicolas Grekas
cea05311fc [HttpClient] with "bindto" with NativeHttpClient 2020-09-07 09:41:14 +02:00
Fabien Potencier
b89b7474ca Merge branch '5.1'
* 5.1:
  Update UPGRADE-5.1.md
  [HttpKernel] Adjust tests to new "class not found" error message format.
  Don't call createMock with an array of interfaces.
  [FrameworkBundle] Fix Tests on PHPUnit 9.3.
  [WebProfilerBundle] Fix Tests on PHPUnit 9.3.
  esmtp error not being thrown properly
  [Yaml Parser] fixed Parser to skip comments when inlining sequences
  Update Connection.php
  [DI] fix generating preload file when cache_dir is outside project_dir
  Fix CacheCollectorPass with decorated cache pools
  [PhpUnitBridge] CoverageListenerTrait update for PHPUnit 8.5/9.x
  Remove invalid instantiation declaration
  [PropertyInfo] Fix typed collections in PHP 7.4
2020-09-07 07:10:36 +02:00
Fabien Potencier
0bdef0a996 Merge branch '4.4' into 5.1
* 4.4:
  [HttpKernel] Adjust tests to new "class not found" error message format.
  Don't call createMock with an array of interfaces.
  [FrameworkBundle] Fix Tests on PHPUnit 9.3.
  [WebProfilerBundle] Fix Tests on PHPUnit 9.3.
  esmtp error not being thrown properly
  [Yaml Parser] fixed Parser to skip comments when inlining sequences
  [DI] fix generating preload file when cache_dir is outside project_dir
  Fix CacheCollectorPass with decorated cache pools
  [PhpUnitBridge] CoverageListenerTrait update for PHPUnit 8.5/9.x
  Remove invalid instantiation declaration
  [PropertyInfo] Fix typed collections in PHP 7.4
2020-09-07 07:10:28 +02:00
Fabien Potencier
beb6fd85a8 minor #38079 Don't call createMock with an array of interfaces (derrabus)
This PR was merged into the 4.4 branch.

Discussion
----------

Don't call createMock with an array of interfaces

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | #37564
| License       | MIT
| Doc PR        | N/A

PHPUnit 8 allows us to pass an array of interfaces to `createMock()`. The result was a mock object that implemented all of the given interfaces. This feature has sadly been removed (see sebastianbergmann/phpunit#3955), which forces us to create dummy classes that can be mocked instead. I've done this already on the 3.4 branch with #37566.

This PR fixes all affected tests (that I could find) on the 4.4 branch.

Commits
-------

a8e762d8c3 Don't call createMock with an array of interfaces.
2020-09-07 07:02:32 +02:00
Alexander M. Turek
4fcd4916ed [Console] Make sure $maxAttempts is an int or null. 2020-09-07 07:00:31 +02:00
Fabien Potencier
93a82a296c minor #38083 [HttpKernel] Adjust tests to new "class not found" error message format (derrabus)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpKernel] Adjust tests to new "class not found" error message format

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | #36872
| License       | MIT
| Doc PR        | N/A

Commits
-------

5b95bcd009 [HttpKernel] Adjust tests to new "class not found" error message format.
2020-09-07 06:59:00 +02:00
Alexander M. Turek
5b95bcd009 [HttpKernel] Adjust tests to new "class not found" error message format. 2020-09-06 23:28:28 +02:00
Alexander M. Turek
a8e762d8c3 Don't call createMock with an array of interfaces. 2020-09-06 21:21:37 +02:00
Anton Zagorskii
976eea3be0 esmtp error not being thrown properly 2020-09-06 19:12:23 +02:00
Fabien Potencier
f0bf853a86 bug #38040 [Yaml Parser] fixed Parser to skip comments when inlining sequences (korve)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Yaml Parser] fixed Parser to skip comments when inlining sequences

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37972
| License       | MIT

The parser didn't skip comments when parsing values in a sequence. This resulted in the YamlFileLoader trying to
parse a comment as a IteratorArgument which resulted in a InvalidArgumentException.

Consider the following valid yaml:

```yaml
- !foo [
    bar,
    #baz
  ]
```

The parser would generate the following array:
```php
['bar', '#baz']
```

After this fix the parser will generate the following array:
```php
['bar']
```

This  bug only appeared for me in 4.4

Commits
-------

b5316ebebb [Yaml Parser] fixed Parser to skip comments when inlining sequences
2020-09-06 19:03:15 +02:00
Andre Eckardt
b5316ebebb [Yaml Parser] fixed Parser to skip comments when inlining sequences 2020-09-06 19:03:09 +02:00
dFayet
c1e3703efd Create impersonation_exit_path() and *_url() functions 2020-09-06 10:51:53 +02:00
Aleksandar Dimitrov
c638b497bf
Update Connection.php
remove DelaySeconds parameter for FIFO queues
2020-09-06 02:19:07 +03:00
Alexander M. Turek
ab45e2aaae [VarDumper] Fix caster for invalid SplFileInfo objects on php 8. 2020-09-05 19:45:10 +02:00
Fabien Potencier
ede0a12247 minor #38072 [Intl] Skip test cases that produce a TypeError on php 8 (derrabus)
This PR was merged into the 3.4 branch.

Discussion
----------

[Intl] Skip test cases that produce a TypeError on php 8

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | #36872
| License       | MIT
| Doc PR        | N/A

On php 8, `NumberFormatter::setAttribute()` will throw a type error if the provided value is not of type `int|float`. This is why I'm skipping the corresponding tests for now. Alternatively, we could check for the PHP version in Symfony's implementation of that class and throw the `TypeError` as well, if we're on php 8. But since this is a breaking change, I'm was unsure if I sould go that way.

Commits
-------

7f1055b97c [Intl] Skip test cases that produce a TypeError on php 8.
2020-09-05 19:05:54 +02:00
Alexander M. Turek
7f1055b97c [Intl] Skip test cases that produce a TypeError on php 8. 2020-09-05 18:44:57 +02:00
ivan
dd44563004 add bosnian (bs) translation 2020-09-05 17:33:22 +02:00
Fabien Potencier
4ab612cad9 feature #37706 [Validator] Debug validator command (loic425, fabpot)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Validator] Debug validator command

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       |
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

<img width="891" alt="help" src="https://user-images.githubusercontent.com/8329789/88856285-8281ee00-d1f4-11ea-8395-6e6a4b8e4e2e.png">
<img width="945" alt="CustomerAddress" src="https://user-images.githubusercontent.com/8329789/89049509-a9a20200-d351-11ea-89cf-75e11f805aea.png">
<img width="1353" alt="Customer" src="https://user-images.githubusercontent.com/8329789/89049525-b161a680-d351-11ea-99d5-6c2ede337609.png">

Commits
-------

6ec54c7337 Fix Composer constraints for tests
5dd85e4371 [Validator] Debug validator command
2020-09-05 16:48:54 +02:00
Fabien Potencier
6ec54c7337 Fix Composer constraints for tests 2020-09-05 16:39:15 +02:00
Loic Fremont
5dd85e4371 [Validator] Debug validator command 2020-09-05 16:18:05 +02:00
Fabien Potencier
4222a72ee8 bug #38062 [DI] fix generating preload file when cache_dir is outside project_dir (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[DI] fix generating preload file when cache_dir is outside project_dir

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | no
| License       | MIT
| Doc PR        | -

Commits
-------

02db8e1523 [DI] fix generating preload file when cache_dir is outside project_dir
2020-09-04 18:14:00 +02:00
Nicolas Grekas
02db8e1523 [DI] fix generating preload file when cache_dir is outside project_dir 2020-09-04 16:11:41 +02:00
Soner Sayakci
973442759c
Fix CacheCollectorPass with decorated cache pools 2020-09-04 14:31:16 +02:00
Fabien Potencier
4482fcf28d bug #38041 [PropertyInfo] Fix typed collections in PHP 7.4 (ndench)
This PR was merged into the 4.4 branch.

Discussion
----------

[PropertyInfo] Fix typed collections in PHP 7.4

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | No ticket
| License       | MIT
| Doc PR        | N/A

#37971 introduced support for typed properties in PHP 7.4, however by short circuiting the `getTypes()` method, typed collections are returned as `Type::BUILTIN_TYPE_ARRAY` without a proper collection type. If running on PHP < 7.4, the `getMutator()` method would be called which would extract the collection type from the getter/setter or adder/remover.

I updated the typedPropertiesTest to cover this case.

Commits
-------

282ed2850c [PropertyInfo] Fix typed collections in PHP 7.4
2020-09-04 07:32:57 +02:00
Fabien Potencier
c2522fa325 feature #38052 Increase HttpBrowser::getHeaders() visibility to protected (iansltx)
This PR was merged into the 5.2-dev branch.

Discussion
----------

Increase HttpBrowser::getHeaders() visibility to protected

Resolves symfony/symfony#38051

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #38051
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Increases visibility to allow for oddball header overrides; see #38051 for more detail.

If this looks good, let me know if this is worth adding docs/changelog entries and I'll do so.

Commits
-------

3d75ab515f Increase HttpBrowser::getHeaders() visibility to protected
2020-09-04 07:30:17 +02:00
siganushka
6e17099f7a Remove invalid instantiation declaration 2020-09-04 07:27:08 +02:00
Ian Littman
3d75ab515f
Increase HttpBrowser::getHeaders() visibility to protected
Resolves symfony/symfony#38051
2020-09-03 22:08:06 -05:00
Alexander M. Turek
275496a1f4 [Debug] Parse "x not found" errors correctly on php 8. 2020-09-04 00:12:04 +02:00
Paweł Niedzielski
135c6504f1 [Messenger] Add option to prevent Redis from deleting messages on rejection 2020-09-03 22:33:02 +02:00
Malte Schlüter
b50fc19af0 Add tests for translated error messages of json authentication 2020-09-03 13:33:24 +02:00
Malte Schlüter
7684663818 Translate failure messages of json authentication 2020-09-03 09:35:53 +02:00
Nathan Dench
282ed2850c [PropertyInfo] Fix typed collections in PHP 7.4 2020-09-03 10:26:19 +10:00
Nicolas Grekas
4ee85e8e3b Merge branch '5.1'
* 5.1:
  Enable "native_constant_invocation" CS rule
  Make AbstractPhpFileCacheWarmer public
  Fix CS
  Add a warning comment on ldap empty password
  Bump Symfony version to 4.4.14
  Update VERSION for 4.4.13
  Update CHANGELOG for 4.4.13
  [PhpunitBridge] Fix deprecation type detection
2020-09-02 18:27:44 +02:00
Nicolas Grekas
034602699e Merge branch '4.4' into 5.1
* 4.4:
  Enable "native_constant_invocation" CS rule
  Make AbstractPhpFileCacheWarmer public
2020-09-02 18:23:27 +02:00
Nicolas Grekas
2e8ca94fb8 Merge remote-tracking branch 'origin/4.4' into 5.1
* origin/4.4:
  Fix CS
  Add a warning comment on ldap empty password
  Bump Symfony version to 4.4.14
  Update VERSION for 4.4.13
  Update CHANGELOG for 4.4.13
  [PhpunitBridge] Fix deprecation type detection
2020-09-02 18:21:51 +02:00
Nicolas Grekas
6c2a1c9a57 Merge branch '3.4' into 4.4
* 3.4:
  Enable "native_constant_invocation" CS rule
  Make AbstractPhpFileCacheWarmer public
2020-09-02 18:08:58 +02:00
Nicolas Grekas
4351a70637 Enable "native_constant_invocation" CS rule 2020-09-02 18:06:40 +02:00
Robin Chalas
46ce480801 [Security] Add some missing CHANGELOG entries 2020-09-02 17:49:20 +02:00
Fabien Potencier
ddede31d09 Fix CS 2020-09-02 14:17:05 +02:00
Fabien Potencier
e06d339353 feature #35890 [Cache] give control over cache prefix seed (Tobion)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Cache] give control over cache prefix seed

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       |
| License       | MIT
| Doc PR        |

Reopened #35723 for master.

The configurable cache prefix seed does not give full control over the cache prefix because the container class is added to the prefix in any case. This is a problem because the container class contains the app env name. We use different app environments for different deployment targets (dev and test). We want dev and test to use the same redis cache. But this is impossible to achieve because even setting the cache prefix seed does not accomplish this.

Commits
-------

6681b92524 [Cache] give control over cache prefix seed
2020-09-02 14:12:28 +02:00
Fabien Potencier
afdb97e864 feature #37337 [Security] Configurable execution order for firewall listeners (scheb)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Security] Configurable execution order for firewall listeners

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT
| Doc PR        | n/a

Hello there, I'm the author of `scheb/two-factor-bundle`, which extends Symfony's security layer with two-factor authentication. I've been closely following the recent changes by @wouterj to rework the security layer with "authenticators" (great work!). While I managed to make my bundle work with authenticators, I see some limitations in the security layer that I'd like to address to make such extensions easier to implement.

In #37336 I've submitted a draft to let security factories add their own authentication listeners to the firewall. This PR is intended to address the issue of execution order. If you look at the `Firewall` class

f64f59a9c0/src/Symfony/Component/Security/Http/Firewall.php (L62-L82)

authentication listeners are executed in the order of their creation. Additionally, there's hardcoded logic to execute `Symfony\Component\Security\Http\Firewall\AccessListener` always last and the logout listener second to last. I'd like to have a more flexible approach, to remove the hardcoded order and give authentication listeners the ability to determine their execution order.

I've added an optional interface to provide a priority to sort all registered authenitication listeners. Sorting is done in a compiler pass, so no time is wasted at runtime.

This is a draft, so I'd like to hear your opinion on this :)

Commits
-------

91388e871b Add ability to prioritize firewall listeners
2020-09-02 13:06:53 +02:00
Tobias Schultze
6681b92524 [Cache] give control over cache prefix seed
The configurable cache prefix seed does not give full control over the cache prefix because the container class is added to the prefix in any case. This is a problem because the container class contains the app env name. We use different app environments for different deployment targets (dev and test). Dev and test should use the same redis cache. But this is impossible to achieve because even setting the cache prefix seed does not accomplish this.
2020-09-02 11:53:39 +02:00
Jérémy Derussé
63a8570a42
Add a warning comment on ldap empty password 2020-09-02 10:52:12 +02:00
Fabien Potencier
a9c93fc094 Bump Symfony version to 5.1.6 2020-09-02 10:20:16 +02:00
Fabien Potencier
cc3335244c Update VERSION for 5.1.5 2020-09-02 10:15:18 +02:00
Fabien Potencier
27c131ca7a Bump Symfony version to 4.4.14 2020-09-02 10:14:21 +02:00
Fabien Potencier
7982e499d6 Update VERSION for 4.4.13 2020-09-02 10:09:29 +02:00
Nicolas Grekas
a64b9449a3 Merge branch '5.1'
* 5.1:
  [HttpClient] Fix deps=low
2020-09-02 10:02:46 +02:00
Nicolas Grekas
6f15fbfe54 Merge branch '4.4' into 5.1
* 4.4:
  [HttpClient] Fix deps=low
2020-09-02 10:02:12 +02:00
Nicolas Grekas
55f451e49c [HttpClient] Fix deps=low 2020-09-02 10:01:15 +02:00
Fabien Potencier
3854b8f8d7 Merge branch '5.1'
* 5.1:
  Remove headers with internal meaning from HttpClient responses
2020-09-02 09:46:15 +02:00
Fabien Potencier
5a0436ff8e Merge branch '4.4' into 5.1
* 4.4:
  Remove headers with internal meaning from HttpClient responses
2020-09-02 09:42:11 +02:00
Fabien Potencier
d9910e0b33 security #cve-2020-15094 Remove headers with internal meaning from HttpClient responses (mpdude)
This PR was merged into the 4.4 branch.
2020-09-02 09:40:48 +02:00
Matthias Pigulla
ba39753291 Remove headers with internal meaning from HttpClient responses 2020-09-02 09:40:10 +02:00
Fabien Potencier
4a10308a54 Merge branch '5.1'
* 5.1:
  Fix undefined index for inconsistent command name definition
2020-09-02 09:07:54 +02:00
Fabien Potencier
286e22354f Merge branch '4.4' into 5.1
* 4.4:
  Fix undefined index for inconsistent command name definition
2020-09-02 09:07:40 +02:00
Fabien Potencier
bca14aa5f8 Merge branch '3.4' into 4.4
* 3.4:
  Fix undefined index for inconsistent command name definition
2020-09-02 09:07:21 +02:00
Fabien Potencier
9d7a8f39a9 Fix CS 2020-09-02 07:46:17 +02:00
Matthias Krauser
3824dafffb [Serializer] fix denormalization of basic property-types in XML and CSV 2020-09-02 07:44:16 +02:00
Nicolas Grekas
78eca9607a Merge branch '5.1'
* 5.1:
  [DI] fix inlining of non-shared services
2020-09-01 20:07:47 +02:00
Nicolas Grekas
117317c8e3 Merge branch '4.4' into 5.1
* 4.4:
  [DI] fix inlining of non-shared services
2020-09-01 20:07:16 +02:00
Robin Chalas
d59140e857 Fix undefined index for inconsistent command name definition 2020-09-01 20:06:56 +02:00
Nicolas Grekas
380cb10587 [DI] fix inlining of non-shared services 2020-09-01 19:42:15 +02:00
Fabien Potencier
dc63d712ab feature #33381 [Form] dispatch submit events for disabled forms too (xabbuh)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Form] dispatch submit events for disabled forms too

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #27217
| License       | MIT
| Doc PR        |

TODO:

- [ ] add a test case covering the validation use case

Commits
-------

6da42ae2d1 dispatch submit events for disabled forms too
2020-09-01 18:26:17 +02:00
Fabien Potencier
692fa7a5c1 bug #38022 Missed AbstractArgument (a-menshchikov)
This PR was merged into the 5.1 branch.

Discussion
----------

Missed AbstractArgument

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Missed in 5.1

Commits
-------

b5a47dac52 Missed AbstractArgument
2020-09-01 14:38:02 +02:00
Fabien Potencier
b73ee65c04 Merge branch '5.1'
* 5.1:
  stop using the deprecated at() PHPUnit matcher
2020-09-01 14:25:43 +02:00
Fabien Potencier
3061bfeb48 minor #37874 stop using the deprecated at() PHPUnit matcher (xabbuh)
This PR was merged into the 5.1 branch.

Discussion
----------

stop using the deprecated at() PHPUnit matcher

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

e36e73b9cf stop using the deprecated at() PHPUnit matcher
2020-09-01 14:25:21 +02:00
Christian Flothmann
6da42ae2d1 dispatch submit events for disabled forms too 2020-09-01 14:24:09 +02:00
Zmey
b5a47dac52
Missed AbstractArgument 2020-09-01 15:23:56 +03:00
Fabien Potencier
ccfc4ba269 feature #35338 Added support for using the "{{ label }}" placeholder in constraint messages (a-menshchikov)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

Added support for using the "{{ label }}" placeholder in constraint messages

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | #12238
| License       | MIT
| Doc PR        |

- [ ] Add docs PR

Commits
-------

0d9f44235c Added support for using the "{{ label }}" placeholder in constraint messages
2020-09-01 09:49:57 +02:00
Zmey
0d9f44235c Added support for using the "{{ label }}" placeholder in constraint messages 2020-09-01 09:49:48 +02:00
Fabien Potencier
32b82b88eb Fix bad merge 2020-09-01 08:13:06 +02:00
Fabien Potencier
f765cb2900 Merge branch '5.1'
* 5.1:
  [Mailer] Fixed 'verify_peer' option in mailer DSN being ignored
  [Cache] Psr16Cache does not handle Proxy cache items
  [Serializer] fixed fix encoding of cache keys with anonymous classes
  Fix symfony/amazon-mailer constraint
  [Validator] Fix PhpUnitBridge version constraint.
  Bump Symfony version to 5.1.5
  Update VERSION for 5.1.4
  Update CHANGELOG for 5.1.4
  Bump Symfony version to 4.4.13
  Update VERSION for 4.4.12
  Update CHANGELOG for 4.4.12
  Bump Symfony version to 3.4.45
  Update VERSION for 3.4.44
  Update CONTRIBUTORS for 3.4.44
  Update CHANGELOG for 3.4.44
2020-09-01 07:57:52 +02:00
Fabien Potencier
509247b8ff Merge branch '4.4' into 5.1
* 4.4:
  [Cache] Psr16Cache does not handle Proxy cache items
  [Serializer] fixed fix encoding of cache keys with anonymous classes
  Bump Symfony version to 4.4.13
  Update VERSION for 4.4.12
  Update CHANGELOG for 4.4.12
  Bump Symfony version to 3.4.45
  Update VERSION for 3.4.44
  Update CONTRIBUTORS for 3.4.44
  Update CHANGELOG for 3.4.44
2020-09-01 07:52:18 +02:00
scyzoryck
5682d76b2a Messenger - Add option to confirm message delivery in Amqp connection 2020-08-31 23:34:07 +02:00
Fabien Potencier
0d990449b3 bug #37961 [Mailer] Fixed 'verify_peer' option in mailer DSN being ignored (SnakePin)
This PR was squashed before being merged into the 5.1 branch.

Discussion
----------

[Mailer] Fixed 'verify_peer' option in mailer DSN being ignored

| Q             | A
| ------------- | ---
| Branch?       | 5.1 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | N/A <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | N/A <!-- required for new features -->

The mailer DSN option 'verify_peer' was being ignored because `$dsn->getOption('verify_peer', true)` was returning a string and thus NOT operator on it was always resulting in false. I propose changing the line where it is used with a `filter_var` call with the `FILTER_VALIDATE_BOOLEAN` as the filter parameter to overcome this issue.

Commits
-------

1c789e87aa [Mailer] Fixed 'verify_peer' option in mailer DSN being ignored
2020-08-31 21:53:05 +02:00
SnakePin
1c789e87aa [Mailer] Fixed 'verify_peer' option in mailer DSN being ignored 2020-08-31 21:52:58 +02:00
Nicolas Grekas
6bebe86d5a bug #38010 [Cache] Psr16Cache does not handle Proxy cache items (alex-dev)
This PR was merged into the 4.4 branch.

Discussion
----------

[Cache] Psr16Cache does not handle Proxy cache items

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #38006
| License       | MIT

Add test for Psr16Cache along with a ProxyAdapter

Commits
-------

e525fa1055 [Cache] Psr16Cache does not handle Proxy cache items
2020-08-31 18:53:24 +02:00
Alexandre Parent
e525fa1055 [Cache] Psr16Cache does not handle Proxy cache items 2020-08-31 18:52:20 +02:00
Jérémy Derussé
91a2256716
Fix semaphore branch-alias 2020-08-31 18:13:25 +02:00
Nicolas Grekas
93459a93bd bug #37937 [Serializer] fixed fix encoding of cache keys with anonymous classes (michaelzangerle)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Serializer] fixed fix encoding of cache keys with anonymous classes

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #36589
| License       | MIT
| Doc PR        | -

Commits
-------

3a4675359d [Serializer] fixed fix encoding of cache keys with anonymous classes
2020-08-31 18:04:23 +02:00
Michael Zangerle
3a4675359d [Serializer] fixed fix encoding of cache keys with anonymous classes 2020-08-31 18:03:52 +02:00
Fabien Potencier
d6468a9634 feature #34790 [Console] Remove restriction for choices to be strings (LordZardeck, YaFou, ogizanagi)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Console] Remove restriction for choices to be strings

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #34789
| License       | MIT

When using choice, selected answers are forced into strings, preventing us from using complex values such as a class with a custom __toString. This is a problem, as I need the ability to present the user with a list of display strings to choose from, but need the ID associated with that display string in order to do anything useful.

Commits
-------

d276cc9ca3 [Console] Cast associative choices questions keys to string
a0223088a0 [Console] Add tests for removing restriction for choices to be strings
3349d3ce89 Remove restriction for choices to be strings
2020-08-31 17:31:17 +02:00
Maxime Steinhausser
d276cc9ca3 [Console] Cast associative choices questions keys to string
to prevent inconsistency when choosing by key (getting a string as result) or by value (getting an int as result)
2020-08-31 17:06:49 +02:00
YaFou
a0223088a0 [Console] Add tests for removing restriction for choices to be strings
See 3349d3ce89
2020-08-31 15:43:38 +02:00
Christian Flothmann
427fffa65c skip tests if required class does not exist 2020-08-31 13:01:02 +02:00
Fabien Potencier
69f8eaeec5 bug #37977 [Semaphore] Fixed some bugs (lyrixx)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Semaphore] Fixed some bugs

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

3c943b94ed [Semaphore] Fixed some bugs
2020-08-31 12:18:25 +02:00
Fabien Potencier
76dc182b65 bug #38002 [Validator] Fix PhpUnitBridge version constraint (derrabus)
This PR was merged into the 5.1 branch.

Discussion
----------

[Validator] Fix PhpUnitBridge version constraint

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

This PR allows Validator 5.1 and PhpUnitBridge 5.1 to be installed alongside each other.

Commits
-------

1055a7f29b [Validator] Fix PhpUnitBridge version constraint.
2020-08-31 12:16:44 +02:00
Michał Jusięga
15643642a3 Fix symfony/amazon-mailer constraint 2020-08-31 12:16:00 +02:00
Maxime Steinhausser
2d21c391e4 bug #38003 [PropertyAccess] fix bitwise operations (xabbuh)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[PropertyAccess] fix bitwise operations

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

see https://3v4l.org/DArv9 for the difference

Commits
-------

01b253969a fix bitwise operations
2020-08-31 11:58:56 +02:00
Christian Flothmann
01b253969a fix bitwise operations 2020-08-31 11:42:54 +02:00
Alexander M. Turek
1055a7f29b [Validator] Fix PhpUnitBridge version constraint. 2020-08-31 11:01:51 +02:00
Fabien Potencier
0b65634439 Bump Symfony version to 5.1.5 2020-08-31 08:22:19 +02:00
Fabien Potencier
94ca568810 Update VERSION for 5.1.4 2020-08-31 08:18:12 +02:00
Fabien Potencier
6e59396ff9 Bump Symfony version to 4.4.13 2020-08-31 08:14:12 +02:00
Fabien Potencier
529eac9795 Update VERSION for 4.4.12 2020-08-31 08:09:42 +02:00
Fabien Potencier
f4f7683861 Bump Symfony version to 3.4.45 2020-08-31 07:58:19 +02:00
Fabien Potencier
b1e65241ca Update VERSION for 3.4.44 2020-08-31 07:53:42 +02:00
Fabien Potencier
5ed8ebe50e Remove unneeded code 2020-08-30 12:31:26 +02:00
Christian Flothmann
a9cbac77eb fix the deprecation message 2020-08-30 11:27:09 +02:00
Fabien Potencier
e23a06400d bug #37986 [Translation] Fix logic (fabpot)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Translation] Fix logic

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a<!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | n/a

Commits
-------

19f8cd423a [Translation] Fix logic
2020-08-30 10:30:45 +02:00
Fabien Potencier
0885ebb706 Merge branch '5.1'
* 5.1:
  Revert "bug #37622 [PropertyAccess] Fix accessing dynamic properties (andreyserdjuk)"
2020-08-30 10:30:09 +02:00
Fabien Potencier
47b9b5cf21 Revert "bug #37622 [PropertyAccess] Fix accessing dynamic properties (andreyserdjuk)"
This reverts commit 92cb709222, reversing
changes made to fc3095ff2f.
2020-08-30 10:29:58 +02:00
Fabien Potencier
19f8cd423a [Translation] Fix logic 2020-08-30 10:02:21 +02:00
Fabien Potencier
45329ab77d Merge branch '5.1'
* 5.1:
  Fix CS
  [HttpClient][MockHttpClient][DX] Throw when the response factory callable does not return a valid response
  [FrameworkBundle] Do not pass the base uri twice to scoped http clients
2020-08-30 09:26:26 +02:00
Fabien Potencier
c367e26e3e Merge branch '4.4' into 5.1
* 4.4:
  Fix CS
  [HttpClient][MockHttpClient][DX] Throw when the response factory callable does not return a valid response
  [FrameworkBundle] Do not pass the base uri twice to scoped http clients
2020-08-30 09:26:18 +02:00
Fabien Potencier
2adacbcff8 Fix CS 2020-08-30 09:21:38 +02:00
Fabien Potencier
4affb4622f Fix CS 2020-08-30 09:20:37 +02:00
Fabien Potencier
241af8057f feature #37371 [Translation] Add support for calling 'trans' with ICU formatted messages (someonewithpc)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Translation] Add support for calling 'trans' with ICU formatted messages

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | maybe, see https://github.com/symfony/symfony/issues/37228
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #37228
| License       | MIT
| Doc PR        | symfony/symfony-docs#13875

Motivation:

```
$apples = [0 => 'No apples', 1 => '1 apple', '# apples'];
echo _m($apples, ['count' => 0]); // Outputs 'No apples'
echo _m($apples, ['count' => 2]); // Outputs '2 apples'
```

where `_m` is a wrapper my application is using, but we obviously don't want to replicate many of the effort of the translation component, so it relies on `trans`.

This wrapper itself could be integrated into Symfony, if deemed appropriate.

See #37228

Commits
-------

d2ec41f4ef [Translation] Add support for calling 'trans' with ICU formatted messages
2020-08-30 09:19:50 +02:00
Hugo Sales
d2ec41f4ef [Translation] Add support for calling 'trans' with ICU formatted messages 2020-08-30 09:19:43 +02:00
Fabien Potencier
4d6ea775b7 bug #37966 [HttpClient][MockHttpClient][DX] Throw when the response factory callable does not return a valid response (fancyweb)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient][MockHttpClient][DX] Throw when the response factory callable does not return a valid response

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

The current message is `TypeError: Argument 4 passed to Symfony\Component\HttpClient\Response\MockResponse::fromRequest() must implement interface Symfony\Contracts\HttpClient\ResponseInterface, instance of Generator given`.

I lost some time with this because I was passing a callable that returns a \Generator instead of passing the resulting \Generator directly. We could support that case but I guess with the added exception message, it is clear we don't support it at all.

Commits
-------

564dce39f8 [HttpClient][MockHttpClient][DX] Throw when the response factory callable does not return a valid response
2020-08-30 08:55:38 +02:00
Nate Wiebe
dc6b3bf62d [Translation] Translatable objects 2020-08-28 18:48:14 +02:00
Fabien Potencier
6c094cce73 bug #37983 [PropertyInfo] Fix ReflectionExtractor::getTypesFromConstructor (ogizanagi)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[PropertyInfo] Fix ReflectionExtractor::getTypesFromConstructor

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | N/A <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | N/A

Fixes https://travis-ci.org/github/symfony/symfony/jobs/721953907#L4274-L4296

Relates to #30335

Commits
-------

6423d8a827 [PropertyInfo] Fix ReflectionExtractor::getTypesFromConstructor
2020-08-28 18:21:59 +02:00
Fabien Potencier
5b3ebdc7e6 Merge branch '5.1'
* 5.1:
  [PhpUnitBridge] Create a predictable symlink pointing to the local install
  [PropertyInfo] Backport support for typed properties (PHP 7.4)
  [PhpUnitBridge] Polyfill new phpunit 9.1 assertions
  [PhpUnitBridge] Move assertMatchesRegularExpression in PolyfillAssertTrait
  [PhpUnit] Add polyfill for assertMatchesRegularExpression()
  Update Notifier bridge readme
  [TwigBridge] Fix #37931: BC break where filter method `trans` did not allow null values for `$message` parameter anymore
  [PropertyAccess] Fix accessing dynamic properties
2020-08-28 18:19:10 +02:00
Maxime Steinhausser
6423d8a827 [PropertyInfo] Fix ReflectionExtractor::getTypesFromConstructor 2020-08-28 18:07:48 +02:00
Grégoire Pineau
3c943b94ed [Semaphore] Fixed some bugs 2020-08-28 16:01:04 +02:00
Thomas Calvet
564dce39f8 [HttpClient][MockHttpClient][DX] Throw when the response factory callable does not return a valid response 2020-08-28 14:30:47 +02:00
Wouter de Jong
176aef63d9 Also mark the authenticator security system experimental in 5.2 2020-08-28 10:27:42 +02:00
Kévin Dunglas
1b19f255a3 [PropertyInfo] Backport support for typed properties (PHP 7.4) 2020-08-28 10:21:30 +02:00
Fabien Potencier
ba98fd74d6 feature #37432 [Mailer] Implement additional mailer transport options (fritzmg)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Mailer] Implement additional mailer transport options

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #37300
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/13911

This implements additional transport configuration options mentioned in #37300. It also adds a `command` option to be able to define the command used by the `sendmail` transport.

Examples:

```yml
framework:
  mailer:
    transports:
      sendmail: sendmail://default?command=/usr/sbin/sendmail%%20-oi%%20-t
      local_domain: smtps://smtp.example.com?local_domain=example.org
      restart_threshold: smtps://smtp.example.com?restart_threshold=10&restart_threshold_sleep=1
      ping_threshold: smtps://smtp.example.com?ping_threshold=200
```

Commits
-------

665d1cd3fa [Mailer] Implement additional mailer transport options
2020-08-27 16:56:03 +02:00
Fritz Michael Gschwantner
665d1cd3fa [Mailer] Implement additional mailer transport options 2020-08-27 16:55:56 +02:00
Fabien Potencier
df84e2263b minor #37965 Update Notifier bridge DSN in readme (jeremyFreeAgent)
This PR was merged into the 5.2-dev branch.

Discussion
----------

Update Notifier bridge DSN in readme

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Add missing DSN documentation in README for 5.2

Commits
-------

eedd72cd98 Update Notifier bridge DSN in readme
2020-08-27 16:51:53 +02:00
Fabien Potencier
40022972f6 bug #37578 [HttpClient] fix pausing AmpResponse (kelunik)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] fix pausing AmpResponse

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | None
| License       | MIT
| Doc PR        | None

This fixes the pause handler while streaming bodies in `AmpHttpClient`.

Needs to be rebased onto the target branch and needs some test fixes. @nicolas-grekas FYI.

Commits
-------

bf2d1cf6e7 Improve pause handler
2020-08-27 16:48:24 +02:00
Jérémy Romey
eedd72cd98
Update Notifier bridge DSN in readme 2020-08-27 16:44:35 +02:00
Fabien Potencier
ce8b497824 feature #35780 [Semaphore] Added the component (lyrixx)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Semaphore] Added the component

| Q             | A
| ------------- | ---
| Branch?       | yes
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

---

[Semaphore] Added the component

Few years ago, we have introduced the Lock component. This is a very nice component, but sometime it is not enough. Sometime you need semaphore.

This is why I'm introducing this new component.

## What is a Semaphore ?

From wikipedia:

> In computer science, a semaphore is a variable or abstract data type used to control access to a common resource by multiple processes in a concurrent system such as a multitasking operating system. A semaphore is simply a variable. This variable is used to solve critical section problems and to achieve process synchronization in the multi processing environment. A trivial semaphore is a plain variable that is changed (for example, incremented or decremented, or toggled) depending on programmer-defined conditions.

This new component is more than a variable. This is an abstraction on top of different storage.

To make a quick comparison with a lock:

 * A lock allows only 1 process to access a resource;
 * A semaphore allow N process to access a resource.

Basically, a lock is a semaphore where `N = 1`.

### Possible confusion

PHP exposes some `sem_*` functions like [`sem_acquire`](http://php.net/sem_acquire). This module provides wrappers for the System V IPC family of functions. It includes semaphores, shared memory and inter-process messaging (IPC).

The Lock component has a storage that works with theses functions. It uses it with `N = 1`.

## What are the use-cases ?

Wikipedia has some [examples](https://en.wikipedia.org/wiki/Semaphore_(programming)#Examples)

But I can add one more commun use case.

If you are building an async system that process user data, you may want to priorise all jobs. You can achieve that by running at maximum N jobs per user at the same time. If the user has more resources, you give him more concurrent jobs (so a bigger `N`).

Thanks to semaphores, it's pretty easy to know if a new job can be run.

### Some concrete use-cases

I'm not saying the following services are using semaphore, but they may solve the previous problematic with semaphores. Here is some examples:

 * services like testing platform where a user can test N projects concurrently (travis, circle, appveyor, insight, ...)
 * services that ingest lots of data (newrelic, datadog, blackfire, segment.io, ...))
 * services that send email in batch (campaign monitor, mailchimp, ...)
 * etc...

## How to use it ?

To do so, since PHP is mono-threaded, you run M PHP workers. And in each worker, you look for for the next job. When you grab a job, you try to acquires a semaphore. If you got it, you process the job. If not you try another job.

FTR in other language, like Go, there are no need to run M workers, one is enough.

### With Symfony

```php
<?php

use Symfony\Component\Lock\LockFactory;
use Symfony\Component\Lock\Store\RedisStore as LockRedisStore;
use Symfony\Component\Semaphore\SemaphoreFactory;
use Symfony\Component\Semaphore\Store\RedisStore;

require __DIR__.'/vendor/autoload.php';

$redis = new Redis();
$redis->connect('172.17.0.2');

// Internally, Semaphore needs a lock
$lock = (new LockFactory(new LockRedisStore($redis)))->createLock('test:lock', 1);

// Create a semaphore:
// * name = test
// * limit = 3 (it means only 3 process are allowed)
// * ttl = 10 seconds : Maximum expected semaphore duration in seconds
$semaphore = (new SemaphoreFactory($lock, new RedisStore($redis)))->createSemaphore('test', 3, 10);

if (!$semaphore->acquire()) {
    echo "Could not acquire the semaphore\n";
    exit(1);
}

// The semaphore has been acquired

// Do the heavy job
for ($i = 0; $i < 100; ++$i) {
    sleep(1);
    // Before the expiration, refresh the semaphore if the job is not finished yet
    if ($i % 9 === 0) {
        $semaphore->refresh();
    }
}

// Release it when finished
$semaphore->release();
```

## Prior art

I looked at [packagist](https://packagist.org/?query=semaphore) and:

 * most of packages are using a semaphore storage for creating a lock. So there are not relevant here;
 * some packages need an async framework to be used (amphp for example);
 * the only packages really implementing a semaphore, has a really low code quality and some bugs.

## Current implementation

1. I initially copied the Lock component since the external API is quite similar;
1. I simplified it a lot for the current use case;
1. I implemented the RedisStorage according the [redis book](https://redislabs.com/ebook/part-2-core-concepts/chapter-6-application-components-in-redis/6-3-counting-semaphores/;)
1. I forced a TTL on the storage.

---

TODO:

 * [ ] documentation
 * [x] test
 * [x] ~~move the lock requirements to the redis storage only ?~~ Not needed anymore

Commits
-------

891285475e [Semaphore] Added the component
2020-08-27 16:33:10 +02:00
Wouter de Jong
907ef311bf Lazily load the user during the check passport event 2020-08-27 16:28:46 +02:00
Fabien Potencier
53a8f7d490 Fix tests 2020-08-27 16:13:35 +02:00
Fabien Potencier
d24f040389 feature #37934 [Mailer] Mailjet Add ability to pass custom headers to API (tcheymol)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Mailer] Mailjet Add ability to pass custom headers to API

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | no
| License       | MIT
| Doc PR        | no

Mailjet mailer now forwards headers from original email removes forbidden headers, and sends them to Maijlet Api

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

Commits
-------

7b14ef3678 [Mailer] Mailjet Add ability to pass custom headers to API
2020-08-27 16:08:10 +02:00
Thibaut Cheymol
7b14ef3678 [Mailer] Mailjet Add ability to pass custom headers to API 2020-08-27 16:08:03 +02:00
Jérémy Romey
17c0784c44
Update Notifier bridge readme 2020-08-27 14:59:47 +02:00
Grégoire Pineau
891285475e [Semaphore] Added the component
Few years ago, we have introduced the Lock component. This is a very nice component, but sometime it is not enough. Sometime you need semaphore.

This is why I'm introducing this new component.

From wikipedia:

> In computer science, a semaphore is a variable or abstract data type used to control access to a common resource by multiple processes in a concurrent system such as a multitasking operating system. A semaphore is simply a variable. This variable is used to solve critical section problems and to achieve process synchronization in the multi processing environment. A trivial semaphore is a plain variable that is changed (for example, incremented or decremented, or toggled) depending on programmer-defined conditions.

This new component is more than a variable. This is an abstraction on top of different storage.

To make a quick comparison with a lock:

 * A lock allows only 1 process to access a resource;
 * A semaphore allow N process to access a resource.

Basically, a lock is a semaphore where `N = 1`.

PHP exposes some `sem_*` functions like [`sem_acquire`](http://php.net/sem_acquire). This module provides wrappers for the System V IPC family of functions. It includes semaphores, shared memory and inter-process messaging (IPC).

The Lock component has a storage that works with theses functions. It uses it with `N = 1`.

Wikipedia has some [examples](https://en.wikipedia.org/wiki/Semaphore_(programming)#Examples)

But I can add one more commun use case.

If you are building an async system that process user data, you may want to priorise all jobs. You can achieve that by running at maximum N jobs per user at the same time. If the user has more resources, you give him more concurrent jobs (so a bigger `N`).

Thanks to semaphores, it's pretty easy to know if a new job can be run.

I'm not saying the following services are using semaphore, but they may solve the previous problematic with semaphores. Here is some examples:

 * services like testing platform where a user can test N projects concurrently (travis, circle, appveyor, insight, ...)
 * services that ingest lots of data (newrelic, datadog, blackfire, segment.io, ...))
 * services that send email in batch (campaign monitor, mailchimp, ...)
 * etc...

To do so, since PHP is mono-threaded, you run M PHP workers. And in each worker, you look for for the next job. When you grab a job, you try to acquires a semaphore. If you got it, you process the job. If not you try another job.

FTR in other language, like Go, there are no need to run M workers, one is enough.

```php
<?php

use Symfony\Component\Lock\LockFactory;
use Symfony\Component\Lock\Store\RedisStore as LockRedisStore;
use Symfony\Component\Semaphore\SemaphoreFactory;
use Symfony\Component\Semaphore\Store\RedisStore;

require __DIR__.'/vendor/autoload.php';

$redis = new Redis();
$redis->connect('172.17.0.2');

// Internally, Semaphore needs a lock
$lock = (new LockFactory(new LockRedisStore($redis)))->createLock('test:lock', 1);

// Create a semaphore:
// * name = test
// * limit = 3 (it means only 3 process are allowed)
// * ttl = 10 seconds : Maximum expected semaphore duration in seconds
$semaphore = (new SemaphoreFactory($lock, new RedisStore($redis)))->createSemaphore('test', 3, 10);

if (!$semaphore->acquire()) {
    echo "Could not acquire the semaphore\n";
    exit(1);
}

// The semaphore has been acquired

// Do the heavy job
for ($i = 0; $i < 100; ++$i) {
    sleep(1);
    // Before the expiration, refresh the semaphore if the job is not finished yet
    if ($i % 9 === 0) {
        $semaphore->refresh();
    }
}

// Release it when finished
$semaphore->release();
```

I looked at [packagist](https://packagist.org/?query=semaphore) and:

 * most of packages are using a semaphore storage for creating a lock. So there are not relevant here;
 * some packages need an async framework to be used (amphp for example);
 * the only packages really implementing a semaphore, has a really low code quality and some bugs.

1. I initially copied the Lock component since the external API is quite similar;
1. I simplified it a lot for the current use case;
1. I implemented the RedisStorage according the [redis book](https://redislabs.com/ebook/part-2-core-concepts/chapter-6-application-components-in-redis/6-3-counting-semaphores/;)
1. I forced a TTL on the storage.
2020-08-27 14:35:29 +02:00
Fabien Potencier
6d521d4072 feature #37942 [Security] Renamed provider key to firewall name (wouterj)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Security] Renamed provider key to firewall name

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | yes
| Tickets       | Fix #15207
| License       | MIT
| Doc PR        | tbd

This fixes the `$providerKey` argument names on the classes that will remain in use, even when the new Security system will take over. @fabpot do you think these changes are worth it?

Officially, all token classes are not marked as `@final`. Do I need to take into account when someone is overriding the `getProviderKey()` method? Also, I couldn't find a way to trigger a deprecation notice for deprecated properties, is this a problem?

Commits
-------

91b276326d Renamed $providerKey to $firewallName
2020-08-26 17:45:58 +02:00
Wouter de Jong
91b276326d Renamed $providerKey to $firewallName 2020-08-26 17:34:05 +02:00
Andrii Serdiuk
47bd0180d1 [PropertyAccess] Fix accessing dynamic properties 2020-08-26 15:25:42 +02:00
Fabien Potencier
c642b8fb71 Merge branch '5.1'
* 5.1:
  [HttpClient] fix chaining promises returned by HttplugClient
  [DI] fix dumping lazy non-shared services
2020-08-26 13:35:34 +02:00
Fabien Potencier
fc3095ff2f bug #37927 [HttpClient] fix chaining promises returned by HttplugClient (CthulhuDen)
This PR was merged into the 5.1 branch.

Discussion
----------

[HttpClient] fix chaining promises returned by HttplugClient

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37925
| License       | MIT

Guzzle runtime does not play too well with foreign promises, which can be fixed by wrapping them with `promise_for`.
Added failing test case from #37925 and suggested fix.
Should not break BC because `then` callback results get resolved before being passed to next `then` callback or returned from `wait`.

Commits
-------

75043a1fb0 [HttpClient] fix chaining promises returned by HttplugClient
2020-08-26 13:34:52 +02:00
cthulhu
75043a1fb0 [HttpClient] fix chaining promises returned by HttplugClient 2020-08-26 12:50:35 +02:00
Niklas Keller
bf2d1cf6e7 Improve pause handler 2020-08-26 12:30:57 +02:00
Fabien Potencier
885390fbaf bug #37953 [DI] fix dumping lazy non-shared services (nicolas-grekas)
This PR was merged into the 5.1 branch.

Discussion
----------

[DI] fix dumping lazy non-shared services

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37665
| License       | MIT
| Doc PR        | -

Commits
-------

a4f4ca74a7 [DI] fix dumping lazy non-shared services
2020-08-26 11:10:33 +02:00
Nicolas Grekas
a4f4ca74a7 [DI] fix dumping lazy non-shared services 2020-08-26 10:54:37 +02:00
Fabien Potencier
27bb2828e3 Merge branch '5.1'
* 5.1:
  Backport: Improve link script with rollback when using symlink
  fix more numeric cases changing in PHP 8
  Fixed autoLogin() returning null
  [Notifier] add doc for free mobile dsn
2020-08-26 10:31:06 +02:00
Fabien Potencier
216f2fa94e Merge branch '4.4' into 5.1
* 4.4:
  Backport: Improve link script with rollback when using symlink
  fix more numeric cases changing in PHP 8
2020-08-26 10:30:57 +02:00
Fabien Potencier
6d850e04be Merge branch '3.4' into 4.4
* 3.4:
  Backport: Improve link script with rollback when using symlink
  fix more numeric cases changing in PHP 8
2020-08-26 10:30:46 +02:00
karser
5049e25b01 Added ConstructorExtractor which has higher priority than PhpDocExtractor and ReflectionExtractor 2020-08-26 09:35:07 +02:00
Fabien Potencier
12330e8ee6 feature #37926 [lock] Lazy create table in lock PDO store (jderusse)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[lock] Lazy create table in lock PDO store

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | TODO

With this PR, the table used by PdoStore is automatically created (similar to Cache and Messenger componenents)

Commits
-------

eaa52bae96 Lazy create table in lock PDO store
2020-08-26 09:17:10 +02:00
Christian Flothmann
7cd5106041 fix more numeric cases changing in PHP 8 2020-08-26 08:32:27 +02:00
Olivier Dolbeau
34fc8c3fc2 [Notifier] Add Esendex bridge 2020-08-25 21:06:21 +02:00
Wouter de Jong
93aea910d9 Fixed autoLogin() returning null 2020-08-25 17:26:05 +02:00
Niels Robin-Aubertin
54e24a8999 [Serializer] Add special '*' serialization group that allows any group 2020-08-25 08:52:02 +02:00
Jérémy Derussé
eaa52bae96
Lazy create table in lock PDO store 2020-08-24 00:21:27 +02:00
YaFou
dcb8d8b05d
[Serializer] Adds FormErrorNormalizer 2020-08-23 18:18:18 +02:00
Fabien Potencier
32ca714e93 minor #37922 [Notifier] backport documentation changes (noniagriconomie)
This PR was merged into the 5.1 branch.

Discussion
----------

[Notifier] backport documentation changes

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

I think #37809 should have been merged into the `5.1` branch.

Commits
-------

ff768fbdd9 [Notifier] add doc for free mobile dsn
2020-08-23 11:47:18 +02:00
Fabien Potencier
7b0d5e3e82 Merge branch '5.1'
* 5.1:
  account for is_numeric() behavior changes in PHP 8
  fix expected exception messages on PHP 8
2020-08-23 11:22:43 +02:00
Fabien Potencier
d24a181e55 Merge branch '4.4' into 5.1
* 4.4:
  account for is_numeric() behavior changes in PHP 8
  fix expected exception messages on PHP 8
2020-08-23 11:22:34 +02:00
Fabien Potencier
77418e712e Merge branch '3.4' into 4.4
* 3.4:
  account for is_numeric() behavior changes in PHP 8
  fix expected exception messages on PHP 8
2020-08-23 11:22:13 +02:00
Fabien Potencier
e0ed56b5f0 Merge branch '5.1'
* 5.1:
  Fix constraint
  [Mailer] Support Return-Path in SesApiAsyncAwsTransport
2020-08-23 11:13:44 +02:00
Fabien Potencier
7b865eaeba Fix constraint 2020-08-23 11:12:48 +02:00
noniagriconomie
ff768fbdd9 [Notifier] add doc for free mobile dsn 2020-08-23 11:06:47 +02:00
Fabien Potencier
12f8631cfa feature #37087 [Messenger] Add FlattenException Normalizer (monteiro)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Messenger] Add FlattenException Normalizer

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #32719  ... <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | No docs ... <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

I have just duplicated the PR https://github.com/symfony/symfony/pull/33650 (from @skalpa) but using the new component ErrorHandler and removing the priority.

Project that reproduces the bug on Symfony 5.2: https://github.com/monteiro/serializer-pr37087 (all steps are on the README).

Since this adds a new class and changes behavior, we add this new feature on the 5.2 branch.

Commits
-------

78fbd0ac77 [Messenger] Add FlattenException Normalizer
2020-08-23 10:56:12 +02:00
Hugo Monteiro
78fbd0ac77 [Messenger] Add FlattenException Normalizer 2020-08-23 10:56:06 +02:00
Fabien Potencier
a8abd81840 feature #37917 [Security] Pass Passport to LoginFailureEvent (ihmels)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Security] Pass Passport to LoginFailureEvent

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #37585
| License       | MIT
| Doc PR        | -

This changes passes a `Passport` to the `LoginFailureEvent`.

Commits
-------

d23434bc23 [Security] Pass Passport to LoginFailureEvent
2020-08-23 09:59:17 +02:00
Christian Flothmann
05db8e0fef account for is_numeric() behavior changes in PHP 8 2020-08-23 09:58:10 +02:00
Yannick Ihmels
d23434bc23 [Security] Pass Passport to LoginFailureEvent 2020-08-22 19:11:43 +02:00
Clara van Miert
61754cb891
[Mailer] Support Return-Path in SesApiAsyncAwsTransport
Enable sending `SendEmailRequest`s with a `Return-Path` configured in
`SesApiAsyncAwsTransport`.
2020-08-22 13:41:45 +02:00
Fabien Potencier
24af7dfb08 Fix CHANGELOG 2020-08-22 08:38:27 +02:00
Fabien Potencier
c281867227 feature #37734 [HttpFoundation] add support for X_FORWARDED_PREFIX header (jeff1985)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[HttpFoundation] add support for X_FORWARDED_PREFIX header

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #36809
| License       | MIT

Add support for `X-Forwarded-Prefix` header added by the popular Traefik HTTP LoadBalancer and Reverse Proxy. This ensures that the links rendered by symfony application deployed behind LB are valid even if the application is deployed via prefix URL.

Example routing setup:
route `/admin/(.*)` => symfony backend `/$1`
in this case links rendered by symfony backend must start with `/admin/`

To accept traefik prefix in your symfony app, you must modify index.php to allow accepting this header:

    Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_TRAEFIK ^ Request::HEADER_X_FORWARDED_HOST );`

Commits
-------

109e0a9f1a [HttpFoundation] add support for X_FORWARDED_PREFIX header
2020-08-22 08:37:35 +02:00
Evgeny Anisiforov
109e0a9f1a [HttpFoundation] add support for X_FORWARDED_PREFIX header 2020-08-22 08:37:28 +02:00
Fabien Potencier
f1d1514793 feature #37897 [Mailer] Support Amazon SES ConfigurationSetName (cvmiert)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Mailer] Support Amazon SES ConfigurationSetName

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

In Amazon SES a Configuration Set can be used to monitor email sending
events (delivery, bounces, complaints etc.). In order to use this
feature the ConfigurationSetName needs to be sent along with the email.

Setting the `X-SES-CONFIGURATION-SET` header should accomplish this for
all SES Transports now.

Ref: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-configuration-sets-in-email.html

Commits
-------

a36fec3204 [Mailer] Support Amazon SES ConfigurationSetName
2020-08-22 08:28:39 +02:00
Fabien Potencier
86310deed2 minor #37911 [Cache] fix expected exception message on PHP 8 (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Cache] fix expected exception message on PHP 8

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

2c9af570a2 fix expected exception messages on PHP 8
2020-08-22 08:24:01 +02:00
Fabien Potencier
374a0b2eb5 Merge branch '5.1'
* 5.1:
  fix passing arguments to call_user_func_array() on PHP 8
  allow Doctrine DBAL 3
  [Filesystem] fix test on PHP 8
2020-08-21 19:20:41 +02:00
Fabien Potencier
0611b6331c Merge branch '4.4' into 5.1
* 4.4:
  fix passing arguments to call_user_func_array() on PHP 8
  allow Doctrine DBAL 3
  [Filesystem] fix test on PHP 8
2020-08-21 19:19:47 +02:00
Fabien Potencier
4da3ece1b5 Merge branch '3.4' into 4.4
* 3.4:
  fix passing arguments to call_user_func_array() on PHP 8
  [Filesystem] fix test on PHP 8
2020-08-21 19:19:37 +02:00
Christian Flothmann
2c9af570a2 fix expected exception messages on PHP 8 2020-08-21 16:26:21 +02:00
Christian Flothmann
a55ce7c8bb fix passing arguments to call_user_func_array() on PHP 8 2020-08-21 16:15:51 +02:00
Clara van Miert
a36fec3204
[Mailer] Support Amazon SES ConfigurationSetName
In Amazon SES a Configuration Set can be used to monitor email sending
events (delivery, bounces, complaints etc.). In order to use this
feature the ConfigurationSetName needs to be sent along with the email.

Setting the `X-SES-CONFIGURATION-SET` header should accomplish this for
all SES Transports now.

Ref: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-configuration-sets-in-email.html
2020-08-21 15:49:13 +02:00
Christian Flothmann
c08178978a [Filesystem] fix test on PHP 8 2020-08-21 14:53:49 +02:00
Christian Flothmann
1f77f32d78 Merge branch '5.1'
* 5.1:
  fix merge
  stop using the deprecated schema synchronizer API
2020-08-21 14:11:42 +02:00
Christian Flothmann
60ce71e593 fix merge 2020-08-21 14:10:32 +02:00
Christian Flothmann
ffd707cf9d Merge branch '4.4' into 5.1
* 4.4:
  stop using the deprecated schema synchronizer API
2020-08-21 13:51:31 +02:00
Fabien Potencier
8f64d70c10 bug #37907 [Messenger] stop using the deprecated schema synchronizer API (xabbuh)
This PR was merged into the 4.4 branch.

Discussion
----------

[Messenger] stop using the deprecated schema synchronizer API

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

see the failing tests and doctrine/dbal#4213

Commits
-------

40129d6239 stop using the deprecated schema synchronizer API
2020-08-21 12:14:49 +02:00
Christian Flothmann
40129d6239 stop using the deprecated schema synchronizer API 2020-08-21 11:51:29 +02:00
Fabien Potencier
2ac2aaab23 Merge branch '5.1'
* 5.1:
  Fix CS
  [Mailer] Fixed mandrill api header structure
  [Mailer] Support reply-to in SesApiAsyncAwsTransport
  [HttpClient][ResponseTrait] Fix typo
  Fix CS
  [Notifier] Fixed base_uri while call auth/time API
  [Mailer] Reorder headers used to determine Sender
  [Validator] Add Lithuanian translation for ISIN constraint
2020-08-21 11:48:30 +02:00
Fabien Potencier
eec66a26de Merge branch '4.4' into 5.1
* 4.4:
  [Mailer] Fixed mandrill api header structure
  [HttpClient][ResponseTrait] Fix typo
  [Mailer] Reorder headers used to determine Sender
  [Validator] Add Lithuanian translation for ISIN constraint
2020-08-21 11:48:22 +02:00
Fabien Potencier
9ab652d60c Merge branch '3.4' into 4.4
* 3.4:
  [Validator] Add Lithuanian translation for ISIN constraint
2020-08-21 11:47:32 +02:00
Fabien Potencier
c3ce47e669 Fixed CS 2020-08-21 08:52:49 +02:00
Fabien Potencier
e98fdc7073 feature #36515 [HttpKernel] Add $kernel->getBuildDir() to separate it from the cache directory (mnapoli)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[HttpKernel] Add `$kernel->getBuildDir()` to separate it from the cache directory

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no
| Tickets       | Fix #23354
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

In order to support deploying on read-only filesystems (e.g. AWS Lambda in my case), I have started implementing #23354.

This introduces `$kernel->getBuildDir()`:

- `$kernel->getBuildDir()`: for cache that can be warmed and deployed as read-only (compiled container, annotations, etc.)
- `$kernel->getCacheDir()`: for cache that can be written at runtime (e.g. cache pools, session, profiler, etc.)

I have probably missed some places or some behavior of Symfony that I don't know. Don't consider this PR perfect, but rather I want to help move things forward :)

TODO:

- [ ] Changelog
- [ ] Upgrade guide
- [ ] Documentation

Commits
-------

ec945f10d8 [HttpKernel] Add `$kernel->getBuildDir()` to separate it from the cache directory
2020-08-21 08:43:41 +02:00
Matthieu Napoli
ec945f10d8 [HttpKernel] Add $kernel->getBuildDir() to separate it from the cache directory 2020-08-21 08:43:34 +02:00
Fabien Potencier
91dc9c7083 Fix CS 2020-08-21 08:40:21 +02:00
wulff
aeb4c5e6c7 [Mailer] Fixed mandrill api header structure 2020-08-21 08:31:47 +02:00
Clara van Miert
163e961b44
[Mailer] Support reply-to in SesApiAsyncAwsTransport
Enable sending `SendEmailRequest`s with reply-to addresses with
`SesApiAsyncAwsTransport`.
2020-08-20 19:12:17 +02:00
Thomas Calvet
cbd8ca0625 [HttpClient][ResponseTrait] Fix typo 2020-08-20 14:25:15 +02:00
Thibaut Cheymol
e038605dca [Mailer] Mailjet - properly format Cc and Bcc for API 2020-08-20 09:40:34 +02:00
Fabien Potencier
5a9180370e Fix CS 2020-08-20 07:29:43 +02:00
Simon Leblanc
2f91485c40 [Notifier] Fixed base_uri while call auth/time API 2020-08-20 07:28:49 +02:00
Fabien Potencier
d6980e5f38 feature #32133 [PropertyAccess] Allow to disable magic __get & __set (ogizanagi)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[PropertyAccess] Allow to disable magic __get & __set

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | yes <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass?   | yes   <!-- please add some, will be required by reviewers -->
| Fixed tickets | N/A   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | TODO

Working with some legacy code having annoying `__get` & `__set` methods, this would have been useful the same way `__call` can be enabled/disabled.

Commits
-------

11b7bf316e [PropertyAccess] Allow to disable magic __get & __set
2020-08-19 19:12:12 +02:00
Clara van Miert
7e60a8f8c9
[Mailer] Reorder headers used to determine Sender
Use the `Return-Path` header as the last candidate to determine the
Envelope's sender address.

The `Return-Path` is usually configured _in addition_ to the `Sender`
and/or `From` header: it allows for email bounces and complaints to be
sent to a dedicated email address. It should therefore not be used as
the first candidate header to determine the sender.
2020-08-19 19:05:08 +02:00
Maxime Steinhausser
6288449f61 [Validator] Remove duplicated require 2020-08-19 15:55:42 +02:00
Maxime Steinhausser
11b7bf316e [PropertyAccess] Allow to disable magic __get & __set 2020-08-19 15:25:50 +02:00
Maxime Steinhausser
e04386c187 [Security] Fix tests 2020-08-19 14:13:04 +02:00
Fabien Potencier
e1917509e4 Merge branch '5.1'
* 5.1:
  [Lock] MongoDbStore handle duplicate querystring keys in mongodb uri when stripping
  [PropertyInfo] Fix ReflectionExtractor + minor tweaks
2020-08-19 13:09:46 +02:00
Fabien Potencier
679cc4dff1 bug #37857 [PropertyInfo] Fix ReflectionExtractor + minor tweaks (ogizanagi)
This PR was merged into the 5.1 branch.

Discussion
----------

[PropertyInfo] Fix ReflectionExtractor + minor tweaks

| Q             | A
| ------------- | ---
| Branch?       | 5.1 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix N/A <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | N/A

Spotted while rebasing #32133

Commits
-------

7ccb5a1cf2 [PropertyInfo] Fix ReflectionExtractor + minor tweaks
2020-08-19 13:09:12 +02:00
Fabien Potencier
c426abed85 bug #37868 [Lock] MongoDbStore handle duplicate querystring keys in mongodb uri when stripping (kralos)
This PR was squashed before being merged into the 5.1 branch.

Discussion
----------

[Lock] MongoDbStore handle duplicate querystring keys in mongodb uri when stripping

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37864
| License       | MIT
| Doc PR        |

Allow duplicate querystring keys when stripping `collection`. `readPreferenceTags` is currently allowed to be specified twice so re-assembling the querystring with `http_build_query` will also strip duplicated `readPreferenceTags`. Use `preg_match` instead.

Commits
-------

c1ea9ae476 [Lock] MongoDbStore handle duplicate querystring keys in mongodb uri when stripping
2020-08-19 12:50:41 +02:00
Joe Bennett
c1ea9ae476 [Lock] MongoDbStore handle duplicate querystring keys in mongodb uri when stripping 2020-08-19 12:50:35 +02:00
Tomas
d652041647 [Validator] Add Lithuanian translation for ISIN constraint 2020-08-19 07:26:06 +03:00
Fabien Potencier
27d84dbe57 feature #36016 [Translation] Add a pseudo localization translator (fancyweb)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Translation] Add a pseudo localization translator

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | https://github.com/symfony/symfony/issues/35666
| License       | MIT
| Doc PR        | TODO

This PR introduces a new translator to be able to test apps with pseudo localization (check the related issue).

The `PseudoLocalizationTranslator` decorates another translator and then alter the translated string. There are 5 options:

- accents:
     - type: boolean
     - default: true
     - description: replace ASCII characters of the translated string with accented versions or similar characters
     - example: if true, `foo` => `ƒöö`

- expansion_factor:
     - type: float
     - default: 1
     - validation: it must be greater than or equal to 1
     - description: expand the translated string by the given factor with spaces and tildes
     example: if 2, `foo` => `~foo ~`

- brackets:
     - type: boolean
     - default: true
     - description: wrap the translated string with brackets
     - example: if true, `foo` => `[foo]`

- parse_html:
     - type: boolean
     - default: false
     - description: parse the translated string as HTML - looking for HTML tags has a performance impact but allows to preserve them from alterations - it also allows to compute the visible translated string length which is useful to correctly expand ot when it contains HTML
     - warning: unclosed tags are unsupported, they will be fixed (closed) by the parser - eg, `foo <div>bar` => `foo <div>bar</div>`

- localizable_html_attributes:
     - type: string[]
     - default: []
     - description: the list of HTML attributes whose values can be altered - it is only useful when the "parse_html" option is set to true
     - example: if ["title"], and with the "accents" option set to true, `<a href="#" title="Go to your profile">Profile</a>` => `<a href="#" title="Ĝö ţö ýöûŕ þŕöƒîļé">Þŕöƒîļé</a>` - if "title" was not in the "localizable_html_attributes" list, the title attribute data would be left unchanged.

Here is a screenshot on a Symfony demo page:
<img width="1374" alt="Screenshot 2020-03-26 at 14 31 20" src="https://user-images.githubusercontent.com/3658119/77652489-9380d100-6f6e-11ea-9bca-142faeee750b.png">

TODO:
- [x] Update FWB XSD

Commits
-------

4d6a41a415 [Translation] Add a pseudo localization translator
2020-08-18 16:11:58 +02:00
Fabien Potencier
6539a0fc2f feature #37755 Fix #37740: Cast all Request parameter values to string (rgeraads)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

Fix #37740: Cast all Request parameter values to string

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37740| License       | MIT

This fix ensures that all parameter values in Browserkit\Request are received as strings on the receiving end.

Commits
-------

d4e2cec1fb Fix #37740: Cast all Request parameter values to string
2020-08-18 16:07:52 +02:00
Randy Geraads
d4e2cec1fb Fix #37740: Cast all Request parameter values to string 2020-08-18 16:07:45 +02:00
Christian Flothmann
e36e73b9cf stop using the deprecated at() PHPUnit matcher 2020-08-18 13:55:56 +02:00
Fabien Potencier
da9672dccd minor #37878 🐛 [Mailer] Fix mailjet scheme bug (tcheymol)
This PR was merged into the 5.2-dev branch.

Discussion
----------

🐛 [Mailer] Fix mailjet scheme bug

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | no
| License       | MIT
| Doc PR        | no
<!--

Fix a typo introduced in mailjet-mailer accepted schemes that causes the scheme mailjet+api to not be recognized

Commits
-------

6f357a67cc 🐛 [Mailer] Fix mailjet scheme bug
2020-08-18 13:43:15 +02:00
Fabien Potencier
fbcdbf99a4 Merge branch '5.1'
* 5.1:
  fix: clarify parameter name to comply with deprecations from #34074
  [Sendgrid-Mailer] Fixed envelope recipients on sendgridApiTransport
  mark the AssertingContextualValidator class as internal
  Fix the parameter names in the SecurityFactoryInterface::create() method
  [Serializer][ClassDiscriminatorMapping] Fix getMappedObjectType() when a discriminator child extends another one
  make return type correct
2020-08-18 13:41:45 +02:00
Fabien Potencier
44caccbac8 Merge branch '4.4' into 5.1
* 4.4:
  [Sendgrid-Mailer] Fixed envelope recipients on sendgridApiTransport
  mark the AssertingContextualValidator class as internal
  Fix the parameter names in the SecurityFactoryInterface::create() method
  [Serializer][ClassDiscriminatorMapping] Fix getMappedObjectType() when a discriminator child extends another one
  make return type correct
2020-08-18 13:41:36 +02:00
Fabien Potencier
88bf7211a9 Merge branch '3.4' into 4.4
* 3.4:
  mark the AssertingContextualValidator class as internal
  make return type correct
2020-08-18 13:39:55 +02:00
Thibaut Cheymol
6f357a67cc 🐛 [Mailer] Fix mailjet scheme bug 2020-08-18 13:38:58 +02:00
Dennis Langen
91249ed0bf fix: clarify parameter name to comply with deprecations from #34074 2020-08-18 13:34:54 +02:00
Fabien Potencier
fcc75d9563 minor #37760 make return type correct (vladyslavstartsev)
This PR was merged into the 3.4 branch.

Discussion
----------

make return type correct

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | no
| License       | MIT
| Doc PR        | no

Since the real return type is `\ArrayIterator` AND array of `FormView` I've decided to change it. Also the other reason is that phpstan iks kind of failing because of this and I need to `assert` things in children of this class.

Commits
-------

32b5b9e1d7 make return type correct
2020-08-18 13:29:18 +02:00
Fabien Potencier
a2d360b869 Fix a test 2020-08-18 13:22:10 +02:00
Arend-Jan Tetteroo
c4e5131757 [Sendgrid-Mailer] Fixed envelope recipients on sendgridApiTransport
Fixes #37870

The SendgridApiTransport was not using the envelope to get the
recipients, so overriding the recipients with the EnvelopeListener was
not working.
2020-08-18 12:11:56 +02:00
Fabien Potencier
c23166c8d8 Merge branch '5.1'
* 5.1:
  [Validator] fix tests
2020-08-18 12:04:11 +02:00
Fabien Potencier
56bf1bca49 minor #37838 [Validator] fix tests (xabbuh)
This PR was merged into the 5.1 branch.

Discussion
----------

[Validator] fix tests

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

162771f7e3 [Validator] fix tests
2020-08-18 12:01:51 +02:00
Fabien Potencier
c8566e05b9 Fix composer name 2020-08-18 11:46:33 +02:00
Fabien Potencier
bf3b84aca4 Fix typo 2020-08-18 11:40:27 +02:00
Christian Flothmann
162771f7e3 [Validator] fix tests 2020-08-18 11:39:21 +02:00
Fabien Potencier
7974f2adfc feature #36541 [Mailer] Add Mailjet bridge (tcheymol)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

 [Mailer] Add Mailjet bridge

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | no
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/14095
<!--

Adds the Maijlet Bridge for the mailer component. Only SMTP for now

-->

Commits
-------

ee77fee343  [Mailer] Add Mailjet bridge
2020-08-18 11:39:16 +02:00
Thibaut Cheymol
ee77fee343 [Mailer] Add Mailjet bridge 2020-08-18 11:39:09 +02:00
Fabien Potencier
e6cdba6512 feature #36940 [Notifier] add support for smsapi-notifier (szepczynski)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Notifier] add support for smsapi-notifier

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT
| Doc PR        | symfony/symfony-docs#13716

Hi,

I've created integration to notifier to support polish sms operator - smsapi.pl

Here is smsapi-notifier integration: https://github.com/szepczynski/smsapi-notifier. Can you grab this code and make as symfony/smsapi-notifier?

This PR includes changes in notifier and framework-bundle to support smsapi transport as well as other included in notifier component.

Could someone integrate this into notifier component?

Commits
-------

91c25303f7 [Notifier] add support for smsapi-notifier
2020-08-18 11:20:34 +02:00
Marcin Szepczyński
91c25303f7 [Notifier] add support for smsapi-notifier 2020-08-18 11:20:28 +02:00
Fabien Potencier
14c9d05dc8 feature #37830 [Notifier] Add LinkedIn provider (ismail1432)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Notifier] Add LinkedIn provider

| Q             | A
| ------------- | ---
| Branch?       | master for features 5.2
| Bug fix?      | no
| New feature?  | yes/no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | yes/no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #34563 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

### Add the LinkedIn provider for the Notifier

Few months ago I created a bridge to send message to LinkedIn, following [the discussion here](https://github.com/symfony/symfony/issues/34563) I create the PR.

If you're curious [I wrote an article where I use the bridge](https://medium.com/@smaine.milianni/aws-lambda-and-symfony-6d3e9831c3cd)

[Edit] test are green ~missing improvement body construction and integration test with update changes + framework integration~

[Notification sent with this PR](https://www.linkedin.com/posts/smainemilianni_hello-linkedin-from-symfony-bridge-see-pull-activity-6700328970665177088-31tT)
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

Commits
-------

0064cae9a0 add Linkedin transport and option
2020-08-18 11:12:14 +02:00
Christian Flothmann
7ff0287cd6 mark the AssertingContextualValidator class as internal 2020-08-18 11:07:13 +02:00
Smaine Milianni
0064cae9a0 add Linkedin transport and option 2020-08-18 09:43:05 +01:00
Fabien Potencier
830cc5b3a3 Merge branch '5.1'
* 5.1:
  Remove obsolete file
  Add missing license
2020-08-18 09:41:46 +02:00
Fabien Potencier
8b78ad3a72 Add missing license 2020-08-18 09:39:30 +02:00
Maxime Steinhausser
7ccb5a1cf2 [PropertyInfo] Fix ReflectionExtractor + minor tweaks 2020-08-18 09:27:13 +02:00
Fabien Potencier
e7dfa34c48 feature #37867 [Messenger] Add message timestamp to amqp connection (Bartłomiej Zając)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Messenger] Add message timestamp to amqp connection

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | none
| License       | MIT
| Doc PR        | none

Add default timestamp to amqp transport message.

It is useful when you logging each message, and your consumer is down, you alway get right message time when start consume again.

Commits
-------

281540e005 [Messenger] Add message timestamp to amqp connection
2020-08-18 09:09:18 +02:00
Thomas Calvet
c16a192473 [Serializer][ClassDiscriminatorMapping] Fix getMappedObjectType() when a discriminator child extends another one 2020-08-18 09:04:16 +02:00
Mbechezi Nawo
e4a14ac89d Verifying if the password field is null 2020-08-18 08:32:19 +02:00
Bartłomiej Zając
281540e005 [Messenger] Add message timestamp to amqp connection 2020-08-18 08:19:39 +02:00
Fabien Potencier
58ee4f6fa4 Merge branch '5.1'
* 5.1:
  Fix tests namespaces
  replace the deprecated assertDirectoryNotExists() method
2020-08-18 07:52:09 +02:00
Wouter de Jong
98802e58d3 Use PUBLIC_ACCESS from AuthenticatedVoter 2020-08-17 21:10:31 +02:00
Fabien Potencier
b61c87c281 minor #37856 [Filesystem] replace the deprecated assertDirectoryNotExists() method (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Filesystem] replace the deprecated assertDirectoryNotExists() method

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

9fd8a940e0 replace the deprecated assertDirectoryNotExists() method
2020-08-17 16:47:20 +02:00
Maxime Steinhausser
4e68c9091c Fix tests namespaces 2020-08-17 15:51:41 +02:00
Fabien Potencier
c4ff074116 Merge branch '5.1'
* 5.1:
  [Validator] fix tests
  ensure that the validator is a mock object for backwards-compatibility
  [Messenger] Fix BC layer for stamps moved into separate packages
2020-08-17 14:27:13 +02:00
Fabien Potencier
b7d4a1c546 Merge branch '4.4' into 5.1
* 4.4:
  [Validator] fix tests
  ensure that the validator is a mock object for backwards-compatibility
2020-08-17 14:27:03 +02:00
Fabien Potencier
26d8ffb809 Merge branch '3.4' into 4.4
* 3.4:
  [Validator] fix tests
  ensure that the validator is a mock object for backwards-compatibility
2020-08-17 14:26:54 +02:00
Christian Flothmann
9fd8a940e0 replace the deprecated assertDirectoryNotExists() method 2020-08-17 14:24:05 +02:00
Christian Flothmann
f04f507cd5 [Validator] fix tests 2020-08-17 14:06:24 +02:00
Fabien Potencier
fe5021ea04 bug #37826 [Messenger] Fix BC layer for stamps moved into separate packages (ogizanagi)
This PR was merged into the 5.1 branch.

Discussion
----------

[Messenger] Fix BC layer for stamps moved into separate packages

| Q             | A
| ------------- | ---
| Branch?       | 5.1 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #37616 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | N/A

Commits
-------

118579ced7 [Messenger] Fix BC layer for stamps moved into separate packages
2020-08-17 14:05:19 +02:00
Fabien Potencier
779303a248 feature #37847 [Serializer][Mime] Fix Mime message serialization (fabpot)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Serializer][Mime] Fix Mime message serialization

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | yes
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #37414, Fix #37324 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | n/a

Symfony serialization is used by Messenger to serialize Emails. By Email messages are data objects with some logic to prepare emails to be sent. Without configuration, the Symfony Serializer serializes Emails with too many data (and triggers some unneeded validation).

This PR aims to fix the above issue and at the same time makes serialized emails as small as possible and as readable as possible.

Commits
-------

9d869b1ece Fix Mime message serialization
2020-08-17 13:58:42 +02:00
Christian Flothmann
1c9b6714c7 ensure that the validator is a mock object for backwards-compatibility 2020-08-17 13:46:11 +02:00
Fabien Potencier
5d15ce4e65 Merge branch '5.1'
* 5.1:
  stop using deprecated PHPUnit APIs
2020-08-17 12:01:44 +02:00
Fabien Potencier
38e5a15ff4 Merge branch '4.4' into 5.1
* 4.4:
  stop using deprecated PHPUnit APIs
2020-08-17 12:01:29 +02:00
Fabien Potencier
dbe4e83ae6 minor #37831 stop using deprecated PHPUnit APIs (xabbuh)
This PR was merged into the 4.4 branch.

Discussion
----------

stop using deprecated PHPUnit APIs

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

3d209c46e4 stop using deprecated PHPUnit APIs
2020-08-17 11:56:45 +02:00
Christian Flothmann
3d209c46e4 stop using deprecated PHPUnit APIs 2020-08-17 11:35:39 +02:00
Fabien Potencier
5f2be641d4 Fix CS 2020-08-17 10:48:15 +02:00
Fabien Potencier
a5b28c55f8 Merge branch '5.1'
* 5.1:
  Fix CS
  Fix CS
  Fix CS
  [Validator] Add Polish translation for ISIN constraint
2020-08-17 09:50:35 +02:00
Fabien Potencier
a36f34f0fb Fix CS 2020-08-17 09:48:54 +02:00
Fabien Potencier
524941e36e Merge branch '4.4' into 5.1
* 4.4:
  Fix CS
  Fix CS
  [Validator] Add Polish translation for ISIN constraint
2020-08-17 09:42:30 +02:00
Fabien Potencier
85090fcfb8 Fix CS 2020-08-17 09:39:58 +02:00
Fabien Potencier
c9cdac153f Merge branch '3.4' into 4.4
* 3.4:
  Fix CS
  [Validator] Add Polish translation for ISIN constraint
2020-08-17 09:31:35 +02:00
Fabien Potencier
ba042b1acf Fix CS 2020-08-17 09:27:37 +02:00
Thomas Calvet
4d6a41a415 [Translation] Add a pseudo localization translator 2020-08-17 09:14:52 +02:00
Fabien Potencier
129c0943b6 Merge branch '5.1'
* 5.1:
  Fix CS
  [Serializer] Fix configuration of the cache key
  [Messenger] Do not stack retry stamp
  [FrameworkBundle] Add missing mailer transports in xsd
  [Lock] MongoDbStore skim non-standard options from uri
  [ErrorHandler][DebugClassLoader] Add mixed and static return types support
2020-08-17 09:04:20 +02:00
Fabien Potencier
78605e1ad9 Merge branch '4.4' into 5.1
* 4.4:
  Fix CS
  [Serializer] Fix configuration of the cache key
  [Messenger] Do not stack retry stamp
  [FrameworkBundle] Add missing mailer transports in xsd
  [ErrorHandler][DebugClassLoader] Add mixed and static return types support
2020-08-17 09:03:44 +02:00
Fabien Potencier
9d869b1ece Fix Mime message serialization 2020-08-17 08:40:05 +02:00
Fabien Potencier
3cdf5c47db Fix CS 2020-08-17 08:12:26 +02:00
Kévin Dunglas
3b034cb343 [Serializer] Fix configuration of the cache key 2020-08-17 08:10:41 +02:00
Fabien Potencier
df3ab767dd bug #36810 [Messenger] Do not stack retry stamp (jderusse)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Messenger] Do not stack retry stamp

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | /

With the "RecoverableException" or a very high number of retry, the message is currently stacking a lot of stamp, which increase the size of the message sent to queue and (in my case) reach the "maximum size allowed" after 60 retries + php serializer

This PR removes previous stamps before adding the new Delay+RetryStamps.

Commits
-------

ad6f8532c6 [Messenger] Do not stack retry stamp
2020-08-17 08:02:22 +02:00
Jérémy Derussé
ad6f8532c6 [Messenger] Do not stack retry stamp 2020-08-17 08:02:06 +02:00
Przemysław Bogusz
5fa2975b42 [Validator] Add Polish translation for ISIN constraint 2020-08-17 07:25:28 +02:00
Fabien Potencier
5f074cdf4e bug #37218 [Lock] MongoDbStore skim non-standard options from uri (kralos)
This PR was squashed before being merged into the 5.1 branch.

Discussion
----------

[Lock] MongoDbStore skim non-standard options from uri

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37180
| License       | MIT
| Doc PR        |

Don't allow non-standard connection uri options reach `MongoDB\Client`

Commits
-------

67912faf9f [Lock] MongoDbStore skim non-standard options from uri
2020-08-16 16:54:56 +02:00
Joe Bennett
67912faf9f [Lock] MongoDbStore skim non-standard options from uri 2020-08-16 16:54:50 +02:00
Fabien Potencier
d6b9936f61 bug #37586 [ErrorHandler][DebugClassLoader] Add mixed and static return types support (fancyweb)
This PR was merged into the 4.4 branch.

Discussion
----------

[ErrorHandler][DebugClassLoader] Add mixed and static return types support

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

0533f1f63e [ErrorHandler][DebugClassLoader] Add mixed and static return types support
2020-08-16 16:46:36 +02:00
khoptynskyi
aff7628d7d [Console] added TableCellStyle 2020-08-16 15:33:46 +02:00
Fabien Potencier
95eb341ec1 Merge branch '5.1'
* 5.1:
  [Serializer] Fix variadic support when using type hints
  [VarDumper] Backport handler lock when using VAR_DUMPER_FORMAT
  [FrameworkBundle] Remove unused form-resources complex type from XSD file
  Added missing router config
2020-08-16 10:27:52 +02:00
Fabien Potencier
5ef1679707 Merge branch '4.4' into 5.1
* 4.4:
  [Serializer] Fix variadic support when using type hints
  [VarDumper] Backport handler lock when using VAR_DUMPER_FORMAT
2020-08-16 10:27:43 +02:00
Fabien Potencier
803a257b6d Merge branch '3.4' into 4.4
* 3.4:
  [Serializer] Fix variadic support when using type hints
2020-08-16 10:27:11 +02:00
Fabien Potencier
688dbd9dab bug #37845 [Serializer] Fix variadic support when using type hints (fabpot)
This PR was merged into the 3.4 branch.

Discussion
----------

[Serializer] Fix variadic support when using type hints

| Q             | A
| ------------- | ---
| Branch?       | 3.4 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | n/a

Commits
-------

3fffa96928 [Serializer] Fix variadic support when using type hints
2020-08-16 10:23:32 +02:00
Fabien Potencier
3fffa96928 [Serializer] Fix variadic support when using type hints 2020-08-16 10:12:12 +02:00
Fabien Potencier
8b3df379de feature #37840 [VarDumper] Support PHPUnit --colors option (ogizanagi)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[VarDumper] Support PHPUnit --colors option

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | N/A <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | N/A

Commits
-------

ac0a3fc38a [VarDumper] Support PHPUnit --colors option
2020-08-16 09:44:17 +02:00
Fabien Potencier
6adf64319c Fxi CHANGELOG 2020-08-16 07:46:26 +02:00
Fabien Potencier
08ec4596d2 feature #37138 [Notifier][Slack] Use Slack Web API chat.postMessage instead of WebHooks (xavierbriand)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Notifier][Slack] Use Slack Web API chat.postMessage instead of WebHooks

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

**TL;DR**: Revert changes introduced in 5.1 by #35828: Slack's Web API is much more flexible and easier to operate than Slack WebHooks are.

---

### Context

A valid choice was made to switch from Slack's Web API to Slack's WebHooks for a wrong reason: according to #35828, this was in reaction to the deprecation of Slack's Legacy Tokens.

The author cites:
> Legacy tokens are a deprecated method of generating tokens for testing and development.

[As far as I was able to understand](https://github.com/symfony/symfony/pull/35828#issuecomment-639465018
), from the author perspective, this deprecation was amalgamated with the (perceived) deprecation of the Web API itself.

According to [Slack documentation](https://api.slack.com/legacy/custom-integrations/legacy-tokens) cited by the author:

> If you were using a legacy token to make calls with the Web API, you'll need to generate a new one for your new Slack app.

**So Slack changing its credentials' policy didn't warrant changing how to use Slack's Web API.**

---

### Why Web API > WebHook?

While using Slack WebHooks as the underlying transport method for notification isn't inherently a bad choice, it does–on top of [the reasons cited by the author](#35828)–come with a major limitation: the need to setup (manually or programmatically) a Webhook per channel/recipient.

The Web API, with it's underlying OAuth Access Token, is much more flexible and allows for more diverse use case. Notifications can be sent on behalf of users for instance. Slack can also limit the use of the access tokens to a list of IP addresses and ranges.

**E.g. I want to notify the person who triggers a CD pipeline if the latter fails.** \
Assuming a team of 10 developer, using Slack WebHooks, I would need to setup 10 WebHooks, and manages as many secret in my Symfony app. Furthermore, I would need to create new WebHook each time a new member were to join the team. \
With the Web API, I would only need to manage a single access token for the whole Slack workspace, regardless of who as access to this workspace.

Slack's Web API is much more flexible and easier to operate than Slack WebHooks are.

Commits
-------

bb614c2159 [Notifier][Slack] Use Slack Web API chat.postMessage instead of WebHooks
2020-08-16 07:45:59 +02:00
Xavier Briand
bb614c2159 [Notifier][Slack] Use Slack Web API chat.postMessage instead of WebHooks 2020-08-16 07:45:52 +02:00
Wouter de Jong
f17746c7c0 [Security] Add missing NullToken vote 2020-08-16 07:27:34 +02:00
Maxime Steinhausser
19b341e2b2 [VarDumper] Backport handler lock when using VAR_DUMPER_FORMAT 2020-08-14 17:54:02 +02:00
Maxime Steinhausser
ac0a3fc38a [VarDumper] Support PHPUnit --colors option 2020-08-14 17:33:49 +02:00
Grégoire Pineau
df57119884 [Console] Rework the signal integration 2020-08-13 17:50:47 +02:00
Christian Scheb
91388e871b Add ability to prioritize firewall listeners 2020-08-13 16:50:09 +02:00
Fabien Potencier
ae677cc9a3 minor #37823 [Messenger] Don't require doctrine/persistence when installing symfony/messenger (ogizanagi)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Messenger] Don't require doctrine/persistence when installing symfony/messenger

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #36790 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | N/A

As of today, [installing `symfony/messenger` installs `symfony/doctrine-messenger`](3867fb2489/src/Symfony/Component/Messenger/composer.json (L23)) as well. Which means adding `doctrine/persistence` as a hard dep of the latest will install it for any user requiring `symfony/messenger` in 5.2.

I think it should stay a soft-dependency until we remove `symfony/doctrine-messenger` as a `symfony/messenger` dependency as of Symfony 6.0 (as mentioned in #35422).

---

related: #36785

Commits
-------

5c05455521 [Messenger] Don't require doctrine/persistence when installing symfony/messenger
2020-08-13 16:38:32 +02:00
Fabien Potencier
4866278963 Merge branch '5.1'
* 5.1:
  use expectWarning() when possible
2020-08-13 16:36:50 +02:00
Fabien Potencier
c777e02b9d Merge branch '4.4' into 5.1
* 4.4:
  use expectWarning() when possible
2020-08-13 16:36:42 +02:00
Fabien Potencier
0bb2a1a918 Merge branch '3.4' into 4.4
* 3.4:
  use expectWarning() when possible
2020-08-13 16:36:30 +02:00
Fabien Potencier
4703bf8d00 feature #36131 [Mailer] Add a transport that uses php.ini settings for configuration (l-vo)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Mailer] Add a transport that uses php.ini settings for configuration

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

This PR aims to allow to use the mailer when sendmail is not on the `/usr/sbin` directory or when the `-bs` option is not supported.

Commits
-------

04de561f63 [Mailer] Add NativeTransportFactory
2020-08-13 16:25:21 +02:00
Fabien Potencier
f58b50c336 Merge branch '5.1'
* 5.1:
  Postpone BC layer removal to 6.0.
  add validator translation 99 for Italian language
  stop using the deprecated at() PHPUnit matcher
  Fix typehint phpdoc
2020-08-13 16:19:50 +02:00
Fabien Potencier
cb92a3c8c1 Merge branch '4.4' into 5.1
* 4.4:
  add validator translation 99 for Italian language
  stop using the deprecated at() PHPUnit matcher
  Fix typehint phpdoc
2020-08-13 16:19:42 +02:00
Fabien Potencier
544d276cba Merge branch '3.4' into 4.4
* 3.4:
  add validator translation 99 for Italian language
  stop using the deprecated at() PHPUnit matcher
  Fix typehint phpdoc
2020-08-13 16:18:44 +02:00
Christian Flothmann
26dd39eb06 use expectWarning() when possible 2020-08-13 16:16:26 +02:00
Fabien Potencier
6972bc232d minor #37808 stop using the deprecated at() PHPUnit matcher (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

stop using the deprecated at() PHPUnit matcher

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37780
| License       | MIT
| Doc PR        |

Commits
-------

850389731c stop using the deprecated at() PHPUnit matcher
2020-08-13 16:08:51 +02:00
Maxime Steinhausser
118579ced7 [Messenger] Fix BC layer for stamps moved into separate packages 2020-08-13 16:04:02 +02:00
Laurent VOULLEMIER
04de561f63 [Mailer] Add NativeTransportFactory 2020-08-13 15:56:04 +02:00
Laurent VOULLEMIER
1f66618bb1 Postpone BC layer removal to 6.0.
Since users on 5.0 and 5.1 hasn't have the deprecation, removing the BC layer (and so throwing an exception) in 5.x would be a big BC break.
2020-08-13 10:39:22 +02:00
Maxime Steinhausser
5c05455521 [Messenger] Don't require doctrine/persistence when installing symfony/messenger 2020-08-13 10:30:16 +02:00
Fabien Potencier
3867fb2489 minor #37822 [Workflow] Improve and fix (noniagriconomie)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Workflow] Improve and fix

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix https://github.com/symfony/symfony/pull/37815 review
| License       | MIT
| Doc PR        | #

Hi @lyrixx
thx for such fast PR take over :)

while reviewing i found this typo i think
also i reordered the constants inside the events class to map with the order of fireing event

Commits
-------

9bbce417ff [Workflow] Improve and fix
2020-08-13 10:18:22 +02:00
noniagriconomie
9bbce417ff [Workflow] Improve and fix 2020-08-13 10:09:09 +02:00
Antonio Pauletich
8e6d0df3ec
Add Beanstalkd Messenger bridge 2020-08-13 09:43:16 +02:00
Fabien Potencier
ab3b0c92f2 feature #35967 [VarDumper] Add VAR_DUMPER_FORMAT=server format (ogizanagi)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[VarDumper] Add VAR_DUMPER_FORMAT=server format

| Q             | A
| ------------- | ---
| Branch?       | master<!-- see below -->
| Bug fix?      | no
| New feature?  | yes<!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #35801 <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | TODO <!-- required for new features -->

This PR follows discussion in #35801 and adds support for a `server` value for the existing `VAR_DUMPER_FORMAT` env var.

It comes as well with two more things:
- ~~the handler is registered as soon as the `VAR_DUMPER_FORMAT` env var is detected~~ we prevent registering another handler as soon as the `VAR_DUMPER_FORMAT` env var is set, instead of checking if there was a previous handler (which could make this env var useless in some conditions where the handler was already set by another "process")
- the handler registered this way cannot be replaced. This prevents another "process" to takeover dump handling while undesired. E.g: a phpunit functional test booting the kernel to call an endpoint => the handler is replaced. It's (in a sense) a satisfying alternative to #26696

This PR means anyone can use dump with a server in any context, without changing a single line of code in the project by:
- starting the server using `./vendor/bin/var-dump-server --format=html > dumps.html`
- using the env var: `VAR_DUMPER_FORMAT=server [your-cli-command]`

---
Previous related PRs:
- https://github.com/symfony/symfony/pull/26695
- https://github.com/symfony/symfony/pull/26696

Commits
-------

82df6dbcda [VarDumper] Add VAR_DUMPER_FORMAT=server format
2020-08-13 09:36:26 +02:00
Maxime Steinhausser
82df6dbcda [VarDumper] Add VAR_DUMPER_FORMAT=server format 2020-08-13 09:36:20 +02:00
Fabien Potencier
804b8dd8b5 minor #37820 add validator translation 99 for Italian language (garak)
This PR was merged into the 3.4 branch.

Discussion
----------

add validator translation 99 for Italian language

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | none
| License       | MIT
| Doc PR        | not needed

This is a followup to PR #37730 for Italian language.

Commits
-------

ad4923f706 add validator translation 99 for Italian language
2020-08-13 09:33:49 +02:00
Massimiliano Arione
ad4923f706
add validator translation 99 for Italian language 2020-08-13 09:29:37 +02:00
Fabien Potencier
7241f658b9 bug #37725 [Form] Fix Guess phpdoc return type (franmomu)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] Fix Guess phpdoc return type

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | -
| License       | MIT
| Doc PR        | -

Since `Guess` is abstract, `static` represents better the return type, so calling `TypeGuess::getBestGuess()` would return `TypeGuess` instead of `Guess`.

Commits
-------

27bb1c499d Fix typehint phpdoc
2020-08-13 09:26:14 +02:00
Grégoire Pineau
cfc53ad732 [Workflow] Choose which Workflow events should be dispatched (fix previous commit) 2020-08-13 09:08:45 +02:00
Stewart Malik
d70074753c [Workflow] Choose which Workflow events should be dispatched 2020-08-13 09:00:04 +02:00
Fabien Potencier
da60fbe6cd Merge branch '5.1'
* 5.1:
  [Validator] RangeTest: fix expected deprecation
  Fix bad merge
  [Yaml] Fix for #36624; Allow PHP constant as first key in block
  Use PHPUnit 9.3 on php 8.
  fix mapping errors from unmapped forms
  [Validator] Add target guards for Composite nested constraints
2020-08-13 08:27:49 +02:00
Fabien Potencier
2b0fdc9857 Merge branch '4.4' into 5.1
* 4.4:
  [Validator] RangeTest: fix expected deprecation
  [Yaml] Fix for #36624; Allow PHP constant as first key in block
  Use PHPUnit 9.3 on php 8.
  fix mapping errors from unmapped forms
  [Validator] Add target guards for Composite nested constraints
2020-08-13 08:24:11 +02:00
Fabien Potencier
a379051c82 Merge branch '3.4' into 4.4
* 3.4:
  [Yaml] Fix for #36624; Allow PHP constant as first key in block
  Use PHPUnit 9.3 on php 8.
  fix mapping errors from unmapped forms
  [Validator] Add target guards for Composite nested constraints
2020-08-13 08:22:32 +02:00
Fabien Potencier
a45428c293 feature #20054 [Console] Different approach on merging application definition (ro0NL)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Console] Different approach on merging application definition

| Q | A |
| --- | --- |
| Branch? | "master" |
| Bug fix? | yes |
| New feature? | not really (refactoring) |
| BC breaks? | no |
| Deprecations? | no |
| Tests pass? | yes |
| Fixed tickets | #19181, #17804, #19909, partially #20030 |
| License | MIT |
| Doc PR | reference to the documentation PR, if any |

Before/After:

``` diff
$ bin/console list -h
Usage:
  list [options] [--] [<namespace>]

Arguments:
  namespace            The namespace name

Options:
      --raw            To output raw command list
      --format=FORMAT  The output format (txt, xml, json, or md) [default: "txt"]
+  -h, --help            Display this help message
+  -q, --quiet           Do not output any message
+  -V, --version         Display this application version
+      --ansi            Force ANSI output
+      --no-ansi         Disable ANSI output
+  -n, --no-interaction  Do not ask any interactive question
+  -e, --env=ENV         The environment name [default: "dev"]
+      --no-debug        Switches off debug mode
+  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  The list command lists all commands:

    php bin/console list

  You can also display the commands for a specific namespace:

    php bin/console list test

  You can also output the information in other formats by using the --format option:

    php bin/console list --format=xml

  It's also possible to get raw list of commands (useful for embedding command runner):

    php bin/console list --raw
```

This could deprecate `getNativeDefinition` or make it a feature as right now it's internal and unused.

edit: resolved the BC break.

edit2: question is.. should this target 2.7?

Commits
-------

553b173a30 [Console] Different approach on merging application definition
2020-08-13 08:19:16 +02:00
Fabien Potencier
acda2dc31e feature #36648 [Notifier] Add Mobyt bridge (Deamon)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Notifier] Add Mobyt bridge

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       |  #33687
| License       | MIT
| Doc PR        | symfony/symfony-docs#13606
| recipe PR   | symfony/recipes#768

Add Mobyt notifier bridge.

In this SMS Provider, you can choose a sort of "quality service" to send the message.

I updated `src/Symfony/Component/Notifier/Message/SmsMessage.php` to add the notification in order to be able to use the notification importance when creating options.

Commits
-------

bf594b75d0 Add Mobyt Notifier bridge
2020-08-13 08:02:00 +02:00
Deamon
bf594b75d0 Add Mobyt Notifier bridge 2020-08-12 18:10:23 +02:00
Fabien Potencier
31c194f7de feature #37359 [Security] Add event to inspect authenticated token before it becomes effective (scheb)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Security] Add event to inspect authenticated token before it becomes effective

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT
| Doc PR        | n/a

Hello there, I'm the author of `scheb/two-factor-bundle`, which extends Symfony's security layer with two-factor authentication. I've been closely following the recent changes by @wouterj to rework the security layer with "authenticators" (great work!). While I managed to make my bundle work with authenticators, I see some limitations in the security layer that I'd like to address to make such extensions easier to implement.

This PR adds a new event, which is disapatched right after the authenticated token has been created by the authenticator, to "announce" it to the application *before* it becomes effective to the security system. The event works similar to `ResponseEvent`, but for security token. It allows listeners to inspect the new token before it becomes effective and - most importantly - apply modifications to it. So components other than the authenticator will be able to influence how the security token looks like, that will be set to the security layer on successful authentication.

Why would you want to do this? Of course I'm looking at this from the 2fa perspective. To make 2fa work, it's necessary to prevent a newly created authenticated token from becoming visible to the security system and therefore exposing its privileges/roles. This is done by replacing the authenticated token with a temporary "TwoFactorToken". Currently I'm doing this through dependency injection, getting all the registered authenticators and decorating them with my own token-exchange logic. This is not very clean and overly complicated, but it works. Adding this event as a hook-in point would allow for a much cleaner integration for any component that wants to have a saying in how the security token should look like.

Commits
-------

20309646b7 [Security] Add event to inspect authenticated token before it becomes effective
2020-08-12 18:06:37 +02:00
Christian Scheb
20309646b7 [Security] Add event to inspect authenticated token before it becomes effective 2020-08-12 18:06:29 +02:00
Christian Flothmann
850389731c stop using the deprecated at() PHPUnit matcher 2020-08-12 16:55:37 +02:00
Grégoire Pineau
3268bdb90c [Workflow] Simplify code + Updated README.md 2020-08-12 15:41:55 +02:00
Grégoire Pineau
25095d8908 feature #37539 [Workflow] Added Context to Workflow Event (epitre)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Workflow] Added Context to Workflow Event

There's also a default context for the initial marking event.

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #37421
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/13947

This time, I need context in the events, because, sometimes, the transition is automatic and sometimes, it is manual. I want to be able to make the difference. I figured using the context for that is a good idea. I hope you do too :)

By the way, I believe it also fixes #37421 . I took @pluk77 request to be able to differentiate an initial marking by having a default context in that case

Commits
-------

bfe07dda83 Added Context to Workflow Event There's also a default context for the initial marking event.
2020-08-12 15:17:24 +02:00
Roland Franssen
553b173a30 [Console] Different approach on merging application definition 2020-08-12 14:42:14 +02:00
Maxime Steinhausser
33c8c3a63d [Validator] RangeTest: fix expected deprecation 2020-08-12 11:54:23 +02:00
noniagriconomie
eb067ed58e [Notifier] add doc for free mobile dsn 2020-08-12 11:21:02 +02:00
Fabien Potencier
5afac1df4e Fix bad merge 2020-08-12 11:06:24 +02:00
Fabien Potencier
9b197fe839 Fix bad merge 2020-08-12 11:05:56 +02:00
Fabien Potencier
78f4a9f410 Merge branch '5.1'
* 5.1:
  Fix for issue #37681
  Revert changes to Table->fillCells()
  [Console] Table: support cells with newlines after a cell with colspan >= 2
  Fix redis connect with empty password
  [Validator] Add BC layer for notInRangeMessage when min and max are set
2020-08-12 10:46:31 +02:00
Fabien Potencier
806ef94e98 Merge branch '4.4' into 5.1
* 4.4:
  Fix for issue #37681
  Revert changes to Table->fillCells()
  [Console] Table: support cells with newlines after a cell with colspan >= 2
  Fix redis connect with empty password
  [Validator] Add BC layer for notInRangeMessage when min and max are set
2020-08-12 10:45:47 +02:00
Fabien Potencier
f3753e93d8 bug #36140 [Validator] Add BC layer for notInRangeMessage when min and max are set (l-vo)
This PR was merged into the 4.4 branch.

Discussion
----------

[Validator] Add BC layer for notInRangeMessage when min and max are set

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #36133
| License       | MIT
| Doc PR        |

According to #36133, the improvement added in  #32435 may lead to a BC break when the developer pass `min` and `max` options and a custom `minMessage` or `maxMessage`. In this case it's expected to receive a `minMessage`/`maxMessage` in the violation but a `notInRangeMessage` is received instead.

So in the following conditions:
- `min` and `max` options are set
- `minMessage` or `maxMessage` is set

A deprecation is triggered. If a limit is violated and matches to the min/max message passed as option (`minMessage` for `min` violated and `maxMessage` for `max` violated), `minMessage/maxMessage` is used in the violation instead of `notInRangeMessage`.

Commits
-------

092d85c947 [Validator] Add BC layer for notInRangeMessage when min and max are set
2020-08-12 10:39:50 +02:00
Fabien Potencier
92eae57fdb bug #35843 [Validator] Add target guards for Composite nested constraints (ogizanagi)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Add target guards for Composite nested constraints

| Q             | A
| ------------- | ---
| Branch?       | 3.4 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix https://github.com/symfony/symfony/pull/35815#pullrequestreview-362719298 <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | N/A

Commits
-------

a08ddf7636 [Validator] Add target guards for Composite nested constraints
2020-08-12 10:12:34 +02:00
Fabien Potencier
7e85a6a6c6 bug #37803 Fix for issue #37681 (Rav)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

Fix for issue #37681

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37681
| License       | MIT
| Doc PR        |

Allow BOM character and comments before `<!DOCTYPE html>` declaration in DomCrawler while choosing a parser implementation

Commits
-------

9bc249e0b9 Fix for issue #37681
2020-08-12 08:20:48 +02:00
Rav
9bc249e0b9 Fix for issue #37681 2020-08-12 08:20:35 +02:00
Ben Ramsey
0bf89cdf71
[Console] allow multiline responses to console questions 2020-08-11 16:25:31 -05:00
Jelle Raaijmakers
17263ca14d Revert changes to Table->fillCells()
These changes were introduced in https://github.com/symfony/symfony/pull/37731
but no longer contributed to the actual fix, which was to perform a
->copyRow().
2020-08-11 19:02:45 +02:00
Fabien Potencier
c56acfa817 Fix tests 2020-08-11 17:45:15 +02:00
Fabien Potencier
fee38131e1 Fix typo 2020-08-11 17:32:41 +02:00
Thomas Calvet
0533f1f63e [ErrorHandler][DebugClassLoader] Add mixed and static return types support 2020-08-11 14:16:16 +02:00
Fabien Bourigault
63cbf0abe8 [Serializer] Add CompiledClassMetadataFactory 2020-08-11 12:10:04 +02:00
Fabien Potencier
a77901d6db bug #37744 [Yaml] Fix for #36624; Allow PHP constant as first key in block (jnye)
This PR was squashed before being merged into the 3.4 branch.

Discussion
----------

[Yaml] Fix for #36624; Allow PHP constant as first key in block

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #36624
| License       | MIT
| Doc PR        |

When using a PHP constant in the first key of a mapping the parser would throw an exception. However if you used a PHP constant in any other key but the first it was allowed. This fix allows PHP constant as the first key.

I've included a test for this parser error along with the fix.

Commits
-------

46f635c492 [Yaml] Fix for #36624; Allow PHP constant as first key in block
2020-08-11 11:42:46 +02:00
Joshua Nye
46f635c492 [Yaml] Fix for #36624; Allow PHP constant as first key in block 2020-08-11 11:42:40 +02:00
Ahmed Raafat
f2b64ecc6a Add name property to the stopwatchEvent 2020-08-11 11:41:23 +02:00
Fabien Potencier
0e9cd90857 bug #37767 [Form] fix mapping errors from unmapped forms (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] fix mapping errors from unmapped forms

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #10519
| License       | MIT
| Doc PR        |

Commits
-------

235920a388 fix mapping errors from unmapped forms
2020-08-11 11:39:48 +02:00
Fabien Potencier
e7617da03f feature #34704 [Messenger] Add method HandlerFailedException::getNestedExceptionOfClass (tyx)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Messenger] Add method HandlerFailedException::getNestedExceptionOfClass

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT
| Doc PR        | in progress

I have many times use this kind of code on my own development. It helps when dealing with specific exception through a Messenger usage.

Example in an ExceptionListener, the exception you get could be a `HandlerFailedException` but you want a specific treatment when the original exception is different (like a RedirectResponse, or Http error code different).

edit: I finally also added a getNestedExceptionOfClass that could be useful too

Commits
-------

e0dd84b426 [Messenger] Add method HandlerFailedException::getNestedExceptionOfClass
2020-08-11 09:52:28 +02:00
Fabien Potencier
0f92b9a584 bug #37731 [Console] Table: support cells with newlines after a cell with colspan >= 2 (GMTA)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Console] Table: support cells with newlines after a cell with colspan >= 2

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

When rendering a table with a cell containing newlines after a cell with
colspan set to at least 2, every line in the cell with newlines except the
first one fails to render.

This case is fixed by calling `->fillCells()` on the unmerged rows and
implementing support for rows that start with a non-zero index for the columns.

While fixing this, I discovered another issue with colspan: if a cell following a
colspanned cell contains enough newlines to make the contents extend further
than the colspanned cell's contents, the cells become misaligned. This is now
also fixed.

Commits
-------

ca11772e3f [Console] Table: support cells with newlines after a cell with colspan >= 2
2020-08-11 09:29:54 +02:00
Jelle Raaijmakers
ca11772e3f [Console] Table: support cells with newlines after a cell with colspan >= 2 2020-08-11 09:29:48 +02:00
Remon van de Kamp
9731451b5a
Revert "[DependencyInjection] Resolve parameters in tag arguments"
This reverts commit 3dba1fe7bf.
2020-08-10 19:30:39 +02:00
Fabien Potencier
2318170181 Fix typo 2020-08-10 16:14:03 +02:00
Alexander Schranz
9946f7fecf Fix redis connect with empty password 2020-08-10 15:30:06 +02:00
Fabien Potencier
a6c27fdd3d feature #37537 [HttpKernel] Provide status code in fragment handler exception (gonzalovilaseca)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpKernel] Provide status code in fragment handler exception

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

We have a use case where it would be useful to retrieve the status code in an exception listener from the exception thrown by the fragment handler, current solution is to extract it from the exception string which is ugly.
With this change we can get the status code from the exception directly.

Commits
-------

81ca1f00a3 [HttpKernel] Provide status code in fragment handler exception
2020-08-10 13:00:38 +02:00
Jérémy Romey
e138cba8cd [Notifier] Add Infobip bridge 2020-08-10 11:56:29 +02:00
Fabien Potencier
b912af9261 Merge branch '5.1'
* 5.1:
  Fix typo
  Fix deprecated libxml_disable_entity_loader
  Add Tagalog translations for validator messages 94, 95, 96 and 99
  PHPUnit's assertContains() performs strict comparisons now.
  [ClassLoader][Routing] Fix namespace parsing on php 8.
  Fix deprecated libxml_disable_entity_loader
  Made reference to PHPUnit\Util\XML::loadfile php5-compatible.
  [Validator] Add missing translations for german and vietnamese
  Modernized deprecated PHPUnit assertion calls
  [Console] The message of "class not found" errors has changed in php 8.
  The PHPUnit\Util\XML class has been removed in PHPUnit 9.3.
  [Console] Make sure we pass a numeric array of arguments to call_user_func_array().
  Remove outdated references from base_js.html.twig file
  [String] We cannot have a "provides" function in test cases.
  Typo: somes styles fixed
  [Serializer] Fix that it will never reach DOMNode
  [Validator] sync translations
  [VarDumper] Improve previous fix on light array coloration
  [Cache] Fix #37667
2020-08-10 10:10:48 +02:00
Fabien Potencier
c44c606b11 Merge branch '4.4' into 5.1
* 4.4:
  Fix typo
  Fix deprecated libxml_disable_entity_loader
  Add Tagalog translations for validator messages 94, 95, 96 and 99
  PHPUnit's assertContains() performs strict comparisons now.
  [ClassLoader][Routing] Fix namespace parsing on php 8.
  Fix deprecated libxml_disable_entity_loader
  Made reference to PHPUnit\Util\XML::loadfile php5-compatible.
  [Validator] Add missing translations for german and vietnamese
  Modernized deprecated PHPUnit assertion calls
  [Console] The message of "class not found" errors has changed in php 8.
  The PHPUnit\Util\XML class has been removed in PHPUnit 9.3.
  [Console] Make sure we pass a numeric array of arguments to call_user_func_array().
  [Serializer] Fix that it will never reach DOMNode
  [Validator] sync translations
  [VarDumper] Improve previous fix on light array coloration
  [Cache] Fix #37667
2020-08-10 10:03:57 +02:00
Fabien Potencier
8062943caf bug #37790 Fix deprecated libxml_disable_entity_loader (fabpot)
This PR was merged into the 4.4 branch.

Discussion
----------

Fix deprecated libxml_disable_entity_loader

| Q             | A
| ------------- | ---
| Branch?       | 4.4 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | n/a

Commits
-------

18c19356ee Fix deprecated libxml_disable_entity_loader
2020-08-10 09:49:03 +02:00
Fabien Potencier
067a140fc5 Fix typo 2020-08-10 09:47:39 +02:00
Fabien Potencier
18c19356ee Fix deprecated libxml_disable_entity_loader 2020-08-10 09:31:28 +02:00
Fabien Potencier
3a04739a83 Merge branch '3.4' into 4.4
* 3.4:
  Add Tagalog translations for validator messages 94, 95, 96 and 99
  PHPUnit's assertContains() performs strict comparisons now.
  [ClassLoader][Routing] Fix namespace parsing on php 8.
  Fix deprecated libxml_disable_entity_loader
  Made reference to PHPUnit\Util\XML::loadfile php5-compatible.
  [Validator] Add missing translations for german and vietnamese
  Modernized deprecated PHPUnit assertion calls
  [Console] The message of "class not found" errors has changed in php 8.
  The PHPUnit\Util\XML class has been removed in PHPUnit 9.3.
  [Console] Make sure we pass a numeric array of arguments to call_user_func_array().
  [Serializer] Fix that it will never reach DOMNode
  [Validator] sync translations
  [VarDumper] Improve previous fix on light array coloration
  [Cache] Fix #37667
2020-08-10 09:27:51 +02:00
Fabien Potencier
f0778ce3e7 minor #37750 Add Tagalog translations for validator messages 94, 95, 96 and 99 (ocrampete16)
This PR was squashed before being merged into the 3.4 branch.

Discussion
----------

Add Tagalog translations for validator messages 94, 95, 96 and 99

| Q             | A
| ------------- | ---
| Branch?       | 3.4 <!-- see below -->
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #... <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

I had a little pocket of free time and decided to add a few translations. I wasn't 100% sure about the most natural way to translate 97 and 98, hence why I left them out for now. I'll add them afterwards when I get more time to think about them.

Commits
-------

9d126e085e Add Tagalog translations for validator messages 94, 95, 96 and 99
2020-08-10 09:15:34 +02:00
Marco Petersen
9d126e085e Add Tagalog translations for validator messages 94, 95, 96 and 99 2020-08-10 09:15:28 +02:00
Fabien Potencier
b45e3ed0e7 bug #37763 Fix deprecated libxml_disable_entity_loader (jderusse)
This PR was merged into the 3.4 branch.

Discussion
----------

Fix deprecated libxml_disable_entity_loader

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | /
| License       | MIT
| Doc PR        | /

Fix deprecation `Function libxml_disable_entity_loader() is deprecated` triggered by https://github.com/php/php-src/pull/5867 in PHP8

Commits
-------

1f19da3936 Fix deprecated libxml_disable_entity_loader
2020-08-10 09:13:15 +02:00
Fabien Potencier
4ace47284d minor #37784 PHPUnit's assertContains() performs strict comparisons (derrabus)
This PR was merged into the 3.4 branch.

Discussion
----------

PHPUnit's assertContains() performs strict comparisons

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Part of #37564
| License       | MIT
| Doc PR        | N/A

In PHPUnit 9.3, `assertContains()` performs a strict comparison which causes a few test failures in our test suite. This PR should fix them.

Commits
-------

9f4dec59a4 PHPUnit's assertContains() performs strict comparisons now.
2020-08-10 09:11:30 +02:00
Fabien Potencier
1dcb67e7e8 minor #37783 [ClassLoader][Routing] Fix namespace parsing on php 8 (derrabus)
This PR was merged into the 3.4 branch.

Discussion
----------

[ClassLoader][Routing] Fix namespace parsing on php 8

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

The way namespace declarations are parsed has changed in php 8 (see php/php-src#5827). This PR should fix the corresponding issues in the ClassLoader and Routing components.

Note that Doctrine Annotations suffers from the same issue (doctrine/annotations#339). I had to run the Routing tests locally with doctrine/annotations#344 applied.

Commits
-------

3d293b298f [ClassLoader][Routing] Fix namespace parsing on php 8.
2020-08-10 09:10:19 +02:00
Alexander M. Turek
9f4dec59a4 PHPUnit's assertContains() performs strict comparisons now. 2020-08-09 14:16:18 +02:00
Alexander M. Turek
3d293b298f [ClassLoader][Routing] Fix namespace parsing on php 8. 2020-08-09 13:28:08 +02:00
Jérémy Derussé
1f19da3936
Fix deprecated libxml_disable_entity_loader 2020-08-09 11:13:53 +02:00
Alexander M. Turek
4bf640543a Made reference to PHPUnit\Util\XML::loadfile php5-compatible. 2020-08-09 11:07:58 +02:00
Fabien Potencier
f4668b5f14 feature #36496 [Notifier] added telegram options (krasilnikovm)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Notifier] added telegram options

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT

I have added `TelegramOptions` model for sending a telegram message with options like the example I have used  `SlackOptions`.

Testing notes:
1) Create telegram bot https://core.telegram.org/bots#creating-a-new-bot
2) Open telegram and join to the created chat
3) Send a message to telegram
for testing, I used  the scripts
[scripts.zip](https://github.com/symfony/symfony/files/4499901/scripts.zip)

Commits
-------

3ba8d8f135 [Notifier] added telegram options
2020-08-09 10:44:53 +02:00
Fabien Potencier
33e7130d65 minor #37761 [Validator] Add missing translations for german and vietnamese (jschaedl)
This PR was squashed before being merged into the 3.4 branch.

Discussion
----------

[Validator] Add missing translations for german and vietnamese

| Q             | A
| ------------- | ---
| Branch?       | 3.4 <!-- see below -->
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| License       | MIT
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

Commits
-------

f4bd34a1a8 [Validator] Add missing translations for german and vietnamese
2020-08-09 10:39:00 +02:00
Jan Schädlich
f4bd34a1a8 [Validator] Add missing translations for german and vietnamese 2020-08-09 10:38:59 +02:00
Fabien Potencier
83b1d71f7f bug #37774 [Console] Make sure we pass a numeric array of arguments to call_user_func_array() (derrabus)
This PR was merged into the 3.4 branch.

Discussion
----------

[Console] Make sure we pass a numeric array of arguments to call_user_func_array()

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

On php 8, the unit tests fail with the following error:

```
ArgumentCountError: array_merge() does not accept unknown named parameters
```

This PR should fix the issue.

Commits
-------

67102c32e6 [Console] Make sure we pass a numeric array of arguments to call_user_func_array().
2020-08-09 10:16:57 +02:00
Fabien Potencier
5c6727211d minor #37773 Modernized deprecated PHPUnit assertion calls (derrabus)
This PR was squashed before being merged into the 3.4 branch.

Discussion
----------

Modernized deprecated PHPUnit assertion calls

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Part of #37564
| License       | MIT
| Doc PR        | N/A

Some assertions have been renamed in PHPUnit 9. PhpUnitBridge should already have polyfills in place for those methods, so it should be save to use them.

Commits
-------

ab417f7040 Modernized deprecated PHPUnit assertion calls
2020-08-09 10:13:56 +02:00
Alexander M. Turek
ab417f7040 Modernized deprecated PHPUnit assertion calls 2020-08-09 10:13:48 +02:00
Fabien Potencier
f8aa85b7e2 minor #37779 [Console] The message of "class not found" errors has changed in php 8 (derrabus)
This PR was merged into the 3.4 branch.

Discussion
----------

[Console] The message of "class not found" errors has changed in php 8

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

The error message that php emits if an unknown class is accessed has changed in php 8. Two tests were failing because of this. But since those tests weren't really about missing classes, I tried to find a more resilient way to implement them.

Commits
-------

8bd861bbc6 [Console] The message of "class not found" errors has changed in php 8.
2020-08-09 10:09:51 +02:00
Alexander M. Turek
8bd861bbc6 [Console] The message of "class not found" errors has changed in php 8. 2020-08-08 21:42:49 +02:00
Alexander M. Turek
8b801c1269 The PHPUnit\Util\XML class has been removed in PHPUnit 9.3. 2020-08-08 21:12:02 +02:00
Alexander M. Turek
67102c32e6 [Console] Make sure we pass a numeric array of arguments to call_user_func_array(). 2020-08-08 17:34:42 +02:00
Alexander M. Turek
46e2a0c517 [String] We cannot have a "provides" function in test cases. 2020-08-08 15:51:54 +02:00
Vladyslav Startsev
32b5b9e1d7 make return type correct 2020-08-08 12:33:44 +03:00
mihail.krasilnikov
3ba8d8f135 [Notifier] added telegram options 2020-08-07 22:08:56 +03:00
Christian Flothmann
235920a388 fix mapping errors from unmapped forms 2020-08-07 15:17:26 +02:00
Fabien Potencier
5e02d86074 Fix CS 2020-08-07 10:44:47 +02:00
Fabien Potencier
7520884bc2 feature #35773 [Notifier] Change notifier recipient handling (jschaedl)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Notifier] Change notifier recipient handling

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #35558 <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | tbd.

According to @wouterj's reasoning in #35558 I did the following to merge the `AdminRecipient` with the `Recipient` class:

- introduced a `EmailRecipientInterface` with `getEmail(): string` methods
- introduced a `RecipientInterface` that is extended by `EmailRecipientInterface` and `SmsRecipientInterface`
- changed `Recipient` class which now holds an email and a phone number property and implements the `EmailRecipientInterface` and the `SmsRecipientInterface`
- changed `NoRecipient` class which now implements the `RecipientInterface`
- removed the `AdminRecipient` and fixed all related type-hints
- introduced an `EmailRecipient` and `SmsRecipient`
- changed the type-hint of the `$recipient` argument in `NotifierInterface::send()`, `Notifier::getChannels()`, `ChannelInterface::notifiy()` and `ChannelInterface::supports()` to `RecipientInterface`
- changed the type hint of the `$recipient` argument in the `as*Message()` of the  `EmailNotificationInterface` and `SmsNotificationInterface` which now uses the introduced interfaces
- changed the type hint of the `$recipient` argument in the static `fromNotification()` factory methods in `EmailMessage` and `SmsMessage` which now uses the introduced interfaces
- changed `EmailChannel` to only support recipients which implement the `EmailRecipientInterface`
- changed `SmsChannel` only supports recipients which implement the `SmsRecipientInterface`

Commits
-------

588607bdd1 [Notifier] Change notifier recipient handling
2020-08-07 10:44:01 +02:00
Jan Schädlich
588607bdd1 [Notifier] Change notifier recipient handling 2020-08-07 10:43:53 +02:00
Jérôme TAMARELLE
c4cda758b5 [Notifier] Add Google Chat bridge 2020-08-07 08:31:44 +02:00
Jérémy Derussé
080f1149a1
Reduce log verbosity for CombinedStore 2020-08-06 10:03:26 +02:00
Fabien Potencier
d66a0a76e2 feature #36692 [HttpClient] add EventSourceHttpClient to consume Server-Sent Events (soyuka)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] add EventSourceHttpClient to consume Server-Sent Events

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | na
| License       | MIT
| Doc PR        | symfony/symfony-docs#...

<details>
 <summary>First implementation</summary>
This patch implements the [w3c Server-Sent Events specification](https://www.w3.org/TR/eventsource/#eventsource) on top of symfony's http client. It provides an `EventSource` class that allows you to interact of server sent events.

Comparing to the Javascript implementation, we won't be able to use the same API. Indeed, in php listeners need to be setup before we connect to the HTTP stream.
I'm not fond of adding a dependency to EventDispatcher from HTTP Client, therefore I'm all ears if you have better solutions.
About event parsing, I wanted to avoid using regular expression and it uses smart data split. Note that I had to concatenate an internal buffer and only handle the data when a newline is found to cover long chunks. This is an alternative to this [react php eventsource](https://github.com/clue/reactphp-eventsource). Note that this implementation is closer to the specification in some cases that are still to be covered by tests (`retry`, `data:value` without space after colon is valid etc.).
</details>

This is an implementation of the [Server-Sent Events specification](https://html.spec.whatwg.org/multipage/server-sent-events.html) based on symfony's HTTP Client. After a few suggestions on the first implementation (see details above), I've implemented a chunk generator with this kind of API:

```php
$client = new EventSourceHttpClient($client, 10);
$source = $client->connect('GET', "http://localhost:8080/events");
while($source) {
    foreach ($client->stream($source, 2) as $r => $chunk) {
        if ($chunk->isTimeout()) {
            dump([
                'timeout' => [
                    'retry' => 1 + count($r->getInfo('previous_info') ?? [])
                ],
            ]);
            continue;
        }
        if ($chunk->isLast()) {
            dump([
                'eof' => [
                    'retries' => count($r->getInfo('previous_info') ?? [])
                ],
            ]);
            $source = null;
            return;
        }

        dump($chunk);
    }
}
```

TODO:
- [x] validate implementation (~~don't use EventDispatcher ?~~, need to be implemented as `stream` instead of `message`)
- [x] default timeout value
- [x] implement retry/reconnection
- [x] tests (do test with super long chunk, retry, bad http content-type response)
- [ ] update changelog
- [ ] document

Commits
-------

12ccca3cd4 [HttpClient] add EventSourceHttpClient to consume Server-Sent Events
2020-08-06 08:59:15 +02:00
soyuka
12ccca3cd4 [HttpClient] add EventSourceHttpClient to consume Server-Sent Events 2020-08-06 08:59:09 +02:00
Fabien Potencier
5e2abc66c2 Fix previous merge 2020-08-06 08:17:52 +02:00
Mohammad Emran Hasan
bd4fd32121 Adds Zulip notifier bridge 2020-08-06 08:16:18 +02:00
Fabien Potencier
b968497770 bug #37748 [Notifier] Fix SentMessage implementation (fabpot)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Notifier] Fix SentMessage implementation

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | n/a

#36611 broke the Notifier when used with Messenger.

/cc @jeremyFreeAgent

Commits
-------

92c28de41b [Notifier] Fix SentMessage implementation
2020-08-06 07:19:29 +02:00
Fabien Potencier
9db0f20c85 feature #37747 [Notifier] Make Freemobile config more flexible (fabpot)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Notifier] Make Freemobile config more flexible

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a<!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | n/a

As Freemobile only supports French phone numbers, let's support French numbers without the international code.

Commits
-------

4dfde6ae7c [Notifier] Make Freemobile config more flexible
2020-08-06 07:18:22 +02:00
Fabien Potencier
e43d6b3baf Merge branch '5.1'
* 5.1:
  fail properly when the required service is not defined
  Fix typo
  [Finder] Fix GitIgnore parser when dealing with (sub)directories and take order of lines into account
  Update UPGRADE-5.0.md
  Added the missing reset tag to mailer.logger_message_listener
  Fix invalid option sslmode
  Updated README for the Mailer component
  fix error with custom function and web profiler routing tab
2020-08-06 07:13:39 +02:00
Fabien Potencier
ea69524de9 Merge branch '4.4' into 5.1
* 4.4:
  fail properly when the required service is not defined
  Fix typo
  [Finder] Fix GitIgnore parser when dealing with (sub)directories and take order of lines into account
  Update UPGRADE-5.0.md
  Added the missing reset tag to mailer.logger_message_listener
  Updated README for the Mailer component
  fix error with custom function and web profiler routing tab
2020-08-06 07:08:30 +02:00
Fabien Potencier
92c28de41b [Notifier] Fix SentMessage implementation 2020-08-06 06:53:52 +02:00
Fabien Potencier
4dfde6ae7c [Notifier] Make Freemobile config more flexible 2020-08-06 06:52:01 +02:00
Gonzalo Vilaseca
81ca1f00a3 [HttpKernel] Provide status code in fragment handler exception 2020-08-04 11:02:58 +02:00
Fabien Potencier
995d784a0d bug #37701 [Serializer] Fix that it will never reach DOMNode (TNAJanssen)
This PR was squashed before being merged into the 3.4 branch.

Discussion
----------

[Serializer] Fix that it will never reach DOMNode

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| License       | MIT
| Doc PR        |

When providing the DOMNode object, the is_object check will return true. This way it will never reach the DOMNode check.

So i moved this check to above the is_object check.

Commits
-------

38787ac785 [Serializer] Fix that it will never reach DOMNode
2020-08-04 08:15:33 +02:00
Alexander Janssen
38787ac785 [Serializer] Fix that it will never reach DOMNode 2020-08-04 08:15:26 +02:00
Fabien Potencier
c0a707f0db feature #37718 [Security] class Security implements AuthorizationCheckerInterface (SimonHeimberg)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Security] class Security implements AuthorizationCheckerInterface

The class has the method of AuthorizationCheckerInterface already.

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       |  <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | <!-- required for new features -->

The class Security has the method for interface AuthorizationCheckerInterface already. By implementing the interface, Security can be passed to methods typehinted with AuthorizationCheckerInterface.

Commits
-------

cea6ebda5b [Security] class Security implements AuthorizationCheckerInterface
2020-08-04 08:13:57 +02:00
Fabien Potencier
6d2ee19b60 Fix CS 2020-08-04 08:11:14 +02:00
Fran Moreno
27bb1c499d Fix typehint phpdoc 2020-08-03 20:22:34 +02:00
Robin Chalas
63407d8201 [Console] Allow disabling auto-exit for single command apps 2020-08-03 17:23:43 +02:00
Christian Flothmann
b7d2b6042b [Validator] sync translations 2020-08-03 15:22:15 +02:00
Fabien Potencier
2ddacad477 Fix typehint 2020-08-02 10:17:48 +02:00
Fabien Potencier
681c66675e feature #37480 [Messenger] add redeliveredAt in RedeliveryStamp construct (qkdreyer)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Messenger] add redeliveredAt in RedeliveryStamp construct

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

---

this would allows one to correctly unserialize a RedeliveryStamp with a custom serializer not using the php serialize function

Commits
-------

64d26836da [Messenger] add redeliveredAt in RedeliveryStamp construct
2020-08-02 10:17:01 +02:00
Quentin Dreyer
64d26836da [Messenger] add redeliveredAt in RedeliveryStamp construct 2020-08-02 10:16:56 +02:00
Fabien Potencier
4105e935ac minor #37669 [EventDispatcher] Minor: Avoid not needed null check in dispatch() (brainexe)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[EventDispatcher] Minor: Avoid not needed null check in dispatch()

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| License       | MIT
| Doc PR        | -

Just found a not needed null check in the heavyly called EventDispatcher::dispatch() method - the $eventName get's always a string now - no null anymore, as it gets the class name instead.

Commits
-------

0d36c11f28 [EventDispatcher] Avoid not needed null check in dispatch()
2020-08-02 10:13:42 +02:00
Fabien Potencier
f76ac74b20 feature #37565 [Validator] Add Isin validator constraint (lmasforne)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Validator] Add Isin validator constraint

Co-Authored-By: Yannis Foucher <33806646+YaFou@users.noreply.github.com>

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #36362
| License       | MIT
| Doc PR        | symfony/symfony-docs#13960

Rebase of https://github.com/symfony/symfony/pull/36368

I asked him by mail and he didn't have time to finish the PR and allowed me to do it.

Commits
-------

8e1ffc8b99 Feature #36362 add Isin validator constraint
2020-08-02 10:06:13 +02:00
Vitaliy Ryaboy
eea41d9655 [Lock] downgrade log.info to log.debug 2020-08-02 09:57:41 +02:00
Laurent Masforné
8e1ffc8b99 Feature #36362 add Isin validator constraint
Feature #36362 typo

Fix PR feedbacks

Fix coding standard

ticket 36362 fix PR feedbacks

Update src/Symfony/Component/Validator/Constraints/IsinValidator.php

Co-Authored-By: Yannis Foucher <33806646+YaFou@users.noreply.github.com>
2020-08-01 14:37:35 +02:00
Simon Heimberg
cea6ebda5b [Security] class Security implements AuthorizationCheckerInterface
The class has the method of AuthorizationCheckerInterface already.
2020-07-31 19:01:17 +02:00
Fabien Potencier
b61fa4480b bug #37671 [Cache] fix saving no-expiry items with ArrayAdapter (philipp-kolesnikov)
This PR was merged into the 3.4 branch.

Discussion
----------

[Cache] fix saving no-expiry items with ArrayAdapter

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37667
| License       | MIT
| Doc PR        |

0 is a special value that means "infinity".

Commits
-------

bdec105a72 [Cache] Fix #37667
2020-07-31 09:57:22 +02:00
Fabien Potencier
de39dbae8f Fix previous merge 2020-07-31 09:51:09 +02:00
marie
859b692240 [Console] add console.signal event 2020-07-31 09:49:38 +02:00
Fabien Potencier
b8529a03a6 Fix CHANGELOG 2020-07-31 09:45:25 +02:00
Jules Pietri
f4679ef08a [Validator] Added support for cascade validation on typed properties 2020-07-31 09:44:26 +02:00
Fabien Potencier
f1dc422394 feature #37243 [DependencyInjection] Resolve parameters in tag arguments (rpkamp)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[DependencyInjection] Resolve parameters in tag arguments

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #35337
| License       | MIT
| Doc PR        | None, yet, will follow if this is accepted

Arguably this could be a BC break if people are actively relying on parameters not being resolved in tag parameters, although I can't come up with a sensible use case for that scenario.

Commits
-------

3dba1fe7bf [DependencyInjection] Resolve parameters in tag arguments
2020-07-31 09:38:46 +02:00
Remon van de Kamp
3dba1fe7bf [DependencyInjection] Resolve parameters in tag arguments 2020-07-31 09:38:40 +02:00
Fabien Potencier
7aaf99d9f2 feature #37415 [Console] added info method to symfony style (titospeakap, titomiguelcosta)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Console] added info method to symfony style

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

It would be nice to have an info method as part of the SymfonyStyle class. This would prevent having to use the \<INFO\> tag, and it is consistent with other methods like warning and error (similar to the types available in monolog)

Commits
-------

4cf1a1e8e6 fixed docblock
204cd739d3 added info method to symfony style
2020-07-31 09:37:19 +02:00
Fabien Potencier
5256323bbb feature #36929 Added a FrenchInflector for the String component (Alexandre-T)
This PR was merged into the 5.2-dev branch.

Discussion
----------

Added a FrenchInflector for the String component

I read in [this blog post](https://symfony.com/blog/new-in-symfony-5-1-deprecated-the-inflector-component) this sentence

> Symfony Inflector component converts words between their singular and plural forms (**for now, only in English**)

So I created a FrenchInflector class implementing the InflectorInterface from the String component. This inflector uses regular expressions and it is tested in the FrenchInflectorTest with a lot of the french exceptions.

| Q             | A
| ------------- | ---
| Branch       | master
| Bug fix      | no
| New feature  | yes
| Deprecations | no
| License       | MIT
| Doc PR        | Not yet

Changelog has been updated, but I'm not sure I did it in the good paragraph.

I don't know if I should update the symfony/symfony-docs, but I have created an example and I could create a PR with it, if you want.

```php
<?php

use Symfony\Component\String\Inflector\FrenchInflector;

$inflector = new FrenchInflector();

$result = $inflector->singularize('dents');     // ['dent']
$result = $inflector->singularize('souris');    // ['souris']
$result = $inflector->singularize('messieurs'); // ['monsieur']

$result = $inflector->pluralize('cinquante'); // ['cinquante']
$result = $inflector->pluralize('pou');       // ['poux']
$result = $inflector->pluralize('cheval');    // ['chevaux']
```

**fabbot.io** is detecting a typo, but this is not. The patch done by fabpot suggests to replace the french 'embarras' word by 'embarrass'. I shall not remove or replace it, because "embarras" is an invariant word.

Commits
-------

d903d9a757 Added a FrenchInflector for the String component French inflector implements InflectorInterface, it uses regexp and it is tested in the FrenchInflectorTest
2020-07-31 09:11:18 +02:00
Fabien Potencier
281a7522dc minor #37538 Add the name of the env to RuntimeException (Simon Frost)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

Add the name of the env to RuntimeException

| Q             | A
| ------------- | ---
| Branch?       | master for features
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets |  
| License | MIT
| Doc PR

if you have the name of the env in the exception message it is much easier to find the error

from -> https://github.com/symfony/dependency-injection/pull/20

Commits
-------

00ab757cbb Add the name of the env to RuntimeException
2020-07-31 08:57:38 +02:00
Simon Frost
00ab757cbb Add the name of the env to RuntimeException 2020-07-31 08:57:33 +02:00
Fabien Potencier
4c40ff8392 Fix typo 2020-07-31 08:55:54 +02:00
Fabien Potencier
203ed71ec1 minor #37542 [Mailer] Updated README for the Mailer component (wouterj)
This PR was merged into the 4.4 branch.

Discussion
----------

[Mailer] Updated README for the Mailer component

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | n/a
| License       | MIT
| Doc PR        | symfony/symfony-docs#13945

I think it's worth adding a second example showcasing the twig integration for 2 reasons:

* If you're used to use this component in the framework, I think it's likely you want Twig integration in standalone apps.
* The integration actually lives in `symfony/twig-bridge`, it won't be very easy to catch while reading the component code - unless you're very comfortable with the Symfony architecture.

Commits
-------

696560c690 Updated README for the Mailer component
2020-07-31 08:54:29 +02:00
Fabien Potencier
bea431935f bug #37560 [Finder] Fix GitIgnore parser when dealing with (sub)directories and take order of lines into account (Jeroeny)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Finder] Fix GitIgnore parser when dealing with (sub)directories and take order of lines into account

| Q             | A
| ------------- | ---
| Branch?       |  4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix https://github.com/symfony/symfony/issues/37424
| License       | MIT

The new regex is made per positive `.gitignore` line. Which is a match group followed by a negative lookbehind with all the negations that were on lines after that line. This also fixes some other bugs that didn't match the `.gitignore` spec and two incorrect tests. I think it's likely that there are more edge cases this PR may not cover, but I haven't found them yet.

See the issue for more info.

Commits
-------

609dcf6b08 [Finder] Fix GitIgnore parser when dealing with (sub)directories and take order of lines into account
2020-07-31 08:51:39 +02:00
Jeroeny
609dcf6b08 [Finder] Fix GitIgnore parser when dealing with (sub)directories and take order of lines into account 2020-07-31 08:51:32 +02:00
Fabien Potencier
374d70568c feature #37620 [Security] Use NullToken while checking authorization (wouterj)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Security] Use NullToken while checking authorization

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #37523
| License       | MIT
| Doc PR        | tbd

This allows voters to grant access to unauthenticated users. E.g. some objects can be viewed by anyone, in this case the voter has to be able to grant access to unauthenticated users.

This *does break* the interface PHPdoc of `TokenInterface`: `getUser()` returns `null` instead of `string|UserInterface`. This is only true when using the new system, so not a real BC break. I think the only thing we can do to "guide" users is to add some custom handling for type errors related to `null` and `UserInterface` methods ("Did you forgot to check for `null` in the Voter?"). Is this something I should add to this PR?

Commits
-------

e37091541c Use NullToken while checking authorization
2020-07-31 08:44:47 +02:00
Fabien Potencier
bd591057e4 feature #37711 [Router] allow to use \A and \z as regex start and end (zlodes)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Router] allow to use \A and \z as regex start and end

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | yes
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | —
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Some people are using `\A` and `\z` as alternative for `^` and `$` for route requirements.

E.g.: UUID pattern in ramsey/uuid (many routes broke after updating the lib):
569e93ac4e (diff-23c8536f7d61e7d839fd1c93ce0dd354L30-R31)

References:
https://www.rexegg.com/regex-anchors.html#A
https://www.rexegg.com/regex-anchors.html#z

P.S.: It is my first PR into Symfony. Maybe I should fix something, just let me know.

Commits
-------

f752eeeaa6 [Router] allow to use \A and \z as regex start and end
2020-07-31 08:30:16 +02:00
Zlatoslav Desyatnikov
f752eeeaa6 [Router] allow to use \A and \z as regex start and end 2020-07-31 08:30:09 +02:00
Fabien Potencier
bfc0351da6 bug #37654 [Messenger] Fix invalid option sslmode in AmazonSqs bridge (jderusse)
This PR was merged into the 5.1 branch.

Discussion
----------

[Messenger] Fix invalid option sslmode in AmazonSqs bridge

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | />
| License       | MIT
| Doc PR        | /

The sslmode option allows people to use AmazonSqs with non-offical endpoint like the [asyncaws/testing-sqs](https://hub.docker.com/r/asyncaws/testing-sqs) docker image

By fixing precedence of DNS options in https://github.com/symfony/symfony/pull/37269 I introduced a bug that trigger an exception `Unknown option found: [sslmode]`. I apologize for this

This PR adds `sslmode` in list of allowed options

Commits
-------

afbd51b368 Fix invalid option sslmode
2020-07-31 08:25:05 +02:00
Fabien Potencier
13a5e47b97 feature #37703 Update StopwatchPeriod.php (ThomasLandauer)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

Update StopwatchPeriod.php

Adding `__toString()`, analogous to [`StopwatchEvent`](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Stopwatch/StopwatchEvent.php#L242)

| Q             | A
| ------------- | ---
| Branch?       | master for features
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        | none

Commits
-------

d3c2911f46 Update StopwatchPeriod.php
2020-07-31 08:22:10 +02:00
Thomas Landauer
d3c2911f46 Update StopwatchPeriod.php 2020-07-31 08:22:04 +02:00
Fabien Potencier
e411c96718 feature #37696 [Routing] Allow inline definition of requirements and defaults for host (julienfalque)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Routing] Allow inline definition of requirements and defaults for host

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/14007

This PR extends the support of inline routing requirements and defaults to the host part, which can also contain parameters.

Commits
-------

1501476d52 [Routing] Allow inline definition of requirements and defaults for host
2020-07-30 10:44:46 +02:00
Julien Falque
1501476d52
[Routing] Allow inline definition of requirements and defaults for host 2020-07-29 18:19:41 +02:00
Laurent VOULLEMIER
cef16f591f [VarDumper] Improve previous fix on light array coloration 2020-07-29 17:09:23 +02:00
Nicolas Grekas
e983035e1a Merge branch '5.1'
* 5.1:
  reduce column length for MySQL 5.6 compatibility
  Minor improvement
  Removed redundant strtolower in ConsumeMessagesCommand
  getContainer cannot return null anymore
  HttpClient profiler error
  Fix RedisStore constructor signature
  Bump Symfony version to 5.1.4
  Update VERSION for 5.1.3
  Update CHANGELOG for 5.1.3
  Bump Symfony version to 4.4.12
  Update VERSION for 4.4.11
  Update CHANGELOG for 4.4.11
  Bump Symfony version to 3.4.44
  updated VERSION for 3.4.43
  update CONTRIBUTORS for 3.4.43
  updated CHANGELOG for 3.4.43
  Fix author for class CachePoolClearerCacheWarmer
2020-07-29 16:54:40 +02:00
Nicolas Grekas
ffa50acd3a Merge branch '4.4' into 5.1
* 4.4:
  reduce column length for MySQL 5.6 compatibility
  Minor improvement
  Removed redundant strtolower in ConsumeMessagesCommand
  Fix RedisStore constructor signature
  Bump Symfony version to 4.4.12
  Update VERSION for 4.4.11
  Update CHANGELOG for 4.4.11
  Bump Symfony version to 3.4.44
  updated VERSION for 3.4.43
  update CONTRIBUTORS for 3.4.43
  updated CHANGELOG for 3.4.43
2020-07-29 16:51:18 +02:00
Christian Flothmann
bc5f35c609 reduce column length for MySQL 5.6 compatibility 2020-07-29 10:26:17 +02:00
Valentin Udaltsov
e288834cda
Removed redundant strtolower in ConsumeMessagesCommand 2020-07-29 04:50:45 +03:00
Anatoly Pashin
6831271feb
Fix RedisStore constructor signature
This is a fix for a regression from #37590
2020-07-27 11:39:16 +10:00
Philipp Kolesnikov
bdec105a72 [Cache] Fix #37667 2020-07-26 15:13:16 +10:00
Matthias Dötsch
0d36c11f28 [EventDispatcher] Avoid not needed null check in dispatch() 2020-07-25 23:01:31 +02:00
Jérémy Derussé
afbd51b368
Fix invalid option sslmode 2020-07-24 13:53:49 +02:00
Fabien Potencier
fd6181c8b5 Bump Symfony version to 5.1.4 2020-07-24 06:28:10 +02:00
Fabien Potencier
b1ce16147c Update VERSION for 5.1.3 2020-07-24 06:22:56 +02:00
Fabien Potencier
f3cfae8ea7 Bump Symfony version to 4.4.12 2020-07-24 06:14:13 +02:00
Fabien Potencier
3cfbf521a4 Update VERSION for 4.4.11 2020-07-24 06:10:09 +02:00
Fabien Potencier
81fadc9cc1 Bump Symfony version to 3.4.44 2020-07-24 06:07:51 +02:00
Fabien Potencier
5012c9237f updated VERSION for 3.4.43 2020-07-24 05:48:59 +02:00
Nicolas Grekas
0ab5eeddf9 Merge branch '5.1'
* 5.1:
  Allows RedisClusterProxy instance in Lock RedisStore
2020-07-23 19:22:39 +02:00
Nicolas Grekas
ef1566e999 Merge branch '5.0' into 5.1
* 5.0:
  Allows RedisClusterProxy instance in Lock RedisStore
2020-07-23 19:22:30 +02:00
Nicolas Grekas
9f67dd8a7c Merge branch '4.4' into 5.0
* 4.4:
  Allows RedisClusterProxy instance in Lock RedisStore
2020-07-23 19:20:42 +02:00
Nicolas Grekas
0eae7a6578 bug #37590 Allows RedisClusterProxy instance in Lock RedisStore (jderusse)
This PR was merged into the 4.4 branch.

Discussion
----------

Allows RedisClusterProxy instance in Lock RedisStore

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37476
| License       | MIT
| Doc PR        | /

This PR allow clients instance of RedisClusterProxy created by the StoreFactory in #28691 /cc @nicolas-grekas

Commits
-------

8ef63cd6bc Allows RedisClusterProxy instance in Lock RedisStore
2020-07-23 19:20:20 +02:00
Nicolas Grekas
36933f2962 minor #37638 [HttpClient] Fix bad testRetryTransportError in AsyncDecoratorTraitTest (brentybh)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] Fix bad testRetryTransportError in AsyncDecoratorTraitTest

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

Issues in the test:
1. `TransportExceptionInterface` is not `use`d (imported)
2. The catch block will not be executed (even the above 1 is fixed) because
the exception (of `chunked-broken`) will be thrown only when `getContent()` is called
The header is OK, status is 200, and we only asserted `getStatusCode()`
So this test made no sense.

Commits
-------

585536a688 [HttpClient] Fix bad testRetryTransportError in AsyncDecoratorTraitTest
2020-07-23 19:01:53 +02:00
Bohan Yang
585536a688 [HttpClient] Fix bad testRetryTransportError in AsyncDecoratorTraitTest 2020-07-23 19:01:21 +02:00
Nicolas Grekas
91487707db Merge branch '5.1'
* 5.1:
  Allow doctrine/persistence 2
  Fix Redis tests
  [DoctrineBridge] Bump doctrine/data-fixtures.
2020-07-23 18:56:54 +02:00
Nicolas Grekas
20cf5df00b Merge branch '5.0' into 5.1
* 5.0:
  Allow doctrine/persistence 2
  Fix Redis tests
  [DoctrineBridge] Bump doctrine/data-fixtures.
2020-07-23 18:55:47 +02:00
Nicolas Grekas
081ad138f7 Merge branch '4.4' into 5.0
* 4.4:
  Allow doctrine/persistence 2
  Fix Redis tests
  [DoctrineBridge] Bump doctrine/data-fixtures.
2020-07-23 18:54:02 +02:00
Alexander M. Turek
cd22fe6c92 Allow doctrine/persistence 2 2020-07-23 18:49:41 +02:00
Jérémy Derussé
f524c85161
Fix Redis tests 2020-07-23 14:42:41 +02:00
Jérémy Derussé
8ef63cd6bc
Allows RedisClusterProxy instance in Lock RedisStore 2020-07-23 13:31:42 +02:00
Nicolas Grekas
e213cc76eb Merge branch '5.1'
* 5.1:
  [Messenger] fix computing the id of same-name middleware
2020-07-23 12:40:28 +02:00
Nicolas Grekas
ea258254d0 Merge branch '5.0' into 5.1
* 5.0:
  [Messenger] fix computing the id of same-name middleware
2020-07-23 12:40:24 +02:00
Nicolas Grekas
da30c7a4e8 Merge branch '4.4' into 5.0
* 4.4:
  [Messenger] fix computing the id of same-name middleware
2020-07-23 12:40:15 +02:00
Nicolas Grekas
b7c6d20181 [Messenger] fix computing the id of same-name middleware 2020-07-23 12:40:00 +02:00
Nicolas Grekas
ec38464335 Merge branch '5.1'
* 5.1:
  Connect to RedisCluster with password auth
  Fix PHPUnit 8.5 deprecations.
  Fix EmailHeaderSame to make use of decoded value
  Allow same middleware to be used multiple times with different arguments
2020-07-23 12:04:35 +02:00
Nicolas Grekas
62dbb9a39a Merge branch '5.0' into 5.1
* 5.0:
  Connect to RedisCluster with password auth
  Fix PHPUnit 8.5 deprecations.
  Fix EmailHeaderSame to make use of decoded value
  Allow same middleware to be used multiple times with different arguments
2020-07-23 12:04:31 +02:00
Nicolas Grekas
7373802d04 Merge branch '4.4' into 5.0
* 4.4:
  Connect to RedisCluster with password auth
  Fix PHPUnit 8.5 deprecations.
  Fix EmailHeaderSame to make use of decoded value
  Allow same middleware to be used multiple times with different arguments
2020-07-23 12:04:24 +02:00
Nicolas Grekas
df1a1ff069 bug #37583 [Mime] Fix EmailHeaderSame to make use of decoded value (evertharmeling)
This PR was merged into the 4.4 branch.

Discussion
----------

[Mime] Fix EmailHeaderSame to make use of decoded value

Fixes #35062

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  |no
| Deprecations? | no
| Tickets       | Fix #35062
| License       | MIT

Commits
-------

8a3f50746d Fix EmailHeaderSame to make use of decoded value
2020-07-23 11:59:39 +02:00
Nicolas Grekas
0d867bcc0d bug #37569 [Messenger] Allow same middleware to be used multiple times with different arguments (HypeMC)
This PR was merged into the 4.4 branch.

Discussion
----------

[Messenger] Allow same middleware to be used multiple times with different arguments

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37568
| License       | MIT
| Doc PR        | -

Middleware service names now take into account arguments as well to allow the same middleware to be used multiple times with different arguments:
```yaml
framework:
    messenger:
        buses:
            messenger.bus.default:
                middleware:
                    - doctrine_ping_connection: ['main']
                    - doctrine_ping_connection: ['logs']
```

Commits
-------

d10e43d085 Allow same middleware to be used multiple times with different arguments
2020-07-23 11:57:42 +02:00
Michal Forbak
e873ddd72c Connect to RedisCluster with password auth
Currently it is not possible to connect to RedisCluster with password. AUTH param is described in documentation (last example) https://symfony.com/doc/current/components/cache/adapters/redis_adapter.html#configure-the-connection but totally ignored in the code and connection fails

```
RedisAdapter::createConnection(
    'redis:?host[localhost]&host[localhost:6379]&host[/var/run/redis.sock:]&auth=my-password&redis_cluster=1'
);
```

See RedisCluster usage here https://github.com/phpredis/phpredis/blob/develop/cluster.markdown#declaring-a-cluster-with-an-array-of-seeds
2020-07-23 11:54:41 +02:00
Nicolas Grekas
c971a27f9e Merge branch '3.4' into 4.4
* 3.4:
  Fix PHPUnit 8.5 deprecations.
2020-07-23 11:48:09 +02:00
Alexander M. Turek
ec525e6e04 Fix PHPUnit 8.5 deprecations. 2020-07-23 11:37:51 +02:00
Nicolas Grekas
b72e9c28da Merge branch '5.1'
* 5.1:
  fix merge
  Require PHPUnit 9.3 on PHP 8
  [Cache] fix catching auth errors
  Fix CS
  [FrameworkBundle] set default session.handler alias if handler_id is not provided
  Fix CS
  Readability update
  Removed @internal from Composite
  Fix checks for phpunit releases on Composer 2 (resolves #37601)
  [Messenger] fix ignore account & endpoint options amazon sqs connection
  [Serializer] Support multiple levels of discriminator mapping
  Use hexadecimal numerals instead of hexadecimals in strings to represent error codes.
  [SCA] Minor fixes on tests
  [WebProfilerBundle] modified url generation to use absolute urls
  [Mailer] Fix reply-to functionality in the SendgridApiTransport
  [Mime] Fix compat with HTTP requests
  ticket_36879 - Fix mandrill raw http request setting from email/name
2020-07-23 10:36:44 +02:00
Nicolas Grekas
1b7714a05c Merge branch '5.0' into 5.1
* 5.0:
  fix merge
  Require PHPUnit 9.3 on PHP 8
  [Cache] fix catching auth errors
  Fix CS
  [FrameworkBundle] set default session.handler alias if handler_id is not provided
  Fix CS
  Readability update
  Fix checks for phpunit releases on Composer 2 (resolves #37601)
  [Serializer] Support multiple levels of discriminator mapping
  Use hexadecimal numerals instead of hexadecimals in strings to represent error codes.
  [SCA] Minor fixes on tests
  [WebProfilerBundle] modified url generation to use absolute urls
  [Mailer] Fix reply-to functionality in the SendgridApiTransport
  [Mime] Fix compat with HTTP requests
  ticket_36879 - Fix mandrill raw http request setting from email/name
2020-07-23 10:36:24 +02:00
Nicolas Grekas
5d79383028 Merge branch '4.4' into 5.0
* 4.4:
  fix merge
  Require PHPUnit 9.3 on PHP 8
  [Cache] fix catching auth errors
  Fix CS
  [FrameworkBundle] set default session.handler alias if handler_id is not provided
  Fix CS
  Readability update
  Fix checks for phpunit releases on Composer 2 (resolves #37601)
  [Serializer] Support multiple levels of discriminator mapping
  Use hexadecimal numerals instead of hexadecimals in strings to represent error codes.
  [SCA] Minor fixes on tests
  [WebProfilerBundle] modified url generation to use absolute urls
  [Mailer] Fix reply-to functionality in the SendgridApiTransport
  [Mime] Fix compat with HTTP requests
  ticket_36879 - Fix mandrill raw http request setting from email/name
2020-07-23 10:36:09 +02:00
Nicolas Grekas
8103b307c8 fix merge 2020-07-23 10:35:20 +02:00
Nicolas Grekas
50505cb9d2 Merge branch '3.4' into 4.4
* 3.4:
  [Cache] fix catching auth errors
  Fix CS
  [FrameworkBundle] set default session.handler alias if handler_id is not provided
  Fix CS
  Readability update
  Fix checks for phpunit releases on Composer 2 (resolves #37601)
  [SCA] Minor fixes on tests
2020-07-23 10:31:43 +02:00
Nicolas Grekas
ee6b5145bf [Cache] fix catching auth errors 2020-07-23 10:10:45 +02:00
Fabien Potencier
6b92038e1c bug #37629 [Messenger] fix ignored account & endpoint options amazon sqs connection (surikman)
This PR was merged into the 5.1 branch.

Discussion
----------

[Messenger] fix ignored account & endpoint options amazon sqs connection

| Q             | A
| ------------- | ---
| Branch?       | 5.1<!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #37598   <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

Commits
-------

fc90a3b7c6 [Messenger] fix ignore account & endpoint options amazon sqs connection
2020-07-23 08:50:17 +02:00
vudaltsov
8958ce12a1 Removed @internal from Composite 2020-07-23 08:35:25 +02:00
Evert Harmeling
8a3f50746d
Fix EmailHeaderSame to make use of decoded value
Fixes #35062
2020-07-22 14:10:07 +02:00
Juraj Surman
fc90a3b7c6 [Messenger] fix ignore account & endpoint options amazon sqs connection 2020-07-21 17:23:14 +02:00
Jeroen Noten
324ad95fee [Serializer] Support multiple levels of discriminator mapping 2020-07-21 17:17:25 +02:00
Wouter de Jong
e37091541c Use NullToken while checking authorization
This allows to e.g. have some objects that can be viewed by anyone (even unauthenticated users).
2020-07-20 21:46:53 +02:00
Fabien Potencier
8a7c776b92 Merge branch '5.1'
* 5.1:
  [Mailer] Fix failover transport
2020-07-20 18:31:06 +02:00
Fabien Potencier
8b673f5a81 [Mailer] Fix failover transport 2020-07-20 16:15:11 +02:00
Arek Bochinski
e9f7769111 Use hexadecimal numerals instead of hexadecimals in strings to represent error codes. 2020-07-20 09:00:36 +02:00
Thomas Calvet
b352ff08ad [SCA] Minor fixes on tests 2020-07-16 11:41:49 +02:00
efelo
715c793070 [HttpKernel] added password hiding in request data collector raw content
The password was already hidden in POST parameters, but still remained visible in raw content

[HttpKernel] added password hiding in request data collector raw content

The password was already hidden in POST parameters, but still remained visible in raw content

[HttpKernel] added password hiding in request data collector raw content

The password was already hidden in POST parameters, but still remained visible in raw content
2020-07-15 14:56:16 +02:00
Fabien Potencier
8308861b70 bug #36888 [Mailer] Fix mandrill raw http request setting from email/name (JohJohan)
This PR was merged into the 4.4 branch.

Discussion
----------

[Mailer] Fix mandrill raw http request setting from email/name

| Q             | A
| ------------- | ---
| Branch?       | 4.4, 5.0, 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #36879
| License       | MIT
| Doc PR        | None

As describe in https://github.com/symfony/symfony/issues/36879 there is a bug in sending raw http request to mandrill it will not set from email/name correct.

As you can see i make sure to set `from_email` and `from_name` correct now and changed the unit test to check correct you can see the doc that the format is correct https://mandrillapp.com/api/docs/messages.curl.html#method-send-raw

Commits
-------

6128dd0b75 ticket_36879 - Fix mandrill raw http request setting from email/name
2020-07-15 14:27:58 +02:00
Fabien Potencier
a4550dac6a feature #37479 [HttpFoundation] Added File::getContent() (lyrixx)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpFoundation] Added File::getContent()

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

---

This is a very simple PR but I think it increases the DX when working
with uploaded files: I looked at for this method and I did not found it.
So I had to check witch method returns the "pathname" or to remember I
can cast the object to string to get its pathname.

It's a small detail, but IMHO it's better with it.

About file_get_contents vs stream: let's be simple here. If one want a
stream, they can use the code they always used for it :)

Commits
-------

50d5167a66 [HttpFoundation] Added File::getContent()
2020-07-15 14:24:15 +02:00
Fabien Potencier
fd13f5f8e9 bug #37527 [Mailer] Fix reply-to functionality in the SendgridApiTransport (jt2k)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Mailer] Fix reply-to functionality in the SendgridApiTransport

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

When sending a message using the `SendgridApiTransport`, the reply-to address was being ignored. In other transports, the reply to can be set using headers, but SendGrid requires that certain fields be added explicitly to the API payload. This is already handled for From, To, Cc, Bcc, and Subject, but was not handled for Reply-To. This change extracts the reply to address from the `Email` object and adds it to the payload.

Note that the `Email` object allows for multiple Reply-To addresses, but SendGrid only supports a single one, so I am just using the first element of the array.

I also fixed a link in a comment to SendGrid's documentation explaining the reserved headers that are not allowed.

Commits
-------

2cf25d1055 [Mailer] Fix reply-to functionality in the SendgridApiTransport
2020-07-15 14:22:44 +02:00
Jason Tan
2cf25d1055 [Mailer] Fix reply-to functionality in the SendgridApiTransport 2020-07-15 14:22:36 +02:00
Fabien Potencier
f617380af5 bug #37581 [Mime] Fix compat with HTTP requests (fabpot)
This PR was merged into the 4.4 branch.

Discussion
----------

[Mime] Fix compat with HTTP requests

| Q             | A
| ------------- | ---
| Branch?       | 4.4 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #37500, Fix #36738, Fix #35443
| License       | MIT
| Doc PR        | n/a

Commits
-------

52e7d7cf17 [Mime] Fix compat with HTTP requests
2020-07-15 14:00:31 +02:00
Fabien Potencier
502d6fba75 Merge branch '5.1'
* 5.1:
  [DependencyInjection][Config] Use several placeholder unique prefixes for dynamic placeholder values
  [Mime] Keep Sender full address when used by non-SMTP transports
  Update MimeTypes.php
2020-07-15 12:59:44 +02:00
Fabien Potencier
28e072a8ec Merge branch '5.0' into 5.1
* 5.0:
  [DependencyInjection][Config] Use several placeholder unique prefixes for dynamic placeholder values
  [Mime] Keep Sender full address when used by non-SMTP transports
  Update MimeTypes.php
2020-07-15 12:53:22 +02:00
Fabien Potencier
ba1b05e1b6 Merge branch '4.4' into 5.0
* 4.4:
  [DependencyInjection][Config] Use several placeholder unique prefixes for dynamic placeholder values
  [Mime] Keep Sender full address when used by non-SMTP transports
  Update MimeTypes.php
2020-07-15 12:53:08 +02:00
Fabien Potencier
b34abaff98 bug #37580 [Mime] Keep Sender full address when used by non-SMTP transports (fabpot)
This PR was merged into the 4.4 branch.

Discussion
----------

[Mime] Keep Sender full address when used by non-SMTP transports

| Q             | A
| ------------- | ---
| Branch?       | 4.4 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | n/a

refs #36178

The `Envelope` is an SMTP concept. The Sender is used in the `MAIL FROM` SMTP command, where only an address is supported. But we are also supporting non-SMTP transports, where the Sender might also be used as the `From` header, where a full mailbox is supported.

To take into account the 2 usages, this PR keeps the full mailbox in the Envelope and let the SMTP class only use the address (which was already the case anyway).

Commits
-------

1ca9be77aa [Mime] Keep Sender full address when used by non-SMTP transports
2020-07-15 12:52:19 +02:00
Fabien Potencier
52e7d7cf17 [Mime] Fix compat with HTTP requests 2020-07-15 12:07:33 +02:00
Nicolas Grekas
5a61446c3c minor #37422 [Mime] switching source of mime types from Apache to "MIME-db" (Daniel González)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Mime] switching source of mime types from Apache to "MIME-db"

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37412
| License       | MIT
| Doc PR        | no

Commits
-------

ebea452f57 [Mime] switching source of mime types from Apache to "MIME-db"
2020-07-15 10:28:50 +02:00
Daniel González
ebea452f57 [Mime] switching source of mime types from Apache to "MIME-db" 2020-07-15 10:28:42 +02:00
Thomas Calvet
3d754ad688 [DependencyInjection][Config] Use several placeholder unique prefixes for dynamic placeholder values 2020-07-15 10:27:46 +02:00
Fabien Potencier
1ca9be77aa [Mime] Keep Sender full address when used by non-SMTP transports 2020-07-15 08:28:59 +02:00
jersoe
f6b71cfa97 Update MimeTypes.php
Typo in exception message on line 140.
2020-07-14 10:23:12 +02:00
HypeMC
d10e43d085 Allow same middleware to be used multiple times with different arguments 2020-07-13 20:19:17 +02:00
Nicolas Grekas
ba4d57bb5f Merge branch '5.1'
* 5.1:
  [Cache] fix merge
2020-07-13 11:17:24 +02:00
Nicolas Grekas
85da081614 [Cache] fix merge 2020-07-13 11:17:19 +02:00
Nicolas Grekas
d8338dc358 minor #36799 Remove some magic from TypeValidator logic and OptionsResolver type verify logic (drealecs)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

Remove some magic from TypeValidator logic and OptionsResolver type verify logic

| Q             | A
| ------------- | ---
| Branch?       | 5.0
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| License       | MIT

Following discussion on https://twitter.com/Ocramius/status/1260236117129015297
The changes in this PR could ensure that types that can be verified by the TypeValidator is limited and there is no way to magically use it.
For example you can break it by defining you own function like:
```php
function is_usercollection {
    return true;
}
```
that will validate any value that have the validator type as 'UserCollection'.

Another example would be defining `is_lower` or `ctype_int` that would also break the implementation.

Commits
-------

e8c9049a5a Remove some magic from TypeValidator logic and OptionsResolver type verify logic
2020-07-13 11:15:52 +02:00
Alexandru Patranescu
e8c9049a5a Remove some magic from TypeValidator logic and OptionsResolver type verify logic 2020-07-13 11:15:37 +02:00
Nicolas Grekas
ef19a03b2b Merge branch '5.1'
* 5.1:
  [Cache] Use the default expiry when saving (not when creating) items
  Fix typo
  Fix DBAL deprecation
  [Form] Fix ChoiceType translation domain
  Add Tagalog translations for new form messages
  [Form] Add missing vietnamese translations
  sync translations from master
  [OptionsResolver] Fix force prepend normalizer
  add vietnamese translation for html5 color validation
2020-07-12 14:58:15 +02:00
Nicolas Grekas
c87847c361 Merge branch '5.0' into 5.1
* 5.0:
  [Cache] Use the default expiry when saving (not when creating) items
  Fix typo
  Fix DBAL deprecation
  [Form] Fix ChoiceType translation domain
  Add Tagalog translations for new form messages
  [Form] Add missing vietnamese translations
  sync translations from master
  [OptionsResolver] Fix force prepend normalizer
  add vietnamese translation for html5 color validation
2020-07-12 14:58:00 +02:00
Nicolas Grekas
afd9760357 Merge branch '4.4' into 5.0
* 4.4:
  [Cache] Use the default expiry when saving (not when creating) items
  Fix typo
  Fix DBAL deprecation
  [Form] Fix ChoiceType translation domain
  Add Tagalog translations for new form messages
  [Form] Add missing vietnamese translations
  sync translations from master
  [OptionsResolver] Fix force prepend normalizer
  add vietnamese translation for html5 color validation
2020-07-12 14:51:51 +02:00
Nicolas Grekas
701161eb40 Merge branch '3.4' into 4.4
* 3.4:
  [Cache] Use the default expiry when saving (not when creating) items
2020-07-12 14:49:36 +02:00
Nicolas Grekas
a397c490b0 bug #37562 [Cache] Use the default expiry when saving (not when creating) items (philipp-kolesnikov)
This PR was merged into the 3.4 branch.

Discussion
----------

[Cache] Use the default expiry when saving (not when creating) items

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37263
| License       | MIT
| Doc PR        |

This PR is for align expiration handling in ChainAdapter with ChainCache as proposed in #37263.

Commits
-------

49e9f3229c [Cache] Use the default expiry when saving (not when creating) items
2020-07-12 14:39:01 +02:00
Philipp Kolesnikov
49e9f3229c [Cache] Use the default expiry when saving (not when creating) items 2020-07-12 14:37:39 +02:00
Nicolas Grekas
c4e47fdd65 Merge branch '3.4' into 4.4
* 3.4:
  Fix DBAL deprecation
  [Form] Fix ChoiceType translation domain
  Add Tagalog translations for new form messages
  [Form] Add missing vietnamese translations
  sync translations from master
  add vietnamese translation for html5 color validation
2020-07-12 12:34:29 +02:00
Nicolas Grekas
4273aedfae Fix DBAL deprecation 2020-07-12 12:21:23 +02:00
Nicolas Grekas
a56f6482a5 bug #37521 [Form] Fix ChoiceType translation domain (VincentLanglet)
This PR was squashed before being merged into the 3.4 branch.

Discussion
----------

[Form] Fix ChoiceType translation domain

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? |no
| Tickets       | Fix #...
| License       | MIT
| Doc PR        | symfony/symfony-docs#...

When using
```
->add('foo', ChoiceType::class, [
    'label'       => 'label',
    'translation_domain' => false,
    'choices'     => [
        'choice.no'  => false,
        'choice.yes' => true,
    ],
    'choice_translation_domain' => 'messages',
    'expanded'    => true,
    'required'    => false,
    'placeholder' => false,
]);
```

I discovered that the choices was not translated.

Seems like it's because the subForm is using the `translation_domain` instead of the `choice_translation_domain`.

Commits
-------

2effda79ea [Form] Fix ChoiceType translation domain
2020-07-12 11:52:47 +02:00
Vincent Langlet
2effda79ea [Form] Fix ChoiceType translation domain 2020-07-12 11:52:40 +02:00
Nicolas Grekas
a10ff4cb00 bug #37550 [OptionsResolver] Fix force prepend normalizer (hason)
This PR was merged into the 4.4 branch.

Discussion
----------

[OptionsResolver] Fix force prepend normalizer

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        |

Commits
-------

6eb836b6f9 [OptionsResolver] Fix force prepend normalizer
2020-07-12 11:44:05 +02:00
Nicolas Grekas
ae91683ba4 minor #37552 [Form] sync translations from master (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] sync translations from master

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

acea9be6d3 sync translations from master
2020-07-12 11:42:44 +02:00
Nicolas Grekas
d705b21def minor #37555 Add Tagalog translations for new form messages (ocrampete16)
This PR was squashed before being merged into the 3.4 branch.

Discussion
----------

Add Tagalog translations for new form messages

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       |
| License       | MIT
| Doc PR        |

This PR adds Tagalog translations for the new form messages @xabbuh added in https://github.com/symfony/symfony/pull/37552.

~~As I'm not aware of any Filipinos that regularly review Symfony pull requests, I'm going to ask my mother to proof-read this first before I remove the "WIP" label from the title. :)~~

Commits
-------

1809b7c5eb Add Tagalog translations for new form messages
2020-07-12 11:42:01 +02:00
Marco Petersen
1809b7c5eb Add Tagalog translations for new form messages 2020-07-12 11:41:55 +02:00
Jan Schädlich
68e2b34a9f [Form] Add missing vietnamese translations 2020-07-12 11:41:09 +02:00
Fabien Potencier
63f8827cf0 feature #36178 [Mime] allow non-ASCII characters in local part of email (dmaicher)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Mime] allow non-ASCII characters in local part of email

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | https://github.com/symfony/symfony/issues/34932
| License       | MIT
| Doc PR        | -

This fixes https://github.com/symfony/symfony/issues/34932 by allowing non-ASCII characters in the local part of emails.

I tried this using 3 different smtp servers (gmail, mailgun and local postfix) and for me this just works in case there are non-ASCII characters in the local part of emails. Emails are correctly delivered.

PHPMailer does this in the same way: https://github.com/PHPMailer/PHPMailer/blob/master/src/PHPMailer.php#L1411

This is also in line with the behavior of Swiftmailer (< 6.1) **before** this commit that introduced the `IdnAddressEncoder`: 6a87efd39b (diff-e5f85d26733017e183b2633ae3c433f0R31)

I'm not an expert when it comes to SMTP and all the different RFCs out there 😕 But for me this exception seems not needed.

Maybe @c960657 can help here?

Commits
-------

d057dffcd6 [Mime] allow non-ASCII characters in local part of email
2020-07-10 18:20:57 +02:00
Christian Flothmann
acea9be6d3 sync translations from master 2020-07-10 16:23:16 +02:00
Hidde Wieringa
8728927a22 Improve invalid messages for form types 2020-07-10 11:35:53 +02:00
Martin Hasoň
6eb836b6f9 [OptionsResolver] Fix force prepend normalizer 2020-07-10 11:12:14 +02:00
Christian Flothmann
44226b378a Merge branch '5.1'
* 5.1:
  fix PropertyAccess version constraints
2020-07-10 10:14:54 +02:00
Christian Flothmann
5a84bae822 Merge branch '5.0' into 5.1
* 5.0:
  fix PropertyAccess version constraints
2020-07-10 10:14:24 +02:00
Christian Flothmann
16b5e8a203 Merge branch '4.4' into 5.0
* 4.4:
  fix PropertyAccess version constraints
2020-07-10 10:13:40 +02:00
Christian Flothmann
6fa19242ed fix PropertyAccess version constraints 2020-07-10 10:02:08 +02:00
Jan Schädlich
89314b5992 add vietnamese translation for html5 color validation 2020-07-10 08:36:00 +02:00
Carlos Pereira De Amorim
bfe07dda83 Added Context to Workflow Event
There's also a default context for the initial marking event.
2020-07-10 00:08:44 +02:00
Nicolas Grekas
be81e3d513 Merge branch '5.1'
* 5.1:
  cs fix
  add german translation of the html5 color validation
  Fix PHP 8 deprecations
  ensure compatibility with PHP 8 stack traces
  clean up HHVM instructions
  sync translations from master branch
  silently ignore uninitialized properties when mapping data to forms
2020-07-09 18:48:43 +02:00
Nicolas Grekas
8ecd0c9040 Merge branch '5.0' into 5.1
* 5.0:
  cs fix
  add german translation of the html5 color validation
  Fix PHP 8 deprecations
  ensure compatibility with PHP 8 stack traces
  clean up HHVM instructions
  sync translations from master branch
  silently ignore uninitialized properties when mapping data to forms
2020-07-09 18:47:40 +02:00
Nicolas Grekas
6e59119f81 Merge branch '4.4' into 5.0
* 4.4:
  cs fix
  add german translation of the html5 color validation
  Fix PHP 8 deprecations
  ensure compatibility with PHP 8 stack traces
  clean up HHVM instructions
  sync translations from master branch
  silently ignore uninitialized properties when mapping data to forms
2020-07-09 18:47:28 +02:00
Nicolas Grekas
ecb5f7c875 Merge branch '3.4' into 4.4
* 3.4:
  cs fix
  add german translation of the html5 color validation
  sync translations from master branch
  silently ignore uninitialized properties when mapping data to forms
2020-07-09 18:43:26 +02:00
Nicolas Grekas
6bfdb92736 bug #37520 [Form] silently ignore uninitialized properties when mapping data to forms (ph-fritsche)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] silently ignore uninitialized properties when mapping data to forms

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | #36492
| License       | MIT
| Doc PR        |

Commits
-------

b4616c810c silently ignore uninitialized properties when mapping data to forms
2020-07-09 18:41:59 +02:00
Nicolas Grekas
87e28f77b9 minor #37524 [Form] sync translations from master branch (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] sync translations from master branch

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

d962202c5f sync translations from master branch
2020-07-09 18:41:07 +02:00
Wouter de Jong
696560c690 Updated README for the Mailer component 2020-07-09 18:20:35 +02:00
Ahmad El-Bardan
f41c03b8aa add german translation of the html5 color validation 2020-07-09 10:22:35 +02:00
Nicolas Grekas
07c11399ae Merge branch '3.4' into 4.4
* 3.4:
  Fix PHP 8 deprecations
  ensure compatibility with PHP 8 stack traces
2020-07-08 19:09:45 +02:00
Nicolas Grekas
3db0684037 Fix PHP 8 deprecations 2020-07-08 19:07:26 +02:00
Christian Flothmann
8ba34dafd3 ensure compatibility with PHP 8 stack traces 2020-07-08 18:57:10 +02:00
Christian Flothmann
d962202c5f sync translations from master branch 2020-07-08 15:48:29 +02:00
Philipp Fritsche
b4616c810c silently ignore uninitialized properties when mapping data to forms 2020-07-08 12:40:29 +02:00
Nicolas Grekas
2c43183f2c Merge branch '5.1'
* 5.1:
  [String] Added a help message when translation-contracts is not installed
  Add: ExcludeList usage for PHPUnit 9.4
  [Cache] Fix compat wth DBAL v3
  [String] throw when Alpine is used and translit fails
2020-07-08 10:28:10 +02:00
Nicolas Grekas
f07b187e6e Merge branch '5.0' into 5.1
* 5.0:
  [String] Added a help message when translation-contracts is not installed
  Add: ExcludeList usage for PHPUnit 9.4
  [Cache] Fix compat wth DBAL v3
  [String] throw when Alpine is used and translit fails
2020-07-08 10:27:49 +02:00
Grégoire Pineau
904fb1ae21 [String] Added a help message when translation-contracts is not installed 2020-07-08 10:26:26 +02:00
Nicolas Grekas
e8fb0d133e Merge branch '4.4' into 5.0
* 4.4:
  Add: ExcludeList usage for PHPUnit 9.4
  [Cache] Fix compat wth DBAL v3
2020-07-08 10:06:16 +02:00
Nicolas Grekas
ddf795390a Merge branch '3.4' into 4.4
* 3.4:
  [Cache] Fix compat wth DBAL v3
2020-07-08 10:03:32 +02:00
Nicolas Grekas
e67c6d8886 bug #37506 [HttpClient] fix buffering AsyncResponse with no passthru (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] fix buffering AsyncResponse with no passthru

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

1ffeba3f09 [HttpClient] fix buffering AsyncResponse with no passthru
2020-07-08 09:52:00 +02:00
Nicolas Grekas
d08524330a [Cache] Fix compat wth DBAL v3 2020-07-08 09:40:56 +02:00
Nicolas Grekas
98f5d50945 [String] throw when Alpine is used and translit fails 2020-07-07 19:07:07 +02:00
Grégoire Pineau
50d5167a66 [HttpFoundation] Added File::getContent() 2020-07-07 13:52:54 +02:00
Fabien Potencier
70ebf7e912 feature #37492 [ErrorHandler] Allow override of the default non-debug template (PhilETaylor)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[ErrorHandler] Allow override of the default non-debug template

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes - a very tiny one
| Deprecations? | no
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Add new feature to allow the default hardcoded non-debug template to be overridden when `symfony/error-handler`used as a component in other projects.

Currently, when used as a component, its not possible (that I could see) to override the standard default template of `views/error.html.php` therefore the look and feel, and text is hard coded. There is much written on how to customise the error pages when using the full symfony stack, but not when using individual `symfony/error-handler` component on its own.

This PR is related to the use of `symfony/error-handler` as a component in other projects - specifically the Joomla Content Management System, where, in non debug mode, a generic template **needs to be translatable, and customisable** even though most of the time when the error occurs will bt at boot time and not much available to it. https://github.com/joomla/joomla-cms/issues/29968

This PR allows the use of code such as

```php
<?php

require 'vendor/autoload.php';

use Symfony\Component\ErrorHandler\ErrorHandler;
use Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer;

ErrorHandler::register();
HtmlErrorRenderer::setTemplate('/path/to/custom/mine.php');

throw new Exception('myException is this', 500);
```

and then for further customisation of the "look and feel" to be done in `mine.php`

Due to the unique way the error handler component is init'ed, the use of static calls has been employed rather than any DI approach, I hope this is ok.

Commits
-------

6e1d16b44d [ErrorHandler] Allow override of the default non-debug template
2020-07-07 10:33:05 +02:00
Phil E. Taylor
6e1d16b44d [ErrorHandler] Allow override of the default non-debug template 2020-07-07 10:32:58 +02:00
Nicolas Grekas
1ffeba3f09 [HttpClient] fix buffering AsyncResponse with no passthru 2020-07-06 20:08:07 +02:00
Nicolas Grekas
c046229c9e Merge branch '5.1'
* 5.1:
  minor #37121 [Contracts] Add missing "extra.thanks" entries in composer.json (nicolas-grekas)
  [Process] Fix Permission Denied error when writing sf_proc_00 lock files on Windows
  fix handling null as empty data
  [Security\Http] Skip remember-me logout on empty token
  Missing return in loadValuesForChoices method
  No need to create an issue when creating a PR
  Use ">=" for the "php" requirement
  [HttpClient] Fix promise behavior in HttplugClient
  [Console] Fixes question input encoding on Windows
2020-07-06 15:25:45 +02:00
Nicolas Grekas
361bf335e2 bug #37504 [Security\Http] Skip remember-me logout on empty token (chalasr)
This PR was merged into the 5.1 branch.

Discussion
----------

[Security\Http] Skip remember-me logout on empty token

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37501
| License       | MIT
| Doc PR        | -

Commits
-------

551f9418a3 [Security\Http] Skip remember-me logout on empty token
2020-07-06 15:25:09 +02:00
Nicolas Grekas
7da6d710cf Merge branch '5.0' into 5.1
* 5.0:
  minor #37121 [Contracts] Add missing "extra.thanks" entries in composer.json (nicolas-grekas)
  [Process] Fix Permission Denied error when writing sf_proc_00 lock files on Windows
  fix handling null as empty data
  No need to create an issue when creating a PR
  Use ">=" for the "php" requirement
  [HttpClient] Fix promise behavior in HttplugClient
  [Console] Fixes question input encoding on Windows
2020-07-06 15:23:11 +02:00
Nicolas Grekas
564af6436a Merge branch '4.4' into 5.0
* 4.4:
  minor #37121 [Contracts] Add missing "extra.thanks" entries in composer.json (nicolas-grekas)
  [Process] Fix Permission Denied error when writing sf_proc_00 lock files on Windows
  fix handling null as empty data
  No need to create an issue when creating a PR
  [Console] Fixes question input encoding on Windows
2020-07-06 15:22:03 +02:00
Nicolas Grekas
2f65991a9d Merge branch '3.4' into 4.4
* 3.4:
  [Process] Fix Permission Denied error when writing sf_proc_00 lock files on Windows
  fix handling null as empty data
  No need to create an issue when creating a PR
  [Console] Fixes question input encoding on Windows
2020-07-06 15:18:39 +02:00
Nicolas Grekas
c0181c7667 bug #37461 [Process] Fix Permission Denied error when writing sf_proc_00 lock files on Windows (JasonStephensTAMU)
This PR was merged into the 3.4 branch.

Discussion
----------

[Process] Fix Permission Denied error when writing sf_proc_00 lock files on Windows

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  |no
| Deprecations? | no
| Tickets       | Fix #37294
| License       | MIT
| Doc PR        |

Passes current Process unit tests.

On Windows systems, a new set of sf_proc_## files are generated in the system temp directory for each WindowsPipes object. These files are removed when the WindowsPipes object is destroyed.

This avoids receiving a permission denied error when attempting to write to sf_proc_## files between multiple sites running as different users, when the users do not have permissions to modify each others files.

Changes
- [Process] WindowsPipes always creates new sf_proc_## files in constructor
- [Process] WindowsPipes removes its sf_proc_## files in destructor

Commits
-------

220be89f5c [Process] Fix Permission Denied error when writing sf_proc_00 lock files on Windows
2020-07-06 15:15:39 +02:00
Jason Stephens
220be89f5c [Process] Fix Permission Denied error when writing sf_proc_00 lock files on Windows 2020-07-06 15:15:13 +02:00
Nicolas Grekas
091fd5016d bug #37505 [Form] fix handling null as empty data (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] fix handling null as empty data

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37493
| License       | MIT
| Doc PR        |

Commits
-------

b5aa55dab9 fix handling null as empty data
2020-07-06 15:09:26 +02:00
Christian Flothmann
b5aa55dab9 fix handling null as empty data 2020-07-06 14:28:35 +02:00
Robin Chalas
551f9418a3 [Security\Http] Skip remember-me logout on empty token 2020-07-06 12:10:25 +02:00
Robin Chalas
4297897869 bug #37385 [Console] Fixes question input encoding on Windows (YaFou)
This PR was merged into the 3.4 branch.

Discussion
----------

[Console] Fixes question input encoding on Windows

| Q             | A
| ------------- | ---
| Branch?       | 3.4 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #35842, Fix #36324, Fix #37495 and Fix #37278 <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | no <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

To ask a question to a user, the [QuestionHelper](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Console/Helper/QuestionHelper.php) use [`fgets`](https://www.php.net/manual/en/function.fgets.php). However, special characters are not supported on Windows with this function (like accents: `é`, `à`, `ö`). The solution is to set a special encoding with [`sapi_windows_cp_get`](https://www.php.net/manual/en/function.sapi-windows-cp-get).

> Before
```php
$stream = fopen('php://stdin', 'r');
$input = fgets($stream);
echo $input;

// input: "Bonjour à tous"
// output: 'Bonjour \ tous" or "Bonjour   tous"
```

> After
```php
// Check if the function exists because it only exists on Windows
if(function_exists('sapi_windows_cp_set')) {
    sapi_windows_cp_get(437);
}

$stream = fopen('php://stdin', 'r');
$input = fgets($stream);
echo $input;

// input: "Bonjour à tous"
// output: 'Bonjour à tous"
```

*Thanks to @bnjmnfnk for the solution 😉*

Commits
-------

4288df4f74 [Console] Fixes question input encoding on Windows
2020-07-06 10:57:31 +02:00
Yonel Ceruto
6075debead Missing return in loadValuesForChoices method 2020-07-05 20:50:18 -04:00
Nicolas Grekas
085e66cfc2 Merge branch '4.4' into 5.0
* 4.4:
  Use ">=" for the "php" requirement
  [HttpClient] Fix promise behavior in HttplugClient
2020-07-05 11:43:09 +02:00
Alex Pott
4a360766cc Use ">=" for the "php" requirement 2020-07-05 11:39:30 +02:00
Nicolas Grekas
32707260f9 bug #37491 [HttpClient] Fix promise behavior in HttplugClient (brentybh)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[HttpClient] Fix promise behavior in HttplugClient

| Q             | A
| ------------- | ---
| Branch?       | 4.4 & up <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #37488 <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

## The Problem
Promises have 2 important methods: `then` and `wait`.
To implement Httplug's promise interface, we built `HttplugPromise` on top of Guzzle promise.
However, when an error occurred (Httplug `NetworkException` thrown) while init the request/before actually sending the request,
`HttplugClient::sendAsyncRequest` will return a `Http\Promise\RejectedPromise`, which is a dummy implementation.

If the `then` callable returns a promise-like object, `Http\Promise\RejectedPromise` will treat it as plain value.
Guzzle promise will try to resolve the promise-like value, which is an object that has `then` method on it.

bbf3b200bc/src/Promise.php (L116)

To fix this, I edited `src/Symfony/Component/HttpClient/HttplugClient.php`.

Next, let me explain why to edit `src/Symfony/Component/HttpClient/Response/HttplugPromise.php`.
After the previous fix, when a Guzzle promise returned by the `then` callable, things will work.
However, If I return a `HttplugPromiseInterface`, it doesn't work, because Guzzle promise `wait` the return value (result)
only if it's a Guzzle promise.

bbf3b200bc/src/Promise.php (L63)

To fix this, I referenced the `wait` code of Guzzle promise and edited our `HttplugPromise`.

## How this fix make sense

So, why to return a promise from the `then` callable?
This let us change the promise chain according to current promise's result (fulfilled/rejected).

For example, we can retry an HTTP request if it failed.
Please take a look at my test code.

Commits
-------

147b6adc39 [HttpClient] Fix promise behavior in HttplugClient
2020-07-04 11:37:25 +02:00
Bohan Yang
147b6adc39 [HttpClient] Fix promise behavior in HttplugClient 2020-07-04 11:37:14 +02:00
Nicolas Grekas
e6e1ca38c0 Merge branch '5.1'
* 5.1:
  [Console] fix reading from STDIN
2020-07-04 11:30:53 +02:00
Nicolas Grekas
5de5b7d82e Merge branch '5.0' into 5.1
* 5.0:
  [Console] fix reading from STDIN
2020-07-04 11:30:46 +02:00
Nicolas Grekas
c2c4d4dc12 Merge branch '4.4' into 5.0
* 4.4:
  [Console] fix reading from STDIN
2020-07-04 11:30:38 +02:00
Nicolas Grekas
5da153603b [Console] fix reading from STDIN 2020-07-04 11:30:27 +02:00
Nicolas Grekas
901e938da3 Merge branch '5.1'
* 5.1:
  [HttpClient][CurlHttpClient] Fix http_version option usage
  [HttpClient] fix parsing response headers in CurlResponse
  [PropertyAccess] Remove inflector component
  [Console] Do not check for "stty" using "exec" if that function is disabled
  [Console] always use stty when possible to ask hidden questions
2020-07-03 20:06:54 +02:00
Nicolas Grekas
a815bc2b41 Merge branch '5.0' into 5.1
* 5.0:
  [HttpClient][CurlHttpClient] Fix http_version option usage
  [HttpClient] fix parsing response headers in CurlResponse
  [Console] Do not check for "stty" using "exec" if that function is disabled
  [Console] always use stty when possible to ask hidden questions
2020-07-03 20:06:49 +02:00
Nicolas Grekas
f9225109e4 Merge branch '4.4' into 5.0
* 4.4:
  [HttpClient][CurlHttpClient] Fix http_version option usage
  [HttpClient] fix parsing response headers in CurlResponse
  [Console] Do not check for "stty" using "exec" if that function is disabled
  [Console] always use stty when possible to ask hidden questions
2020-07-03 20:06:40 +02:00
Nicolas Grekas
fec23313e7 bug #37469 [Console] always use stty when possible to ask hidden questions (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[Console] always use stty when possible to ask hidden questions

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #36565, replaces #36590
| License       | MIT
| Doc PR        | -

The current code doesn't make much sense: we check `hasSttyAvailable()`, and if the answer is `false`, we still use `stty` directly.

This PR relies on `stream_isatty` and equivalent fallback checks to decide if the password can be hidden or not.

Best reviewed [ignoring whitespaces](https://github.com/symfony/symfony/pull/37469/files?w=1).

Commits
-------

055b605e30 [Console] always use stty when possible to ask hidden questions
2020-07-03 20:04:21 +02:00
Nicolas Grekas
b3df84c857 minor #37470 [Workflow] Normalize workflow changelog (lyrixx)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Workflow] Normalize workflow changelog

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

e1de806050 [Workflow] Normalize workflow changelog
2020-07-03 14:54:52 +02:00
Nicolas Grekas
ee0e37b47d bug #37486 [HttpClient] fix parsing response headers in CurlResponse (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] fix parsing response headers in CurlResponse

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

This fixes rare notices that look like:
`Argument 2 passed to Symfony\Component\HttpClient\Chunk\DataChunk::__construct() must be of the type string, null given`

I'm unable to provide a test case since I'm unable to provide a simple reproducer.

It happens that curl can call the header-function with multiple lines at once apparently, while most of the time it does so with one at a time.

Commits
-------

eb70fb2f26 [HttpClient] fix parsing response headers in CurlResponse
2020-07-03 14:36:03 +02:00
Thomas Calvet
2676902a77 [HttpClient][CurlHttpClient] Fix http_version option usage 2020-07-03 13:44:40 +02:00
Nicolas Grekas
eb70fb2f26 [HttpClient] fix parsing response headers in CurlResponse 2020-07-03 13:27:27 +02:00
Mponos George
8942d5a5b8
[PropertyAccess] Remove inflector component
[PropertyAccess] Remove inflector component as a requirements since the component is deprecated.
2020-07-03 10:49:29 +03:00
Nicolas Grekas
3a4a58385e [HttpClient] always yield a LastChunk in AsyncResponse on destruction 2020-07-02 21:33:50 +02:00
David Maicher
d057dffcd6 [Mime] allow non-ASCII characters in local part of email 2020-07-01 19:26:13 +02:00
Nicolas Grekas
659699b9ce Merge branch '3.4' into 4.4
* 3.4:
  [Console] Do not check for "stty" using "exec" if that function is disabled
2020-07-01 19:14:21 +02:00
Michael Voříšek
02124b6b3b [Console] Do not check for "stty" using "exec" if that function is disabled 2020-07-01 19:13:52 +02:00
Nicolas Grekas
055b605e30 [Console] always use stty when possible to ask hidden questions 2020-07-01 17:27:01 +02:00
Fabien Potencier
8cc90b9845 feature #36364 [HttpKernel][WebProfilerBundle] Add session profiling (mtarld)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpKernel][WebProfilerBundle] Add session profiling

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT
| Doc PR        |

This PR proposes to add session profiling.
It provides stateless checking status and session usage backtraces.

Under are screesnhots of provided profiling:
![Screenshot from 2020-04-06 13-42-41](https://user-images.githubusercontent.com/4955509/78581189-d6c32580-7833-11ea-9de5-d1e4f8e60c27.png)
![Screenshot from 2020-04-06 13-43-04](https://user-images.githubusercontent.com/4955509/78581193-d88ce900-7833-11ea-90a4-85d07c64d47e.png)
![Screenshot from 2020-04-06 17-43-17](https://user-images.githubusercontent.com/4955509/78581159-cca12700-7833-11ea-98d2-38306ec9ea37.png)
![Screenshot from 2020-04-06 17-43-35](https://user-images.githubusercontent.com/4955509/78581238-e8a4c880-7833-11ea-89e2-ff4fdea8dce5.png)

Commits
-------

5dbaef8883 Add session profiling
2020-07-01 16:42:25 +02:00
Grégoire Pineau
e1de806050 [Workflow] Normalize workflow changelog 2020-07-01 15:44:40 +02:00
Mathias Arlaud
5dbaef8883 Add session profiling 2020-07-01 14:40:41 +02:00
Fabien Potencier
5b6139f488 feature #37428 [Workflow] Added Function (and Twig extension) to retrieve a specific transition (Carlos Pereira De Amorim)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Workflow] Added Function (and Twig extension) to retrieve a specific transition

You can now easily retrieve a specific transition. Useful when you want the metadata of a specific transition.

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | hmmmm, should I create a ticket first ?
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/13907

I needed to get the metadata of a transition, but in order to do that, you need the transition object. So here is a PR to easily get the transition object

Commits
-------

0eebe74259 [Workflow] Added Function (and Twig extension) to retrieve a specific transition
2020-07-01 14:24:19 +02:00
Carlos Pereira De Amorim
0eebe74259 [Workflow] Added Function (and Twig extension) to retrieve a specific transition 2020-07-01 14:24:18 +02:00
Fabien Potencier
d8082fa2f8 feature #36487 [HttpClient] Add MockResponse::getRequestMethod() and getRequestUrl() to allow inspecting which request has been sent (javespi)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] Add MockResponse::getRequestMethod() and getRequestUrl() to allow inspecting which request has been sent

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | -  <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | - <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

---

As same as the `MockResponse` class has `getRequestOptions()` when doing a request; I've added:
* `getRequestUrl()` - returns the URL used when doing the request
* `getRequestMethod()` - returns the HTTP method used when doing the request

With these two getters, we would be able to assert that the method and URL passed to the `HttpClient` were well generated. I've tried to assert the URL generated in a unit test of a class with a `SymfonyHttpClient` injected and it wasn't possible. Calling `$mock->getInfo('url')` returns `null`.

Example, if we have a class with `HttpClientInterface` injected like this:

```php
final class SymfonyHttpUserClient
{
    private HttpClientInterface $httpClient;
    private string $baseUri;

    public function __construct(
        HttpClientInterface $httpClient,
        string $baseUri
    ) {
        $this->httpClient = $httpClient;
        $this->baseUri = $baseUri;
    }

    public function getById(string $userId): void
    {
        $this->httpClient->request(
            'GET',
            $this->baseUri . $customerId
        );
    }
}
```

And if we want to do a unit test of `SymfonyHttpUserClient` right now we are not able to check if the URL of the request was well-formed passing a `MockResponse`. Also, we weren't able to assert the HTTP method (maybe this piece is not so critical to assert in the unit test).

```php
class SymfonyHttpUserClientTests extends TestCase
{
    public function testGetById(): void
    {
        $baseUri = 'https://user-api.test/api/v1/users/';
        $mockResponse = new MockResponse();
        $symfonyHttpUserClient = new SymfonyHttpUserClient(
            new MockHttpClient(
                [$mockResponse],
                $baseUri
            ),
            $baseUri
        );

        // test get by id:
        $symfonyHttpUserClient->getById('some-user-id');

        // cannot be asserted right now:
        $this->assertSame($mockResponse->getInfo('url'), $baseUri . 'some-user-id'); // fail
        $this->assertSame($mockResponse->getInfo('http_method'), 'GET'); // fail

        // it could be with the new getters:
        $this->assertSame($mockResponse->getRequestUrl(), $baseUri . 'some-user-id');
        $this->assertSame($mockResponse->getRequestMethod(), 'GET');
    }
}
```

This only happens if the class has injected the HttpClient and if it is used inside void methods with no being able to return the response. If the class returns the response, `url` and `http_method` are available with `$response->getInfo()` call. But this response object is a new one, is not the mock passed by argument when you instance the MockHttpClient.

Var dumps of `getInfo` array:

```
$response->getInfo() from MockClient:

..array(10) {
  ["start_time"]=>
  float(1587109014.7985)
  ["user_data"]=>
  NULL
  ["http_code"]=>
  int(200)
  ["response_headers"]=>
  array(0) {
  }
  ["error"]=>
  NULL
  ["canceled"]=>
  bool(false)
  ["redirect_count"]=>
  int(0)
  ["redirect_url"]=>
  NULL
  ["http_method"]=>
  string(3) "GET"
  ["url"]=>
  string(47) "https://user-api.test/api/v1/users/some-user-id"
}

$mock->getInfo()

array(4) {
  ["http_code"]=>
  int(200)
  ["response_headers"]=>
  array(0) {
  }
  ["error"]=>
  NULL
  ["canceled"]=>
  bool(false)
}
```

This is a minor change, I opened the PR with `4.4` as base branch; but not sure if it should be opened with `5.0` as base branch or even `master` taking account is a feature (add two new getters in MockResponse class). Let me know if I didn't follow right the instructions (first PR on Symfony project 😃)

Thanks!

Commits
-------

7a250d80c1 [HttpClient] Add MockResponse::getRequestMethod() and getRequestUrl() to allow inspecting which request has been sent
2020-07-01 14:18:06 +02:00
Fabien Potencier
501542a0dd feature #37295 Move event alias mappings to their components (derrabus)
This PR was merged into the 5.2-dev branch.

Discussion
----------

Move event alias mappings to their components

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

For a small console tool, I wanted to use the Console, EventDispatcher and DI components standalone. In order to make use of aliased events, I had to copy over the mapping information from FrameworkBundle, which was a bit unfortunate.

With this PR, I'd like to suggest to store all alias mappings on the `*Events` classes of each component instead. This change will make the mapping reusable outside of the full-stack framework.

Note: I've bumped the dependencies of FrameworkBundle/SercurityBundle in order to gain access to the moved mapping information. If any of the bumps is too heavy, please tell me and I'll implement a fallback instead.

Commits
-------

28e6f6f72c Move event alias mappings to their components.
2020-07-01 14:12:45 +02:00
YaFou
4288df4f74
[Console] Fixes question input encoding on Windows 2020-07-01 11:10:10 +02:00
Nicolas Grekas
1bbfde581f Merge branch '5.1'
* 5.1:
  [ErrorHandler] fix throwing from __toString()
  Removed comments and requirements relative to php <5.5 (not supported anymore)
  Fix caching of parent locales file in translator
  fix validating lazy properties that evaluate to null
2020-06-30 19:42:41 +02:00
Nicolas Grekas
85d471bf05 Merge branch '5.0' into 5.1
* 5.0:
  [ErrorHandler] fix throwing from __toString()
  Removed comments and requirements relative to php <5.5 (not supported anymore)
  Fix caching of parent locales file in translator
  fix validating lazy properties that evaluate to null
2020-06-30 19:42:22 +02:00
Nicolas Grekas
23fcbd4dd5 Merge branch '4.4' into 5.0
* 4.4:
  [ErrorHandler] fix throwing from __toString()
  Removed comments and requirements relative to php <5.5 (not supported anymore)
  Fix caching of parent locales file in translator
  fix validating lazy properties that evaluate to null
2020-06-30 19:40:59 +02:00
Nicolas Grekas
450034c986 Merge branch '3.4' into 4.4
* 3.4:
  [ErrorHandler] fix throwing from __toString()
  Removed comments and requirements relative to php <5.5 (not supported anymore)
  fix validating lazy properties that evaluate to null
2020-06-30 19:40:09 +02:00
Nicolas Grekas
52ddce1a74 bug #37447 [Validator] fix validating lazy properties that evaluate to null (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] fix validating lazy properties that evaluate to null

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37430
| License       | MIT
| Doc PR        |

Commits
-------

776daf28b4 fix validating lazy properties that evaluate to null
2020-06-30 19:35:43 +02:00
Nicolas Grekas
aeb4637341 [ErrorHandler] fix throwing from __toString() 2020-06-30 19:28:29 +02:00
Javier Espinosa
7a250d80c1 [HttpClient] Add MockResponse::getRequestMethod() and getRequestUrl() to allow inspecting which request has been sent 2020-06-30 18:39:01 +02:00
Dmitrii Lozhkin
0a4ef897b7 [VarDumper] improve rendering HTML 2020-06-30 16:43:42 +02:00
Alexander M. Turek
28e6f6f72c Move event alias mappings to their components. 2020-06-30 16:13:44 +02:00
Nicolas Grekas
78e6fc4b42 bug #37449 [Translation] Fix caching of parent locales file in translator (jvasseur)
This PR was merged into the 4.4 branch.

Discussion
----------

[Translation] Fix caching of parent locales file in translator

| Q             | A
| ------------- | ---
| Branch?       | 4.4 (this is the lowest maintained branch with this code)
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       |
| License       | MIT
| Doc PR        |

The `parentLocales` property was probably meant as a cache for the content of the `parents.json` file but instead the content is stored in a local variable and the property stays `null`. This means the file is read on each call to `computeFallbackLocales`.

This PR update the code to what was probably meant to be.

(Ref https://github.com/symfony/symfony/pull/28070)

Commits
-------

02c9ac68a4 Fix caching of parent locales file in translator
2020-06-30 15:55:33 +02:00
Grégoire Pineau
5c5ea7500e Removed comments and requirements relative to php <5.5 (not supported anymore) 2020-06-30 14:50:28 +02:00
Nicolas Grekas
d555112fbf feature #37443 [HttpClient] add StreamableInterface to ease turning responses into PHP streams (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] add StreamableInterface to ease turning responses into PHP streams

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | -
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

de103b31a9 [HttpClient] add StreamableInterface to ease turning responses into PHP streams
2020-06-30 14:30:51 +02:00
Nicolas Grekas
3ce43915bd minor #37433 Console ProgressBar: Change redraw default value to 25fps (flack)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

Console ProgressBar: Change redraw default value to 25fps

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

`ProgressBar` has a default value of `0.1` for `$minSecondsBetweenRedraws` which works out to 10 fps, so below the threshhold at which the human eye perceives it as a moving image instead of a series of individual images. Of course, the console's progress bar is not really an animation tool, but it seems like a low-hanging fruit to change the redraw frequency to something that can be perceived as a fluid motion. So I'm proposing to change `$minSecondsBetweenRedraws` to `0.016666666666667`, i.e. 60 fps, which is a fairly typical refresh rate for computer screens, so redrawing more often than that would be pointless. It means of course to redraw six times more often than currently, but i guess performance is not such a big concern here, right?

Commits
-------

b1c38bada7 Console ProgressBar: Change redraw default value to 25fps
2020-06-30 11:12:36 +02:00
flack
b1c38bada7 Console ProgressBar: Change redraw default value to 25fps 2020-06-30 11:11:53 +02:00
Christian Flothmann
6aecad7438 Merge branch '5.1'
* 5.1:
  fix compatibility with Doctrine DBAL 3.0
  skip test if guesser is not supported
  Added missing license headers
2020-06-29 16:32:23 +02:00
Christian Flothmann
eb58ea6a26 Merge branch '5.0' into 5.1
* 5.0:
  fix compatibility with Doctrine DBAL 3.0
  skip test if guesser is not supported
2020-06-29 16:31:29 +02:00
Christian Flothmann
5a91e51154 Merge branch '4.4' into 5.0
* 4.4:
  fix compatibility with Doctrine DBAL 3.0
  skip test if guesser is not supported
2020-06-29 16:24:36 +02:00
Christian Flothmann
f194602c30 minor #37450 [Mime] skip test if guesser is not supported (xabbuh)
This PR was merged into the 4.4 branch.

Discussion
----------

[Mime] skip test if guesser is not supported

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

fixes tests on AppVeyor

Commits
-------

3b77abea65 skip test if guesser is not supported
2020-06-29 16:24:11 +02:00
Christian Flothmann
b17df8cdd7 fix compatibility with Doctrine DBAL 3.0 2020-06-29 15:55:34 +02:00
Christian Flothmann
3b77abea65 skip test if guesser is not supported 2020-06-29 15:46:05 +02:00
Jérôme
02c9ac68a4
Fix caching of parent locales file in translator 2020-06-29 15:31:43 +02:00
Christian Flothmann
776daf28b4 fix validating lazy properties that evaluate to null 2020-06-29 12:55:42 +02:00
Fabien Potencier
f706d6a276 minor #37445 [Security] Added missing license headers (wouterj)
This PR was merged into the 5.1 branch.

Discussion
----------

[Security] Added missing license headers

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

See 3be6ce121b

Seems like the fabbot reviews (and I) missed quite a lot of these in my big security PR.

Commits
-------

ea81b61e5f Added missing license headers
2020-06-29 10:19:14 +02:00
Wouter de Jong
ea81b61e5f Added missing license headers 2020-06-28 20:41:01 +02:00
Nicolas Grekas
de103b31a9 [HttpClient] add StreamableInterface to ease turning responses into PHP streams 2020-06-28 17:56:16 +02:00
Nicolas Grekas
75031a1230 Merge branch '5.1'
* 5.1:
  Fix test that fails on old distros
  Fix: compatibility with phpunit 9.3
  [DoctrineBridge] work around Connection::ping() deprecation
  [MimeType] Duplicated MimeType due to PHP Bug
  [HttpClient] fix casting TraceableResponse to php streams
  [DI] fix parsing of argument type=binary in xml
  fix guessing form types for DateTime types
  fix handling typed properties as constraint options
  Fix the 'supports' method argument type of the security voter
  Use the driverConnection executeUpdate method
2020-06-28 17:36:15 +02:00
Nicolas Grekas
009961795b bug #37440 [HttpClient] fix casting TraceableResponse to php streams (nicolas-grekas)
This PR was merged into the 5.1 branch.

Discussion
----------

[HttpClient] fix casting TraceableResponse to php streams

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37393
| License       | MIT
| Doc PR        | -

We'd better replace these checks by an `instanceof` one, but that'd be for master.

Commits
-------

5733289278 [HttpClient] fix casting TraceableResponse to php streams
2020-06-28 17:33:45 +02:00
Nicolas Grekas
4ad5079082 Merge branch '5.0' into 5.1
* 5.0:
  Fix test that fails on old distros
  Fix: compatibility with phpunit 9.3
  [DoctrineBridge] work around Connection::ping() deprecation
  [MimeType] Duplicated MimeType due to PHP Bug
  [DI] fix parsing of argument type=binary in xml
  fix guessing form types for DateTime types
  fix handling typed properties as constraint options
  Fix the 'supports' method argument type of the security voter
  Use the driverConnection executeUpdate method
2020-06-28 17:32:35 +02:00
Nicolas Grekas
55768b18c9 Merge branch '4.4' into 5.0
* 4.4:
  Fix test that fails on old distros
  Fix: compatibility with phpunit 9.3
  [DoctrineBridge] work around Connection::ping() deprecation
  [MimeType] Duplicated MimeType due to PHP Bug
  [DI] fix parsing of argument type=binary in xml
  fix guessing form types for DateTime types
  fix handling typed properties as constraint options
  Use the driverConnection executeUpdate method
2020-06-28 17:28:17 +02:00
Nicolas Grekas
27290714b7 Merge branch '3.4' into 4.4
* 3.4:
  Fix test that fails on old distros
2020-06-28 17:22:55 +02:00
Nicolas Grekas
b344f6d7db Fix test that fails on old distros 2020-06-28 17:22:27 +02:00
Nicolas Grekas
2e2fac8766 Merge branch '3.4' into 4.4
* 3.4:
  [MimeType] Duplicated MimeType due to PHP Bug
  fix guessing form types for DateTime types
  fix handling typed properties as constraint options
2020-06-28 17:07:02 +02:00
Nicolas Grekas
6ef3fee863 bug #37291 [MimeType] Duplicated MimeType due to PHP Bug (juanmrad)
This PR was squashed before being merged into the 3.4 branch.

Discussion
----------

[MimeType] Duplicated MimeType due to PHP Bug

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #... <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

## Issue:

Currently there is a PHP bug https://bugs.php.net/bug.php?id=77784 that is causing several MimeTypes to be given as duplicated:

```
application/vnd.openxmlformats-officedocument.spreadsheetml.sheetapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
```
Instead of:
```
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
```

This Patch will fix the Issues by checking if a returned MimeType is duplicated and return appropriate MimeType.

This patch should be reverted if the PHP Bug is ever fixed.

Commits
-------

7cb29c8b4b [MimeType] Duplicated MimeType due to PHP Bug
2020-06-28 16:49:48 +02:00
Juan Mrad
7cb29c8b4b [MimeType] Duplicated MimeType due to PHP Bug 2020-06-28 16:49:36 +02:00
Nicolas Grekas
5733289278 [HttpClient] fix casting TraceableResponse to php streams 2020-06-28 16:07:40 +02:00
Nicolas Grekas
0492099432 Merge branch '5.1'
* 5.1:
  [Notifier] Notifier 5.2 is incompatible with 5.1 bridges.
  [DI] fix minor perf regression when creating non-shared services
2020-06-28 15:35:06 +02:00
Nicolas Grekas
b57f414d4a minor #37438 [Notifier] Notifier 5.2 is incompatible with 5.1 bridges (derrabus)
This PR was merged into the 5.1 branch.

Discussion
----------

[Notifier] Notifier 5.2 is incompatible with 5.1 bridges

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

#36611 introduced a breaking change that made the Notifier 5.2 incompatible with all Notifier bridges 5.0-5.1. Because of this, the tests are currently failing on Travis. This PR attempts to fix this.

Commits
-------

1b6bbc2e71 [Notifier] Notifier 5.2 is incompatible with 5.1 bridges.
2020-06-28 15:31:24 +02:00
Tito Miguel Costa
4cf1a1e8e6 fixed docblock 2020-06-28 15:18:51 +02:00
Alexander M. Turek
1b6bbc2e71 [Notifier] Notifier 5.2 is incompatible with 5.1 bridges. 2020-06-27 23:56:40 +02:00
Alexandre Tranchant
d903d9a757 Added a FrenchInflector for the String component
French inflector implements InflectorInterface, it uses regexp and it is tested in the FrenchInflectorTest
2020-06-27 22:18:36 +02:00
Nicolas Grekas
75e2ee17b0 [DI] fix minor perf regression when creating non-shared services 2020-06-27 15:48:04 +02:00
Tobias Schultze
70b6a00148 [DI] fix parsing of argument type=binary in xml 2020-06-26 19:49:20 +02:00
Christian Flothmann
9ba90bf1f8 fix guessing form types for DateTime types 2020-06-26 14:15:21 +02:00
Fabien Potencier
9660e6b1e2 bug #37392 [Validator] fix handling typed properties as constraint options (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] fix handling typed properties as constraint options

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37387
| License       | MIT
| Doc PR        |

Commits
-------

4a66a6098f fix handling typed properties as constraint options
2020-06-25 12:06:33 +02:00
Tito Costa
204cd739d3 added info method to symfony style 2020-06-25 12:05:17 +02:00
Christian Flothmann
4a66a6098f fix handling typed properties as constraint options 2020-06-25 11:23:26 +02:00
François Pluchino
b8192eecab Fix the 'supports' method argument type of the security voter 2020-06-25 11:01:55 +02:00
Fabien Potencier
7bac792328 Fix logic 2020-06-25 10:39:34 +02:00
Fabien Potencier
73596ef4f7 bug #37358 Directly use the driverConnection executeUpdate method (TristanPouliquen)
This PR was merged into the 4.4 branch.

Discussion
----------

Directly use the driverConnection executeUpdate method

executeUpdate & executeQuery methods do not throw a TableNotFoundException. No need for the try/catch as it is done for executeQuery

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix https://github.com/symfony/symfony/issues/37355
| License       | MIT

As explained in https://github.com/symfony/symfony/issues/37355, when doing a write operation, one should avoid using the `executeQuery` method of a Connection, as Doctrine's MasterSlaveConnection can pick a slave instance (usually read-only) for these operations.

Commits
-------

eec12ecd23 Use the driverConnection executeUpdate method
2020-06-25 10:28:26 +02:00
Fabien Potencier
213c6ab6d5 bug #36347 [Notifier][Slack] Error trown when having more than 10 fields specified #36346 (birkof)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Notifier][Slack] Error trown when having more than 10 fields specified #36346

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #36346 <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

As written in [docs](https://api.slack.com/reference/block-kit/blocks#section) of Section block, for fields we have to had maximum 10 items specified.

Commits
-------

68b2490ee2 [Notifier][Slack] Error trown when having more than 10 fields specified #36346
2020-06-25 09:24:04 +02:00
Daniel STANCU
68b2490ee2 [Notifier][Slack] Error trown when having more than 10 fields specified #36346 2020-06-25 09:23:57 +02:00
Robin Chalas
a184e54cb3 Merge branch '5.1'
* 5.1:
  fix merge
  Fix merge
2020-06-24 17:21:47 +02:00
Robin Chalas
5355172c10 Merge branch '5.0' into 5.1
* 5.0:
  fix merge
  Fix merge
2020-06-24 17:21:02 +02:00
Robin Chalas
2caadf17b4 Merge branch '4.4' into 5.0
* 4.4:
  fix merge
  Fix merge
2020-06-24 17:19:54 +02:00
Tobias Schultze
40890b14e4 minor #37302 [Form] Move configuration to PHP (misekai)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Form] Move configuration to PHP

| Q             | A
| ------------- | ---
| Branch?       | master for features / 3.4, 4.4, 5.0 or 5.1 for bug fixes <!-- see below -->
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | Part of #37186
| License       | MIT
| Doc PR        | -

Commits
-------

9e2e8eeb29 [Form] Move configuration to PHP
2020-06-24 16:38:26 +02:00
Alex Vo
9e2e8eeb29 [Form] Move configuration to PHP 2020-06-24 16:38:17 +02:00
Fabien Potencier
fb123e4fca feature #37272 [HttpFoundation] add HeaderUtils::parseQuery(): it does the same as parse_str() but preserves dots in variable names (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpFoundation] add `HeaderUtils::parseQuery()`: it does the same as `parse_str()` but preserves dots in variable names

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Inspired by https://github.com/symfony/psr-http-message-bridge/pull/80
/cc @drupol

Related to #9009, #29664, #26220 but also https://github.com/api-platform/core/issues/509 and https://www.drupal.org/project/drupal/issues/2984272
/cc @dunglas @alexpott

Commits
-------

dd81e32ec1 [HttpFoundation] add `HeaderUtils::parseQuery()`: it does the same as `parse_str()` but preserves dots in variable names
2020-06-24 15:46:31 +02:00
Fabien Potencier
550ab6fd8c Fix merge 2020-06-24 15:38:36 +02:00
Fabien Potencier
809b4d6748 Merge branch '5.1'
* 5.1:
  [HttpClient] Support for cURL handler objects.
  [HttpClient] unset activity list when creating CurlResponse
  Fixed typo in test name
  [DI] Fix call to sprintf in ServicesConfigurator::stack()
  add .body wrapper element
  [HttpFondation] Change file extension of "audio/mpeg" from "mpga" to "mp3"
  [VarDumper] Support for cURL handler objects.
  Check whether path is file in DataPart::fromPath()
  [DI][FrameworkBundle] Remove whitelist occurrences
  Avoid accessibility errors on debug toolbar
  Resolve event bubbling logic in a compiler pass
  update cookie test
2020-06-24 15:36:31 +02:00
Fabien Potencier
01872c7fe3 Merge branch '5.0' into 5.1
* 5.0:
  [HttpClient] Support for cURL handler objects.
  [HttpClient] unset activity list when creating CurlResponse
  Fixed typo in test name
  add .body wrapper element
  [HttpFondation] Change file extension of "audio/mpeg" from "mpga" to "mp3"
  [VarDumper] Support for cURL handler objects.
  Check whether path is file in DataPart::fromPath()
  [DI][FrameworkBundle] Remove whitelist occurrences
  Avoid accessibility errors on debug toolbar
  update cookie test
2020-06-24 15:36:18 +02:00
Fabien Potencier
d1c1973bb4 Merge branch '4.4' into 5.0
* 4.4:
  [HttpClient] Support for cURL handler objects.
  [HttpClient] unset activity list when creating CurlResponse
  Fixed typo in test name
  add .body wrapper element
  [HttpFondation] Change file extension of "audio/mpeg" from "mpga" to "mp3"
  [VarDumper] Support for cURL handler objects.
  Check whether path is file in DataPart::fromPath()
  [DI][FrameworkBundle] Remove whitelist occurrences
  Avoid accessibility errors on debug toolbar
2020-06-24 15:36:01 +02:00
Fabien Potencier
378894d64d Merge branch '3.4' into 4.4
* 3.4:
  Fixed typo in test name
  [HttpFondation] Change file extension of "audio/mpeg" from "mpga" to "mp3"
  [VarDumper] Support for cURL handler objects.
  [DI][FrameworkBundle] Remove whitelist occurrences
  Avoid accessibility errors on debug toolbar
2020-06-24 15:34:53 +02:00
Fabien Potencier
40152c37ce bug #37389 [HttpFondation] Change file extension of "audio/mpeg" from "mpga" to "mp3" (YaFou)
This PR was merged into the 3.4 branch.

Discussion
----------

[HttpFondation] Change file extension of "audio/mpeg" from "mpga" to "mp3"

| Q             | A
| ------------- | ---
| Branch?       | 3.4 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #36068 <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | no
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

`.mp3` files are more common than `.mpga` files.

Commits
-------

76a744ad91 [HttpFondation] Change file extension of "audio/mpeg" from "mpga" to "mp3"
2020-06-24 15:26:36 +02:00
Fabien Potencier
de0563d8cd minor #37242 [BrowserKit] update cookie test for cookie values with double quotes (gabrielsolomon)
This PR was merged into the 5.0 branch.

Discussion
----------

[BrowserKit] update cookie test for cookie values with double quotes

| Q             | A
| ------------- | ---
| Branch?       | 5.0
| Bug fix?      | no
| New feature?  | noâ
| Deprecations? | no
| Tickets       | Fix #37161
| License       | MIT
| Doc PR        | symfony/symfony-docs#

Provide a test for cookie values with double quotes

Commits
-------

a50c660823 update cookie test
2020-06-24 11:01:43 +02:00
Alexander M. Turek
7ccc2e1f28 [HttpClient] Support for cURL handler objects. 2020-06-24 10:43:17 +02:00
Fabien Potencier
19668b2a75 bug #37383 [VarDumper] Support for cURL handler objects (derrabus)
This PR was merged into the 3.4 branch.

Discussion
----------

[VarDumper] Support for cURL handler objects

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | #37378
| License       | MIT
| Doc PR        | N/A

Commits
-------

39c1a6373b [VarDumper] Support for cURL handler objects.
2020-06-24 10:40:29 +02:00
Fabien Potencier
5855d112b7 [Notifier] Return SentMessage from the Notifier message handler 2020-06-24 08:23:54 +02:00
Nicolas Grekas
b249f00519 [HttpClient] unset activity list when creating CurlResponse 2020-06-23 20:33:34 +02:00
Robin Chalas
968bd0ffec Fixed typo in test name 2020-06-23 14:31:34 +02:00
Nicolas Grekas
dd81e32ec1 [HttpFoundation] add HeaderUtils::parseQuery(): it does the same as parse_str() but preserves dots in variable names 2020-06-23 13:46:20 +02:00
Kévin Dunglas
11da9d3c29
[DI] Fix call to sprintf in ServicesConfigurator::stack() 2020-06-23 12:20:00 +02:00
Fabien Potencier
ce8f8a5f18 feature #36611 Add Notifier SentMessage (jeremyFreeAgent)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

Add Notifier SentMessage

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/13624

Like Mailer, Notifier returns now a SentMessage that contains the messageId (returned by the provider in the response). It contains also the body of the response as array to have more info about price, number of sms sent, status and so on.

- [x] apply to bridges

Commits
-------

5a6f0537ec Add Notifier SentMessage
2020-06-23 09:04:53 +02:00
Jérémy Romey
5a6f0537ec Add Notifier SentMessage 2020-06-23 09:04:45 +02:00
YaFou
76a744ad91
[HttpFondation] Change file extension of "audio/mpeg" from "mpga" to "mp3" 2020-06-23 08:52:36 +02:00
Fabien Potencier
a3900af2f0 feature #37357 [FrameworkBundle] allow configuring trusted proxies using semantic configuration (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[FrameworkBundle] allow configuring trusted proxies using semantic configuration

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | -
| Tickets       | -
| License       | MIT
| Doc PR        | -

On top of the improved DX this should provide, this PR (and #37351) will allow [removing the corresponding lines](https://github.com/symfony/recipes/pull/790) from `index.php` & recipes.

Using values:
```yaml
framework:
    trusted_proxies: '127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16'
#or
    trusted_proxies: '%env(TRUSTED_PROXIES)%'
```

`trusted_headers` is similar but is an array of headers to trust.
```yaml
framework:
    # that's the defaults already
    trusted_headers: ['x-forwarded-all', '!x-forwarded-host', '!x-forwarded-prefix']
```

Commits
-------

af9dd52752 [FrameworkBundle] allow configuring trusted proxies using semantic configuration
2020-06-23 06:59:37 +02:00
Alexander M. Turek
39c1a6373b [VarDumper] Support for cURL handler objects. 2020-06-22 16:59:03 +02:00
Ondřej Frei
9e3670e140 Check whether path is file in DataPart::fromPath() 2020-06-22 16:55:08 +02:00
Fabien Potencier
b3a313cd35 feature #37373 [DI] deprecate Definition/Alias::setPrivate() (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[DI] deprecate Definition/Alias::setPrivate()

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | yes
| Tickets       | -
| License       | MIT
| Doc PR        | -

Right now, there is a very subtle difference between `setPublic()` and `setPrivate()` that dates back to the FC/BC layer we created to turn services private by default.

We kept this difference to help third party bundles provide support for a wide range of versions of Symfony, but since 5.2 will be released at the same time as 3.4 will enter EOM, we should remove this behavior and deprecate `setPrivate()` to signal the change.

This is what this PR does.

Commits
-------

1bea690f4d [DI] deprecate Definition/Alias::setPrivate()
2020-06-22 14:41:31 +02:00
Nicolas Grekas
af9dd52752 [FrameworkBundle] allow configuring trusted proxies using semantic configuration 2020-06-22 14:34:19 +02:00
Fabien Potencier
33c6766117 minor #37376 [DI][FrameworkBundle] Remove "whitelist" occurrences (chalasr)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI][FrameworkBundle] Remove "whitelist" occurrences

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

12ab96ec9b [DI][FrameworkBundle] Remove whitelist occurrences
2020-06-22 13:34:12 +02:00
Fabien Potencier
2c9e9cd0c2 feature #37351 [FrameworkBundle] allow enabling the HTTP cache using semantic configuration (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[FrameworkBundle] allow enabling the HTTP cache using semantic configuration

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Right now, using the HTTP cache requires tweaking the `public/index.php` file [as explained in the doc](https://symfony.com/doc/current/http_cache.html).

This PR removes this requirement by allowing one to do this instead:
```yaml
framework:
    http_cache: true
```

Commits
-------

56b993ac2e [FrameworkBundle] allow enabling the HTTP cache using semantic configuration
2020-06-22 12:54:50 +02:00
Robin Chalas
12ab96ec9b [DI][FrameworkBundle] Remove whitelist occurrences 2020-06-22 11:57:22 +02:00
Gijs van Lammeren
13554b0fae [Messenger] added support for Amazon SQS QueueUrl as DSN 2020-06-22 11:19:58 +02:00
Nicolas Grekas
1bea690f4d [DI] deprecate Definition/Alias::setPrivate() 2020-06-22 10:12:56 +02:00
Nicolas Grekas
abae49d572 Merge branch '5.1'
* 5.1:
  Relax tests to unlock change on master
  [DI] fix dumping deprecated private aliases
  [DI] fix typo in Preloader
  Fix UserCheckerListener registration with custom user checkers
  [Messenger] fixed queue_name option amazon sqs connection
2020-06-22 10:00:49 +02:00
Nicolas Grekas
0878dd4ac0 Merge branch '5.0' into 5.1
* 5.0:
  Relax tests to unlock change on master
  [DI] fix dumping deprecated private aliases
  [DI] fix typo in Preloader
2020-06-22 09:53:17 +02:00
Nicolas Grekas
cf68c1d810 Merge branch '4.4' into 5.0
* 4.4:
  Relax tests to unlock change on master
  [DI] fix dumping deprecated private aliases
  [DI] fix typo in Preloader
2020-06-22 09:53:10 +02:00
Nicolas Grekas
a9ffbf4ccf Merge branch '3.4' into 4.4
* 3.4:
  Relax tests to unlock change on master
2020-06-22 09:52:44 +02:00
Nicolas Grekas
afe596e16a Relax tests to unlock change on master 2020-06-22 09:47:42 +02:00
Tristan Pouliquen
eec12ecd23 Use the driverConnection executeUpdate method 2020-06-22 09:47:17 +02:00
Fabien Potencier
9cff4e1188 Add missing CHANGELOG 2020-06-21 19:32:04 +02:00
Nicolas Grekas
90f6e11ee8 [DI] fix dumping deprecated private aliases 2020-06-21 18:08:20 +02:00
Nicolas Grekas
1f224763f4 [DI] fix typo in Preloader 2020-06-21 16:44:07 +02:00
Fabien Potencier
3267e8e66f feature #37318 [Security] Add attributes on Passport (fabpot)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Security] Add attributes on Passport

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | not yet

see https://github.com/symfonycorp/connect/pull/95
/cc @wouterj

Commits
-------

440ada3c5f [Security] Add attributes on Passport
2020-06-20 17:04:28 +02:00
Robin Chalas
0091864837 bug #37364 [Messenger] fixed queue_name option on amazon sqs connection (ck-developer)
This PR was merged into the 5.1 branch.

Discussion
----------

[Messenger] fixed queue_name option on amazon sqs connection

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37293
| License | MIT

Commits
-------

a6cb24d71f [Messenger] fixed queue_name option amazon sqs connection
2020-06-20 14:04:17 +02:00
Nicolas Grekas
56b993ac2e [FrameworkBundle] allow enabling the HTTP cache using semantic configuration 2020-06-20 14:01:26 +02:00
c.khedhi@prismamedia.com
a6cb24d71f [Messenger] fixed queue_name option amazon sqs connection 2020-06-20 12:58:38 +02:00
Nicolas Grekas
6ad781c834 Merge branch '5.1'
* 5.1:
  [DI] fix merge
2020-06-20 10:55:06 +02:00
Nicolas Grekas
71b65d4e70 [DI] fix merge 2020-06-20 10:54:56 +02:00
Nicolas Grekas
f0fa3b0702 Merge branch '5.1'
* 5.1:
  [SecurityBundle] Drop cache.security_expression_language definition if invalid
  [DI] disable preload.php on the CLI
  collect all transformation failures
2020-06-20 10:35:01 +02:00
Nicolas Grekas
4e0b7e5d5b Merge branch '5.0' into 5.1
* 5.0:
  [SecurityBundle] Drop cache.security_expression_language definition if invalid
  [DI] disable preload.php on the CLI
  collect all transformation failures
2020-06-20 10:33:33 +02:00
Nicolas Grekas
8afd50ecca Merge branch '4.4' into 5.0
* 4.4:
  [SecurityBundle] Drop cache.security_expression_language definition if invalid
  [DI] disable preload.php on the CLI
  collect all transformation failures
2020-06-20 10:32:35 +02:00
Nicolas Grekas
c815e7632a Merge branch '3.4' into 4.4
* 3.4:
  collect all transformation failures
2020-06-20 10:31:25 +02:00
Fabien Potencier
440ada3c5f [Security] Add attributes on Passport 2020-06-20 09:18:00 +02:00
Nicolas Grekas
50ccf2f1b2 [DI] disable preload.php on the CLI 2020-06-19 15:00:29 +02:00
Christian Flothmann
a9987ce341 collect all transformation failures 2020-06-19 08:23:51 +02:00
Nicolas Grekas
3f91ac04fe Merge branch '5.1'
* 5.1:
  fix
2020-06-18 23:37:39 +02:00
Nicolas Grekas
f768dc7aaf fix 2020-06-18 23:37:09 +02:00
Nicolas Grekas
e14aeddd53 Merge branch '5.1'
* 5.1:
  fix test
  Added Unit tests for php 8 union types.
2020-06-18 23:19:34 +02:00
Nicolas Grekas
eb150febaf Merge branch '5.0' into 5.1
* 5.0:
  fix test
  Added Unit tests for php 8 union types.
2020-06-18 23:19:28 +02:00
Nicolas Grekas
723be72706 Merge branch '4.4' into 5.0
* 4.4:
  fix test
  Added Unit tests for php 8 union types.
2020-06-18 23:17:00 +02:00
Nicolas Grekas
64f280586b Merge branch '3.4' into 4.4
* 3.4:
  Added Unit tests for php 8 union types.
2020-06-18 22:41:34 +02:00
Nicolas Grekas
e707967ea8 minor #37346 Added Unit tests for php 8 union types (derrabus)
This PR was merged into the 3.4 branch.

Discussion
----------

Added Unit tests for php 8 union types

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

The missing test cases for #37340.

Commits
-------

2ca8ecdb74 Added Unit tests for php 8 union types.
2020-06-18 22:40:01 +02:00
Nicolas Grekas
96723297b8 Merge branch '5.1'
* 5.1:
  [Cache] fix test
2020-06-18 22:36:39 +02:00
Nicolas Grekas
8df623e830 [Cache] fix test 2020-06-18 22:36:30 +02:00
Alexander M. Turek
2ca8ecdb74 Added Unit tests for php 8 union types. 2020-06-18 22:30:22 +02:00
Nicolas Grekas
529863a947 Merge branch '5.1'
* 5.1:
  [PropertyAccess] fix typo
2020-06-18 22:06:41 +02:00
Nicolas Grekas
04e6b995d9 [PropertyAccess] fix typo 2020-06-18 22:06:29 +02:00
Nicolas Grekas
092632dc14 Merge branch '5.1'
* 5.1: (28 commits)
  [DI] fix
  Use "composer/package-versions-deprecated" when possible
  Fix
  Small update in our internal terminology
  Fix support for PHP8 union types
  [VarDumper] fix typo
  [Lock][Messenger] Fix precedence of DSN options for 5.1
  Fix support for PHP8 union types
  [FrameworkBundle] preserve dots in query-string when redirecting
  [3.4] Fix support for PHP8 union types
  [PhpUnitBridge] Streamline ansi/no-ansi of composer according to phpunit --colors option
  [3.4] Small update in our internal terminology
  [Cache] fix compat with DBAL v3
  Remove unnecessary null check
  [HttpFoundation] Allow `null` in InputBag@set
  [HttpClient] Convert CurlHttpClient::handlePush() to instance method
  Fix package rename when releasing
  bumped Symfony version to 5.1.3
  updated VERSION for 5.1.2
  updated CHANGELOG for 5.1.2
  ...
2020-06-18 21:55:03 +02:00
Nicolas Grekas
eea6abf318 Merge branch '5.0' into 5.1
* 5.0:
  [DI] fix
  Use "composer/package-versions-deprecated" when possible
  Fix
2020-06-18 21:54:27 +02:00
Nicolas Grekas
f3d9cfe8db Merge branch '4.4' into 5.0
* 4.4:
  [DI] fix
  Use "composer/package-versions-deprecated" when possible
  Fix
2020-06-18 21:53:24 +02:00
Nicolas Grekas
d2efe50eee [DI] fix 2020-06-18 21:50:30 +02:00
Nicolas Grekas
03b9ff177d Use "composer/package-versions-deprecated" when possible 2020-06-18 21:48:48 +02:00
Nicolas Grekas
172d6400e3 Merge branch '3.4' into 4.4
* 3.4:
  Fix
2020-06-18 21:38:14 +02:00
Nicolas Grekas
8bbbdbe745 Fix 2020-06-18 21:30:53 +02:00
Nicolas Grekas
01b5b8312b minor #37289 [5.1] Fix support for PHP8 union types (nicolas-grekas)
This PR was merged into the 5.1 branch.

Discussion
----------

[5.1] Fix support for PHP8 union types

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Same as #37340 for 5.1

Commits
-------

dd1b61703f Fix support for PHP8 union types
2020-06-18 21:00:54 +02:00
Nyholm
00682acdea Small update in our internal terminology 2020-06-18 20:43:12 +02:00
Nicolas Grekas
dd1b61703f Fix support for PHP8 union types 2020-06-18 20:40:13 +02:00
Nicolas Grekas
2121c55b02 Merge branch '5.0' into 5.1
* 5.0:
  [VarDumper] fix typo
  Fix support for PHP8 union types
  [FrameworkBundle] preserve dots in query-string when redirecting
  [3.4] Fix support for PHP8 union types
  [PhpUnitBridge] Streamline ansi/no-ansi of composer according to phpunit --colors option
  [3.4] Small update in our internal terminology
  [Cache] fix compat with DBAL v3
  [HttpClient] Convert CurlHttpClient::handlePush() to instance method
  [VarDumper] Fix CliDumper coloration
  [DI] tighten detection of local dirs to prevent false positives
  [FrameworkBundle] preserve dots in query-string when redirecting
  Fix precendence in 4.4
  bumped Symfony version to 3.4.43
  updated VERSION for 3.4.42
  update CONTRIBUTORS for 3.4.42
  updated CHANGELOG for 3.4.42
2020-06-18 20:24:02 +02:00
Nicolas Grekas
3074cb0594 Merge branch '4.4' into 5.0
* 4.4:
  [VarDumper] fix typo
  Fix support for PHP8 union types
  [FrameworkBundle] preserve dots in query-string when redirecting
  [3.4] Fix support for PHP8 union types
  [PhpUnitBridge] Streamline ansi/no-ansi of composer according to phpunit --colors option
  [3.4] Small update in our internal terminology
  [Cache] fix compat with DBAL v3
  [HttpClient] Convert CurlHttpClient::handlePush() to instance method
  [VarDumper] Fix CliDumper coloration
  [DI] tighten detection of local dirs to prevent false positives
  [FrameworkBundle] preserve dots in query-string when redirecting
  Fix precendence in 4.4
  bumped Symfony version to 3.4.43
  updated VERSION for 3.4.42
  update CONTRIBUTORS for 3.4.42
  updated CHANGELOG for 3.4.42
2020-06-18 20:18:56 +02:00
Nicolas Grekas
2eb3c0eb7f [VarDumper] fix typo 2020-06-18 20:15:32 +02:00
Nicolas Grekas
453c3a7187 bug #37268 [Messenger] Fix precedence of DSN options for 4.4 (jderusse)
This PR was merged into the 4.4 branch.

Discussion
----------

[Messenger] Fix precedence of DSN options for 4.4

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | https://github.com/symfony/symfony/pull/37218#discussion_r438779225
| License       | MIT
| Doc PR        | N/A

This PR fix précédence of DSN options over constructor options in all component on branch 4.4

Commits
-------

992205a759 Fix precendence in 4.4
2020-06-18 20:10:55 +02:00
Nicolas Grekas
ab24fb9181 bug #37269 [Lock][Messenger] Fix precedence of DSN options for 5.1 (jderusse)
This PR was squashed before being merged into the 5.1 branch.

Discussion
----------

[Lock][Messenger] Fix precedence of DSN options for 5.1

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | https://github.com/symfony/symfony/pull/37218#discussion_r438779225
| License       | MIT
| Doc PR        | N/A

This PR fix précédence of DSN options over constructor options in all component on branch 5.1

Commits
-------

9670e9ff06 [Lock][Messenger] Fix precedence of DSN options for 5.1
2020-06-18 20:09:38 +02:00
Jérémy Derussé
9670e9ff06 [Lock][Messenger] Fix precedence of DSN options for 5.1 2020-06-18 20:07:42 +02:00
Nicolas Grekas
da68e66a99 Fix support for PHP8 union types 2020-06-18 19:59:13 +02:00
Nicolas Grekas
7eca3a5970 Merge branch '3.4' into 4.4
* 3.4:
  [3.4] Fix support for PHP8 union types
  [PhpUnitBridge] Streamline ansi/no-ansi of composer according to phpunit --colors option
  [3.4] Small update in our internal terminology
  [Cache] fix compat with DBAL v3
  [VarDumper] Fix CliDumper coloration
  [DI] tighten detection of local dirs to prevent false positives
  [FrameworkBundle] preserve dots in query-string when redirecting
  bumped Symfony version to 3.4.43
  updated VERSION for 3.4.42
  update CONTRIBUTORS for 3.4.42
  updated CHANGELOG for 3.4.42
2020-06-18 19:51:13 +02:00
Nicolas Grekas
e09372bcbf [3.4] Fix support for PHP8 union types 2020-06-18 19:32:39 +02:00
Nicolas Grekas
57251cdcdd bug #37275 [DI] tighten detection of local dirs to prevent false positives (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI] tighten detection of local dirs to prevent false positives

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #36510 and #37150
| License       | MIT
| Doc PR        | -

Commits
-------

b746dd900c [DI] tighten detection of local dirs to prevent false positives
2020-06-18 19:13:26 +02:00
Nicolas Grekas
907ffa0701 bug #36230 [VarDumper] Fix CliDumper coloration on light arrays (l-vo)
This PR was merged into the 3.4 branch.

Discussion
----------

[VarDumper] Fix CliDumper coloration on light arrays

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

When `AbstractDumper::DUMP_LIGHT_ARRAY` is used with the `CliDumper`, the first line (opening bracket) is not colored. When an empty array is dumped (with or without  `AbstractDumper::DUMP_LIGHT_ARRAY`) the array is not colored too. This PR aims to fix that.

Commits
-------

7af3469771 [VarDumper] Fix CliDumper coloration
2020-06-18 18:42:48 +02:00
Nyholm
c143aacd81 [3.4] Small update in our internal terminology 2020-06-18 18:35:04 +02:00
Nicolas Grekas
38c0971bf9 bug #37312 Fix package rename when releasing (94noni)
This PR was merged into the 5.1 branch.

Discussion
----------

Fix package rename when releasing

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix when upgrading my local project to use the package instead of my old code :)
| License       | MIT

---

Related to
a89a2a8893 (diff-bd586be86489d3e4725496bf5d4caf23) friendly ping @fabpot

The package is released at https://packagist.org/packages/symfony/free-mobile-notifier
And thus this needed to be fixed t give proper hint to devs

Thanks

Commits
-------

7a93222259 Fix package rename when releasing
2020-06-18 18:21:30 +02:00
Nicolas Grekas
8c4b49613a [Cache] fix compat with DBAL v3 2020-06-18 17:42:01 +02:00
Christian Scheb
a74a506883 Remove unnecessary null check 2020-06-18 16:13:31 +02:00
Taylor Otwell
14ec6a7659 [HttpFoundation] Allow null in InputBag@set 2020-06-18 01:21:19 +02:00
Mikko Pesari
9497972500 [HttpClient] Convert CurlHttpClient::handlePush() to instance method
Fix #37252
2020-06-18 00:57:36 +03:00
Marc Laporte
aeef1e19bb
Adding a keyword for Packagist
Thank you @javiereguiluz for the suggestion.
https://github.com/symfony/symfony/pull/37273
2020-06-16 17:43:05 -04:00
Antoine M
7a93222259 Fix package rename when releasing 2020-06-16 18:25:20 +01:00
Fabien Potencier
6f6e4cefe4 minor #37273 Adding a few keywords (marclaporte)
This PR was merged into the 5.2-dev branch.

Discussion
----------

Adding a few keywords

| Q             | A
| ------------- | ---
| Branch?       | N/A
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | N/A
| License       | MIT
| Doc PR        | N/A

So project will appear here:
https://packagist.org/search/?tags=console
https://packagist.org/search/?tags=cli
https://packagist.org/search/?tags=command%20line

Commits
-------

f1c5bdf6f8 Adding a few keywords
2020-06-16 07:03:57 +02:00
Fabien Potencier
bf2fb938be bumped Symfony version to 5.1.3 2020-06-15 16:01:03 +02:00
Fabien Potencier
b551cb4c45
Merge pull request #37288 from fabpot/release-5.1.2
released v5.1.2
2020-06-15 15:51:55 +02:00
Fabien Potencier
04f054e44c updated VERSION for 5.1.2 2020-06-15 15:51:38 +02:00
Nicolas Grekas
dadc606800 Merge branch '5.1'
* 5.1:
  [Console] Reset question validator attempts only for actual stdin (bis)
  Fix CookieClearingLogoutListener DI configuration
  [HttpFoundation] use InputBag for Request::$request only if data is coming from a form
  Make PhpDocExtractor compatible with phpDocumentor v5
  fixed prototype block prefixes hierarchy of the CollectionType
  Reset question validator attempts only for actual stdin
  fixed block prefixes hierarchy of the CollectionType
  bumped Symfony version to 5.0.11
  updated VERSION for 5.0.10
  updated CHANGELOG for 5.0.10
  bumped Symfony version to 4.4.11
  updated VERSION for 4.4.10
  updated CHANGELOG for 4.4.10
2020-06-15 14:59:35 +02:00
Nicolas Grekas
d472983f21 Merge branch '5.0' into 5.1
* 5.0:
  [Console] Reset question validator attempts only for actual stdin (bis)
2020-06-15 14:59:21 +02:00
Nicolas Grekas
01095156ad Merge branch '4.4' into 5.0
* 4.4:
  [Console] Reset question validator attempts only for actual stdin (bis)
2020-06-15 14:59:07 +02:00
Nicolas Grekas
867642e337 [Console] Reset question validator attempts only for actual stdin (bis) 2020-06-15 14:37:55 +02:00
Fabien Potencier
5562d5c1ba Merge branch '5.0' into 5.1
* 5.0:
  Make PhpDocExtractor compatible with phpDocumentor v5
  Reset question validator attempts only for actual stdin
  bumped Symfony version to 5.0.11
  updated VERSION for 5.0.10
  updated CHANGELOG for 5.0.10
  bumped Symfony version to 4.4.11
  updated VERSION for 4.4.10
  updated CHANGELOG for 4.4.10
2020-06-15 13:50:15 +02:00
Fabien Potencier
6fff7b3672 Merge branch '4.4' into 5.0
* 4.4:
  Make PhpDocExtractor compatible with phpDocumentor v5
  Reset question validator attempts only for actual stdin
  bumped Symfony version to 4.4.11
  updated VERSION for 4.4.10
  updated CHANGELOG for 4.4.10
2020-06-15 13:49:47 +02:00
Fabien Potencier
05817f1928 bug #37265 [HttpFoundation] use InputBag for Request::$request only if data is coming from a form (nicolas-grekas)
This PR was merged into the 5.1 branch.

Discussion
----------

[HttpFoundation] use InputBag for Request::$request only if data is coming from a form

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37100
| License       | MIT
| Doc PR        | -

Commits
-------

786ba109d0 [HttpFoundation] use InputBag for Request::$request only if data is coming from a form
2020-06-15 13:42:23 +02:00
Laurent VOULLEMIER
7af3469771 [VarDumper] Fix CliDumper coloration
When using AbstractDumper::DUMP_LIGHT_ARRAY
2020-06-15 09:49:39 +02:00
Nicolas Grekas
786ba109d0 [HttpFoundation] use InputBag for Request::$request only if data is coming from a form 2020-06-15 08:52:54 +02:00
Fabien Potencier
52612b1541 bug #37160 Reset question validator attempts only for actual stdin (ostrolucky)
This PR was merged into the 4.4 branch.

Discussion
----------

Reset question validator attempts only for actual stdin

| Q             | A
| ------------- | ---
| Branch?       | 4/4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #37046
| License       | MIT
| Doc PR        |

Let's see what CI says. Works for me locally with phpunit and when running such command manually

Commits
-------

8fe7be4212 Reset question validator attempts only for actual stdin
2020-06-15 07:23:00 +02:00
Fabien Potencier
bb8e66bc5f bug #36975 [PropertyInfo] Make PhpDocExtractor compatible with phpDocumentor v5 (DerManoMann)
This PR was merged into the 4.4 branch.

Discussion
----------

[PropertyInfo] Make PhpDocExtractor compatible with phpDocumentor v5

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #36049
| License       | MIT
| Doc PR        | N/A

Version 5 of phpDocumentor introduced some changes to the `getTagsByName()` method that break the `PhpDocExtractor`.

More specific, it now returns an instance of `InvalidTag` instead of `null` when parsing an invalid tag.

Commits
-------

b1f8e5a80a Make PhpDocExtractor compatible with phpDocumentor v5
2020-06-15 07:20:14 +02:00
DerManoMann
b1f8e5a80a Make PhpDocExtractor compatible with phpDocumentor v5
Version 5 of phpDocumentor introduced some changes to the
`getTagsByName()` method that break the `PhpDocExtractor`.
More specific, it now returns an instance of `InvalidTag` instead of
`null` when parsing an invalid tag.
2020-06-15 09:00:35 +12:00
Yonel Ceruto
65efc36e94 fixed prototype block prefixes hierarchy of the CollectionType 2020-06-14 11:52:41 -04:00
Gabriel Ostrolucký
8fe7be4212 Reset question validator attempts only for actual stdin 2020-06-14 17:02:32 +02:00
Yonel Ceruto
a8f2c60368 fixed block prefixes hierarchy of the CollectionType 2020-06-14 09:34:09 -04:00
Nicolas Grekas
b746dd900c [DI] tighten detection of local dirs to prevent false positives 2020-06-14 14:27:25 +02:00
Marc Laporte
f1c5bdf6f8
Adding a few keywords
So project will appear here:
https://packagist.org/search/?tags=console
https://packagist.org/search/?tags=cli
https://packagist.org/search/?tags=command%20line
2020-06-13 15:20:33 -04:00
Fabien Potencier
b04512a6fa Merge branch '5.1'
* 5.1:
  [Security] Run functional tests also for the authenticator system
  Fix register csrf protection listener
  bumped Symfony version to 5.1.2
  updated VERSION for 5.1.1
  updated CHANGELOG for 5.1.1
2020-06-13 17:58:10 +02:00
Jérémy Derussé
992205a759
Fix precendence in 4.4 2020-06-13 17:35:21 +02:00
Wouter de Jong
49639caeaf [Security] Run functional tests also for the authenticator system 2020-06-13 17:06:42 +02:00
Alessandro Lai
876c64e52e
Rework to throw exception if status code is not initialized; add tests 2020-06-12 16:38:11 +02:00
Fabien Potencier
cef93eaec5 feature #35834 [Notifier] Remove default transport property in Transports class (jschaedl)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[Notifier] Remove default transport property in Transports class

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | - <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | tbd. <!-- required for new features -->

At the moment the `Transports` class uses the first element of the injected transports array as the default transport: https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Notifier/Transport/Transports.php#L35

If you try to send a message that doesn't define a transport (`!$message->getTransport()`) the default transport is used. I see two main drawbacks with this solution that I try to fix with this PR:

1. There is no check if the given message is supported by the default transport. What means that the transport is going to fail with an Exception, if it's not supporting the given message. E.g. the `SlackTransport` only supports `ChatMessage`s with nullable options or options from type `SlackOptions`. So as a default transport the `SlackTransport` can't handle all types of `ChatMessage`s.

2. Why should we only send the message using the default transport if there are more possible transports which are probably supported?

I did the following to fix the mentioned drawbacks:

- removed the default transport property
- added a check to make sure the transport defined by the message supports it
- send the message to **all** supported transports, in case the given message does not define a transport
- added a test

Commits
-------

5c167b08d3 [Notifier] Remove default transport property in Transports class
2020-06-12 14:23:25 +02:00
Jan Schädlich
5c167b08d3 [Notifier] Remove default transport property in Transports class 2020-06-12 14:23:20 +02:00
Fabien Potencier
86c79ce316 bumped Symfony version to 5.1.2 2020-06-12 14:20:44 +02:00
Fabien Potencier
6aafc48ddf updated VERSION for 5.1.1 2020-06-12 13:25:56 +02:00
Fabien Potencier
e5354f4f1b bumped Symfony version to 5.0.11 2020-06-12 13:25:22 +02:00
Fabien Potencier
3b4cc39f18 updated VERSION for 5.0.10 2020-06-12 13:20:19 +02:00
Fabien Potencier
055dd28bb8 bumped Symfony version to 4.4.11 2020-06-12 13:19:16 +02:00
Fabien Potencier
e71a9ff228 updated VERSION for 4.4.10 2020-06-12 13:15:37 +02:00
Fabien Potencier
b30f4c1537 bumped Symfony version to 3.4.43 2020-06-12 13:14:22 +02:00
Fabien Potencier
4d48338b6c updated VERSION for 3.4.42 2020-06-12 12:57:07 +02:00
Gabriel Solomon
a50c660823 update cookie test 2020-06-12 12:22:24 +03:00
Nicolas Grekas
813d220aa1 Merge branch '5.1'
* 5.1:
  cs
  fix merge
2020-06-12 10:40:00 +02:00
Nicolas Grekas
3afa4b2e72 Merge branch '5.0' into 5.1
* 5.0:
  cs
  fix merge
2020-06-12 10:39:51 +02:00
Nicolas Grekas
7b6ffda0b9 cs 2020-06-12 10:39:40 +02:00
Nicolas Grekas
d735b76302 fix merge 2020-06-12 10:38:59 +02:00
Nicolas Grekas
da28c38b9f Merge branch '5.1'
* 5.1:
  fix merge
2020-06-12 10:26:30 +02:00
Nicolas Grekas
acc88829de Merge branch '5.0' into 5.1
* 5.0:
  fix merge
2020-06-12 10:26:18 +02:00
Nicolas Grekas
15747d3ebb Merge branch '4.4' into 5.0
* 4.4:
  fix merge
2020-06-12 10:26:05 +02:00
Nicolas Grekas
6304b6b11a fix merge 2020-06-12 10:25:05 +02:00
Nicolas Grekas
e0478c0ab7 Merge branch '5.1'
* 5.1:
  fix merge
2020-06-12 10:22:55 +02:00
Nicolas Grekas
5b70cc8ac8 Merge branch '5.0' into 5.1
* 5.0:
  fix merge
2020-06-12 10:22:42 +02:00
Nicolas Grekas
8fa1cea06d fix merge 2020-06-12 10:22:28 +02:00
Nicolas Grekas
a10b542cd4 Merge branch '5.1'
* 5.1:
  [DependencyInjection][CheckTypeDeclarationsPass] Handle unresolved parameters pointing to environment variables
  switch the context when validating nested forms
  remove unused param from validator service config
  Fix typo
  [HttpKernel] Fix regression where Store does not return response body correctly
  rework form validator tests
  Update AbstractController.php
2020-06-12 10:18:54 +02:00
Nicolas Grekas
03bd1bf90a Merge branch '5.0' into 5.1
* 5.0:
  [DependencyInjection][CheckTypeDeclarationsPass] Handle unresolved parameters pointing to environment variables
  switch the context when validating nested forms
  remove unused param from validator service config
  Fix typo
  [HttpKernel] Fix regression where Store does not return response body correctly
  rework form validator tests
  Update AbstractController.php
2020-06-12 10:11:32 +02:00
Nicolas Grekas
6c4695f4ec Merge branch '4.4' into 5.0
* 4.4:
  [DependencyInjection][CheckTypeDeclarationsPass] Handle unresolved parameters pointing to environment variables
  switch the context when validating nested forms
  remove unused param from validator service config
  Fix typo
  [HttpKernel] Fix regression where Store does not return response body correctly
  rework form validator tests
  Update AbstractController.php
2020-06-12 10:11:14 +02:00
Nicolas Grekas
02df1c9b53 Merge branch '3.4' into 4.4
* 3.4:
  switch the context when validating nested forms
  Fix typo
  [HttpKernel] Fix regression where Store does not return response body correctly
  rework form validator tests
  Update AbstractController.php
2020-06-12 10:10:13 +02:00
Thomas Calvet
dac3c8fae8 [DependencyInjection][CheckTypeDeclarationsPass] Handle unresolved parameters pointing to environment variables 2020-06-12 09:37:04 +02:00
Fabien Potencier
1f83212541 bug #37103 [Form] switch the context when validating nested forms (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] switch the context when validating nested forms

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37072
| License       | MIT
| Doc PR        |

Commits
-------

38135de549 switch the context when validating nested forms
2020-06-12 09:33:15 +02:00
Christian Flothmann
38135de549 switch the context when validating nested forms 2020-06-12 09:11:17 +02:00
Tobias Schultze
c14f0e6dea Merge branch '5.1' 2020-06-11 23:21:11 +02:00
Tobias Schultze
551f7cfa8d Merge branch '5.0' into 5.1 2020-06-11 23:20:02 +02:00
Tobias Schultze
c704acbf9b Merge branch '4.4' into 5.0 2020-06-11 23:19:34 +02:00
Fabien Potencier
816b6ea6f1 Fix typo 2020-06-11 15:00:25 +02:00
Matthias Pigulla
176e769e5f [HttpKernel] Fix regression where Store does not return response body correctly 2020-06-11 14:59:37 +02:00
Fabien Potencier
b1f2a1409c bug #37193 [DependencyInjection][CheckTypeDeclarationsPass] Always resolve parameters (fancyweb)
This PR was merged into the 4.4 branch.

Discussion
----------

[DependencyInjection][CheckTypeDeclarationsPass] Always resolve parameters

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | https://github.com/symfony/symfony/issues/37166
| License       | MIT
| Doc PR        | -

> Only array parameters are not inlined when dumped.

This is true only when the XML debug container is used, not on a live container that can contain unresolved parameters in the `%my_param%` form. That was my mistake. We have to resolve to get the parameter type.

`$value = [];` was just an improvement to avoid useless parameter resolve btw.

Commits
-------

da0e2c36ef [DependencyInjection][CheckTypeDeclarationsPass] Always resolve parameters
2020-06-11 14:58:51 +02:00
Nicolas Grekas
69c37c0335 bug #37054 [String] Fix ellipsis of truncate when not using cut option (DuboisS)
This PR was merged into the 5.1 branch.

Discussion
----------

[String] Fix ellipsis of truncate when not using cut option

| Q             | A
| ------------- | ---
| Branch?       | 5.1 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | - <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | - <!-- required for new features -->

[Since 5.1](https://symfony.com/blog/new-in-symfony-5-1-string-improvements#keep-the-last-word-when-truncating), we can use a cut option on truncate.
But with this option, we don't have the expected behavior when the entire chain is returned.

Currently:
`u('Lorem Ipsum')->truncate(8, '…', false); // 'Lorem Ipsum...'`
Instead of:
`u('Lorem Ipsum')->truncate(8, '…', false); // 'Lorem Ipsum'`

Thanks to @jmsche for his help.

Commits
-------

a2ee6c6cf4 [String] Fix ellipsis of truncate when not using cut option
2020-06-11 14:17:23 +02:00
Steven Dubois
a2ee6c6cf4 [String] Fix ellipsis of truncate when not using cut option 2020-06-11 14:16:36 +02:00
Fabien Potencier
8df6380fc7 Fix CHANGELOG 2020-06-11 09:26:22 +02:00
Nicolas Grekas
d3a450353d [HttpClient] make DNS resolution lazy with NativeHttpClient 2020-06-11 00:12:57 +02:00
Thomas Calvet
da0e2c36ef [DependencyInjection][CheckTypeDeclarationsPass] Always resolve parameters 2020-06-10 18:12:11 +02:00
Nicolas Grekas
ff05be06ec [HttpClient] fix offset computation for data chunks 2020-06-10 17:33:47 +02:00
Nicolas Grekas
a7b18ff590 [HttpClient] disable AMP's inactivity timeout, we deal with it on our own already 2020-06-10 17:30:04 +02:00
Fabien Potencier
7c892eedba bug #37176 [Routing] Keeping routes priorities after add a name prefix to the collection (yceruto)
This PR was merged into the 5.1 branch.

Discussion
----------

[Routing] Keeping routes priorities after add a name prefix to the collection

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37089
| License       | MIT
| Doc PR        | -

Commits
-------

10105267b5 kept routes priorities after add a name prefix to the collection
2020-06-10 16:21:57 +02:00
Fabien Potencier
292be5fda8 bug #37140 [Lock] Fixed reading locks from replica set secondary nodes (kralos)
This PR was squashed before being merged into the 5.1 branch.

Discussion
----------

[Lock] Fixed reading locks from replica set secondary nodes

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37139
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/13775

Force lock existence query to use `readPreference=primary` in case the given mongo connection is using any of the following `readPreference`s:

* primaryPreferred
* secondary
* secondaryPreferred
* nearest

Any of the above would fail if a secondary node is queried during a lock release.

Commits
-------

ebf7eaf503 [Lock] Fixed reading locks from replica set secondary nodes
2020-06-10 16:19:12 +02:00
Joe Bennett
ebf7eaf503 [Lock] Fixed reading locks from replica set secondary nodes 2020-06-10 16:18:57 +02:00
Yonel Ceruto
10105267b5 kept routes priorities after add a name prefix to the collection 2020-06-10 07:49:58 -04:00
Fabien Potencier
d1b014a1cb feature #37165 [Mime] Add DKIM support (fabpot)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Mime] Add DKIM support

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #36014 <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | not yet

```php
$dkimSigner = new DkimSigner($pk, 'example.com', 'sf');
$signedEmail = $dkimSigner->sign($email);
```
You can also pass options:

```php
$dkimSigner = new DkimSigner($pk, 'example.com', 'sf');
$signedEmail = $dkimSigner->sign($email, (new DkimOptions())
    ->bodyCanon('relaxed')
    ->headerCanon('relaxed')
    ->headersToIgnore(['Message-ID'])
    ->toArray()
);
```

Commits
-------

6dc533821c [Mime] Add DKIM support
2020-06-10 12:50:38 +02:00
Fabien Potencier
6dc533821c [Mime] Add DKIM support 2020-06-10 12:27:43 +02:00
Robin Chalas
c70241e3d2 bug #37177 [Ldap] fix refreshUser() ignoring extra_fields (arkste)
This PR was squashed before being merged into the 4.4 branch (closes #37177).

Discussion
----------

[Ldap] fix refreshUser() ignoring extra_fields

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? |no
| Tickets       | -
| License       | MIT
| Doc PR        | -

While #31532 introduced `extra_fields` in general, #32824 later added `LdapUser` & `LdapUserProvider` and ignored `extra_fields` on `refreshUser()`.

This PR fixes `refreshUser()` and adds a test which makes sure, that the refreshed ldap user doesn't lose its default values.

Commits
-------

cb8f12996c [Ldap] fix refreshUser() ignoring extra_fields
2020-06-10 10:37:06 +02:00
Arkadius Stefanski
cb8f12996c [Ldap] fix refreshUser() ignoring extra_fields 2020-06-10 10:36:58 +02:00
Fabien Potencier
52161f35c7 [Mailer] Remove an internal annot 2020-06-10 07:55:43 +02:00
Fabien Potencier
ea956b1956 feature #36802 [Console] Add support for true colors (fabpot)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[Console] Add support for true colors

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #26576, Fix #19844 <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | -

This PR adds support for true colors in the Console component.

Instead of adding many ways to add more colors than the current "default" ones, I've opted to only add true color support via Hex CSS colors. If you have something else (RGB, HSV, ...), you need to first convert it to a CSS color. I've also decided to not support the ANSI 256 colors as most terminals support true colors nowadays.

If true colors are not supported by the terminal, we fall back to the "nearest" default color.

`<fg=green;bg=blue>` is now equivalent to `<fg=#00ff00;bg=#00f>`.

The `Color` class is usable outside of the Console framework as well:

```php
$color = new Color('black', 'white');
echo $color->apply("foo");
echo "\n";

$color = new Color('red', 'yellow');
echo $color->apply("foo");
echo "\n";

$color = new Color('#000000', '#ffffff');
echo $color->apply("foo");
$color = new Color('#000', '#fff', ['underscore', 'reverse']);
echo $color->apply("bar");
echo "\n";
```

Rainbow time!

```php
function rainbowColor($i) {
    $h = (int) ($i / 43);
    $f = (int) ($i - 43 * $h);
    $t = (int) ($f * 255 / 43);
    $q = 255 - $t;

    if ($h == 0) {
        return new Color('', sprintf('#FF%02x00', $t));
    } elseif ($h == 1) {
        return new Color('', sprintf('#%02xFF00', $q));
    } elseif ($h == 2) {
        return new Color('', sprintf('#00FF%02x', $t));
    } elseif ($h == 3) {
        return new Color('', sprintf('#00%02xFF', $q));
    } elseif ($h == 4) {
        return new Color('', sprintf('#%02x00FF', $t));
    } elseif ($h == 5) {
        return new Color('', sprintf('#FF00%02x', $q));
    }
}

for ($i = 0; $i < 128; $i++) {
    echo rainbowColor($i)->apply(' ');
}
echo "\n";

for ($i = 255; $i >= 128; $i--) {
    echo rainbowColor($i)->apply(' ');
}
echo "\n";
```

![image](https://user-images.githubusercontent.com/47313/81796170-59af5e00-950d-11ea-8203-18c13ae8a07e.png)

Commits
-------

d066514cf1 [Console] Add support for true colors
2020-06-10 05:08:03 +02:00
Fabien Potencier
d066514cf1 [Console] Add support for true colors 2020-06-10 04:55:06 +02:00
Fabien Potencier
1fd4e8bb60 [DependencyInjection] Add abstract_arg() and param() 2020-06-10 04:11:30 +02:00
Fabien Potencier
bb70cc8c47 minor #37039 [ExpressionLanguage] add details for error messages (mamontovdmitriy)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[ExpressionLanguage] add details for error messages

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #36847
| License       | MIT
| Doc PR        |

Hello!

This PR contains a more detail error messages for [ExpressionLanguage], which include info about affected node and attribute.

My English is poor. Please, spell check in error texts.

Commits
-------

5852a8cedd [ExpressionLanguage] add details for error messages
2020-06-10 03:51:12 +02:00
Fabien Potencier
dee6d437b6 feature #37040 [PropertyInfo] Support using the SerializerExtractor with no group check (GuilhemN)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

[PropertyInfo] Support using the SerializerExtractor with no group check

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       |  <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        |  <!-- required for new features -->

It seems there is no way currently to leverage the new `@Ignore` annotation metadata without using serializer groups in third party code.
Indeed the only way to access the serializer's metadata is through the PropertyInfo component since metadata are marked as `@internal` in the Serializer component itself. However, the PropertyInfo component doesn't allow accessing them without using a groups constraint.

This PR proposes a fix by interpreting `serializer_groups = null` as no groups constraint.

This feature would be useful in NelmioApiDocBundle, see https://github.com/nelmio/NelmioApiDocBundle/issues/1595.

Commits
-------

4190bfaf48 [PropertyInfo] Support using the SerializerExtractor with no group check
2020-06-10 03:48:12 +02:00
Guilhem Niot
4190bfaf48 [PropertyInfo] Support using the SerializerExtractor with no group check 2020-06-10 03:48:06 +02:00
Fabien Potencier
4972ee08ef minor #37147 [DependencyInjection] Display alternatives when a service is not found in CheckExceptionOnInvalidReferenceBehaviorPass (fancyweb)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[DependencyInjection] Display alternatives when a service is not found in CheckExceptionOnInvalidReferenceBehaviorPass

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

I often see the mistake of using `@my_service` instead of `my_service` in bundles configurations in YAML (on entries that are then turned into references). Since we don't currently display alternatives, the message content is just that the service don't exist which is hard to understand for new users of the framework.

Commits
-------

6b8f181f1a [DependencyInjection] Display alternatives when a service is not found in CheckExceptionOnInvalidReferenceBehaviorPass
2020-06-10 03:37:54 +02:00
Fabien Potencier
f88570af2f bug #37162 [Mailer] added the reply-to addresses to the API SES transport request. (ribeiropaulor)
This PR was merged into the 4.4 branch.

Discussion
----------

[Mailer] added the reply-to addresses to the API SES transport request.

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| License       | MIT

The transport was not sending the reply-to addresses to the SES API when using SendEmail API method.

Commits
-------

ee752f90ed [Mailer] added the reply-to addresses to the API SES transport request.
2020-06-10 03:24:15 +02:00
Paulo Ribeiro
ee752f90ed [Mailer] added the reply-to addresses to the API SES transport request.
The transport was not sending the reply-to addresses to the SES API.
2020-06-10 03:24:02 +02:00
Nicolas Grekas
6d6d989dbe bug #37144 [DI] Add check around class_alias for generated proxy classes (enumag)
This PR was merged into the 5.1 branch.

Discussion
----------

[DI] Add check around class_alias for generated proxy classes

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | nofiles -->
| Tickets       | Fix #37059
| License       | MIT
| Doc PR        |

Here is the [requested](https://github.com/symfony/symfony/issues/37059#issuecomment-638633262) fix.

I'd like to note that I consider this kind of a workaround. I don't know why the issue only started to appear with Symfony 5.1 and not before. There might be some other problem hidden somewhere else.

Commits
-------

c8b7459115 Add class_alias for generated proxy classes
2020-06-09 18:10:54 +02:00
Fabien Potencier
6e28fdaa57 [Mime] Deprecate Address::fromString() 2020-06-09 17:54:11 +02:00
Nicolas Grekas
548818d7e9 [HttpClient] improve monitoring of timeouts with AmpHttpClient 2020-06-09 17:53:13 +02:00
Fabien Potencier
61d79e19a9 Merge branch '5.1'
* 5.1:
  [Mime] use fromString when creating a new Adress
2020-06-09 17:07:48 +02:00
Fabien Potencier
d08db0f3f5 Merge branch '5.0' into 5.1
* 5.0:
  [Mime] use fromString when creating a new Adress
2020-06-09 17:07:35 +02:00
Fabien Potencier
748854bad1 Merge branch '4.4' into 5.0
* 4.4:
  [Mime] use fromString when creating a new Adress
2020-06-09 17:07:20 +02:00
Fabien Potencier
5b719d1ee4 bug #37167 [Mime] use fromString when creating a new Address (fabpot)
This PR was merged into the 4.4 branch.

Discussion
----------

[Mime] use fromString when creating a new Address

| Q             | A
| ------------- | ---
| Branch?       | 4.4 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | n/a

When creating an Address, there are two ways right now in 4.4: `Address::create()` which takes an email or an instance of Address and `Address::fromString()` which takes an email or an email+name.

In 4.4, I propose to make `create` supports everything possible. And in 5.2, I will probably propose to deprecate `fromString()`.

Commits
-------

de68787693 [Mime] use fromString when creating a new Adress
2020-06-09 17:06:27 +02:00
Christian Flothmann
f062e08f4d rework form validator tests 2020-06-09 16:48:06 +02:00
Nicolas Grekas
284f6f2b0f Merge branch '5.1'
* 5.1:
  [Messenger] fix typo
2020-06-09 16:24:57 +02:00
Nicolas Grekas
7da0ffd062 Merge branch '5.0' into 5.1
* 5.0:
  [Messenger] fix typo
2020-06-09 16:24:29 +02:00
Nicolas Grekas
bd4a238fb2 Merge branch '4.4' into 5.0
* 4.4:
  [Messenger] fix typo
2020-06-09 16:23:46 +02:00
Nicolas Grekas
749380a399 [Messenger] fix typo 2020-06-09 16:23:13 +02:00
Nicolas Grekas
7e6ff0d47e Merge branch '5.1'
* 5.1:
  Correctly use doctrine/dbal v3+
  Correctly use doctrine/dbal v3+
2020-06-09 16:16:45 +02:00
Nicolas Grekas
374e23b967 Merge branch '5.0' into 5.1
* 5.0:
  Correctly use doctrine/dbal v3+
  Correctly use doctrine/dbal v3+
2020-06-09 16:15:34 +02:00
Nicolas Grekas
9bfe5065b7 Merge branch '4.4' into 5.0
* 4.4:
  Correctly use doctrine/dbal v3+
  Correctly use doctrine/dbal v3+
2020-06-09 16:10:15 +02:00
Nicolas Grekas
2ebb63a883 Merge branch '3.4' into 4.4
* 3.4:
  Correctly use doctrine/dbal v3+
2020-06-09 16:07:49 +02:00
Nicolas Grekas
909931d9a4 Correctly use doctrine/dbal v3+ 2020-06-09 16:07:03 +02:00
Nicolas Grekas
4a51827b6d Correctly use doctrine/dbal v3+ 2020-06-09 16:02:17 +02:00
Nicolas Grekas
880142ac40 Merge branch '5.1'
* 5.1:
  [Cache] fix parse error on PHP 5.5
  [Cache] fix compat with doctrine/dbal v3
  [Lock] fix compat with doctrine/dbal v3
2020-06-09 14:11:52 +02:00
Nicolas Grekas
d5ff9e7d81 Merge branch '5.0' into 5.1
* 5.0:
  [Cache] fix parse error on PHP 5.5
  [Cache] fix compat with doctrine/dbal v3
  [Lock] fix compat with doctrine/dbal v3
2020-06-09 14:11:32 +02:00
Nicolas Grekas
d0a11c7911 Merge branch '4.4' into 5.0
* 4.4:
  [Cache] fix parse error on PHP 5.5
2020-06-09 14:09:45 +02:00
Nicolas Grekas
e1050c9373 Merge branch '3.4' into 4.4
* 3.4:
  [Cache] fix parse error on PHP 5.5
2020-06-09 14:08:55 +02:00
Nicolas Grekas
ef6fc09260 [Cache] fix parse error on PHP 5.5 2020-06-09 14:06:18 +02:00
Nicolas Grekas
e8f4ca1c6d Merge branch '4.4' into 5.0
* 4.4:
  [Cache] fix compat with doctrine/dbal v3
  [Lock] fix compat with doctrine/dbal v3
2020-06-09 13:54:45 +02:00
Nicolas Grekas
1c328c64ad Merge branch '3.4' into 4.4
* 3.4:
  [Cache] fix compat with doctrine/dbal v3
2020-06-09 13:52:05 +02:00
Nicolas Grekas
0f76308929 [Cache] fix compat with doctrine/dbal v3 2020-06-09 13:48:38 +02:00
Nicolas Grekas
7bbbd3dd0d [Lock] fix compat with doctrine/dbal v3 2020-06-09 13:46:03 +02:00
Nicolas Grekas
ddcb795484 Merge branch '5.1'
* 5.1:
  minor #37141 [Messenger] fix forward compatibility with Doctrine DBAL 2.11+ (xabbuh)
  fix forward compatibility with Doctrine DBAL 3
  [WebProfilerBundle] Set NullLogger for functional tests
  [Mailer] Fixed generator bug when creating multiple transports using Transport::fromDsn
  [FrameworkBundle] Fix XSD definition
  Update welcome.html.php
  [FrameworkBundle] Remove reference to APP_SECRET in MicroKernelTrait
  [travis] add nightly to allowed failures
2020-06-09 13:33:42 +02:00
Nicolas Grekas
afefcfd078 Merge branch '5.0' into 5.1
* 5.0:
  minor #37141 [Messenger] fix forward compatibility with Doctrine DBAL 2.11+ (xabbuh)
  fix forward compatibility with Doctrine DBAL 3
  [WebProfilerBundle] Set NullLogger for functional tests
  [Mailer] Fixed generator bug when creating multiple transports using Transport::fromDsn
  [FrameworkBundle] Fix XSD definition
  Update welcome.html.php
  [travis] add nightly to allowed failures
2020-06-09 13:33:28 +02:00
Nicolas Grekas
19228e6740 Merge branch '4.4' into 5.0
* 4.4:
  minor #37141 [Messenger] fix forward compatibility with Doctrine DBAL 2.11+ (xabbuh)
  fix forward compatibility with Doctrine DBAL 3
  [WebProfilerBundle] Set NullLogger for functional tests
  [Mailer] Fixed generator bug when creating multiple transports using Transport::fromDsn
  [FrameworkBundle] Fix XSD definition
  Update welcome.html.php
  [travis] add nightly to allowed failures
2020-06-09 13:33:14 +02:00
Fabien Potencier
5a0645974f minor #37141 [Messenger] fix forward compatibility with Doctrine DBAL 2.11+ (xabbuh)
This PR was merged into the 5.1 branch.

Discussion
----------

[Messenger] fix forward compatibility with Doctrine DBAL 2.11+

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

The methods will be deprecated in 2.11 (see doctrine/dbal#4019), but the forward compatibility layer is only present in 3.0 (see doctrine/dbal#4007).

Commits
-------

bca4f9970b fix forward compatibility with Doctrine DBAL 2.11+
2020-06-09 13:31:06 +02:00
Nicolas Grekas
ae6894c3ed Merge branch '3.4' into 4.4
* 3.4:
  fix forward compatibility with Doctrine DBAL 3
  [WebProfilerBundle] Set NullLogger for functional tests
  [travis] add nightly to allowed failures
2020-06-09 13:29:11 +02:00
Christian Flothmann
316efef8b8 fix forward compatibility with Doctrine DBAL 3 2020-06-09 13:16:53 +02:00
Fabien Potencier
de68787693 [Mime] use fromString when creating a new Adress 2020-06-09 11:16:12 +02:00
Fabien Potencier
4d477ec3f0 feature #36736 [FrameworkBundle][Mailer] Add a way to configure some email headers from semantic configuration (fabpot)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[FrameworkBundle][Mailer] Add a way to configure some email headers from semantic configuration

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a  <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | not yet

The configuration allows to set global `sender` and `recipients`, but for the *envelope*.

If you want to set some global headers, it was not possible (a default `from` header for instance, of a `bcc`).

That's implemented in this PR.

Commits
-------

805e9e62c1 [FrameworkBundle][Mailer] Add a way to configure some email headers from semantic configuration
2020-06-09 10:49:17 +02:00
Fabien Potencier
805e9e62c1 [FrameworkBundle][Mailer] Add a way to configure some email headers from semantic configuration 2020-06-09 10:31:02 +02:00
Ahmed TAILOULOUTE
c5833fa784 [Mailer] Fixed generator bug when creating multiple transports using Transport::fromDsn 2020-06-09 10:20:50 +02:00
Jáchym Toušek
c8b7459115
Add class_alias for generated proxy classes 2020-06-09 08:49:31 +02:00
Nicolas Grekas
f3cc7c1bad [HttpClient] added support for pausing responses with a new pause_handler callable exposed as an info item 2020-06-09 07:26:34 +02:00
Fabien Potencier
d75ef185d1 feature #36779 [HttpClient] add AsyncDecoratorTrait to ease processing responses without breaking async (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[HttpClient] add AsyncDecoratorTrait to ease processing responses without breaking async

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #31885, fix #32367
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/13736

This PR allows processing the stream of chunks.

```php
<?php
$client = new class() implements HttpClientInterface {
    use AsyncDecoratorTrait;

    public function request(string $method, string $url, array $options): ResponseInterface
    {
        return new AsyncResponse($method, $url, $options, static function (ChunkInterface $chunk, AsyncContext $context) {

            // do what you want with chunks, e.g. split them
            // in smaller chunks, group them, skip some, etc.

            yield $chunk;
        });
    }
};
```

Some ideas:
- custom retry/redirect logic
- align chunk boundaries with server-sent events and yield augmented chunks that know about messages (see #36692)
- play some OAuth dance before issuing the real request
- do some live transclusion
- be creative :)

Any custom logic should fit into the `$passthru` filter iterator (the last constructor argument of `AsyncResponse`). There, one has access to an `AsyncContext` DTO, which allows controlling the stream, eg. to replace the current request/response, to change the passthru filter itself, etc.

The surrounding logic will catch badly behaving filters to ease spotting some mistakes (eg. never forwarding an "isLast()" chunk, or yielding extra chunks after an "isLast()" one, etc.)

For the record:
- When the chunk passthru issues many internal requests in order to complete the external one, the info of each internal request is accessible via the `previous_info` entry. I considered merging all internal `response_headers` info under the main one since that's possible, but I'm not sure it's worth the added complexity. Please tell me if you think we should do it.
- A future iteration/PR might add support for time-based events. Right now, implementing a pause in the stream involves calling `usleep()`, but this doesn't play really well with async. Implementing small pauses and summing them up to the target pause might be good enough - we'll need to give it a try to know better.

Commits
-------

766a1c6287 [HttpClient] add AsyncDecoratorTrait to ease processing responses without breaking async
2020-06-09 07:11:55 +02:00
Thomas Landauer
53491b9762 Update welcome.html.php 2020-06-08 20:54:12 +02:00
Fabien Potencier
5a74790bfd Merge branch '5.1'
* 5.1:
  fix forward compatibility with Doctrine DBAL 2.11+
  [SecurityBundle] Fix the session listener registration under the new authentication manager
  allow cursor to be used even when STDIN is not defined
2020-06-08 20:51:17 +02:00
Thomas Calvet
6b8f181f1a [DependencyInjection] Display alternatives when a service is not found in CheckExceptionOnInvalidReferenceBehaviorPass 2020-06-08 15:43:58 +02:00
Christian Flothmann
bca4f9970b fix forward compatibility with Doctrine DBAL 2.11+ 2020-06-08 11:16:34 +02:00
Nicolas Grekas
766a1c6287 [HttpClient] add AsyncDecoratorTrait to ease processing responses without breaking async 2020-06-08 00:07:07 +02:00
Christian Flothmann
aff1ffaeff allow cursor to be used even when STDIN is not defined 2020-06-07 21:47:44 +02:00
Nicolas Grekas
ec6b2801ec Merge branch '5.1'
* 5.1: (36 commits)
  Fixed left-over debug statement
  set column length for mysql 5.6 compatibility
  [Mime] Remove unused var
  [HttpClient] fix monitoring timeouts when other streams are active
  [PhpUnitBridge] fix syntax on PHP 5.3
  [PhpUnitBridge] Fix undefined index when output of "composer show" cannot be parsed
  properly cascade validation to child forms
  [PropertyAccess] Fix getter call order BC
  [PhpUnitBridge] fix undefined var on version 3.4
  Fix invalid char in SQS Headers
  Move ajax clear event listener initialization on loadToolbar
  [HttpClient] Throw JsonException instead of TransportException on empty response in Response::toArray()
  Fix CS
  FrameworkBundle Serializer issue
  register event listeners depending on the installed packages
  take into account the context when preserving empty array objects
  Only register CSRF protection listener if CSRF is available
  [VarExporter] tfix: s/markAsSkipped/markTestSkipped/
  Also check PUBLIC_ACCESS for authenticated tokens
  Fix enabled_locales behavior
  ...
2020-06-07 17:48:04 +02:00
Nicolas Grekas
5de548b60e bug #37053 [PropertyAccess] Fix getter call order BC (1ed)
This PR was merged into the 5.1 branch.

Discussion
----------

[PropertyAccess] Fix getter call order BC

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | #37052
| License       | MIT
| Doc PR        | -

Property Accessor breaks BC due to a change in the order of calling the getters, see #37052

Commits
-------

8cf80688c7 [PropertyAccess] Fix getter call order BC
2020-06-07 17:47:03 +02:00
Nicolas Grekas
717de3ef87 bug #37117 [Messenger/DoctrineBridge] set column length for mysql 5.6 compatibility (Nemo64)
This PR was merged into the 5.1 branch.

Discussion
----------

[Messenger/DoctrineBridge] set column length for mysql 5.6 compatibility

MySQL 5.6 does not support more than 191 characters when an index is used and when using utf8mb4 as charset.
As a workaround, I define the length of the queue_name field.

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #37116
| License       | MIT

Commits
-------

d12190687b set column length for mysql 5.6 compatibility
2020-06-07 17:46:15 +02:00
Nicolas Grekas
a31d761bd8 bug #37127 [Messenger/AmazonSqsBridge] Fixed left-over debug statement (sstok)
This PR was merged into the 5.1 branch.

Discussion
----------

[Messenger/AmazonSqsBridge] Fixed left-over debug statement

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  |
| Deprecations? | no
| Tickets       | Related to #37038
| License       | MIT
| Doc PR        |

I noticed whats properly a left-over debugging statement that blocks the code from further execution. /cc @jderusse can you check this (thanks).

Commits
-------

8b827e46f6 Fixed left-over debug statement
2020-06-07 17:45:39 +02:00
Nicolas Grekas
2ea0a147ce Merge branch '5.0' into 5.1
* 5.0:
  [Mime] Remove unused var
  [HttpClient] fix monitoring timeouts when other streams are active
  [PhpUnitBridge] fix syntax on PHP 5.3
  [PhpUnitBridge] Fix undefined index when output of "composer show" cannot be parsed
  properly cascade validation to child forms
  [PhpUnitBridge] fix undefined var on version 3.4
  Move ajax clear event listener initialization on loadToolbar
  [HttpClient] Throw JsonException instead of TransportException on empty response in Response::toArray()
  take into account the context when preserving empty array objects
  [VarExporter] tfix: s/markAsSkipped/markTestSkipped/
  bumped Symfony version to 5.0.10
  updated VERSION for 5.0.9
  updated CHANGELOG for 5.0.9
  bumped Symfony version to 4.4.10
  updated VERSION for 4.4.9
  updated CHANGELOG for 4.4.9
  bumped Symfony version to 3.4.42
  updated VERSION for 3.4.41
  update CONTRIBUTORS for 3.4.41
  updated CHANGELOG for 3.4.41
2020-06-07 17:42:22 +02:00
Nicolas Grekas
12dce498e1 Merge branch '4.4' into 5.0
* 4.4:
  [Mime] Remove unused var
  [HttpClient] fix monitoring timeouts when other streams are active
  [PhpUnitBridge] fix syntax on PHP 5.3
  [PhpUnitBridge] Fix undefined index when output of "composer show" cannot be parsed
  properly cascade validation to child forms
  [PhpUnitBridge] fix undefined var on version 3.4
  Move ajax clear event listener initialization on loadToolbar
  [HttpClient] Throw JsonException instead of TransportException on empty response in Response::toArray()
  take into account the context when preserving empty array objects
  [VarExporter] tfix: s/markAsSkipped/markTestSkipped/
  bumped Symfony version to 4.4.10
  updated VERSION for 4.4.9
  updated CHANGELOG for 4.4.9
  bumped Symfony version to 3.4.42
  updated VERSION for 3.4.41
  update CONTRIBUTORS for 3.4.41
  updated CHANGELOG for 3.4.41
2020-06-07 17:38:39 +02:00
Nicolas Grekas
3755efd88c bug #37048 [HttpClient] fix monitoring timeouts when other streams are active (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpClient] fix monitoring timeouts when other streams are active

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

d2a53f0bda [HttpClient] fix monitoring timeouts when other streams are active
2020-06-07 17:37:15 +02:00
Nicolas Grekas
1e7f3e26a1 Merge branch '3.4' into 4.4
* 3.4:
  [PhpUnitBridge] fix syntax on PHP 5.3
  [PhpUnitBridge] Fix undefined index when output of "composer show" cannot be parsed
  properly cascade validation to child forms
  [PhpUnitBridge] fix undefined var on version 3.4
  bumped Symfony version to 3.4.42
  updated VERSION for 3.4.41
  update CONTRIBUTORS for 3.4.41
  updated CHANGELOG for 3.4.41
2020-06-07 17:34:22 +02:00
Sebastiaan Stok
8b827e46f6
Fixed left-over debug statement 2020-06-07 11:03:29 +02:00
Marco Pfeiffer
d12190687b set column length for mysql 5.6 compatibility
MySQL 5.6 does not support more than 191 characters when an index is used and when using utf8mb4 as charset.
As a workaround, I define the length of the queue_name field.
2020-06-06 13:22:26 +02:00
Fabien Potencier
86613797d1 [Mime] Remove unused var 2020-06-05 23:43:09 +02:00
Nicolas Grekas
d2a53f0bda [HttpClient] fix monitoring timeouts when other streams are active 2020-06-05 22:14:25 +02:00
Loenix
0162063994
Fix minor mistake in error message 2020-06-05 15:34:09 +02:00
Christian Flothmann
7df5298ddf properly cascade validation to child forms 2020-06-04 12:14:17 +02:00
Gábor Egyed
8cf80688c7
[PropertyAccess] Fix getter call order BC 2020-06-04 11:56:18 +02:00
Fabien Potencier
b25168fe28 minor #36665 SCA: file_exists -> is_dir|is_file in foundation and kernel (kalessil)
This PR was squashed before being merged into the 5.2-dev branch.

Discussion
----------

SCA: file_exists -> is_dir|is_file in foundation and kernel

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | n/a
| License       | MIT
| Doc PR        | n/a

Inspired by #36556 and replaces file_exists with is_dir|is_file alternative in order to leverage built-in cache advantages.

Commits
-------

0c467691b2 SCA: file_exists -> is_dir|is_file in foundation and kernel
2020-06-03 10:29:26 +02:00
Vladimir Reznichenko
0c467691b2 SCA: file_exists -> is_dir|is_file in foundation and kernel 2020-06-03 10:29:19 +02:00
Fabien Potencier
ac00dcd0fb minor #36991 [String] use base58 by default in ByteString::fromRandom() (nicolas-grekas)
This PR was merged into the 5.2-dev branch.

Discussion
----------

[String] use base58 by default in ByteString::fromRandom()

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

This is the list from the [bitcoin alphabet](https://en.wikipedia.org/wiki/Base58): it's been designed to avoid characters that look ambiguous when printed.

Commits
-------

b36baa77bb [String] use base58 by default in ByteString::fromRandom()
2020-06-03 10:16:11 +02:00
Fabien Potencier
e778ea6367 bug #37022 [DependencyInjection] Improve missing package/version deprecation (acrobat)
This PR was merged into the 5.1 branch.

Discussion
----------

[DependencyInjection] Improve missing package/version deprecation

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       |
| License       | MIT
| Doc PR        |

After updating to symfony 5.1 I've got some deprecations related to the missing package/version attributes/options for `deprecated` on services.

But currently it's not clear which bundle/part of the code is triggering the deprecations. The only way for me to track down where they were coming from was by setting a xdebug breakpoint in the `XmlFileLoader` and check the `$file` variable.

So it seemed like a good idea to include the file path in the deprecation message, that way it will be easier for users to know if their code or a bundle (and which) is triggering this deprecation.

Before:
<img width="871" alt="Screenshot 2020-05-31 at 13 51 03" src="https://user-images.githubusercontent.com/1374857/83351609-d0d65600-a345-11ea-9785-3237a3ec2360.png">

After:
<img width="907" alt="Screenshot 2020-05-31 at 13 50 10" src="https://user-images.githubusercontent.com/1374857/83351606-cfa52900-a345-11ea-9617-60d07e46234b.png">

Commits
-------

f603317363 [DependencyInjection] Improve missing package/version deprecation
2020-06-03 10:14:01 +02:00
Fabien Potencier
773b4ef382 bug #37038 Fix invalid char in SQS Headers (jderusse)
This PR was squashed before being merged into the 5.1 branch.

Discussion
----------

Fix invalid char in SQS Headers

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | yes
| Tickets       | https://github.com/symfony/symfony/pull/36525#issuecomment-636658635
| License       | MIT
| Doc PR        | /

From [Amazon documnetation](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-attributes.html) header's name have constraints:
- only `a-zA-Z0-9_\.-` + not start/end with a `.`
- 256 char

This PR serialize ALL headers in a single SQS Attribute.

Commits
-------

76a18b0b47 Fix invalid char in SQS Headers
2020-06-03 10:07:24 +02:00
Jérémy Derussé
76a18b0b47 Fix invalid char in SQS Headers 2020-06-03 10:07:11 +02:00
Jeroen Noten
69547d9cfc [HttpClient] Throw JsonException instead of TransportException on empty response in Response::toArray() 2020-06-02 15:48:45 +02:00
Fabien Potencier
ab3772a94e bug #37020 [ExpressionLanguage] reset the internal state when the parser is finished (xabbuh)
This PR was merged into the 5.1 branch.

Discussion
----------

[ExpressionLanguage] reset the internal state when the parser is finished

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

d58eb020d0 reset the internal state when the parser is finished
2020-06-02 10:46:57 +02:00
Fabien Potencier
73fed65d16 Fix CS 2020-06-02 10:42:14 +02:00
Fabien Potencier
2234a70621 minor #37057 [Validator] simplify the tests (xabbuh)
This PR was merged into the 5.1 branch.

Discussion
----------

[Validator] simplify the tests

| Q             | A
| ------------- | ---
| Branch?       | 5.1
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

cfc6fc8527 simplify the tests
2020-06-02 10:41:45 +02:00
Christian Flothmann
98fff21140 take into account the context when preserving empty array objects 2020-06-01 19:29:37 +02:00
Dmitriy Mamontov
5852a8cedd [ExpressionLanguage] add details for error messages 2020-06-01 13:44:50 +03:00
David Prévot
393c9d920a [VarExporter] tfix: s/markAsSkipped/markTestSkipped/ 2020-05-31 15:10:09 -10:00
Wouter de Jong
0ac530f460 Also check PUBLIC_ACCESS for authenticated tokens
Currently, authenticated users are denied access for pages that have
PUBLIC_ACCESS, as this attribute is only checked when no token was set.
2020-05-31 23:41:52 +02:00
Jeroen Thora
f603317363
[DependencyInjection] Improve missing package/version deprecation 2020-05-31 13:36:45 +02:00
Christian Flothmann
d58eb020d0 reset the internal state when the parser is finished 2020-05-31 09:33:39 +02:00
Christian Flothmann
cfc6fc8527 simplify the tests 2020-05-31 09:21:25 +02:00