This PR was squashed before being merged into the 4.4 branch (closes#35486).
Discussion
----------
[Translator] Default value for 'sort' option in translation:update should be 'asc'
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
The value for 'sort' option for `bin/console translation:update --sort` is optional, but no default value is defined. So the list isn't sorted if no value is explicitly defined.
This MR brings a default value "asc" if no value is defined, so the list is correctly sorted.
Commits
-------
fdb13c8ab8 [Translator] Default value for 'sort' option in translation:update should be 'asc'
This PR was merged into the 5.1-dev branch.
Discussion
----------
[Mailer] added tag/metadata support
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets | Fix#35047
| License | MIT
| Doc PR | todo
This is an alternative to #34766 for adding tag and metadata support in a more generalized way.
Most transports allow for open/click tracking headers - maybe this should be handled in a similar way?
I added implementations for the Postmark (SMTP and API) and Mailgun (SMTP and API) transports. I can add others and tests/docs if this is acceptable.
### Example:
```php
use Symfony\Component\Mailer\Header\MetadataHeader;
use Symfony\Component\Mailer\Header\TagHeader;
$email->getHeaders()->add(new TagHeader('password-reset'));
$email->getHeaders()->add(new MetadataHeader('Color', 'blue'));
$email->getHeaders()->add(new MetadataHeader('Client-ID', '12345'));
```
The Postmark/Mailgun providers will parse these into their own headers/payload. For transports that don't support tags/metadata, these are just added as custom headers:
```
X-Tag: password-reset
X-Metadata-Color: blue
X-Metadata-Client-ID: 12345
```
Commits
-------
f2cdafcae0 [Mailer] added tag/metadata support
This PR was squashed before being merged into the 3.4 branch (closes#35305).
Discussion
----------
[HttpKernel] Fix stale-if-error behavior, add tests
| Q | A
| ------------- | ---
| Branch? | 3.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | #24248
| License | MIT
| Doc PR |
This PR adds the first tests for `stale-if-error` logic in `HttpCache`.
It also fixes an observation from #24248: For responses that have been cached as `public` with an `ETag` but without a lifetime, in case of an error the stale response will be served forever (= as long as the error persists), even beyond the configured `stale-if-error` grace period.
Furthermore, it tries to improve compliance with RFC 7234: Stale responses must not be sent (under no condition) if one of
* `no-cache`
* `must-revalidate`
* `proxy-revalidate` or
* `s-maxage` (sic) is present.
This can be found in the corresponding chapters of Section 5.2.2 for these directives, but is also summarized in [Section 4.2.4](https://tools.ietf.org/html/rfc7234#section-4.2.4) as
> A cache MUST NOT generate a stale response if it is prohibited by an explicit in-protocol directive (e.g., by a "no-store" or "no-cache" cache directive, a "must-revalidate" cache-response-directive, or an applicable "s-maxage" or "proxy-revalidate" cache-response-directive; see Section 5.2.2).
Because disabling of `stale-if-error` for `s-maxage` responses probably has a big impact on the usefulness of that feature in practice, it has to be enabled explicitly with a new config setting `strict_smaxage` (defaulting to `false`).
Commits
-------
ad5f427bed [HttpKernel] Fix stale-if-error behavior, add tests
This PR was squashed before being merged into the 5.1-dev branch (closes#35215).
Discussion
----------
[HttpFoundation] added withers to Cookie class
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets | Fix#35212
| License | MIT
| Doc PR | -
I was quite descriptive in the issue :-)
The main idea is to get the interface for changing a cookie to avoid every unneeded argument in the constructor.
Current:
```php
$cookie = Cookie::create(
RegionSwitcher::REGION_COOKIE, $regionSlug, new DateTime('+1 year'), '/',
$baseDomain, null, false
);
```
This PR:
```php
$cookie = Cookie::create('foo')
->withValue('bar')
->withExpiresTime(strtotime('Fri, 20-May-2011 15:25:52 GMT'))
->withDomain('.myfoodomain.com')
->withSecure(true);
```
Every `wither` returns a copy of current cookie with requested setting set. Cookie class remains immutable.
Commits
-------
549afaab17 [HttpFoundation] added withers to Cookie class
This PR was merged into the 4.3 branch.
Discussion
----------
[PhpUnitBridge] Properly handle phpunit arguments for configuration file
| Q | A
| ------------- | ---
| Branch? | 4.3
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| License | MIT
PhpUnitBridge should properly parse cli arguments for configuration file.
After fixing #34300 the PhpUnitBridge stopped recognizing short `-c` option.
Also original PHPUnit allows to pass a directory as configuration parameter and read from either phpunit.xml or phpunit.xml.dist
Commits
-------
a7a5885661 Properly handle phpunit arguments for configuration file
This PR was merged into the 5.1-dev branch.
Discussion
----------
[DI][Routing] add wither to configure the path of PHP-DSL configurators
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets | -
| License | MIT
| Doc PR | -
This makes PHP-DSL configurators more flexible, by allowing to use them for a different path than they were initially created for.
Sidekick of https://github.com/symfony/recipes/pull/721
Commits
-------
8f92c85689 [DI][Routing] add wither to configure the path of PHP-DSL configurators
This PR was merged into the 5.1-dev branch.
Discussion
----------
[Notifier] Fix infinite loop on round robin transport
| 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 | - <!-- prefix each issue number with "Fix #", if any -->
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
Commits
-------
c16ee4a894 [Notifier] Fix infinite loop on round robin transport
This PR was submitted for the 4.3 branch but it was merged into the 4.4 branch instead (closes#35517).
Discussion
----------
[Intl] Provide more locale translations
| Q | A
| ------------- | ---
| Branch? | 4.3
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix https://github.com/symfony/symfony/issues/35513#issuecomment-579849578
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
This enables more locale translations, available upstream, which are valid. In this case esp. locales with a numeric region code, eg. `es_419`
This should return true in `Locales::exists()`, which is currently not the case. By providing the translation, it implicitly exists as well.
cc @jkobus
Commits
-------
27cc120760 [Intl] Provide more locale translations
This PR was merged into the 5.1-dev branch.
Discussion
----------
[Mailer] Make default factories public
| 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#35469 <!-- prefix each issue number with "Fix #", if any -->
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
To allow registering new factories and keep the default ones available.
Commits
-------
c9863c6a6c [Mailer] Make default factories public
This PR was merged into the 5.1-dev branch.
Discussion
----------
[String] Made AbstractString::width() follow POSIX.1-2001
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets | -
| License | MIT
| Doc PR | -
This PR ports the wcswidth() function (see http://man7.org/linux/man-pages/man3/wcwidth.3.html and https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c) into the String component. This new method will be useful in the Console component to determine how many columns a character takes.
I kind of copied the Intl data import strategy.
Commits
-------
347d8252fb [String] Made AbstractString::width() follow POSIX.1-2001
This PR was squashed before being merged into the 5.1-dev branch (closes#35440).
Discussion
----------
Sort the KernelEvents constants to match the lifecycle of the framework
| 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 | -
This PR is the same as #35248 but on the correct branch this time!
> Hi,
>
> When I need to visualize all the kernel events I often open the KernelEvents file. However, it is difficult to navigate through it because the constants are not in the same order compared to the framework execution life cycle.
>
> This PR aims to sort this constants to match it. It's also the same order used in [this documentation page](https://symfony.com/doc/current/reference/events.html).
>
> Thanks.
Commits
-------
a447cba26c Sort the KernelEvents constants to match the lifecycle of the framework
This PR was merged into the 5.1-dev branch.
Discussion
----------
[Dotenv] Add Dotenv::bootEnv() to check for .env.local.php before calling Dotenv::loadEnv()
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| Deprecations? | yes
| Tickets | -
| License | MIT
| Doc PR | -
The goal of this PR is to eventually get rid of the `config/bootstrap.php` file in Symfony 5.1 apps.
I think we've done enough iterations on that piece of bootstrapping logic to put it inside the `Dotenv` component.
This fully replaces https://github.com/symfony/recipes/blob/master/symfony/framework-bundle/4.2/config/bootstrap.php
It doesn't conflict with current apps so they'll be fine keeping the `config/bootstrap.php` file until they're upgraded.
The new bootstrapping logic will require adding this line in `bin/console` and `public/index.php`:
```php
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
```
Recipes updated at https://github.com/symfony/recipes/pull/724
Commits
-------
98c7d3027b [Dotenv] Add Dotenv::bootEnv() to check for .env.local.php before calling Dotenv::loadEnv()
This PR was merged into the 4.4 branch.
Discussion
----------
[Mailer] add tests for http transports
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | none
| License | MIT
Commits
-------
df30a176ac [Mailer] add tests for http transports
This PR was merged into the 4.4 branch.
Discussion
----------
[Mailer] Fix STARTTLS support for Postmark and Mandrill
| 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#34846 <!-- prefix each issue number with "Fix #", if any -->
| License | MIT
| Doc PR | n/a
Commits
-------
44b27c6816 [Mailer] Fix STARTTLS support for Postmark and Mandrill
This PR was merged into the 4.3 branch.
Discussion
----------
[Messenger] Check for all serialization exceptions during message dec…
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#35446
| License | MIT
Makes it so that the Messenger Serializer throws a `MessageDecodingFailedException` for any serializer exception.
Commits
-------
21fffcadd5 [Messenger] Check for all serialization exceptions during message dec…
This PR was squashed before being merged into the 5.1-dev branch (closes#35271).
Discussion
----------
[PHPUnitBridge] Improved deprecations display
| Q | A
| ------------- | ---
| Branch? | master for features
| 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
| License | MIT
| Doc PR | todo
- [x] Ignore verbose when the build fails because of deprecations
- [x] Add per-group verbosity : it is now possible to make the report a lot quieter, by specifying which groups should become quiet, like this: `quiet[]=indirect&quiet[]=direct`
Might add more improvements to that branch if people suggest some.
Commits
-------
c55a89e4ff [PHPUnitBridge] Improved deprecations display
This PR was squashed before being merged into the 5.1-dev branch (closes#35478).
Discussion
----------
[Console] Add constants for main exit codes
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| Deprecations? |no
| Tickets | Fix#35431
| License | MIT
Commits
-------
5f6a1acaac [Console] Add constants for main exit codes
This PR was squashed before being merged into the 4.4 branch (closes#35502).
Discussion
----------
[Messenger] Fix bug when using single route with XML config
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#35500
| License | MIT
| Doc PR |
When using just a single routing attribute with XML then the sky falls down.
This small change make sure everything works as expected.
Commits
-------
a2a606e897 [Messenger] Fix bug when using single route with XML config
This PR was squashed before being merged into the 5.1-dev branch (closes#35503).
Discussion
----------
[Messenger] Add TLS option to Redis transport's DSN
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets | Fix#33025
| License | MIT
| Doc PR |
As suggested by @matas-valuzis, this will enable TLS support for Redis transport.
Configure it with the following DSN
```
redis://127.0.0.1?tls=1
```
The implementation just prefix the host with `tls://` as described here: https://github.com/phpredis/phpredis#connect-open
It is already possible to use TLS with the Redis transport, but there are not support in the DSN until now.
Commits
-------
09ec907a7e [Messenger] Add TLS option to Redis transport's DSN
This PR was squashed before being merged into the 5.1-dev branch (closes#35262).
Discussion
----------
[Mailer] add ability to disable the TLS peer verification via DSN
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets | Fix
| License | MIT
| Doc PR | symfony/symfony-docs/pull/12997
Add the ability to disable the peer TLS verification with the DNS when using `EsmtpTransport` like this :
```
MAILER_DSN=smtp://foo@default?verify_peer=false
```
By default the verification is enabled
Commits
-------
4b854da73e [Mailer] add ability to disable the TLS peer verification via DSN
This PR was squashed before being merged into the 5.1-dev branch (closes#35422).
Discussion
----------
[Messenger] Move Transports to separate packages
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR | coming
I think it is a good idea to have the transports in a separate package. The benefits a many:
- It allows us to have usage statistics
- The core messenger package is smaller
- Transports can have dependencies specified in composer.json instead of just suggests
This PR will not break BC but it requires to configure subtree split.
Commits
-------
2990c8f1e7 [Messenger] Move Transports to separate packages
This PR was merged into the 4.3 branch.
Discussion
----------
[Messenger] Fix messenger argument
| Q | A
| ------------- | ---
| Branch? | 4.3
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | -
| License | MIT
| Doc PR | -
`Connection::DEFAULT_OPTIONS` is an key/value array. The exception `Unknown option found : [%s]. Allowed options are [%s]` should use allowed option's key instead of the value.
Commits
-------
ae0c6344b4 Fix exception message in Doctrine Messenger
This PR was merged into the 5.1-dev branch.
Discussion
----------
[CssSelector] Added cache on top of CssSelectorConverter
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
Commits
-------
ed11d526d9 [CssSelector] Added cache on top of CssSelectorConverter