* 5.2: (23 commits)
[Console] Fix Windows code page support
[SecurityBundle] Allow ips parameter in access_control accept comma-separated string
[Form] Add TranslatableMessage support to choice_label option of ChoiceType
Remove code that deals with legacy behavior of PHP_Incomplete_Class
[Config][DependencyInjection] Uniformize trailing slash handling
[PropertyInfo] Make ReflectionExtractor correctly extract nullability
[PropertyInfo] fix attribute namespace with recursive traits
[PhpUnitBridge] Fix tests with `@doesNotPerformAssertions` annotations
Check redis extension version
[Security] Update Russian translations
[Notifier] Fix return SentMessage then Messenger not used
[VarExporter] Add support of PHP enumerations
[Security] Added missing Japanese translations
[Security] Added missing Polish translations
[Security] Add missing Italian translations #41051
[Security] Missing translations pt_BR
getProtocolVersion may return null
Fix return type on isAllowedProperty method
Make FailoverTransport always pick the first transport
[TwigBridge] Fix HTML for translatable custom-file label in Bootstrap 4 theme
...
This PR was submitted for the 5.x branch but it was squashed and merged into the 5.2 branch instead.
Discussion
----------
[Console] Fix Windows code page support
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#37385, Fix#35842, Fix#36324, Fix#37495, Fix#37278
| License | MIT
Corrects previous fixes that dealt with the mojibake problem on Windows where an OEM code page was applied to an input string and then messed with PHP.internal_encoding setting used by the script. This caused strings with different encodings to be displayed on the console output.
Commits
-------
be68682fd1 [Console] Fix Windows code page support
This PR was merged into the 5.2 branch.
Discussion
----------
[Security] Allow ips parameter in access_control to accept comma-separated string
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | #40881, #40864, #40865
| License | MIT
PR #38149 introduced a new feature to accept a comma-separated string in ip adresses setting in `access_control` configuration section of security bundle.
However the feature works in inconsistent manner: comma-separated string can be successfully passed via environment variable, but can not be passed as plain string. This PR changes this inconsistent behavior by allowing validation pass if comma-separated list of ip addresses is given in plain string.
More detailed explanation about the inconsistent behavior can be found [here](https://github.com/symfony/symfony/issues/40881#issuecomment-823906622)
Commits
-------
8947482342 [SecurityBundle] Allow ips parameter in access_control accept comma-separated string
This PR was merged into the 5.2 branch.
Discussion
----------
[TwigBridge] Fix HTML for translatable custom-file label in Bootstrap 4 theme
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
Bootstrap allows to translate/change the label of the upload button of a `custom-file` input via SCSS, see [Bootstrap docs](https://getbootstrap.com/docs/4.6/components/forms/#translating-or-customizing-the-strings-with-scss):
~~~scss
$custom-file-text: (
en: "Browse",
es: "Elegir"
);
~~~
This works by generating the following CSS which depends on the `lang` attribute of the input:
~~~css
.custom-file-input:lang(es) ~ .custom-file-label::after {
content: "Elegir";
}
~~~
This however currently does not work with the HTML generated by the theme since the resulting HTML is of the form (redacted here to the relevant parts):
~~~html
<div class="custom-file">
<input type="file" id="..." class="custom-file-input">
<label for="..." lang="es" class="custom-file-label"></label>
</div>
~~~
while it should be of the form
~~~html
<div class="custom-file">
<input type="file" id="..." lang="es" class="custom-file-input">
<label for="..." class="custom-file-label"></label>
</div>
~~~
i.e. the `lang` was placed on the `label` instead of the `input`.
This PR fixes this to be compatible with Bootstrap 4.
Commits
-------
a95bbaaaef [TwigBridge] Fix HTML for translatable custom-file label in Bootstrap 4 theme
This PR was merged into the 5.2 branch.
Discussion
----------
[Notifier] [Bridge] Fix missed messageId for SendMessage object in slack notifier
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | -
| Tickets | -
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
There are missed messageId property for SendMessage object in slack notifier.
Regarding slack's documentation: https://api.slack.com/messaging/sending#publishing
> One very important piece of information in this response is the `ts` value, which is essentially the ID of the message,
Commits
-------
838f36b09f [Notifier] [Bridge] Store message id for slack transport's SendMessage
This PR was merged into the 5.2 branch.
Discussion
----------
[Form] Add missing TranslatableMessage support to choice_label option of ChoiceType
It leads to loss of information because it'll use `__toString` to cast, which is incompatible with newly added `TranslatableMessage`, for example.
| Q | A
| ------------- | ---
| Branch? | 5.2 <!-- 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#40622 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License | MIT
| Doc PR | _none_
So this one's a bit tricky in my mind. I didn't want to check if `$dynamicLabel instanceof TranslatableMessage`, because of course it doesn't belong to the same component.
Aside, it would sound so strange to me to add `|object` to `$label` here: bb1e1e58ae/src/Symfony/Component/Form/ChoiceList/View/ChoiceView.php (L40)
But maybe that's the way to go? Requiring your help here. I'm fully open to your ideas, as we're loosing a big feature here by losing `TranslatableMessage` translation parameters.
If the passed object doesn't implement `__toString`, it'll lead to an exception during template rendering, as expected.
Commits
-------
c2873aaf0e [Form] Add TranslatableMessage support to choice_label option of ChoiceType
This PR was merged into the 5.2 branch.
Discussion
----------
Remove code that deals with legacy behavior of PHP_Incomplete_Class
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | -
| License | MIT
| Doc PR | -
Commits
-------
c5a4f7d8f9 Remove code that deals with legacy behavior of PHP_Incomplete_Class
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[PropertyInfo] Make ReflectionExtractor correctly extract nullability
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#40659
| License | MIT
| Doc PR | no
When the property had a default value ReflectionExtractor was always returning isNullable: false. After PHP 7.4 we can get isNullable from the typehint.
Commits
-------
d5fce4c779 [PropertyInfo] Make ReflectionExtractor correctly extract nullability
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[PropertyInfo] fix attribute namespace with recursive traits
| Q | A
| ------------- | ---
| Branch? | 4.4
| 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#36997 <!-- 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 -->
The targeted issue is closed because considered as solved by https://github.com/symfony/symfony/pull/40175.
However, the fix is not enough and is not working with recursive trait inclusion. (see https://github.com/symfony/symfony/issues/36997#issuecomment-822572640).
This pull request is completing the first fix of `@xabbuh`, trying to follow the same coding style. 😉
Commits
-------
bbadfb34cc [PropertyInfo] fix attribute namespace with recursive traits
This PR was merged into the 5.3-dev branch.
Discussion
----------
[Mime] Add support for application/vnd.etsi.asic-e+zip mime type
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | -
| License | MIT
| Doc PR | -
`application/vnd.etsi.asic-e+zip` is a mime type used by `.asice` (formerly `.bdoc`) file containers. Such files are widely used in Estonia to represent digitally signed files.
**Resources:**
https://www.id.ee/wp-content/uploads/2020/06/bdoc-spec212-eng.pdf (spec)
https://www.iana.org/assignments/media-types/application/vnd.etsi.asic-e+zip
Commits
-------
165434cd15 Include .asice extension in mime types update script
This PR was submitted for the 5.x branch but it was squashed and merged into the 5.2 branch instead.
Discussion
----------
[PhpUnitBridge] Fix tests with ``@doesNotPerformAssertions`` annotations
| Q | A
| ------------- | ---
| Branch? | 4.4
| 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 #", no need to create an issue if none exist, explain below instead -->
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
If a test uses the ``@doesNotPerformAssertions`` and also has the Symfony Deprecation listener enabled because it is using the trait as well then this does not work as expected. Currently the bridge is checking this annotation/setting prior to running the test. This results in:
* Tests not working as expected when `$this->expectNotToPerformAssertions()` is called during a test
* If this is being used to ensure that a test does not perform an assertion then due to the bridge the test will no longer be marked as risky because we call `$test->getTestResultObject()->beStrictAboutTestsThatDoNotTestAnything(false);`
Commits
-------
4ad12320cd [PhpUnitBridge] Fix tests with ``@doesNotPerformAssertions`` annotations
This PR was merged into the 4.4 branch.
Discussion
----------
[Cache] Check if phpredis version is compatible with stream parameter
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| License | MIT
If you use phpredis <5.3.0, you can't connect to Redis since symfony/cache 5.2.7
Fixes#41110
Commits
-------
841d85a7ce Check redis extension version
This PR was merged into the 4.4 branch.
Discussion
----------
[Translation] [CI] Set default locale for IdentityTranslatorTest
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | Fix
| License | MIT
| Doc PR |
This will fix a few CI issues. Not sure if this is the correct fix.
Commits
-------
92a61b1cf6 [Translation] Set default locale for IdentityTranslatorTest
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[Security] Update Russian translations
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | Fix#41064
| License | MIT
| Doc PR |
Translate to Russian
Commits
-------
965c6e4a2d [Security] Update Russian translations
This PR was merged into the 5.2 branch.
Discussion
----------
[Notifier] Fix return SentMessage then Messenger not used
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | --
| License | MIT
| Doc PR | --
https://github.com/symfony/symfony/pull/37748 Broke the Notifier when Transport not used.
Commits
-------
1245114257 [Notifier] Fix return SentMessage then Messenger not used
This PR was merged into the 5.3-dev branch.
Discussion
----------
Avoid regenerating the remember me token if it is still fresh
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | ~yes
| New feature? | no?
| Deprecations? | no
| Tickets | Refs https://github.com/symfony/symfony/issues/40971
| License | MIT
| Doc PR | <!-- required for new features -->
Please see https://github.com/symfony/symfony/issues/40971 for more information about the context of this change.
As it was discussed in https://github.com/symfony/symfony/issues/18384 - regenerating the remember me token/cookie is done to avoid old cookies being stolen and reused, this is a valid concern (although cookie theft is much harder these days with httpOnly and secure flags) and a good security practice, but if the token was refreshed very recently it seems a bit overkill to refresh it again, it leads to more DB writes, and for us who are trying to support concurrent re-authenticating requests it is causing further problems if every request triggers a new token update.
I'd be happy to also update this in the old PersistentTokenBasedRememberMeServices if needed, but I find that it is perhaps better to just do this in the new auth system as it was until 5.3 considered experimental.
Commits
-------
a942b5f684 Avoid regenerating the remember me token if it is still fresh
This PR was merged into the 5.3-dev branch.
Discussion
----------
[DoctrineBridge] added missing `
| Q | A
| ------------- | ---
| Branch? | 5.x for features
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| License | MIT
Commits
-------
e596f4da1e added missing `
This PR was merged into the 4.4 branch.
Discussion
----------
[VarExporter] Add support of PHP enumerations
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#40237
| License | MIT
| Doc PR | _none_
Commits
-------
4b0f2997a5 [VarExporter] Add support of PHP enumerations
This PR was merged into the 5.3-dev branch.
Discussion
----------
[Notifier] Add SlackOptions::threadTs() to send message as reply
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets | no
| License | MIT
| Doc PR | no
Allow specify argument [thread_ts](https://api.slack.com/methods/chat.postMessage#arg_thread_ts) to send reply message.
Commits
-------
d3807a79b8 [Notifier] Add SlackOptions::threadTs() to send message as reply
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[Security] Added missing Japanese translations
| Q | A
| ------------- | ---
| Branch? | 4.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#41052 <!-- 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 -->
<!--
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.
- Changelog entry should follow https://symfony.com/doc/current/contributing/code/conventions.html#writing-a-changelog-entry
-->
Added id19 and id20.
The indentation for id17 and id18 was incorrect, so I fixed it.
I hope it helps you :)
Commits
-------
26cd193085 [Security] Added missing Japanese translations
This PR was merged into the 5.2 branch.
Discussion
----------
Fix return type in isAllowedProperty method on ReflectionExtractor class
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#41103
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
Commits
-------
8c0e8f7d83 Fix return type on isAllowedProperty method
This PR was merged into the 5.2 branch.
Discussion
----------
[Notifier] Make FailoverTransport always pick the first transport
| Q | A
| ------------- | ---
| Branch? | 5.2
| 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#40895 <!-- 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 5.x.
- Changelog entry should follow https://symfony.com/doc/current/contributing/code/conventions.html#writing-a-changelog-entry
-->
Commits
-------
337f828b23 Make FailoverTransport always pick the first transport
This PR was squashed before being merged into the 5.3-dev branch.
Discussion
----------
[TwigBridge] Add form templates for Bootstrap 5
| Q | A
| ------------- | ---
| Branch | 5.x
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR | [#15158](https://github.com/symfony/symfony-docs/pull/15158)
This PR add support for [Bootstrap 5](https://v5.getbootstrap.com/)
* Removal of the `form-group` class as it no longer exists in Bootstrap 5. Instead, row `div` have a `mb-3` class by default that can be override with the `row_attr` option.
* Errors are no longer display inside `label` but after the `widget` (or `help` if present).
* Replace `form-control` with `form-select` in `choice_widget_collapsed` block.
* Replace `form-control` with `form-range` in `form_widget_simple` block when the type is `range`.
* Add `form-control-color` to the `widget` class if type is `color`.
* Replace `small` with `div` element for `help` and also remove the `text-muted` class.
* Update the `percent_widget` and `money_widget` to handle correctly prepend and append elements.
* Drop support for custom file input as it's no longer (or yet ?) supported in Bootstrap 5
[Bootstrap 5 forms overview](https://v5.getbootstrap.com/docs/5.0/forms/overview/)
[Bootstrap 5 migration](https://v5.getbootstrap.com/docs/5.0/migration/)
Here is the result:
![bootstrap_5_layout](https://user-images.githubusercontent.com/5331654/100088569-9e1e9d80-2e50-11eb-88bf-2596e9ae7d28.png)
![bootstrap_5_horizontal_layout](https://user-images.githubusercontent.com/5331654/100088582-a24abb00-2e50-11eb-9b0c-09336c0327cd.png)
Commits
-------
d52d0969ab [TwigBridge] Add form templates for Bootstrap 5
This PR was merged into the 4.4 branch.
Discussion
----------
[Security] Add missing Italian translations
| Q | A
| ------------- | ---
| Branch? | 4.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#41051 <!-- 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 -->
Commits
-------
4dc5c82fa4 [Security] Add missing Italian translations #41051
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[Security] Added missing Polish translations
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | Fix ##41061
| License | MIT
| Doc PR | N/A
The translations added were based off the english ones.
This is my first PR ever, I hope I didn't do any mistakes.
Commits
-------
774a1d35da [Security] Added missing Polish translations
This PR was merged into the 4.4 branch.
Discussion
----------
[HttpFoundation] Request::getProtocolVersion may return null
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| License | MIT
This is just a minor PHPDoc fix, but we stumbled on it in https://github.com/getsentry/sentry-symfony/pull/495, and static analysis complains about our fix.
Basically, `SERVER_PROTOCOL` may not be set, even if it shouldn't be missing according to [RFC 3875 (GCI spec)](https://tools.ietf.org/html/rfc3875#section-4.1.16). In our case, the user reported the issue because the request was issued interally by a pod health check inside Kubernetes.
Commits
-------
99aadb31ff getProtocolVersion may return null