This PR was merged into the 4.4 branch.
Discussion
----------
[Form] disable error bubbling by default when inherit_data is configured
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#14441
| License | MIT
| Doc PR |
Commits
-------
8679c2ac05 disable error bubbling by default when inherit_data is configured
This PR was merged into the 4.4 branch.
Discussion
----------
[Yaml] do not dump extra trailing newlines for multiline blocks
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#38310
| License | MIT
| Doc PR |
Commits
-------
5fa9592d5e do not dump extra trailing newlines for multiline blocks
This PR was merged into the 5.1 branch.
Discussion
----------
[Messenger] fix postgres transport when the retry table is the same
| Q | A
| ------------- | ---
| Branch? | 5.1
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
---
I noticed messenger do not consume all messages when there is a retry
and when I'm using only one table for everything.
To reproduce, use the following configuration + use PG + throw an
exception in the handler
```yaml
framework:
messenger:
failure_transport: failed
transports:
async: '%env(MESSENGER_TRANSPORT_DSN)%'
failed: 'doctrine://default?queue_name=failed'
routing:
'App\Message\Foobar': async
```
The real issue is PG does not notify messenger when we `UPDATE` the message.
---
ping @dunglas
Commits
-------
2b4d47163f fix postgres transport when the retry table is the same
This PR was merged into the 5.1 branch.
Discussion
----------
[Uid] Handle ValueErrors triggered by ext-uuid on PHP 8
| Q | A
| ------------- | ---
| Branch? | 5.1
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | N/A
| License | MIT
| Doc PR | N/A
Follows symfony/polyfill#318.
On PHP 8, the UUID extension triggers `ValueErrors` if we pass an invalid UUID to one of the `uuid_*` functions. This PR handles those errors so that the component behaves the same on PHP 7 and 8.
Commits
-------
5305170e54 Handle ValueErrors triggered by ext-uuid on PHP 8
This PR was merged into the 5.1 branch.
Discussion
----------
[Security] Add test to ensure all security events are propagated
| Q | A
| ------------- | ---
| Branch? | 5.1
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| License | MIT
Follow-up to #39621. As requested by @wouterj I'm adding a dedicated test case to ensure the security events are propagated from global to firewall-level event dispatcher.
I'll file another PR to add `AuthenticationTokenCreatedEvent` as soon as this has been merged and copied to the 5.2 branch, that I need to target for the `AuthenticationTokenCreatedEvent` change.
Happy holidays!
Commits
-------
e78adf7604 Add test case to ensure all security events are propagated
This PR was merged into the 4.4 branch.
Discussion
----------
[Mailer] Handle failure when sending DATA
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | -
| License | MIT
| Doc PR | -
When an exception is thrown while sending an email via SMTP (ie. A attachment is not readable) the SMTP connection is left opened with a partial message sent.
This PR closes the connection (we can't abort after sending the `DATA` command) in such situation.
/cc @fabpot
Commits
-------
849211a780 Handle failure when sending DATA
This PR was squashed before being merged into the 5.1 branch.
Discussion
----------
[Security] Fix event propagation for globally registered security events
| Q | A
| ------------- | ---
| Branch? | 5.1
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| License | MIT
When new authenticator security is enabled, the `AuthenticatorManager` is using its own firewall-specific event dispatcher. To allow security events being listened to on the global level, `RegisterGlobalSecurityEventListenersPass` is there to automatically add globally registered event listeners to the firewall-specific event dispatchers.
`RegisterGlobalSecurityEventListenersPass` contains a list of events that are propagated, but unfortunately this list is incomplete as there are other events in `AuthenticatorManager` that would need too be propagated. So I added the missing (older) security events. These older events may also be registered by their name, rather than the FQN of the class, so I've also added those.
As this is targeting 5.1, I'll file another PR for the `AuthenticationTokenCreatedEvent` that was introduced in 5.2, as soon as this change was merged into 5.x.
On a note, I feel this "whitelist" approach to propagate security events to the global dispatcher isn't that great, because it's prone to error. Additional security events may be added in the future and adding these to `RegisterGlobalSecurityEventListenersPass` can easily be missed. When I added `AuthenticationTokenCreatedEvent` in PR #37359 I wasn't aware of this propagation mechanic existed and also no one reviewing the PR noticed it.
Additional changes:
- Typo fix :)
- The `array_uintersect` in `RegisterGlobalSecurityEventListenersPassTest` wasn't implemented correctly *
\* That function's behavior is really odd and easy to be used in the wrong way. The callback function isn't intended to return true/false for matching items, but return -1/0/1 like sorting functions. The tests seemingly only worked by chance as returning true/false is doing pretty much the opposite of what the callback function is supposed to do.
Commits
-------
1675864032 [Security] Fix event propagation for globally registered security events
This PR was squashed before being merged into the 5.1 branch.
Discussion
----------
[Notifier] [DX] Abstract test cases
| Q | A
| ------------- | ---
| Branch? | 5.1
| New feature? | no
| Deprecations? | no
| Tickets | ---
| License | MIT
| Doc PR | ---
This PR
* [x] adds a new _abstract_ `TransportTestCase`
* [x] adds a new _abstract_ `TransportFactoryTestCase` (code is mainly taken from the `Mailer/TransportFactoryTestCase`)
We have a lot of code duplication in the notifier bridges
### Todos
* [x] check if we want this
* [x] I would want to use Dsn strings (like already used in the notifier bridge tests) instead of objects for the providers, what do you think? For me it is more readably
* [x] update all bridges
* [x] Bump notifier to `~5.1.10`
### Questions
* [x] is it Ok to consider this a bugfix and merge into `5.1`?
* [x] shall I prefix the abstract test cases with `Abstract` ? As we did the same for Mailer, I would say no
@symfony/mergers have to change ^5.2 into ^5.2.1
Commits
-------
79379b71f4 [Notifier] [DX] Abstract test cases
This PR was merged into the 4.4 branch.
Discussion
----------
[Intl] Update the ICU data to 68.2
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | -
| License | MIT
| Doc PR | -
Commits
-------
4573965f74 [Intl] Update the ICU data to 68.2
* 4.4:
Bump Symfony version to 4.4.19
Update VERSION for 4.4.18
Update CONTRIBUTORS for 4.4.18
Update CHANGELOG for 4.4.18
[Serializer] Fix DenormalizableInterface::denormalize() return type declaration in docblock
This PR was merged into the 4.4 branch.
Discussion
----------
[Serializer] Fix DenormalizableInterface::denormalize() return type declaration in docblock
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | N.A.
| License | MIT
| Doc PR | N.A.
DenormalizableInterface::denormalize() should not return anything, so the `@return` declaration should be removed. If you look at the usage in `CustomNormalizer::denormalize()`, it becomes clear that this method shouldn't return anything:
```php
public function denormalize($data, $type, $format = null, array $context = [])
{
$object = $this->extractObjectToPopulate($type, $context) ?: new $type();
$object->denormalize($this->serializer, $data, $format, $context);
return $object;
}
```
Commits
-------
00c90aed51 [Serializer] Fix DenormalizableInterface::denormalize() return type declaration in docblock
This PR was squashed before being merged into the 5.1 branch.
Discussion
----------
[Notifier] [Mattermost] Host is required
| Q | A
| ------------- | ---
| Branch? | 5.1
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | ---
| License | MIT
| Doc PR | ---
This bridge is the only one right now which cannot use `default` as host in the DSN, otherwise it would fall back to:
090b4256f0/src/Symfony/Component/Notifier/Transport/AbstractTransport.php (L30)
it could also not use:
090b4256f0/src/Symfony/Component/Notifier/Transport/AbstractTransport.php (L83-L86)
Based on the [documentation](https://api.mattermost.com/#tag/authentication) you must use your specific url like:
`your-mattermost-url.com/api/v4/...`
Using `localhost` would have weird side-effects.
Can you confirm this @thePanz , as you provided the bridge?
friendly ping @seb37800, you fixed some bugs in this transport
### Todos after merge
* [ ] adjust recipes with new DSN
* [ ] update the docs
Commits
-------
cd5b48003f [Notifier] [Mattermost] Host is required
This PR was squashed before being merged into the 5.1 branch.
Discussion
----------
[Notifier] Fix parsing Dsn with empty user/password
| Q | A
| ------------- | ---
| Branch? | 5.1
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | ---
| License | MIT
| Doc PR | ---
Same like https://github.com/symfony/symfony/pull/39531, but for Notifier component.
I backported the DsnTest from `5.2` to `5.1`
Commits
-------
a80409af25 [Notifier] Fix parsing Dsn with empty user/password
This PR was merged into the 4.4 branch.
Discussion
----------
Normalize exceptions messages containing methods references
| 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 https://github.com/symfony/symfony/pull/39399#discussion_r544972437 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License | MIT
| Doc PR | N/A
Normalizes across the codebase any exception message mentioning methods to contain a trailing `()`
(Seems OK on 5.1 and 5.2 branch after this on is merged up)
Commits
-------
e2da2acd6d Normalize exceptions messages containing methods references
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[Mailer] Fix parsing Dsn with empty user/password
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | no
| License | MIT
| Doc PR | no
While working on a PR for Notifier that user and password would be parsed as an empty string, which is not wrong, but not expected IMO. Thi
`scheme://@symfony.com` and `scheme://:@symfony.com` should be a valid scheme with user and pass `null`
Another fix would be to check for `://@` and `://:@` and throw an `InvalidArgumentException` WDYT?
The final solution will then be applied to the Notifier DSN in `5.1`
Commits
-------
041cb46e52 [Mailer] Fix parsing Dsn with empty user/password
This PR was squashed before being merged into the 5.1 branch.
Discussion
----------
[Notifier] Use assertSame()
| Q | A
| ------------- | ---
| Branch? | 5.1
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | ---
| License | MIT
| Doc PR | ---
Commits
-------
4a1976b4ef [Notifier] Use assertSame()
This PR was merged into the 5.1 branch.
Discussion
----------
[Notifier] [Free Mobile] Could not use custom host in DSN
| Q | A
| ------------- | ---
| Branch? | 5.1
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | ---
| License | MIT
| Doc PR | ---
While working on #39509 I discovered, that you cannot set a custom host through the DSN string itself, only by calling `setHost()` method in the transport, which is only possible by **not** using the factory....
I changed it the way all other bridges work. I don't add a testcase for the port, because non of the others have that test.
I plan to implement it in #39495
As this is a bugfix I created an extra PR.
Cheers
EDIT:
Also the host is not allowed to contain `https://` otherwise calling `__toString()` will result in: `freemobile://https://......`
Commits
-------
63350cc19b [Notifier] [Free Mobile] Could not use custom host in DSN
* 4.4:
[Mailer] [Amazon] Ensure "ext-simplexml" is loaded if SesApiTransport is used
Stop using deprecated trait
[PhpUnitBridge] Lint files with PHP 5.5
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[Mailer] [Amazon] Ensure "ext-simplexml" is loaded if SesApiTransport is used
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | ---
| License | MIT
| Doc PR | ---
For reference:
150d8506e4/src/Symfony/Component/Mailer/Bridge/Amazon/Transport/SesApiTransport.php (L66-L69)
Commits
-------
a40d1375f9 [Mailer] [Amazon] Ensure "ext-simplexml" is loaded if SesApiTransport is used
This PR was merged into the 4.4 branch.
Discussion
----------
[PhpUnitBridge] [phpunit] Stop using deprecated trait
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | -
| License | MIT
| Doc PR | -
the `SetUpTearDownTrait` trait has been removed in #39487 this PR remove usage of it in branch 4.4
Commits
-------
55ed00cd3c Stop using deprecated trait
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[PhpUnitBridge] Lint files with PHP 5.5
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | N/A
| License | MIT
| Doc PR | N/A
I'd like to make sure that PhpUnitBridge remains compatible with PHP 5.5.
cc @nicolas-grekas @fancyweb
Commits
-------
0bc15ff759 [PhpUnitBridge] Lint files with PHP 5.5
This PR was merged into the 4.4 branch.
Discussion
----------
[Serializer] Fix EncoderInterface::encode() return type
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | N.A.
| License | MIT
| Doc PR | N.A.
I might have missed something (in that case, please let me know), but I believe that `EncoderInterface::encode()` will and should always return a `string`. This makes more sense because `DecoderInterface::decode()` only accepts a string as input.
Commits
-------
ae6f054cc1 Fix EncoderInterface::encode() return type
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[Lock] Prevent store exception break combined store
| 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#39470 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License | MIT
Handle exception to preserve expected behavior - one or multiple stores could be unreachable in a moment and combined store will handle this according to strategy.
Commits
-------
0daff35bae [Lock] Prevent store exception break combined store