This PR was merged into the 4.3-dev branch.
Discussion
----------
[Messenger] Remove the mention of handler in the `ReceiverInterface::get` phpdoc.
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/30708#pullrequestreview-220830730
| License | MIT
| Doc PR | ø
As spotted by @Tobion, we don't have an handler as an argument anymore.
Commits
-------
9c63112d7c Remove the mention of handler in the phpdoc.
This PR was merged into the 4.3-dev branch.
Discussion
----------
[PropertyAccess] Allow Can Accessor in Property Access
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets |
| License | MIT
| Doc PR |
- Added ability to support `can` methods in the property access
in order to be compatible with PropertyInfo component
which allows for `can` accessors
Commits
-------
a4c95745bb [PropertyAccess] Allow Can Accessor in Property Access
This PR was merged into the 4.3-dev branch.
Discussion
----------
[Filesystem] Fix mirroring a directory into itself or in his child with realpath checks
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | yes
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | none / PR #29857
| License | MIT
| Doc PR | n/a
This this the continuity of #29857 by @Fleuv
Fix a bug while trying to mirror a directory into itself or in a child
Adding handle real path checks when mirroring.
Commits
-------
8011f494d4 Handling relative/absolute path
59437a4af9 Skipping iterations in the mirror() method where the iterated file's path name is equal to the target path
This PR was merged into the 4.3-dev branch.
Discussion
----------
[Debug] Mimic __toString php behavior in FlattenException
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | n/a
| License | MIT
| Doc PR | symfony/symfony-docs#
The `Symfony\Component\Debug\Exception\FlattenException` object is returned by `Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector::getException` method, but the docblock of this method indicates that it should return `\Exception` object.
As the `FlattenException` class should behave as much as possible like a php `\Exception` object, it should implement the same methods as `\Exception`.
This PR is adding `__toString` and `getTraceAsString` methods. Those methods are (in my opinion) the most useful methods of a `\Exception` object. A potential use case (where i am stumbled across this inconsistency) is to get the last exception of a request in a `WebTestCase` using the profiler and printing the trace.
Commits
-------
514a1b506c [Debug] Mimic __toString php behavior in FlattenException
This PR was squashed before being merged into the 4.3-dev branch (closes#29495).
Discussion
----------
[Ldap] Implement pagination
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | yno
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | N/A (cannot test at the moment)
| Fixed tickets | N/A
| License | MIT
| Doc PR | N/A
Implement pagination support in the ExtLdap adapter. In a more abstract sense, other adapters should use a query's pageSize option to determine if pagination is being needed. Pagination is required in some environments that frequently query for more results than the remote server is willing to allow.
BC break was avoided by having Query->getResource() return the first result, if available.
A small hack is included to work around php-ldap failing to reset pagination properly; the LDAP_OPT_SERVER_CONTROLS are sent with every request, whether pagination has been 'reset' by sending a 0-page request or not. This appears to be a php-ldap bug that will need to be addressed there, but we can work-around it for now by doing both: setting the 0-page option *and* unsetting the OID directly. This was resulting in odd results, like queries returning 0 results or returning < server_page_size results for a query that should have returned >= server_page_size.
Commits
-------
b96347485c [Ldap] Implement pagination
This PR was squashed before being merged into the 4.3-dev branch (closes#29448).
Discussion
----------
[Ldap] Entry move support
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | no (see [1])
| Fixed tickets | N/A
| License | MIT
| Doc PR | N/A (see [2])
Add Move support to the ldap EntryManagerInterface and the ExtLdap adapter. This is used to re-parent an entry to another part of the directory. The interface to do so need not be complicated, requiring only the entry to be moved and the parent DN to be moved to.
Underlying implementations may require a 'newrdn' attribute -- this is generally the RDN w.r.t. the immediate parent of the entry, which is easily parsed.
I've attempted to implement it as the rename functionality was originally implemented: adding an interface to be deprecated effective immediately, presumably to allow it to be backported without breaking existing interfaces, and then implementing this interface in the ExtLdap adapter.
[1] I do not have the capacity to run the ldap tests for this locally due to current $work situation; I have no reason to believe this test will fail as written, though. This functionality has been used as currently implemented (against Windows ADS) for some time in my production environment, so it has been functionally tested otherwise.
[2] No doc PR has been created for this feature addition, since it's a minor addition. The LDAP documentation should likely be amended to include rename functionality as well as this.
Commits
-------
32743c850f [Ldap] Entry move support
This PR was merged into the 4.3-dev branch.
Discussion
----------
[Mailer] Fix SMTP support when a message cannot be sent
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | yes
| New feature? | no <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets | n/a
| License | MIT
| Doc PR | n/a
<!--
Write a short README entry for your feature/bugfix here (replace this comment block.)
This will help people understand your PR and can be used as a start of the Doc PR.
Additionally:
- Bug fixes must be submitted against the lowest 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 the master branch.
-->
Commits
-------
3d25c1c613 [Mailer] fixed SMTP support when a message cannot be sent
This PR was merged into the 4.3-dev branch.
Discussion
----------
[Mailer] fix typo
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | yes
| New feature? | no <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets | n/a
| License | MIT
| Doc PR | n/a
<!--
Write a short README entry for your feature/bugfix here (replace this comment block.)
This will help people understand your PR and can be used as a start of the Doc PR.
Additionally:
- Bug fixes must be submitted against the lowest 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 the master branch.
-->
Commits
-------
9cf665f2ea [Mailer] fixed typo
This PR was merged into the 4.3-dev branch.
Discussion
----------
Fix author
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | yes
| New feature? | no <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets | #... <!-- #-prefixed issue number(s), if any -->
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
<!--
Write a short README entry for your feature/bugfix here (replace this comment block.)
This will help people understand your PR and can be used as a start of the Doc PR.
Additionally:
- Bug fixes must be submitted against the lowest 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 the master branch.
-->
Commits
-------
827e61f645 fixed author
This PR was merged into the 4.3-dev branch.
Discussion
----------
Fix some exception previous type hints
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | no <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets | n/a
| License | MIT
| Doc PR | n/a
follow-up for #30729
Commits
-------
f92efeb429 fixed some exception previous type hints
This PR was submitted for the 4.2 branch but it was squashed and merged into the 4.3-dev branch instead (closes#30729).
Discussion
----------
[HttpKernel] change $previous argument for HttpException to \Throwable
| Q | A
| ------------- | ---
| Branch? | 4.2
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #30728
| License | MIT
This will fix#30728 with the suggested solution to change the signature of `HttpException` and all its descendants from `\Exception` to `\Throwable`.
Commits
-------
15cb4754e7 [HttpKernel] change $previous argument for HttpException to \Throwable
This PR was merged into the 4.3-dev branch.
Discussion
----------
[Finder] Throw a dedicated exception for non-existing directory
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | yes [1]
| New feature? | yes
| BC breaks? | no
| Deprecations? | no [2]
| Tests pass? | yes
| Fixed tickets | #30723
| License | MIT
| Doc PR | N/A [3]
Makes `Finder::in()` throw a `DirectoryNotFoundException` instead of an `InvalidArgumentException` if one of the directories is not found.
This behavior is more consistent with the `AccessDeniedException` for files which are unreadable due to insufficient permissions.
To keep backward compatibility, the new exception class inherits from `InvalidArgumentException`.
[1] A valid, but non-existent directory name is IMHO not an invalid argument
[2] However, it may be semantically better to extend from `RuntimeException`, This would require a deprecation.
[3] Possible exceptions are currently not explained at https://symfony.com/doc/current/components/finder.html
Commits
-------
48d5f94cda Throw a dedicated exception for non-existing directory
This PR was merged into the 4.3-dev branch.
Discussion
----------
[Messenger] Adding the "sync" transport to call handlers synchronously
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | none
| License | MIT
| Doc PR | symfony/symfony-docs#11236
This adds a `sync://` transport that just calls the handlers immediately. Why? This allows you to route your messages to some "async" transport. But then, when developing locally or running your tests, you can choose to run them synchronously instead:
```yml
# config/packages/messenger.yaml
framework:
messenger:
transports:
async: '%env(MESSENGER_TRANSPORT_DSN)%'
routing:
'App\Message\SmsNotification': async
'App\Message\OtherMessage': async
```
```
# .env
# by default, handle this sync
MESSENGER_TRANSPORT_DSN=sync://
```
```
# .env.local on production (or set this via real env vars)
# on production, use amqp
MESSENGER_TRANSPORT_DSN=amqp://.......
```
Cheers!
Commits
-------
3da5a438aa Adding the "sync" transport to call handlers synchronously
This PR was merged into the 4.3-dev branch.
Discussion
----------
[Contracts][EventDispatcher] move the Event class to symfony/contracts
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | yes
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
Will allow decoupling more components in 5.0
Commits
-------
a4ce08ec30 [Contracts][EventDispatcher] move the Event class to symfony/contracts
This PR was squashed before being merged into the 4.3-dev branch (closes#30708).
Discussion
----------
[Messenger] ReceiverInterface::handle() to get() & Worker with prioritized transports
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | Helps with #30699
| License | MIT
| Doc PR | TODO
Highlights:
* `messenger:consume` can now consume messages from multiple transports with priority ❗️
```
bin/console messenger:consume amqp_high amqp_medium amqp_low
```
* How long you want to sleep before checking more messages is now an option to `messenger:consume`
* `ReceiverInterface::receive()` is replaced with `ReceiverInterface::get()`
* Logic for looping & sleeping is moved into `Worker`
Commits
-------
e800bd5bde [Messenger] ReceiverInterface::handle() to get() & Worker with prioritized transports
This PR was merged into the 4.3-dev branch.
Discussion
----------
[Lock] Added MongoDBStore
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes (requires `ext-mongodb` and `mongodb/mongodb` to test)
| Fixed tickets | #27345
| License | MIT
| Doc PR | symfony/symfony-docs#9807
**Testing caveat**
In order to test this, the test environment needs `ext-mongodb` and `mongodb/mongodb`.
I have both written the test and tested `Symfony\Component\Lock\Store\MongoDbStore` and it does pass in an environment with `ext-mongodb` and `mongodb/mongodb`.
**Description**
We should support Semaphore Locks with a MongoDB back end to allow those that already use MongoDB as a distributed storage engine.
Symfony already partially supports MongoDB for session storage: `Symfony\Component\HttpFoundation\Session\Storage\Handler\MongoDbSessionHandler`
**Example**
```php
$client = new MongoDb\Client();
$store = new Symfony\Component\Lock\Store\MongoDbStore(
$client
array(
'database' => 'my-app',
)
);
$lockFactory = new Symfony\Component\Lock\Factory($store);
$lock = $lockFactory->createLock('my-resource');
```
This is a squashed pull request of https://github.com/symfony/symfony/pull/27346
Commits
-------
9c04639dc3#27345 Added Lock/Store/MongoDbStore
This PR was merged into the 4.3-dev branch.
Discussion
----------
[Messenger] Changing message handling log levels to higher levels
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | none
| License | MIT
| Doc PR | not needed
Update log levels so that the user can configure the logger to be notified of errors. This was really an oversight when I originally added the logging.
Cheers!
Commits
-------
9153c48bc4 Changing message handling log levels to higher levels
- Added ability to support `can` methods in the property access
in order to be compatible with PropertyInfo component
which allows for can accessors
Signed-off-by: RJ Garcia <rj@bighead.net>
This PR was merged into the 4.3-dev branch.
Discussion
----------
[HttpClient] use "nyholm/psr7" by default in Psr18Client
| 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 makes the factory arguments of `Psr18Client` optional, with a fallback to using `Nyholm\Psr7\Factory\Psr17Factory` when no factories are provided.
Commits
-------
f2222e4bf5 [HttpClient] use "nyholm/psr7" by default in Psr18Client
This PR was merged into the 4.3-dev branch.
Discussion
----------
[HttpClient] correctly clean state on destruct in CurlResponse
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #30753
| License | MIT
| Doc PR | -
On destruct, we ask curl to close the stream once the headers arrived, but we don't silence the "error" this sets in curl. This fixes it.
Commits
-------
332a88c8ce [HttpClient] correctly clean state on destruct in CurlResponse
This PR was merged into the 4.3-dev branch.
Discussion
----------
Add optional parameter `prefetching` for AMQP connection
Add prefetching connection parameter to setup channel prefetch count.
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets |
| License | MIT
| Doc PR |
When setting up AMQP transport connection, it can be interesting to configure prefetching on a channel, which is not currently possible.
Commits
-------
47777eedd6 Add optional parameter `prefetching` in connection configuration, to setup channel prefetch count
Makes Finder::in() throw a DirectoryNotFoundException instead of an InvalidArgumentException if one of the directories is not found.
This behavior is more consistent with the AccessDeniedException for files which are unreadable due to insufficient permissions.
To keep BC, the new exception class inherits from InvalidArgumentException.