Commit Graph

53573 Commits

Author SHA1 Message Date
Oskar Stark
025079b051
Streamline dataproviders 2021-02-02 21:48:46 +01:00
Nyholm
84faecf77a
feature #38973 [Messenger] Allow to limit consumer to specific queues (dbu)
This PR was squashed before being merged into the 5.3-dev branch.

Discussion
----------

[Messenger] Allow to limit consumer to specific queues

| Q             | A
| ------------- | ---
| Branch?       | 5.x for features
| Bug fix?      | no
| New feature?  | yes (TODO: changelog)
| Deprecations? | no
| Tickets       | Fix #38630 (i think)
| License       | MIT
| Doc PR        | symfony/symfony-docs#... TODO

(Note: I am aware that there are other solutions for #38630 that might be more elegant. Our usecase does not use fanout, the reason why we need the functionality is different)

**Description**
We have a large application where one part is creating messages for products that need reindexing. A transport decorator decides before queueing whether this is a large effort or a small effort, based on some metric. Based on that, it adds a routing key which is then used in rabbitmq to put the message into the "small" or "large" queue.

We need two separate consumer processes that consume the small and the large queue, for separate scaling and such.

I looked into how we could achieve that. One option is to offer another option in the consume command. That would need to be forwarded to the receiver somehow, i added an interface for it now. The current PR is an illustration of the idea. If you specify a queue that the receiver does not have, things will fail in an inlegeant. If you specify multiple receivers, you can't specify the queue per receiver (though that starts being an odd usecase imho, you could then run two consumers instead)

Another option could be to allow configuring multiple receivers for the same transport that get the queue name(s) injected into their constructor. Then you can consume them separately. This currently needs a ton of configuration and some custom code to work. I can look at doing a PR to make this approach simpler, if you prefer it over the option to the consume command...

Commits
-------

9af1e20dae Adding changelog
81d6a49750 [Messenger] Allow to limit consumer to specific queues
2021-02-02 21:33:54 +01:00
Nyholm
9af1e20dae
Adding changelog 2021-02-02 21:33:33 +01:00
David Buchmann
81d6a49750
[Messenger] Allow to limit consumer to specific queues 2021-02-02 21:29:14 +01:00
Nicolas Grekas
58e32b3c2a [ErrorHandler] fix parsing return types in DebugClassLoader 2021-02-02 17:49:07 +01:00
Nicolas Grekas
ac94746dc7 [ErrorHandler] fix handling messages with null bytes from anonymous classes 2021-02-02 17:39:26 +01:00
Christophe Coevoet
9197199731 minor #40045 [Yaml] Delete unused comparison operation (LoginovIlya)
This PR was merged into the 4.4 branch.

Discussion
----------

[Yaml] Delete unused comparison operation

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #40041
| License       | MIT
| Doc PR        | NA

Commits
-------

3ef7bfd972 [yaml] Delelte unused comparison operation
2021-02-02 10:51:46 +01:00
FabienSalles
a9e9359581 fix validator when we have a false current element
fix coding styles

add type in return
2021-02-02 10:30:20 +01:00
Fabien Potencier
cedcb55097 bug #39954 [Mailer][Mime] Fix case-sensitive handling of header names (piku235)
This PR was squashed before being merged into the 5.2 branch.

Discussion
----------

[Mailer][Mime] Fix case-sensitive handling of header names

| Q             | A
| ------------- | ---
| Branch?       | 5.2
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #39953
| License       | MIT
| Doc PR        | -

Fixes case-sensitive handling of header names in "Mime" and "Mailer" component, more in the [ticket](https://github.com/symfony/symfony/issues/39953).

Commits
-------

d563c846f6 [Mailer][Mime] Fix case-sensitive handling of header names
2021-02-02 07:10:15 +01:00
Piotr Kugla
d563c846f6 [Mailer][Mime] Fix case-sensitive handling of header names 2021-02-02 07:10:09 +01:00
Fabien Potencier
ccdcac2a3e bug #40062 [Mime] Fix case-sensitive handling of header names (piku235)
This PR was merged into the 4.4 branch.

Discussion
----------

[Mime] Fix case-sensitive handling of header names

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #39953
| License       | MIT
| Doc PR        | -

Fixes case-sensitive handling of header names in "Mailer" component, more in the [ticket](https://github.com/symfony/symfony/issues/39953) and the [root PR](https://github.com/symfony/symfony/pull/39954).

Commits
-------

b2d7454042 [Mime] Fix case-sensitive handling in Headers::isUniqueHeader()
2021-02-02 07:09:05 +01:00
Piotr Kugla
b2d7454042 [Mime] Fix case-sensitive handling in Headers::isUniqueHeader() 2021-02-01 19:58:28 +01:00
Albert Casademont
94e1d877eb Add SYMFONY_PHPUNIT_REQUIRE env variable
Fixes #39387
2021-02-01 17:10:12 +01:00
Fabien Potencier
8f325f577d bug #40055 [Messenger] Fix Doctrine setup when using a migration (fabpot)
This PR was merged into the 5.2 branch.

Discussion
----------

[Messenger] Fix Doctrine setup when using a migration

| 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 #39928 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | n/a

#38136 fixed running `messenger:setup-transports` (issue reported in #37179), but it breaks usage with `make:migration` (reported in #39928) as code is already executed in a transaction.

This PR fixes both use cases.

Commits
-------

42eeb44f83 [Messenger] Fix Doctrine setup when using a migration
2021-02-01 16:14:50 +01:00
Fabien Potencier
d9f490a8b2 minor #40047 [HttpClient] Remove unnecessary "?" in url query (michaljusiega)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[HttpClient] Remove unnecessary "?" in url query

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

When creating the Request with passing nullable values as query parameters `HttpClientTrait::resolveUrl` method keeps at the end of URL "?" (IMO unnecessary) character.

Before:
```
        $client = HttpClient::create();
        $response = $client->request('GET', 'http://example.com/', ['query' => ['a' => null]]);

        $url = $response->getInfo('url'); // http://example.com/?
```

After:

```
        $client = HttpClient::create();
        $response = $client->request('GET', 'http://example.com/', ['query' => ['a' => null]]);

        $url = $response->getInfo('url'); // http://example.com/
```

Commits
-------

55831a85db Fix Query URL
2021-02-01 16:03:21 +01:00
Fabien Potencier
42eeb44f83 [Messenger] Fix Doctrine setup when using a migration 2021-02-01 15:36:03 +01:00
Yonel Ceruto
33e6af5850 Fixed updating catalogue metadata from intl domain 2021-01-31 21:39:35 -05:00
Michał Jusięga
55831a85db Fix Query URL 2021-01-31 21:54:11 +01:00
LoginovIlya
3ef7bfd972 [yaml] Delelte unused comparison operation 2021-01-31 18:20:26 +03:00
Carlos Tasada
c52c1e0b9b [HttpFoundation] Setting REQUEST_TIME_FLOAT when constructing a Request object 2021-01-31 14:27:34 +01:00
Jérémy Derussé
94eac1b83f
Restore priority for eventSubscribers 2021-01-31 12:02:49 +01:00
Nicolas Grekas
4537f85963 feature #40029 [DoctineBridge] Remove UuidV*Generator classes (nicolas-grekas)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[DoctineBridge] Remove UuidV*Generator classes

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

There is no benefit in using these classes over creating the UUIDs inline.
Let's keep things simple.

For `UlidGenerator`, I'm keeping it as it will provide something useful once #39507 and https://github.com/doctrine/DoctrineBundle/pull/1284 are finished.

Commits
-------

3c296bd2f5 [DoctineBridge] Remove UuidV*Generator
2021-01-29 16:33:03 +01:00
Nicolas Grekas
3c296bd2f5 [DoctineBridge] Remove UuidV*Generator 2021-01-29 16:31:18 +01:00
Ruud Kamphuis
6f5c9ab80b
Show full URI when route not found
When accessing a route that does not exist, Symfony throws a `NotFoundHttpException` that says `No route found for "POST /path"`.

On some projects this might be good enough to find the root cause, but on projects that have lots of routes on different hosts, it becomes hard to understand how the request was initiated. Was it done over HTTP or HTTPS? What was the hostname? Did the user specify a port?

To make this easier, we now show the full URI of the path, like this: `No route found for "POST https://www.symfony.com/path"`.
2021-01-29 12:00:10 +01:00
Jérémy Derussé
0f4c905b8c
feature #39976 [Console] Add bright colors to console. (CupOfTea696)
This PR was squashed before being merged into the 5.3-dev branch.

Discussion
----------

[Console] Add bright colors to console.

| Q             | A
| ------------- | ---
| Branch?       | 5.x <!-- 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 #39869 <!-- 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#14884 <!-- required for new features -->

Add the "bright" ANSI colours to symfony/console. This adds ANSI escape codes 90-97 and 100-107.
<!--
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.
-->

Commits
-------

dbb94524ba [Console] Add bright colors to console.
2021-01-28 23:09:26 +01:00
Frankie Wittevrongel
dbb94524ba
[Console] Add bright colors to console. 2021-01-28 23:09:11 +01:00
Jérémy Derussé
02cbb3a92c
Merge branch '5.2' into 5.x
* 5.2:
  Use createMock() instead of a getter
  [ErrorHandler] Fix strpos error when trying to call a method without a name
  use proper keys to not override appended files
  take into account all label related options
  Fix console logger according to PSR-3
2021-01-28 23:08:00 +01:00
Jérémy Derussé
a07638b14a
Merge branch '4.4' into 5.2
* 4.4:
  Use createMock() instead of a getter
  [ErrorHandler] Fix strpos error when trying to call a method without a name
  use proper keys to not override appended files
  Fix console logger according to PSR-3
2021-01-28 23:06:19 +01:00
Jérémy Derussé
945c7c590c
minor #39920 [Console] Fix console logger according to PSR-3 (alex-dev)
This PR was merged into the 4.4 branch.

Discussion
----------

[Console] Fix console logger according to PSR-3

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #39050, #29138
| License       | MIT

`Symfony\Component\HttpKernel\EventListener\ErrorListener` logs non-HTTP exceptions at `LogLevel::CRITICAL`.
`Symfony\Component\Messenger\Worker` logs unrecoverable exceptions at `LogLevel::CRITICAL`.
`Symfony\Component\Console\EventListener\ErrorListener` logs exceptions at `LogLevel::ERROR`.

As per PSR-3, unexpected and unrecoverable exceptions should be logged at `LogLevel::CRITICAL`.

Commits
-------

69fcd075eb Fix console logger according to PSR-3
2021-01-28 23:01:20 +01:00
Robin Chalas
be788ee119 minor #39997 Use createMock() instead of a getter (OskarStark)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

Use createMock() instead of a getter

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | ---
| License       | MIT
| Doc PR        | ---

Before I go on, are you interested in such change @nicolas-grekas ?

Commits
-------

9629dafa66 Use createMock() instead of a getter
2021-01-28 20:07:58 +01:00
Oskar Stark
9629dafa66 Use createMock() instead of a getter 2021-01-28 20:07:50 +01:00
Nicolas Grekas
37166f79e2 bug #40018 [TwigBridge] take into account all label related options (xabbuh)
This PR was merged into the 5.2 branch.

Discussion
----------

[TwigBridge] take into account all label related options

| Q             | A
| ------------- | ---
| Branch?       | 5.2
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #40007
| License       | MIT
| Doc PR        |

Commits
-------

adb0fd1c7d take into account all label related options
2021-01-28 18:00:39 +01:00
Nicolas Grekas
e2428326e3 bug #40023 [Finder]  use proper keys to not override appended files (xabbuh)
This PR was merged into the 4.4 branch.

Discussion
----------

[Finder]  use proper keys to not override appended files

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #40022
| License       | MIT
| Doc PR        |

Commits
-------

036c8d71fd use proper keys to not override appended files
2021-01-28 17:58:58 +01:00
Nicolas Grekas
6f6cd50865 feature #40028 [Semaphore] remove "experimental" status (jderusse)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Semaphore] remove "experimental" status

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

/cc @lyrixx

Commits
-------

11f6896b5c [Semaphore] remove "experimental" status
2021-01-28 17:57:45 +01:00
Nicolas Grekas
27fab22fa6 bug #40019 [ErrorHandler] Fix strpos error when trying to call a method without a name (Deuchnord)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[ErrorHandler] Fix strpos error when trying to call a method without a name

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | None (direct fix)
| License       | MIT
| Doc PR        | None
<!--
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.
-->

When running the following code:

```php
class Foo
{
    // Some code here
}

$str = ''; // this should not happen, but for some reason, it did.
$foo->{$str}();
```

a fatal error occurs because the method name to execute is empty, but Symfony's error enhancer fails to parse it:

![Error screenshot](https://user-images.githubusercontent.com/7600265/106108704-ec019b80-6148-11eb-82bc-f7801e30fea4.png)

In this PR, I propose a fix with a more clear error to inform the developer about what happened.

Commits
-------

66be87bffc [ErrorHandler] Fix strpos error when trying to call a method without a name
2021-01-28 17:54:55 +01:00
Jérôme Deuchnord
66be87bffc [ErrorHandler] Fix strpos error when trying to call a method without a name 2021-01-28 17:54:48 +01:00
Nicolas Grekas
f0c3bc9f32 feature #38616 [FrameworkBundle][HttpFoundation][Security] Deprecate service "session" (jderusse)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[FrameworkBundle][HttpFoundation][Security] Deprecate service "session"

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | yes
| Tickets       | Fix #10557 and Fix #12839
| License       | MIT
| Doc PR        | TODO

This is a attempt to deprecate service `session` and `SessionInterface`.

This PR replaces the `session` service by a `.session.do-not-use` service (used internally by Symfony) and make `session` a deprecated alias.
In Symfony 6.0 we can remove the `session` service and replace the `SessionListener` by a Factory that build the session (instead of fetching it from container)

This PR also add a short cut `RequestStack::getSession(): ?SessionInterface`

For backward compatibility the `SessionListener` is replaced by `FactorySessionListener` **only when** the user don't override the service `session` (ping @wouterj )

TODO:
- [x] Test many configuration and dependencies (ie. session disabled + csrf)
- [x] ChangeLog and Upgrade
- [x] fix tests

Commits
-------

54acc00769 Deprecat service "session"
2021-01-28 17:45:48 +01:00
Jérémy Derussé
54acc00769
Deprecat service "session" 2021-01-28 16:56:06 +01:00
Nicolas Grekas
bf99d8c9b2 Merge branch '5.2' into 5.x
* 5.2:
  [DoctrineBridge] add missing `@experimental` annotation on Uid generators
2021-01-28 16:02:05 +01:00
Fabien Potencier
b9094f4fd2 bug #40027 [DoctrineBridge] add missing @experimental annotation on Uid generators (nicolas-grekas)
This PR was merged into the 5.2 branch.

Discussion
----------

[DoctrineBridge] add missing `@experimental` annotation on Uid generators

| Q             | A
| ------------- | ---
| Branch?       | 5.2
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Forgotten when we created the classes.

Needed since I plan to remove all the `UuidV*` generators. They're useless and a more flexible approach based on https://github.com/doctrine/DoctrineBundle/pull/1284 is coming.

Commits
-------

e380102590 [DoctrineBridge] add missing `@experimental` annotation on Uid generators
2021-01-28 15:59:42 +01:00
Christian Flothmann
036c8d71fd use proper keys to not override appended files 2021-01-28 15:45:15 +01:00
Jérémy Derussé
11f6896b5c
[Semaphore] remove "experimental" status 2021-01-28 15:38:19 +01:00
Nicolas Grekas
e380102590 [DoctrineBridge] add missing @experimental annotation on Uid generators 2021-01-28 15:21:46 +01:00
Christian Flothmann
adb0fd1c7d take into account all label related options 2021-01-28 09:07:54 +01:00
Fabien Potencier
0c9bf1e12d minor #40016 Remove some leftover @experimental annotations (fabpot)
This PR was merged into the 5.3-dev branch.

Discussion
----------

Remove some leftover @experimental annotations

| Q             | A
| ------------- | ---
| Branch?       | 5.x <!-- 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       | n/a <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | n/a

Commits
-------

315d62e661 Remove some leftover @experimental annotations
2021-01-28 07:18:39 +01:00
Fabien Potencier
315d62e661 Remove some leftover @experimental annotations 2021-01-28 07:13:55 +01:00
Fabien Potencier
d92ad13b56 feature #40010 [Uid] remove "experimental" status (nicolas-grekas)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Uid] remove "experimental" status

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

2e095561a7 [Uid] remove "experimental" status
2021-01-28 07:11:25 +01:00
Fabien Potencier
8f163702cd feature #40012 [Uid] Add RFC4122 UUID namespaces as constants (nicolas-grekas)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Uid] Add RFC4122 UUID namespaces as constants

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Discussed with @tgalopin
Will play well with #39507

Commits
-------

4e73aeb169 [Uid] Add RFC4122 UUID namespaces as constants
2021-01-28 06:53:26 +01:00
Nicolas Grekas
4e73aeb169 [Uid] Add RFC4122 UUID namespaces as constants 2021-01-27 23:31:47 +01:00
Nicolas Grekas
1a78e057d5 feature #40008 [Uid] Replace getTime() with getDateTime() (fancyweb)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Uid] Replace getTime() with getDateTime()

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | https://github.com/symfony/symfony/pull/39507#pullrequestreview-575491827
| License       | MIT
| Doc PR        | -

Getting a `\DateTimeImmutable` has two benefits: easier to use and no float precision problems.

There is however one drawback for UUIDs: we *technically* loose some precision in the output because datetimes do not handle nanoseconds (only microseconds) and uuid timestamps increment every 100 nanoseconds (0.1 microseconds). However, this is theoretical since the increment is only there to generate more entropy. Also, if an end user really want the precision, he can still do the conversion him/herself from the raw data. Finally, because of some rounding problems with floats even on 64b platforms, precision is *actually* won most of the time thanks to the datetime.

The idea is to also accept `\DateTimeInterface` as input in `UuidFactory` and `UlidFactory` (see https://github.com/symfony/symfony/pull/39507) btw.

The breaking change is allowed because the component is experimental.

Commits
-------

360c900acf [Uid] Replace getTime() with getDateTime()
2021-01-27 22:07:25 +01:00