* 5.1:
minor cs fix
[Config][TwigBundle] Fixed syntax error in config
[DI] Fix Xdebug 3.0 detection
Use php8 stable
[Notifier] Streamline changelogs of notifier bridges
[Cache] fix checking for redis_sentinel support
[Messenger] Fixed wording in php doc
[Intl] Update the ICU data to 68.1
[FrameworkBundle] acces public-deprecated services via the private container to remove false-positive deprecations
Remove unused @throws tags and handling of never thrown exceptions
[PhpUnitBridge] Fix disabling DeprecationErrorHandler from phpunit configuration file
* 4.4:
minor cs fix
[Config][TwigBundle] Fixed syntax error in config
[DI] Fix Xdebug 3.0 detection
Use php8 stable
[Cache] fix checking for redis_sentinel support
[Intl] Update the ICU data to 68.1
Remove unused @throws tags and handling of never thrown exceptions
[PhpUnitBridge] Fix disabling DeprecationErrorHandler from phpunit configuration file
This PR was merged into the 4.4 branch.
Discussion
----------
[HttpFoundation] Throws cleanup
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
The actual throw statements have been removed years ago, but the annotations stayed.
Such annotations fool static analysis tools to trigger false positives for unhandled exceptions.
Commits
-------
8b9b62048c Remove unused @throws tags and handling of never thrown exceptions
This PR was merged into the 5.2 branch.
Discussion
----------
[Cache] Fixed incorrect usage of UNLINK with PHPRedis with Redis < 4.0
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#39280
| License | MIT
Currently, deleting cache keys is broken for users using PhpRedis with Redis-server < 4.0.0. The current implementation expects PhpRedis to throw an exception if the 'unlink'-function is used but unavailable, after which it's supposed to switch to using the 'del'-function. Using the 'unlink'-function on lower Redis-server versions seems to not throw an exception, but instead it appears to silently fail.
This pull request changes this behavior and checks the Redis-server version instead. If the version is 4.0 or higher, it uses the unlink function. If not, it uses the del-function.
Also see https://redis.io/commands/unlink > "Available since 4.0.0".
(Footnote: this is one of my first times contributing to an open-source project and my first time contributing to Symfony. I've tried following the guidelines, but please let me know if I missed anything. I'm unsure how I would go about unit testing this specific bugfix due to it being dependent on the Redis version, so I omitted it. Please let me know if a unit test is indeed required for this and if so, let me know if you have any suggestions on how to go about that.)
Commits
-------
9363f3b973 [Cache] Fixed incorrect usage of UNLINK with PHPRedis with Redis < 4.0
This PR was merged into the 5.2 branch.
Discussion
----------
[HttpFoundation] fix parsing some special chars with HeaderUtils::parseQuery()
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#39307
| License | MIT
| Doc PR | -
Same as #39357 for 5.2
Commits
-------
8682bdc521 [HttpFoundation] fix parsing some special chars with HeaderUtils::parseQuery()
* 5.1:
[HttpFoundation] Removed obsolete test.
[HttpFoundation] Fix TypeError: Argument 1 passed to JsonResponse::setJson() must be of the type string, object given
[Security][Validator] Add missing Portuguese translations
Add Croatian (hr) translations
* 4.4:
[HttpFoundation] Fix TypeError: Argument 1 passed to JsonResponse::setJson() must be of the type string, object given
[Security][Validator] Add missing Portuguese translations
Add Croatian (hr) translations
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[HttpFoundation] Fix TypeError: Argument 1 passed to JsonResponse::setJson() must be of the type string, object given
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
This PR fixes the type error when user set `null` as data in the `new JsonResponse(null, 200, [], true)` and true in the fourth argument to mark that value is json.
```
TypeError: Argument 1 passed to Symfony\Component\HttpFoundation\JsonResponse::setJson() must be of the type string, object given, called in /home/projects/symfony/src/Symfony/Component/HttpFoundation/JsonResponse.php on line 52
```
Commits
-------
7fcba9611d [HttpFoundation] Fix TypeError: Argument 1 passed to JsonResponse::setJson() must be of the type string, object given
* 5.1:
[HttpFoundation] Make test pass without Xdebug.
[Mime] Leverage PHP 8's detection of CSV files.
[HttpFoundation] Make sure we reuse the current PHP binary for the webserver process in functional tests.
[FrameworkBundle] TextDescriptor::formatControllerLink checked method…
Fix CS
[HttpClient] throw clearer error when no scheme is provided
Fix github pr template and include 5.2 for bugfixes
[HttpFoundation] Ignore stack trace printed by Xdebug 3.
fix lexing backslashes in single quoted strings
* 4.4:
[HttpFoundation] Make test pass without Xdebug.
[Mime] Leverage PHP 8's detection of CSV files.
[HttpFoundation] Make sure we reuse the current PHP binary for the webserver process in functional tests.
[FrameworkBundle] TextDescriptor::formatControllerLink checked method…
Fix CS
[HttpClient] throw clearer error when no scheme is provided
Fix github pr template and include 5.2 for bugfixes
[HttpFoundation] Ignore stack trace printed by Xdebug 3.
fix lexing backslashes in single quoted strings
This PR was merged into the 5.2 branch.
Discussion
----------
[HttpFoundation] Deprecate BinaryFileResponse::create()
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | no
| New feature? | no
| Deprecations? | yes
| Tickets | N/A
| License | MIT
| Doc PR | N/A
Follows #34771. We've deprecated the static `::create()` methods on all response classes but `BinaryFileResponse`. This PR proposes to fix this inconsistency.
Commits
-------
9ce2e86207 [HttpFoundation] Deprecate BinaryFileResponse::create().
* 5.1:
remove unreachable code
Update ExceptionEvent.php
fix firebase transport factory DI tag type
[HttpFoundation] Fix for virtualhosts based on URL path
This PR was merged into the 5.2-dev branch.
Discussion
----------
[HttpFoundation] Deprecate not passing a `Closure` together with `FILTER_CALLBACK` to `ParameterBag::filter()`
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | no
| New feature? | no
| Deprecations? | yes
| Tickets | -
| License | MIT
| Doc PR | -
Using `filter_var()` with a configurable flag is risky, because of the `FILTER_CALLBACK` flag.
Restricting the type of callable that is accepted here mitigates the risk.
We did the same in Twig: https://github.com/twigphp/Twig/pull/3308
Commits
-------
d6aea288e7 [HttpFoundation] Deprecate not passing a `Closure` together with `FILTER_CALLBACK` to `ParameterBag::filter()`
This PR was squashed before being merged into the 5.2-dev branch.
Discussion
----------
[RateLimiter] Moved classes implementing LimiterInterface to a new namespace
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | no
| Deprecations? | no?
| Tickets |
| License | MIT
| Doc PR |
Before we release the RateLimit component.
I think it would be a good idea to put the 7 classes that belongs to a specific strategy in their own "Policy" namespace. It is very likely that it will be more strategies in the future and the `Symfony\Component\RateLimiter` namespace is crowed as it is.
I decided not to put the `CompoundLimiter` in this namespace as it is not a strategy.
Commits
-------
1e6cea56e4 [RateLimiter] Moved classes implementing LimiterInterface to a new namespace
* 5.1:
fix merge
fix merge
Remove branch-version (keep them for contracts only)
[HttpClient] relax auth bearer format requirements
[PHPUnitBridge] Silence errors from mkdir()
[DependencyInjection] Preload classes with union types correctly.
[Serializer] fix decoding float XML attributes starting with 0
add missing dutch translations
[TwigBridge] Remove "transchoice" from the code base
Support PHPUnit 8 and PHPUnit 9 in constraint compatibility trait
Add expectDeprecation, expectNotice, expectWarning, and expectError to TestCase polyfill
[String] fix before/after[Last]() returning the empty string instead of the original one on non-match
Add missing exporter function for PHPUnit 7
[Validator] Add missing romanian translations
[String] fix slicing in UnicodeString
[Cache] Use correct expiry in ChainAdapter
do not translate null placeholders or titles
* 4.4:
fix merge
Remove branch-version (keep them for contracts only)
[HttpClient] relax auth bearer format requirements
[PHPUnitBridge] Silence errors from mkdir()
[DependencyInjection] Preload classes with union types correctly.
[Serializer] fix decoding float XML attributes starting with 0
add missing dutch translations
Support PHPUnit 8 and PHPUnit 9 in constraint compatibility trait
Add expectDeprecation, expectNotice, expectWarning, and expectError to TestCase polyfill
Add missing exporter function for PHPUnit 7
[Validator] Add missing romanian translations
[Cache] Use correct expiry in ChainAdapter
do not translate null placeholders or titles
* 3.4:
Remove branch-version (keep them for contracts only)
[Serializer] fix decoding float XML attributes starting with 0
add missing dutch translations
[Validator] Add missing romanian translations
do not translate null placeholders or titles
* 3.4:
[Form] Sync translations
Added dutch translations for new invalid messages
Don't skip Doctrine tests on php 8.
Bump APCu to 5.1.19 on Travis.
[WebProfilerBundle] Hide debug toolbar in print view
indexBy does not refer to attributes, but to column names
Fix Reflection file name with eval()\'d code
[HttpFoundation] Fix Range Requests
This PR was merged into the 3.4 branch.
Discussion
----------
[HttpFoundation] Fix Range Requests
| Q | A
| ------------- | ---
| Branch? | 3.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | #38295
| License | MIT
| Doc PR |
This PR fixes some deviations from [RFC 7233](https://tools.ietf.org/html/rfc7233) for handling range requests, mentioned in #38295.
- overlapping ranges are now satisfiable (e.g. when requested range end is larger than the file size)
- range units other than `bytes` will get ignored
- range requests for methods other than `GET` will be ignored
I did not manage yet to implement the support for multiple ranges, but also don't know, if that's needed here.
Commits
-------
681804ba1a [HttpFoundation] Fix Range Requests
* 5.1:
[Contracts] add branch-aliases for dev-main
[Cache] Make Redis initializers static
[Messenger] Fixed typos in Connection
[CI] Fixed build on AppVeyor
Fix tests typo
[Lock] Reset Key lifetime time before we acquire it
[CI] Silence errors when remove file/dir on test tearDown()
Fix tests
Remove content-type check on toArray methods
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
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.
* 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
* 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
* 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
* 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
* 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