Commit Graph

34783 Commits

Author SHA1 Message Date
David Buchmann
926d228877 [Serializer] Respect ignored attributes in cache key of normalizer 2019-04-08 12:10:02 +02:00
Christian Flothmann
8fb2074972 fix resetting the COLUMN environment variable 2019-04-08 11:29:13 +02:00
Fabien Potencier
9b9d416cf6 bug #30973 [WebProfiler] Fix Javascript error when using custom stopwatch categories (curry684)
This PR was squashed before being merged into the 4.3-dev branch (closes #30973).

Discussion
----------

[WebProfiler] Fix Javascript error when using custom stopwatch categories

Fixes #30745

| 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
| Tests pass?   | yes
| Fixed tickets | #30745
| License       | MIT

Made the getter do lazy creation so it can dynamically adapt to whatever it's given.

Commits
-------

e991472a76 [WebProfiler] Fix Javascript error when using custom stopwatch categories
2019-04-08 11:00:23 +02:00
Niels Keurentjes
e991472a76 [WebProfiler] Fix Javascript error when using custom stopwatch categories 2019-04-08 11:00:04 +02:00
Nicolas Grekas
d7a8b3d5e1 bug #30085 Fix TestRunner compatibility to PhpUnit 8 (alexander-schranz)
This PR was squashed before being merged into the 3.4 branch (closes #30085).

Discussion
----------

Fix TestRunner compatibility to PhpUnit 8

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | related to: #30055
| License       | MIT
| Doc PR        | -

Modify the installed phpunit version to be compatibility with the symfony custom TestRunner. This is sure not the best way but maybe currently the fastest way to support PhpUnit 8. The hack should be removed as soon as there is another way to implement a custom Runner.

Commits
-------

a0c66a399d Fix TestRunner compatibility to PhpUnit 8
2019-04-08 09:56:38 +02:00
Alexander Schranz
a0c66a399d Fix TestRunner compatibility to PhpUnit 8 2019-04-08 09:56:31 +02:00
Александр Ли
2ae2fd800d [FrameworkBundle] Fix Controller deprecated when using composer --optimized
Update Controller.php
Update Controller.php
2019-04-08 12:19:48 +05:00
Roland Franssen
d2f2e56472 Fix dark themed componnents 2019-04-08 09:12:55 +02:00
Fabien Potencier
f539932899 fixed CS 2019-04-08 08:16:24 +02:00
Fabien Potencier
fa7df09dbb feature #30968 [Security] Add Argon2idPasswordEncoder (chalasr)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Security] Add Argon2idPasswordEncoder

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #28093
| License       | MIT
| Doc PR        | TODO

Currently we have a `Argon2iPasswordEncoder` that may hash passwords using `argon2id` instead of `argon2i` (platform-dependent) which is not good.
This deprecates producing/validating `argon2id` hashed passwords using the `Argon2iPasswordEncoder`, and adds a `Argon2idPasswordEncoder` able to produce/validate `argon2id` hashed passwords only.

#EUFOSSA

Commits
-------

0c82173b24 [Security] Add Argon2idPasswordEncoder
2019-04-08 08:14:55 +02:00
Fabien Potencier
b30f57e14b bug #30977 [serializer] prevent mixup in normalizer of the object to populate (dbu)
This PR was merged into the 3.4 branch.

Discussion
----------

[serializer] prevent mixup in normalizer of the object to populate

EUFOSSA

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

OBJECT_TO_POPULATE is meant to specify the top level object. The implementation left the option in the context and it would be used whenever we have the first element that matches the class. #30607 (to master) introduces the feature to also keep the instances of attributes to deeply populate an existing object tree. In both cases, we do not want the mix up to happen with what the current OBJECT_TO_POPULATE is.

Commits
-------

fdb668e051 prevent mixup of the object to populate
2019-04-08 08:05:24 +02:00
Fabien Potencier
5638d6adcc minor #30965 Prepare for the new serialization mechanism (fancyweb)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Prepare for the new serialization mechanism

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

#eufossa

Should I maybe split this component by component ?

https://wiki.php.net/rfc/custom_object_serialization has been accepted.

Best viewed in "split" mode.

This work is kind of required for https://github.com/symfony/symfony/issues/30304 so we don't trigger 30 deprecations from our own code base.

Commits
-------

d412e77a9c Prepare for the new serialization mechanism
2019-04-08 08:01:37 +02:00
Fabien Potencier
35684187d5 bug #30995 [Mailer] allow user/pass on dsn while using failover/roundrobin (scuben)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Mailer] allow user/pass on dsn while using failover/roundrobin

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| 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

this PR provides two things:
1. It is possible now to user `username` and `password` in a failover or round robin transport when using smtp
2. Fixed a type problem with `username` and `password` for the smtp transport as `getUsername()` cannot return `null` because of its signature but if no `username` is provided then the property would have been `null`. Fixed with setting an empty string as default. Same for `password`. (This was discovered by adding a test - yeah!)

Commits
-------

4518ac56a1 allow user/pass on dns while using failover/roundrobin and type fix for username/password
2019-04-08 07:54:46 +02:00
Fabien Potencier
e02cbe918a Merge branch '4.2'
* 4.2:
  Make tests independent from each other
2019-04-08 07:24:03 +02:00
Fabien Potencier
bbad6e8e58 Merge branch '3.4' into 4.2
* 3.4:
  Make tests independent from each other
2019-04-08 07:23:45 +02:00
Fabien Potencier
48bb7c999c minor #30986 Make tests independent from each other (greg0ire)
This PR was merged into the 3.4 branch.

Discussion
----------

Make tests independent from each other

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | none
| License       | MIT
| Doc PR        | n/a

Environment variables set in a test need to be restored to their
previous values or unset if we want to be able to run tests
independently.

Credits to @ostrolucky for spotting this issue, I'm available for help when merging this in more recent branch (issues may appear then).

Created during the EU-FOSSA hackathon

Commits
-------

00883fc409 Make tests independent from each other
2019-04-08 07:17:37 +02:00
Fabien Potencier
546b1146c4 fixed CS 2019-04-08 07:16:00 +02:00
Fabien Potencier
02e865b298 bug #30992 [TwigBridge][DependencyInjection] ignore null arguments (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[TwigBridge][DependencyInjection] ignore null arguments

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

44eb7a0485 fix backwards compatibility breaks
2019-04-08 07:15:29 +02:00
Nicolas Grekas
408e4aa48e bug #30990 Allow env processor to resolve :: (jderusse)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Allow env processor to resolve `::`

| Q             | A
| ------------- | ---
| Branch?       | 4.3
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | N/A

The env processor resolve to null when no fallback are provided. ie. `env(default::NOT_EXISTS)`

Issue is that the regexp does not allow such pattern. thus made the feature unusable.

Commits
-------

6b6c24c618 Allow env processor to resolve `::`
2019-04-07 23:36:42 +02:00
Christian Flothmann
44eb7a0485 fix backwards compatibility breaks 2019-04-07 23:31:58 +02:00
Grégoire Paris
00883fc409
Make tests independent from each other
Environment variables set in a test need to be restored to their
previous values or unset if we want to be able to run tests
independently.
2019-04-07 23:05:09 +02:00
Patrick Landolt
4518ac56a1 allow user/pass on dns while using failover/roundrobin and type fix for username/password 2019-04-07 22:39:37 +02:00
Jérémy Derussé
6b6c24c618
Allow env processor to resolve :: 2019-04-07 22:36:28 +02:00
Christian Flothmann
2efd7b2149 Merge branch '4.2'
* 4.2:
  fix tests
  fix PHPUnit 4.8 compatibility
  [Debug] Fixed error handling when an error is already handled when another error is already handled (5)
  sync validator translations
2019-04-07 21:49:19 +02:00
Christian Flothmann
5b8a68d98d minor #30989 fix tests (xabbuh)
This PR was merged into the 4.2 branch.

Discussion
----------

fix tests

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

27df966705 fix tests
2019-04-07 21:42:46 +02:00
Robin Chalas
0c82173b24 [Security] Add Argon2idPasswordEncoder 2019-04-07 21:35:55 +02:00
Christian Flothmann
27df966705 fix tests 2019-04-07 21:30:26 +02:00
Thomas Calvet
d412e77a9c Prepare for the new serialization mechanism 2019-04-07 20:20:37 +02:00
Christian Flothmann
397e4b8931 Merge branch '3.4' into 4.2
* 3.4:
  fix PHPUnit 4.8 compatibility
  [Debug] Fixed error handling when an error is already handled when another error is already handled (5)
  sync validator translations
2019-04-07 20:00:57 +02:00
Christian Flothmann
64fa13bf44 fix PHPUnit 4.8 compatibility 2019-04-07 19:26:29 +02:00
Fabien Potencier
615cc10b70 minor #30946 [Validator] sync validator translations (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] sync validator translations

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

#FOSSHackathons #EUFOSSA

Commits
-------

83f675d9f3 sync validator translations
2019-04-07 18:44:15 +02:00
Christophe Coevoet
9f3ce4832b Merge branch '4.2'
* 4.2:
  [Form] Fix tests
  Fix the configurability of CoreExtension deps in standalone usage
  [Cache] fix using ProxyAdapter inside TagAwareAdapter
2019-04-07 15:57:40 +02:00
Christophe Coevoet
393c6b390c Merge branch '3.4' into 4.2
* 3.4:
  [Form] Fix tests
  Fix the configurability of CoreExtension deps in standalone usage
  [Cache] fix using ProxyAdapter inside TagAwareAdapter
2019-04-07 15:57:20 +02:00
Fabien Potencier
cd54e0f232 bug #30976 [Debug] Fixed error handling when an error is already handled when another error is already handled (5) (lyrixx)
This PR was merged into the 3.4 branch.

Discussion
----------

[Debug] Fixed error handling when an error is already handled when another error is already handled (5)

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

---

Please, don't ask how to reproduce it :)

Commits
-------

a36c7315f4 [Debug] Fixed error handling when an error is already handled when another error is already handled (5)
2019-04-07 15:50:27 +02:00
Christophe Coevoet
c68ef4648c minor #30966 [DoctrineBridge] Deprecated using IdReader when optimization is not possible (HeahDude)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DoctrineBridge] Deprecated using IdReader when optimization is not possible

| 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? | yes <!-- 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        | ~

Follow up of #30962. (Review only the second commit until #30962 is merged).

Commits
-------

a234c8913e [DoctrineBridge] Deprecated using IdReader when optimization is not possible
2019-04-07 15:40:33 +02:00
Jules Pietri
a234c8913e [DoctrineBridge] Deprecated using IdReader when optimization is not possible 2019-04-07 15:30:06 +02:00
Robin Chalas
35418be8c4 [Form] Fix tests 2019-04-07 15:12:50 +02:00
Nicolas Grekas
d8b03ee437 bug #30979 Fix the configurability of CoreExtension deps in standalone usage (stof)
This PR was squashed before being merged into the 3.4 branch (closes #30979).

Discussion
----------

Fix the configurability of CoreExtension deps in standalone usage

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | not yet, but will allow fixing them
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

When using the Forms entrypoint to configure the component, there was no chance to configure dependencies of the CoreExtension, as the one registered without argument was first and would win.
The builder now delays the prepending of the CoreExtension to do it only if the CoreExtension is not registered explicitly.

We discovered that when trying to fix tests for the FileType, where we wanted to pass a Translator to it.

Commits
-------

934118b131 Fix the configurability of CoreExtension deps in standalone usage
2019-04-07 15:12:19 +02:00
Christophe Coevoet
934118b131 Fix the configurability of CoreExtension deps in standalone usage 2019-04-07 15:12:11 +02:00
Nicolas Grekas
c274dffc8b feature #30963 [Serializer] Experimental for ObjectListExtractor (joelwurtz)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Serializer] Experimental for ObjectListExtractor

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30904
| License       | MIT
| Doc PR        | -

Related to #30818

I want to mark this class as `@expiremental` until we have the full refactoring done of the Serializer, also this would allow change needed if some behavior was not correctly taken into care in 4.3

Mark also `final` for the default implementation as we don't want that to be extendable and user should use composition over inheritance.

Commits
-------

b0cdf45464 Set object list extractor as expiremental, and use final for default implementation
2019-04-07 14:59:03 +02:00
Nicolas Grekas
47e571b3fc feature #30933 [Routing][ObjectRouteLoader] Allow invokable route loader services (fancyweb)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Routing][ObjectRouteLoader] Allow invokable route loader services

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/11333

#eufossa

Fall back by default on the `__invoke` method when it is not configured.

Using a regex is easier to check that the format is valid, at least for the time we have to supports the single column notation.

TODO :
- [x] Changelog entry
- [x] Doc PR

Commits
-------

5bf7ad44e1 [Routing][ObjectRouteLoader] Allow invokable route loader services
2019-04-07 14:52:56 +02:00
David Buchmann
fdb668e051 prevent mixup of the object to populate 2019-04-07 14:49:34 +02:00
Grégoire Pineau
a36c7315f4 [Debug] Fixed error handling when an error is already handled when another error is already handled (5) 2019-04-07 14:43:40 +02:00
Joel Wurtz
b0cdf45464
Set object list extractor as expiremental, and use final for default implementation 2019-04-07 14:24:52 +02:00
Nicolas Grekas
77320cb645 bug #30918 [Cache] fix using ProxyAdapter inside TagAwareAdapter (dmaicher)
This PR was merged into the 3.4 branch.

Discussion
----------

[Cache] fix using ProxyAdapter inside TagAwareAdapter

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30400
| License       | MIT
| Doc PR        | -

EUFOSSA

After some debugging this is my first attempt to fix this issue @nicolas-grekas 😊 Let's discuss it.

without the fix the test fails like this:

```
Testing Symfony\Component\Cache\Tests\Adapter\TagAwareAndProxyAdapterIntegrationTest
F                                                                   1 / 1 (100%)

Time: 28 ms, Memory: 4.00MB

There was 1 failure:

1) Symfony\Component\Cache\Tests\Adapter\TagAwareAndProxyAdapterIntegrationTest::testIntegration
Failed asserting that Array &0 (
    'tag1' => 0
    'tag2' => 0
) is identical to 'bar'.

/var/www/symfony/src/Symfony/Component/Cache/Tests/Adapter/TagAwareAndProxyAdapterIntegrationTest.php:26

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

Commits
-------

98b9be9b6a [Cache] fix using ProxyAdapter inside TagAwareAdapter
2019-04-07 14:23:14 +02:00
Nicolas Grekas
c6505d3a97 feature #30897 [DIC] Add a require env var processor (mpdude)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DIC] Add a `require` env var processor

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | symfony/symfony-docs#11313

This adds a new `require` processor that will `require()` the PHP file given as input value and return the value `return`ed from that file. Leverages opcaching (yay!).

#EUFOSSA

Commits
-------

03da3a22b1 Add a `require` env var processor
2019-04-07 14:20:55 +02:00
Christian Flothmann
83f675d9f3 sync validator translations 2019-04-07 13:52:58 +02:00
Nicolas Grekas
226b36e99a feature #30964 [HttpKernel] Add a "short" trace header format, make header configurable (mpdude)
This PR was squashed before being merged into the 4.3-dev branch (closes #30964).

Discussion
----------

[HttpKernel] Add a "short" trace header format, make header configurable

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | symfony/symfony-docs#11340

This pull requests adds the first usage of `array_key_first` to the Symfony code base. Additionally, it makes it possible to configure the `HttpCache` to also add a "trace" header in production.

The `HttpCache` is a convenient, low-barrier yet performant way of accelerating the application. By having the "trace" information returned as a header in production as well, you can write it to server log files. For example, with Apache you can use `%{X-Symfony-Cache}o` in the `LogFormat` directive to log response headers.

With the information in the log files, you can easily process it from logfile processing/system metrics tools to find out about cache performance, efficiency and the URLs that might need extra cache tweaking.

<img width="1040" alt="Bildschirmfoto 2019-04-07 um 11 43 23" src="https://user-images.githubusercontent.com/1202333/55681763-6e90e980-592a-11e9-900f-e096350531c2.png">

The "short" format will only output information for the main request to avoid leaking internal URLs for ESI subrequests. I also chose a concise format like `stale/valid/store` because that's much easier to parse out of logfiles (no whitespace, no need for quotes etc.).

If you're not comfortable with having `Symfony` in the header name that way, the header name can be changed through a configuration setting as well.

#FOSSHackathon

Commits
-------

9a2fcc9392 [HttpKernel] Add a \"short\" trace header format, make header configurable
2019-04-07 13:45:14 +02:00
Matthias Pigulla
9a2fcc9392 [HttpKernel] Add a \"short\" trace header format, make header configurable 2019-04-07 13:44:57 +02:00
Tomas
dd93b707cc Use name converter when normalizing constraint violation list 2019-04-07 14:21:30 +03:00
Nicolas Grekas
b0989aaffc feature #29935 [DI] Fix bad error message for unused bind under _defaults (przemyslaw-bogusz)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DI] Fix bad error message for unused bind under _defaults

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #27828
| License       | MIT

**Sidenote**: I originally included the fix in #29897, but I decided to close the previous PR and divide it into two separate PRs for clarity.

**Description:**
With this fix, the message regarding an unused bind will have a clear information about the type of the bind (defined under __defaults_, __instanceof_ or _per service_), as well as the name of the file, in which it was configurated. It's for, both, YAML and XML configurations.

For the core team, please note, that the fix assumes a possibility of definings binds under __instanceof_, which was introduced in #27806. But since fixes are merged into other branches, I thought that it might be necessary to inlude this possibility. If this case requires making separate fixes for different branches, I will gladly do it.

Commits
-------

35bf4203e8 [DI] Fix bad error message for unused bind under _defaults
2019-04-07 12:29:22 +02:00
Fabien Potencier
3df05e0877 feature #30962 [DoctrineBridge] Deprecated implicit optimization in DoctrineChoiceLoader (HeahDude)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DoctrineBridge] Deprecated implicit optimization in DoctrineChoiceLoader

| 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? | yes <!-- 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        | ~

#EUFOSSA

Big thanks to @stof for the help with writing the test!

## Description
It happens that the `IdReader` is created by the `DoctrineType` and cached for each entity class case.
But the type already resolves whether or not it should use it, only when we can optimize query thanks to a single id field when defining the `choice_value` option: https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php#L188.

This PR is a first step to optimize the choice loading process.

Commits
-------

287c39b9ea [DoctrineBridge] Deprecated implicit optimization in DoctrineChoiceLoader
2019-04-07 12:26:36 +02:00
Przemysław Bogusz
35bf4203e8 [DI] Fix bad error message for unused bind under _defaults 2019-04-07 12:22:52 +02:00
Jules Pietri
287c39b9ea [DoctrineBridge] Deprecated implicit optimization in DoctrineChoiceLoader 2019-04-07 12:14:41 +02:00
Nicolas Grekas
4447f87c2e Merge branch '4.2'
* 4.2:
  fix translating file validation error message
  [Validator] Add missing Hungarian translations
  Improving deprecation message of the Twig templates directory src/Resources/views
  [3.4] [Validator] Add missing french validation translations.
  [Validator] Only traverse arrays that are cascaded into
  Handle case where no translations were found
  [Validator] Translate unique collection message to Hungarian
  fix tests
  Run test in separate process
  Use a class name that does not actually exist
  [Profiler] Fix dark theme elements color
  fix horizontal spacing of inlined Bootstrap forms
  [Translator] Warm up the translations cache in dev
  turn failed file uploads into form errors
2019-04-07 11:58:10 +02:00
Nicolas Grekas
ecb52bc9f1 Merge branch '3.4' into 4.2
* 3.4:
  fix translating file validation error message
  [Validator] Add missing Hungarian translations
  [3.4] [Validator] Add missing french validation translations.
  [Validator] Only traverse arrays that are cascaded into
  Handle case where no translations were found
  [Validator] Translate unique collection message to Hungarian
  fix tests
  Run test in separate process
  Use a class name that does not actually exist
  fix horizontal spacing of inlined Bootstrap forms
  [Translator] Warm up the translations cache in dev
  turn failed file uploads into form errors
2019-04-07 11:56:43 +02:00
Fabien Potencier
ca290396fb minor #30943 [Asset] PathPackage : use parent getUrl Method instead of duplicating code (tiecoders)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Asset] PathPackage : use parent getUrl Method instead of duplicating code

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Use parent getUrl method instead of duplicating code.

Commits
-------

0c2a2bf536 ASSET-PathPackage-Enhancement  - Use parent getUrl method instead of duplicating code.
2019-04-07 11:43:31 +02:00
Fabien Potencier
04eed543af minor #30944 Fix Lock test suite (jderusse)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Fix Lock test suite

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | na
| License       | MIT
| Doc PR        | na

Commits
-------

1f66e7b2be Fix Lock test suite
2019-04-07 11:31:45 +02:00
Christian Flothmann
9c41842756 fix translating file validation error message 2019-04-07 11:31:05 +02:00
Fabien Potencier
76906ab6e8 minor #30953 [Form] Refactor DefaultChoiceListFactory (vudaltsov)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] Refactor DefaultChoiceListFactory

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

A small optimization (remove unnecessary `foreach` calls) and a naming improvement.

ping @HeahDude , @stof

#EUFOSSA

Commits
-------

77424c8557 Refactor DefaultChoiceListFactory
2019-04-07 11:26:33 +02:00
Fabien Potencier
2b01eaaa30 feature #30862 [Routing] UrlHelper to get absolute URL for a path (vudaltsov)
This PR was squashed before being merged into the 4.3-dev branch (closes #30862).

Discussion
----------

[Routing] UrlHelper to get absolute URL for a path

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | todo

I noticed that I need to generate absolute urls quite often. For example when normalizing uploads in API. I found Twig's `absolute_url()` really helpful, but obviously `Symfony\Bridge\Twig\Extension\HttpFoundationExtension` cannot be used as a normalizer's argument service.

In this PR I propose to extract `HttpFoundationExtension::generateAbsoluteUrl` and `HttpFoundationExtension::generateRelativePath` to separate interfaces which could be used on their own. Although this could be just a final class helper, I thought that we might leave a possibility for decoration here. That's why I created interfaces.

- [x] Split `HttpFoundationExtension` into two interfaces
- [x] Deprecate `HttpFoundationExtension::generateAbsoluteUrl` and `HttpFoundationExtension::generateRelativePath`
- [x] Add service definitions
- [x] Fix tests
- [ ] Add docs

Commits
-------

388d8f548c [Routing] UrlHelper to get absolute URL for a path
2019-04-07 11:25:07 +02:00
Valentin
388d8f548c [Routing] UrlHelper to get absolute URL for a path 2019-04-07 11:24:57 +02:00
Valentin
77424c8557 Refactor DefaultChoiceListFactory 2019-04-07 11:13:09 +02:00
Fabien Potencier
0d365a8c7f feature #30607 [Serializer] Add Support of recursive denormalization on object_to_populate (jewome62)
This PR was squashed before being merged into the 4.3-dev branch (closes #30607).

Discussion
----------

[Serializer] Add Support of recursive denormalization on object_to_populate

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | Pending
| Fixed tickets | #21669
| License       | MIT
| Doc PR        | Pending

Currently the deserialization re-create new sub-object with object_to_populate.
This option permit to make object_to_populate recursive.

Commits
-------

5b723865b1 [Serializer] Add Support of recursive denormalization on object_to_populate
2019-04-07 11:04:56 +02:00
jewome62
5b723865b1 [Serializer] Add Support of recursive denormalization on object_to_populate 2019-04-07 11:04:49 +02:00
Fabien Potencier
9e2f506e37 bug #30939 [Validator] throw UnexpectedValueException instead (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Validator] throw UnexpectedValueException instead

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

#FOSSHackathons #EUFOSSA

Commits
-------

de12e2382e throw UnexpectedValueException instead
2019-04-07 10:55:57 +02:00
Jérémy Derussé
1f66e7b2be
Fix Lock test suite 2019-04-07 10:54:19 +02:00
Fabien Potencier
758f0285b0 minor #30938 [FrameworkBundle] drop not needed "constant" type argument (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[FrameworkBundle] drop not needed "constant" type argument

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

#FOSSHackathons #EUFOSSA

Commits
-------

faf629386e drop not needed "constant" type argument
2019-04-07 10:54:10 +02:00
Gábor Egyed
62e5a91150 [Validator] Add missing Hungarian translations 2019-04-07 10:52:46 +02:00
Fabien Potencier
95d46c25f7 minor #30940 [Validator] Translate unique collection message to Hungarian (1ed)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Translate unique collection message to Hungarian

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

<!--
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
-------

6a732dc031 [Validator] Translate unique collection message to Hungarian
2019-04-07 10:48:21 +02:00
Fabien Potencier
6ea4d79e0f minor #30945 [3.4] [Validator] Add missing french validators translations (hhamon)
This PR was merged into the 3.4 branch.

Discussion
----------

[3.4] [Validator] Add missing french validators translations

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

Commits
-------

331b601fed [3.4] [Validator] Add missing french validation translations.
2019-04-07 10:44:45 +02:00
Thomas Calvet
5bf7ad44e1 [Routing][ObjectRouteLoader] Allow invokable route loader services 2019-04-07 10:38:24 +02:00
Yonel Ceruto
89a00b315d Improving deprecation message of the Twig templates directory src/Resources/views 2019-04-07 10:37:45 +02:00
Fabien Potencier
3d6f15251a bug #30951 Handle case where no translations were found (greg0ire)
This PR was merged into the 3.4 branch.

Discussion
----------

Handle case where no translations were found

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Right now, the program emits a warning when trying to use max() on an
empty array.

Commits
-------

79b1fb8333 Handle case where no translations were found
2019-04-07 10:36:55 +02:00
David Maicher
98b9be9b6a [Cache] fix using ProxyAdapter inside TagAwareAdapter 2019-04-07 10:35:15 +02:00
Hugo Hamon
331b601fed [3.4] [Validator] Add missing french validation translations. 2019-04-07 10:32:58 +02:00
Matthias Pigulla
03da3a22b1 Add a require env var processor
This allows to process .php files, returning the value returned
from that file. Leverages the opcache.
2019-04-07 08:29:53 +00:00
Alexander M. Turek
8acf29eaf5 There is no OB to flush. 2019-04-07 10:26:05 +02:00
Fabien Potencier
e53f696a39 feature #30429 [Form] group_by as callback returns array (antonch1989)
This PR was squashed before being merged into the 4.3-dev branch (closes #30429).

Discussion
----------

[Form]  group_by as callback returns array

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30315
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Commits
-------

4c04601036 [Form]  group_by as callback returns array
2019-04-07 10:22:34 +02:00
Anton Chernikov
4c04601036 [Form] group_by as callback returns array 2019-04-07 10:22:26 +02:00
Fabien Potencier
1f48f7bd82 bug #29800 [Validator] Only traverse arrays that are cascaded into (corphi)
This PR was squashed before being merged into the 3.4 branch (closes #29800).

Discussion
----------

[Validator] Only traverse arrays that are cascaded into

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #27090
| License       | MIT
| Doc PR        | -

Previously, array properties were traversed even if they were not annotated `Valid`.

Commits
-------

7db9200279 [Validator] Only traverse arrays that are cascaded into
2019-04-07 10:20:18 +02:00
Philipp Cordes
7db9200279 [Validator] Only traverse arrays that are cascaded into 2019-04-07 10:20:12 +02:00
Grégoire Paris
79b1fb8333
Handle case where no translations were found
Right now, the program emits a warning when trying to use max() on an
empty array.
2019-04-07 10:01:42 +02:00
Fabien Potencier
03d804e32d minor #30928 [DependencyInjection] fix tests (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[DependencyInjection] fix tests

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

#FOSSHackathons #EUFOSSA

Commits
-------

e55f6e6f5e fix tests
2019-04-07 09:57:30 +02:00
Vincent Touzet
e2dbe63489 [Messenger] DoctrineTransport - Use InvalidArgumentException instead of TransportException during configuration checks 2019-04-07 09:39:29 +02:00
Nicolas Grekas
65b46a532c feature #30887 [FrameworkBundle] fix search in debug autowiring (sez-open)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[FrameworkBundle] fix search in debug autowiring

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- 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 | #30493   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        |

<!--
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.
-->

Taking #30522 and finishing it with @nicolas-grekas comments.
Is the sentence ok ?

Commits
-------

fec4beaffc fix debug:autowiringcommand
2019-04-07 09:30:18 +02:00
sez-open
fec4beaffc
fix debug:autowiringcommand 2019-04-07 09:27:26 +02:00
tiecoders
0c2a2bf536 ASSET-PathPackage-Enhancement - Use parent getUrl method instead of duplicating code. 2019-04-07 01:25:14 +02:00
Grégoire Pineau
50c22b3d58 Fixed tests 2019-04-06 23:28:55 +02:00
Gábor Egyed
6a732dc031
[Validator] Translate unique collection message to Hungarian 2019-04-06 23:20:57 +02:00
Christian Flothmann
de12e2382e throw UnexpectedValueException instead 2019-04-06 23:02:44 +02:00
Christian Flothmann
e55f6e6f5e fix tests 2019-04-06 22:57:23 +02:00
Christian Flothmann
faf629386e drop not needed "constant" type argument 2019-04-06 22:23:29 +02:00
dFayet
44d9fbe995 Fix graph text color 2019-04-06 21:48:09 +02:00
Fabien Potencier
fad7c8c01f feature #30935 Use env variable to create anytype of lock store (jderusse)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Use env variable to create anytype of lock store

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #27555
| License       | MIT
| Doc PR        | NA

In lock configuration, at the moment, env variable are only able to resolve DNS which are able to create RedisStore and MemcachedStore.

This PR update the StoreFactory to be able to also create connection at runtime.

Commits
-------

6b57ea996c Use env variable to create anytype of lock store
2019-04-06 21:40:22 +02:00
Jérémy Derussé
6b57ea996c
Use env variable to create anytype of lock store 2019-04-06 21:34:46 +02:00
Grégoire Paris
6d51a04b11
Run test in separate process
This test calls code that defines some environment variables, which in
turn trigger the registration of a the deprecation error handler, which
causes unexpected issues when testing other components.
2019-04-06 21:33:58 +02:00
Fabien Potencier
9afcc7b833 minor #30934 [Serializer] add return type hints for ObjectPropertyListExtractorInterface (dmaicher)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Serializer] add return type hints for ObjectPropertyListExtractorInterface

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

@nicolas-grekas as just discussed here the type-hint + phpdoc cleanup as follow-up for https://github.com/symfony/symfony/pull/30904 😉

cc @joelwurtz

Commits
-------

7628972285 [Serializer] add return type hints for ObjectPropertyListExtractorInterface
2019-04-06 21:25:56 +02:00
Grégoire Paris
a53e0fe1cd
Use a class name that does not actually exist
Using "Foo", a class name that corresponds to no less than 22 fixture
classes, results in the first found "Foo" being loaded when one is
found by the ClassNotFoundFatalErrorHandler error handler, I am not sure
exactly why, but it is not really a big issue because this is a fatal
error handler and execution is not supposed to continue after that.
Except that is very much the case when running the whole test suite
sequentially with ./phpunit . Then we arrive to the DI component test
suite, and a failure happens because \\foo was not supposed to be defined:

> Failed asserting that exception message 'The definition for "\foo" has
> no class attribute, and appears to reference a class or interface in the
> global namespace. Leaving out the "class" attribute is only allowed for
> namespaced classes. Please specify the class attribute explicitly to get
> rid of this error.' contains 'The definition for "\foo" has no class.'.
2019-04-06 21:25:09 +02:00
Fabien Potencier
f80df4cea5 feature #30932 [Validator] Add an option to disable NotCompromisedPasswordValidator (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Validator] Add an option to disable NotCompromisedPasswordValidator

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30871
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/issues/11327

EUFOSSA

Commits
-------

9a2787e89a [Validator] Add an option to disable NotCompromisedPasswordValidator
2019-04-06 21:23:33 +02:00
Fabien Potencier
e05aaf9207 feature #30909 [Translator] Add comments when dumping po files (deguif)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Translator] Add comments when dumping po files

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | ?    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #29962
| License       | MIT
| Doc PR        |

This code
```php
$catalogue = new MessageCatalogue('fr');
$dumper = new PoFileDumper();

$catalogue->set('key.one', 'First key', 'custom');
$catalogue->setMetadata('key.one', ['sources' => 'src/file_1', 'comments' => 'Comment', 'flags' => 'fuzzy'], 'custom');

$catalogue->set('key.second', 'Second key', 'custom');
$catalogue->setMetadata('key.second', ['sources' => ['src/file_1', 'src/file_2'], 'comments' => ['Comment 1', 'Comment 2'], 'flags' => ['fuzzy', 'another']], 'custom');

$dumper->dump($catalogue, [
    'path' => 'xxx',
]);
```

Will produces this output:
```
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"

# Comment
#, fuzzy
#: src/file_1
msgid "key.one"
msgstr "First key"

# Comment 1
# Comment 2
#, fuzzy,another
#: src/file_1 src/file_2
msgid "key.second"
msgstr "Second key"
```

Commits
-------

31b3a55787 Add comments when dumping po files
2019-04-06 21:19:44 +02:00
Fabien Potencier
3de3e4e8d9 feature #30913 [Messenger] Uses an AmqpStamp to provide flags and attributes (sroze)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Uses an `AmqpStamp` to provide flags and attributes

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #28885
| License       | MIT
| Doc PR        | ø

Using the `AmqpStamp` you can configure the flags and any attribute (such as `delivery_mode`).

Commits
-------

56fa574023 Uses an `AmqpStamp` to provide flags and attributes
2019-04-06 21:18:37 +02:00
David Maicher
7628972285 [Serializer] add return type hints for ObjectPropertyListExtractorInterface 2019-04-06 21:18:18 +02:00
Pascal Borreli
a29ce2817c [Security] Add a separator in the remember me cookie hash 2019-04-06 21:17:28 +02:00
Grégoire Pineau
9a2787e89a [Validator] Add an option to disable NotCompromisedPasswordValidator 2019-04-06 21:16:20 +02:00
Samuel ROZE
56fa574023 Uses an AmqpStamp to provide flags and attributes 2019-04-06 21:05:34 +02:00
Fabien Potencier
8a62892e42 bug #30876 [Mime][BrowserKit] Add FormUrlEncoded - Fix content-type in HttpBrowserPost (jderusse)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Mime][BrowserKit] Add FormUrlEncoded - Fix content-type in HttpBrowserPost

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30867
| License       | MIT
| Doc PR        | NA

This PR use the content-type `x-www-form-urlencoded` when posting a form with the HttpBrowser.

Commits
-------

aecca9778e Use FormUrlEncoded when posting non-binary data
2019-04-06 21:02:43 +02:00
Fabien Potencier
05e488f418 fixed CS 2019-04-06 20:58:31 +02:00
Fabien Potencier
5c0acfb649 minor #30929 [HttpKernel] Remove unused import (yceruto)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpKernel] Remove unused import

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT

cleanup

EU-FOSSA

Commits
-------

0d704b4f79 Remove unused import
2019-04-06 20:54:36 +02:00
Yonel Ceruto
0d704b4f79 Remove unused import 2019-04-06 20:51:34 +02:00
Fabien Potencier
c73fd100e9 feature #30900 [Validator] add new Timezone validation constraint (phansys)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Validator] add new `Timezone` validation constraint

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/11317

Rework of #22262.

Commits
-------

536e53f184 [Validator] add new `Timezone` validation constraint.
2019-04-06 20:48:23 +02:00
Javier Spagnoletti
536e53f184 [Validator] add new Timezone validation constraint. 2019-04-06 20:45:46 +02:00
Fabien Potencier
58d78ac2cd minor #30927 [HttpClient] Removed undefined variable (derrabus)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] Removed undefined variable

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

The variable `$noProxy` is accessed here before it is defined.

`EU-FOSSA`

Commits
-------

69f0a0b3bf Removed undefined variable.
2019-04-06 20:45:16 +02:00
Fabien Potencier
ce220cd216 feature #30915 [Serializer] Add datetimezone normalizer (jewome62)
This PR was squashed before being merged into the 4.3-dev branch (closes #30915).

Discussion
----------

[Serializer] Add datetimezone normalizer

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30145
| License       | MIT
| Doc PR        | not yet

Commits
-------

1546c0dfa0 [Serializer] Add datetimezone normalizer
2019-04-06 20:42:17 +02:00
jewome62
1546c0dfa0 [Serializer] Add datetimezone normalizer 2019-04-06 20:42:10 +02:00
Alexander M. Turek
69f0a0b3bf Removed undefined variable. 2019-04-06 20:38:25 +02:00
Fabien Potencier
a68b4c7191 feature #28937 Improve Translator caching (rpkamp)
This PR was squashed before being merged into the 4.3-dev branch (closes #28937).

Discussion
----------

Improve Translator caching

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #27600
| License       | MIT
| Doc PR        | N/A

Add DirectoryResources to MessageCatalogues when loaded.

So that when a file is added to one of the directories the cache for all MessageCatalogues will be invalidated.

All directories must be added to all MessageCatalogues because we can't predict for which locale files will be added to each individual directory.

Also, now that the translator keeps track of its own directories for caching the container no longer needs to it. This means that when a translation changes or is added the container no longer needs to be fully rebuilt, saving a considerable amount of time (compilation time went down from ~4 seconds to ~1 second on each translation change/add in our project).

Commits
-------

a5246589cf Improve Translator caching
2019-04-06 20:37:50 +02:00
Remon van de Kamp
a5246589cf Improve Translator caching 2019-04-06 20:37:41 +02:00
Fabien Potencier
f587944e61 minor #30916 [Profiler] Update ProfilerController.php (error56)
This PR was squashed before being merged into the 4.3-dev branch (closes #30916).

Discussion
----------

[Profiler] Update ProfilerController.php

| 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   <!-- #-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
-------

6e0785f8c5 [Profiler] Update ProfilerController.php
2019-04-06 20:31:43 +02:00
error56
6e0785f8c5 [Profiler] Update ProfilerController.php 2019-04-06 20:31:36 +02:00
Fabien Potencier
adba41aaa6 feature #30904 [Serializer] provide new ObjectPropertyListExtractorInterface (dmaicher)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Serializer] provide new ObjectPropertyListExtractorInterface

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | related to https://github.com/symfony/symfony/issues/30818
| License       | MIT
| Doc PR        | -

EUFOSSA Hackathon

As discussed with @joelwurtz this adds a new `ObjectPropertyListExtractorInterface` and a default implementation.

See https://github.com/symfony/symfony/issues/30818

>  A new interface will be provided ObjectPropertyListExtractorInterface (name can change), that allow getting attributes based on an object. A default implementation will be provided that use the PropertyListExtractorInterface and a class resolver, as the latter one only rely on class name, it may be important to have this distinction (this will allow features that rely on a specific value of the object to get the current property list, like exclusion policy)

Commits
-------

997270f7ac [Serializer] provide new ObjectPropertyListExtractorInterface
2019-04-06 20:28:25 +02:00
Fabien Potencier
e2e38dea9a feature #30902 [Workflow] The TransitionEvent is able to modify the context (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Workflow] The TransitionEvent is able to modify the context

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

EUFOSSA

ping @HeahDude

Commits
-------

62ab775154 [Workflow] The TransitionEvent is able to modify the context
2019-04-06 20:25:25 +02:00
Fabien Potencier
e5f14b7d28 feature #30908 [Workflow] Added workflow_transition_blockers twig function (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Workflow] Added workflow_transition_blockers twig function

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony-docs/pull/11268
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/11268

EUFOSSA

---

also related to https://github.com/symfony/symfony/issues/26689

I'm not a big fan of the current name. What should I pick?

cc @javiereguiluz

Commits
-------

a2f99757f1 [Workflow] Added workflow_transition_blockers twig function
2019-04-06 20:23:30 +02:00
Fabien Potencier
4c78e60ad5 feature #30893 Add "input" option to NumberType (fancyweb, Bernhard Schussek)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Add "input" option to NumberType

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #24793
| License       | MIT
| Doc PR        | TODO

This PR replaces #24793 in (partially) fixing how Doctrine's DECIMAL type is handled by the Form component.

Previously, DECIMAL was mapped to the regular NumberType. That confuses Doctrine's change detection, depending on the DB platform.

Examples:

| DB | DB value | Doctrine entity before submit | Form input | Doctrine entity after submit
| --- | --- | --- | --- | ---
| SQLite | 8.000 | '8' | 8 | 8
| SQLite | 8.123 | '8.123' | 8.123 | 8.123
| PostgreSQL | 8.000 | '8.000' | 8 | 8
| PostgreSQL | 8.123 | '8.123' | 8.123 | 8.123

The value in the Doctrine entity changes before and after submit. Hence Doctrine believes an update is necessary.

This PR introduces an `input` option to NumberType (similar to DateType), that can be set to `'number'` (default) or `'string'`. If set to `'string'`, the conversion is as follows:

| DB | DB value | Doctrine entity before submit | Form input | Doctrine entity after submit
| --- | --- | --- | --- | ---
| SQLite | 8.000 | **'8'** | 8 | **'8.000'**
| SQLite | 8.123 | '8.123' | 8.123 | '8.123'
| PostgreSQL | 8.000 | '8.000' | 8 | '8.000'
| PostgreSQL | 8.123 | '8.123' | 8.123 | '8.123'

You see that this does not completely solve this issue for SQLite. However, @Ocramius and I agree that this is something to be fixed by Doctrine, since Doctrine is providing the database abstraction.

That fix should be done in the SqlitePlatform object in Doctrine as part of another PR and should be backwards compatible with the current Doctrine version (i.e. opt in via configuration).

Compared to #24793, this PR does not introduce a new type but instead makes the NumberType more flexible. Also, this PR does not introduce the `force_full_scale` option since that should be solved by Doctrine as described above.

Commits
-------

3f25734647 Added new option "input" to NumberType
fb2b37a8f3 add force_full_scale option to handle all cases
40f25121c3 [DoctrineBridge] Add decimal form type
2019-04-06 20:17:43 +02:00
Fabien Potencier
f3a05552f3 minor #30924 Move doctrine/collections to an optional dep in doctrine-bridge (stof)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Move doctrine/collections to an optional dep in doctrine-bridge

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        |

The EntityType does not need to convert the array to a collection if the project does not care about using doctrine/collections. So this can become an optional dependency.
The goal here is to reduce the dependencies of DoctrineBundle when using it in DBAL-only mode.

doctrine/persistence still brings a bunch of unwanted dependencies for a DBAL-only project, but this requires work on the Doctrine side (we discussed it with @alcaeus) as the ConnectionRegistry is part of it. Moving it to an optional dependency in the bridge will probably come in 6 months instead.
And doctrine-cache-bundle also brings some, but that's already in the work of being removed from DoctrineBundle 2.0.

Commits
-------

07d90f987e Move doctrine/collections to an optional dep in doctrine-bridge
2019-04-06 20:13:25 +02:00
Fabien Potencier
3e0b2354db bug #30921 [Translator] Warm up the translations cache in dev (tgalopin)
This PR was merged into the 3.4 branch.

Discussion
----------

[Translator] Warm up the translations cache in dev

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

This PR fixes a bug in development when using the DataCollectorTranslator: because it's not implementing WarmableInterface, the translations cache is not built during cache:clear during development.

Commits
-------

a5f1afca15 [Translator] Warm up the translations cache in dev
2019-04-06 20:09:42 +02:00
Fabien Potencier
ed1b95d0d6 bug #30922 [TwigBridge] fix horizontal spacing of inlined Bootstrap forms (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[TwigBridge] fix horizontal spacing of inlined Bootstrap forms

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #25831
| License       | MIT
| Doc PR        |

Commits
-------

7113a53e19 fix horizontal spacing of inlined Bootstrap forms
2019-04-06 20:07:34 +02:00
François-Xavier de Guillebon
31b3a55787
Add comments when dumping po files 2019-04-06 20:07:20 +02:00
Fabien Potencier
07a1095af9 bug #30860 [Profiler] Fix dark theme elements color (dFayet)
This PR was squashed before being merged into the 4.2 branch (closes #30860).

Discussion
----------

[Profiler] Fix dark theme elements color

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| 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 | #29194   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | -

I think the color handling of the code highlighted (exceptions, ...) is quite questionnable, but as we use the `highlight_file()` function, I don't really see an other way to handle it, tell me what you think.

###  Before/After
**Form**
![Capture d’écran de 2019-04-04 10-07-18](https://user-images.githubusercontent.com/7721219/55539945-2cfe0580-56c2-11e9-8e5c-a4b6352ab12d.png)

![Capture d’écran de 2019-04-04 10-03-27](https://user-images.githubusercontent.com/7721219/55539906-15268180-56c2-11e9-90e7-326cc1c01ccd.png)

**Twig render graph**
![Capture d’écran de 2019-04-04 10-07-36](https://user-images.githubusercontent.com/7721219/55539969-3b4c2180-56c2-11e9-9064-1fd10bf1da02.png)

![Capture d’écran de 2019-04-06 19-37-02](https://user-images.githubusercontent.com/7721219/55673094-693c8c00-58a3-11e9-90a4-76f6b312d516.png)

**Exceptions**
![Capture d’écran de 2019-04-04 10-08-19](https://user-images.githubusercontent.com/7721219/55540012-51f27880-56c2-11e9-930b-98d680093e49.png)

![Capture d’écran de 2019-04-06 09-39-27](https://user-images.githubusercontent.com/7721219/55667421-4f2b8b00-585c-11e9-81c7-dc09bd982375.png)

**Doctrine queries**
![Capture d’écran de 2019-04-04 10-08-37](https://user-images.githubusercontent.com/7721219/55540059-73536480-56c2-11e9-9b0d-ea691a16a1a5.png)

![Capture d’écran de 2019-04-04 10-04-47](https://user-images.githubusercontent.com/7721219/55540068-78b0af00-56c2-11e9-88f7-2181800006a7.png)

Commits
-------

8a9c2c86ef [Profiler] Fix dark theme elements color
2019-04-06 20:06:10 +02:00
dFayet
8a9c2c86ef [Profiler] Fix dark theme elements color 2019-04-06 20:06:03 +02:00
Christophe Coevoet
07d90f987e Move doctrine/collections to an optional dep in doctrine-bridge
The EntityType does not need to convert the array to a collection if
the project does not care about using doctrine/collections. So this
can become an optional dependency.
2019-04-06 20:02:40 +02:00
Fabien Potencier
db93b952e9 bug #30895 [Form] turn failed file uploads into form errors (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] turn failed file uploads into form errors

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #27524
| License       | MIT
| Doc PR        |

Commits
-------

1a21ca7362 turn failed file uploads into form errors
2019-04-06 20:02:12 +02:00
Fabien Potencier
f551f2daae Merge branch '4.2'
* 4.2:
  Fix wrong dump for PO files
2019-04-06 19:57:49 +02:00
Fabien Potencier
4c3a48a66f Merge branch '3.4' into 4.2
* 3.4:
  Fix wrong dump for PO files
2019-04-06 19:57:40 +02:00
Titouan Galopin
8ac712b29d [Validator] Wire NotCompromisedPassword in FrameworkBundle and handle non UTF-8 password 2019-04-06 19:55:53 +02:00
Jérémy Derussé
aecca9778e
Use FormUrlEncoded when posting non-binary data 2019-04-06 19:34:31 +02:00
Christian Flothmann
7113a53e19 fix horizontal spacing of inlined Bootstrap forms 2019-04-06 19:28:56 +02:00
Grégoire Pineau
a2f99757f1 [Workflow] Added workflow_transition_blockers twig function 2019-04-06 19:16:15 +02:00
François-Xavier de Guillebon
b54abfc643
Fix wrong dump for PO files 2019-04-06 19:11:02 +02:00
Titouan Galopin
a5f1afca15 [Translator] Warm up the translations cache in dev 2019-04-06 19:05:56 +02:00
Christian Flothmann
1a21ca7362 turn failed file uploads into form errors 2019-04-06 19:02:48 +02:00
Fabien Potencier
ede66604d7 feature #30890 [Workflow] Changed initial_places to initial_marking, added property (HeahDude, lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Workflow] Changed initial_places to initial_marking, added property

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #30662 and #30656
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony/issues/30656

EUFOSSA

---

* [Workflow] Changed initial_places to initial_marking, added property instead of type
* [Workflow] Finished integration of initial_marking + deprecated support for workflow + single state markin store
 [Workflow] Deprecate worflow and single state marking

---

Here is an exemple of deprecation:
```

  3x: Passing something else than "method" has been deprecated in Symfony 4.3.
    1x in PhpFrameworkExtensionTest::testWorkflowLegacy from Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection
    1x in XmlFrameworkExtensionTest::testWorkflowLegacy from Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection
    1x in YamlFrameworkExtensionTest::testWorkflowLegacy from Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection

  3x: The "framework.workflows.workflows.legacy.marking_store.arguments" configuration key has been deprecated in Symfony 4.3. Use "property" instead.
    1x in PhpFrameworkExtensionTest::testWorkflowLegacy from Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection
    1x in XmlFrameworkExtensionTest::testWorkflowLegacy from Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection
    1x in YamlFrameworkExtensionTest::testWorkflowLegacy from Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection

  3x: The "framework.workflows.workflows.legacy.initial_place" configuration key has been deprecated in Symfony 4.3, use the "initial_marking" configuration key instead.
    1x in PhpFrameworkExtensionTest::testWorkflowLegacy from Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection
    1x in XmlFrameworkExtensionTest::testWorkflowLegacy from Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection
    1x in YamlFrameworkExtensionTest::testWorkflowLegacy from Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection
  ```

Commits
-------

039353546f [Workflow] Deprecate worflow and single state marking
87839cfaf9 [Workflow] Finished integration of initial_marking + deprecated support for workflow + single state markin store
73708a61b6 [Workflow] Changed initial_places to initial_marking, added property instead of type
2019-04-06 18:42:29 +02:00
Fabien Potencier
f0786bb3d8 Merge branch '4.2'
* 4.2:
  [WIP] [DependencyInjection] Fix a wrong error when using a factory and a call
  Fix table trailing backslash
2019-04-06 18:39:17 +02:00
Fabien Potencier
dc65401f66 Merge branch '3.4' into 4.2
* 3.4:
  [WIP] [DependencyInjection] Fix a wrong error when using a factory and a call
2019-04-06 18:39:07 +02:00
Fabien Potencier
86210b3fa1 bug #30889 [DependencyInjection] Fix a wrong error when using a factory (Simperfit)
This PR was merged into the 3.4 branch.

Discussion
----------

[DependencyInjection] Fix a wrong error when using a factory

…d a call

| 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 | #30885    <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        |

<!--
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.
-->
This a work in progress, it needs tests, firstly I wanted to ask the author to test and tell if it's ok.

Commits
-------

5d4e3a2d57 [WIP] [DependencyInjection] Fix a wrong error when using a factory and a call
2019-04-06 18:37:16 +02:00
Amrouche Hamza
5d4e3a2d57
[WIP] [DependencyInjection] Fix a wrong error when using a factory and a call 2019-04-06 18:35:29 +02:00
Fabien Potencier
b46ca51238 bug #30911 [Console] Fix table trailing backslash (maidmaid)
This PR was merged into the 4.2 branch.

Discussion
----------

[Console] Fix table trailing backslash

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30725
| License       | MIT
| Doc PR        | /

```php
(new Table($output))
    ->setColumnMaxWidth(0, 5)
    ->setRows([['1234\6']])
    ->render();
;
```
before:

```
+-------+
| 1234<fg=default;bg=default> |
| 6     |
+-------+
```

after:

```
+-------+
| 1234\ |
| 6     |
+-------+
```

#EUFOSSA

Commits
-------

48f020f9e3 Fix table trailing backslash
2019-04-06 18:35:21 +02:00
Fabien Potencier
de3c7429e9 feature #30906 [symfony/HttpKernel] Throws an error when the generated class name is invalid. (drupol)
This PR was squashed before being merged into the 4.3-dev branch (closes #30906).

Discussion
----------

[symfony/HttpKernel] Throws an error when the generated class name is invalid.

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30845
| License       | MIT

Commits
-------

c976866566 [symfony/HttpKernel] Throws an error when the generated class name is invalid.
2019-04-06 17:52:23 +02:00
Pol Dellaiera
c976866566 [symfony/HttpKernel] Throws an error when the generated class name is invalid. 2019-04-06 17:52:16 +02:00
David Maicher
997270f7ac [Serializer] provide new ObjectPropertyListExtractorInterface 2019-04-06 17:40:37 +02:00
Christian Flothmann
ea5ff18014 Merge branch '4.2'
* 4.2:
  Restore previous state for libxml option
  fix tests
  Uses the SerializerStamp when deserializing the envelope
2019-04-06 17:38:43 +02:00
Grégoire Paris
dde74aa8c9 Restore previous state for libxml option
Whenever libxml_use_internal_errors() is called, the previous value for
it should be restored. This used to be the case in this piece of code,
but it was wrongly removed in e53bf5839b ,
which has the nasty side effect of making the Validator component test
suite break with this message:

Validation failed: No DTD found!
2019-04-06 17:26:32 +02:00
Samuel ROZE
f88a79b550 bug #30903 [Messenger] Uses the SerializerStamp when deserializing the envelope (sroze)
This PR was merged into the 4.2 branch.

Discussion
----------

[Messenger] Uses the `SerializerStamp` when deserializing the envelope

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29970
| License       | MIT
| Doc PR        | ø

Uses the `SerializerStamp` when decoding the message.

Commits
-------

ab55e8e7ef Uses the SerializerStamp when deserializing the envelope
2019-04-06 17:25:35 +02:00
Christian Flothmann
ad62ba899c Merge branch '3.4' into 4.2
* 3.4:
  fix tests
2019-04-06 17:21:41 +02:00
Fabien Potencier
f82f1c0825 feature #30892 [DomCrawler] Improve Crawler HTML5 parser need detection (tgalopin)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DomCrawler] Improve Crawler HTML5 parser need detection

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | kind of
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no>
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Live from #eu-fossa

Follow up of https://github.com/symfony/symfony/pull/29306

This PR introduces a better detection mechanism to choose when to parse using the HTML5 parser or not, and fix a subcrawler parsing issue as well.

@stof I'd be super interested by your review :) !

Commits
-------

9bbdab68ef [DomCrawler] Improve Crawler HTML5 parser need detection
2019-04-06 17:19:57 +02:00
Dany Maillard
48f020f9e3 Fix table trailing backslash 2019-04-06 17:11:40 +02:00
Grégoire Pineau
62ab775154 [Workflow] The TransitionEvent is able to modify the context 2019-04-06 17:06:08 +02:00
Titouan Galopin
9bbdab68ef [DomCrawler] Improve Crawler HTML5 parser need detection 2019-04-06 16:52:24 +02:00
Bernhard Schussek
3f25734647 Added new option "input" to NumberType 2019-04-06 16:48:06 +02:00
Christian Flothmann
83c661d5cf fix tests 2019-04-06 16:36:41 +02:00
Samuel ROZE
ab55e8e7ef Uses the SerializerStamp when deserializing the envelope 2019-04-06 16:25:54 +02:00
Robin Chalas
09dee1737d Merge branch '4.2'
* 4.2:
  fix merge
2019-04-06 16:23:27 +02:00
Robin Chalas
1628995268 fix merge 2019-04-06 16:21:02 +02:00
Fabien Potencier
f4c23504c5 feature #30901 Renamed NotPwned to NotCompromisedPassword (javiereguiluz)
This PR was squashed before being merged into the 4.3-dev branch (closes #30901).

Discussion
----------

Renamed NotPwned to NotCompromisedPassword

| 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 | -
| License       | MIT
| Doc PR        | -

<!--
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
-------

2f648b04ae Renamed NotPwned to NotCompromisedPassword
2019-04-06 16:20:08 +02:00
Javier Eguiluz
2f648b04ae Renamed NotPwned to NotCompromisedPassword 2019-04-06 16:19:57 +02:00
Fabien Potencier
f527acfac7 Merge branch '4.2'
* 4.2: (45 commits)
  [Form] various minor fixes
  Ensure the parent process is always killed
  bugfix: the terminal state was wrong and not reseted
  [Console] Fix inconsistent result for choice questions in non-interactive mode
  Define null return type for Constraint::getDefaultOption()
  [Routing] Fix: annotation loader ignores method's default values
  [HttpKernel] Fix DebugHandlersListener constructor docblock
  Skip Glob brace test when GLOB_BRACE is unavailable
  bumped Symfony version to 4.2.6
  updated VERSION for 4.2.5
  updated CHANGELOG for 4.2.5
  bumped Symfony version to 3.4.25
  updated VERSION for 3.4.24
  update CONTRIBUTORS for 3.4.24
  updated CHANGELOG for 3.4.24
  [EventDispatcher] cleanup
  fix testIgnoredAttributesInContext
  Re-generate icu 64.1 data
  Improve PHPdoc / IDE autocomplete for config tree builder
  [Bridge][Twig] DebugCommand - fix escaping and filter
  ...
2019-04-06 16:04:46 +02:00
Fabien Potencier
fa44efe90c Merge branch '3.4' into 4.2
* 3.4:
  [Form] various minor fixes
  bugfix: the terminal state was wrong and not reseted
  [Console] Fix inconsistent result for choice questions in non-interactive mode
  Define null return type for Constraint::getDefaultOption()
  [HttpKernel] Fix DebugHandlersListener constructor docblock
  Skip Glob brace test when GLOB_BRACE is unavailable
  bumped Symfony version to 3.4.25
  updated VERSION for 3.4.24
  update CONTRIBUTORS for 3.4.24
  updated CHANGELOG for 3.4.24
  [EventDispatcher] cleanup
2019-04-06 15:51:08 +02:00
Fabien Potencier
967fa368b2 bug #30879 [Form] Php doc fixes and cs + optimizations (Jules Pietri)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] Php doc fixes and cs + optimizations

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| 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 | ~
| License       | MIT
| Doc PR        | ~

<!--
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.
-->

Some micro optimizations may target master with some profiling but I would like some reviews first. Thanks!

Commits
-------

56429a6f08 [Form] various minor fixes
2019-04-06 15:47:14 +02:00
Jules Pietri
56429a6f08 [Form] various minor fixes 2019-04-06 15:44:06 +02:00
Grégoire Pineau
039353546f [Workflow] Deprecate worflow and single state marking 2019-04-06 15:38:51 +02:00
Grégoire Pineau
87839cfaf9 [Workflow] Finished integration of initial_marking + deprecated support for workflow + single state markin store 2019-04-06 15:38:51 +02:00
Jules Pietri
73708a61b6 [Workflow] Changed initial_places to initial_marking, added property instead of type 2019-04-06 15:38:51 +02:00
Thomas Calvet
fb2b37a8f3 add force_full_scale option to handle all cases 2019-04-06 15:35:03 +02:00
Thomas Calvet
40f25121c3 [DoctrineBridge] Add decimal form type 2019-04-06 15:35:03 +02:00
Fabien Potencier
5fe3701f05 feature #30020 [Messenger] Ensure message is handled only once per handler (keulinho, sroze)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Ensure message is handled only once per handler

Add check to ensure that a message is only handled once per handler
Add try...catch to run all handlers before throwing exception

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? |no
| Tests pass?   | yes
| Fixed tickets | #27215
| License       | MIT
| Doc PR        | Todo

This would make error handling and retrying of messages much more easier. As statet  here https://github.com/symfony/symfony/pull/27008#issuecomment-384677065 there is currently no way to retry a for all failed handlers if there are mutliple handlers and just some throw an exception.
Also if an Exception in an handler occurs the execution chain is disrupted and the other handlers are never invoked.
With this change it is easily possible to create an userland middleware that catches the `ChainedHandlerFailedException` and does some custom retry logic. If you ensure that the `HandledStamps` on the `Envelope` are preserved the message will be handled just by the failed handlers

Commits
-------

2e5e910229 Rename exception, add change log and a few other things
e6e4cde5fc Ensure message is handled only once per handler
2019-04-06 14:59:11 +02:00
Fabien Potencier
4e2b655941 feature #30545 #30536 PropertyAccessor->getValue disable exception (dimabory)
This PR was merged into the 4.3-dev branch.

Discussion
----------

#30536 PropertyAccessor->getValue disable exception

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30536
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/11156

Commits
-------

c336696a06 [PropertyAccess] Allow to disable exception on invalid property path when using PropertyAccess::getValue()
2019-04-06 14:57:26 +02:00
Dmytro
c336696a06 [PropertyAccess] Allow to disable exception on invalid property path when using PropertyAccess::getValue() 2019-04-06 14:47:35 +02:00
Samuel ROZE
2e5e910229 Rename exception, add change log and a few other things 2019-04-06 14:41:06 +02:00
Jonas Elfering
e6e4cde5fc Ensure message is handled only once per handler
Add check to ensure that a message is only handled once per handler
Add try...catch to run all handlers before throwing exception
2019-04-06 14:40:48 +02:00
Samuel ROZE
e6eb43bd68 feature #30008 [messenger] Adds a stamp to provide a routing key on message publishing (G15N, sroze)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[messenger] Adds a stamp to provide a routing key on message publishing

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29950
| License       | MIT
| Doc PR        | symfony/symfony-docs#11236

Adds a stamp allowing to set a `routing_key` at `MessageBus::dispatch()` level.

```php
$message = (new Envelope('message'))->with(new RoutingKeyStamp('routing_key'));
$bus->dispatch($message);
```

Commits
-------

a515635f18 Simply code and rename "configuration" to "options"
3151b54b7a [messenger] AMQP configurable routing key & multiple queues
2019-04-06 14:39:32 +02:00
Samuel ROZE
a515635f18 Simply code and rename "configuration" to "options" 2019-04-06 14:27:04 +02:00
Fabien Potencier
fe7363fff1 bug #30884 [Workflow] Fixed initial places when no places are configured (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Workflow] Fixed initial places when no places are configured

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? |
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

EUFOSSA

I introduced a BC break in #30468 and this PR fix it.
With the full stack framework, when one does not configure the
initial_place(s) the DIC set `[]` for the initial values.
So it removes the initials values guessed in `Definition::addPlace()`

Commits
-------

76fd9c35b7 [Workflow] Fixed initial places when no places are configured
2019-04-06 13:29:01 +02:00
Fabien Potencier
a7c4767a8e bug #30886 [Workflow] Fixed Guard Listener usage of RoleHierarchyInterface (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Workflow] Fixed Guard Listener usage of RoleHierarchyInterface

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

EUFOSSA

related to https://github.com/symfony/symfony/pull/30388

Commits
-------

a12b359892 [Workflow] Fixed Guard Listener usage of RoleHierarchyInterface
2019-04-06 13:25:08 +02:00
Grégoire Pineau
76fd9c35b7 [Workflow] Fixed initial places when no places are configured
I introduced a BC break in #30468 and this PR fix it.
With the full stack framework, when one does not configure the
initial_place(s) the DIC set `[]` for the initial values.
So it removes the initials values guessed in `Definition::addPlace()`
2019-04-06 13:14:28 +02:00
Grégoire Pineau
a12b359892 [Workflow] Fixed Guard Listener usage of RoleHierarchyInterface 2019-04-06 13:10:58 +02:00
Samuel ROZE
9793522f6e minor #29525 [Messenger] Make MessengerPass less strict when auto-register handlers (nicholasruunu)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Make MessengerPass less strict when auto-register handlers

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT
| Doc PR        | not needed

This allows you to auto-register handlers that have more than one argument, which is useful when having custom middleware to pass more parameters.

#symfonyconhackday2018

Commits
-------

49ab2cd9d9 Make MessengerPass less strict when auto-register handlers
2019-04-06 12:29:02 +02:00
Fabien Potencier
d77ea48d2f bug #30883 [Console] Fix stty not reset when aborting in QuestionHelper::autocomplete() (Simperfit)
This PR was merged into the 3.4 branch.

Discussion
----------

[Console] Fix stty not reset when aborting in QuestionHelper::autocomplete()

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| 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 | #30861   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | none

<!--
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
-------

f54389b95c bugfix: the terminal state was wrong and not reseted
2019-04-06 12:13:41 +02:00
Grégoire Paris
94d41825fd
Ensure the parent process is always killed
If you try to run the test suite but do not have a redis instance
running, the parent process that was supposed to be killed will never be
as the thing being thrown is not an exception.
This results in the test suite hanging forever at the end.
In this patch, the exception is thrown again, and then caught in the trait, and
the parent gets killed as it should.
2019-04-06 12:12:12 +02:00
Amrouche Hamza
f54389b95c
bugfix: the terminal state was wrong and not reseted 2019-04-06 12:10:03 +02:00
Samuel ROZE
550a569725 minor #30857 [Messenger] test DoctrineTransport on travis and appveyor (vincenttouzet)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] test DoctrineTransport on travis and appveyor

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes ? WIP
| Fixed tickets |
| License       | MIT
| Doc PR        |

Currently tests on the `Symfony\Component\Messenger\Tests\Transport\Doctrine\DoctrineIntegrationTest` are skipped because there is no `MESSENGER_DOCTRINE_DSN` environment variable is not defined.

This PR update the travis and AppVeyor configuration to run these tests.

This is a WIP. I'm not a Travis/AppVeyor user so this clearly need more work

Commits
-------

8f81f55a46 [Messenger] test DoctrineTransport on travis and appveyor
2019-04-06 11:50:34 +02:00
Fabien Potencier
4b61602d51 removed unneeded tags 2019-04-06 11:45:29 +02:00
Guillaume Gammelin
3151b54b7a [messenger] AMQP configurable routing key & multiple queues 2019-04-06 11:39:12 +02:00
Fabien Potencier
9ab706be78 bug #30881 [Messenger] Fixed DIC config when the messenger is not installed (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Fixed DIC config when the messenger is not installed

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

EUFOSSA

---

Fix:

```

In getConsole_Command_MessengerStopWorkersService.php line 9:

  Attempted to load class "StopWorkersCommand" from namespace "Symfony\Component\Messenger\Command".
  Did you forget a "use" statement for another namespace?

```

Commits
-------

292021b146 [Messenger] Fixed DIC config when the messenger is not installed
2019-04-06 11:38:35 +02:00
Christophe Coevoet
ab4d05358c Fix XSS issues in the form theme of the PHP templating engine 2019-04-06 11:38:26 +02:00
Fabien Potencier
45fd75ea20 fixed CS 2019-04-06 11:37:23 +02:00
Fabien Potencier
ec18af4dfb feature #29097 [Messenger] Add a "in-memory://" transport (GaryPEGEOT, sroze)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Add a "in-memory://" transport

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29040
| License       | MIT
| Doc PR        | Todo

Add a new `InMemoryTransport` for test purpose, usable by starting your DSN by `in-memory://`

Commits
-------

8f8c82e009 Make the in-memory transport resettable
fe759205c5 Add a "null://" transport
2019-04-06 11:36:39 +02:00
Grégoire Pineau
292021b146 [Messenger] Fixed DIC config when the messenger is not installed 2019-04-06 11:33:46 +02:00
Samuel ROZE
8f8c82e009 Make the in-memory transport resettable 2019-04-06 11:30:57 +02:00
Amrouche Hamza
4fc603327d
minor: remove the logger as it seems uneeded 2019-04-06 11:23:31 +02:00
Gary PEGEOT
fe759205c5 Add a "null://" transport 2019-04-06 11:18:10 +02:00
Robin Chalas
198b895eac [Console] Fix inconsistent result for choice questions in non-interactive mode 2019-04-06 10:49:15 +02:00
Vincent Touzet
8f81f55a46 [Messenger] test DoctrineTransport on travis and appveyor 2019-04-05 16:21:26 +02:00
Grégoire Pineau
098a7ac1af [HttpClient] Adjust logger messages and levels 2019-04-05 16:18:29 +02:00
Jaik Dean
03987f2ba5 Define null return type for Constraint::getDefaultOption() 2019-04-05 14:51:27 +02:00
Fabien Potencier
09e8d74627 feature #30537 [HttpClient] logger integration (antonch1989, nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] logger integration

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #30502   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        |

Commits
-------

26d15c8bbe [HttpClient] log requests, responses and pushes when they happen
fc6ba7efad [HttpClient] logger integration
2019-04-05 14:49:12 +02:00
Nicolas Grekas
26d15c8bbe [HttpClient] log requests, responses and pushes when they happen 2019-04-05 13:59:27 +02:00
Ryan Weaver
f7ec2d388a fixing unused variable names 2019-04-04 07:32:05 -04:00
Anton Chernikov
fc6ba7efad [HttpClient] logger integration 2019-04-04 13:03:55 +02:00
Vincent Touzet
b2f3b53253 [Messenger] Setup the doctrine transport when consuming 2019-04-03 23:16:34 +02:00
Fabien Potencier
5e61b75893 [Twig] removed TemplatedEmail::template() 2019-04-03 20:45:56 +02:00
Fabien Potencier
574097fd6a feature #30757 [Messenger] Adding MessageCountAwareInterface to get transport message count (weaverryan)
This PR was squashed before being merged into the 4.3-dev branch (closes #30757).

Discussion
----------

[Messenger] Adding MessageCountAwareInterface to get transport message count

| 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 new optional interface that receivers should implement to give an approximate number of the messages "waiting" to be handled. Why? Because, with this, you could design a system that dynamically adds/removes worker processes if a specific transport is getting slammed and needs help. Creating that system could be something we discuss for core later, but this at least makes it possible - and means it could be implemented by the user or in a bundle... which I might do if we don't get it in core ;).

Commits
-------

fc5b0cf570 [Messenger] Adding MessageCountAwareInterface to get transport message count
2019-04-03 16:45:30 +02:00
Ryan Weaver
fc5b0cf570 [Messenger] Adding MessageCountAwareInterface to get transport message count 2019-04-03 16:45:22 +02:00
Fabien Potencier
9ed2f2b71f feature #28929 [HttpKernel][Framework] Locale aware services (neghmurken)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpKernel][Framework] Locale aware services

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Added a `LocaleAwareInterface` (and also a new service tag `kernel.locale_aware`) to be implemented on services that require the current locale at request time.
Also, refactored the actual Translator service to implement the overmentioned interface

Todo :

* [ ] Documention PR (will be written after some feedback)

Commits
-------

b9ac645d8b Locale aware service registration
2019-04-03 16:26:10 +02:00
Oleg Voronkovich
9b37793cbe [Routing] Fix: annotation loader ignores method's default values 2019-04-03 15:26:22 +02:00
Fabien Potencier
757ae748b7 fixed typo 2019-04-03 15:17:57 +02:00
Fabien Potencier
be66c44079 feature #29306 [DomCrawler] Optionally use html5-php to parse HTML (tgalopin)
This PR was squashed before being merged into the 4.3-dev branch (closes #29306).

Discussion
----------

[DomCrawler] Optionally use html5-php to parse HTML

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | WIP
| Fixed tickets | https://github.com/symfony/symfony/issues/29280, https://github.com/symfony/symfony/issues/28596
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/10700

This PR introduces the possibility to parse HTML content in the Crawler using the html5-php library (https://github.com/Masterminds/html5-php). This allows for better support of HTML5 and fix many unexpected behaviors and inconsistencies of the native DOM extension.

Commits
-------

4050ec4257 [DomCrawler] Optionally use html5-php to parse HTML
2019-04-03 15:17:25 +02:00
Titouan Galopin
4050ec4257 [DomCrawler] Optionally use html5-php to parse HTML 2019-04-03 15:17:16 +02:00
neghmurken
b9ac645d8b Locale aware service registration 2019-04-03 15:10:14 +02:00
Fabien Potencier
4ad54dad28 feature #30255 [DependencyInjection] Invokable Factory Services (zanbaldwin)
This PR was squashed before being merged into the 4.3-dev branch (closes #30255).

Discussion
----------

[DependencyInjection] Invokable Factory Services

| Q             | A
| ------------- | ---
| Branch?       | `master`
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | symfony/symfony-docs#11014

> Failing test is in the Twig bridge, and outside of the the scope of this PR.

Allow referencing invokable factory services, just as route definitions reference invokable controllers.
This functionality was also added for service configurators for consistency.

## Example

```php
<?php

namespace App\Factory;

class ServiceFactory
{
    public function __invoke(bool $debug)
    {
        return new Service($debug);
    }
}
```

```yaml
services:
    App\Service:
        # Prepend with "@" to differentiate between service and function.
        factory: '@App\Factory\ServiceFactory'
        arguments: [ '%kernel.debug%' ]
```

```xml
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services
               http://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>
        <!-- ... -->
        <service id="App\Service"
                 class="App\Service">
            <factory service="App\Factory\ServiceFactory" />
        </service>
    </services>
</container>
```

```php
<?php

use App\Service;
use App\Factory\ServiceFactory;
use Symfony\Component\DependencyInjection\Reference;

$container->register(Service::class, Service::class)
    ->setFactory(new Reference(ServiceFactory::class));
```

Commits
-------

23cb83f726 [DependencyInjection] Invokable Factory Services
2019-04-03 14:19:39 +02:00
Zan Baldwin
23cb83f726 [DependencyInjection] Invokable Factory Services 2019-04-03 14:19:31 +02:00
Fabien Potencier
248aff57d0 minor #30525 [PropertyInfo] Use a single cache item per method (deviantintegral)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[PropertyInfo] Use a single cache item per method

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29977
| License       | MIT
| Doc PR        | none

Replaces https://github.com/symfony/symfony/pull/30523 with a rebase to master.

This PR changes how property metadata is cached, significantly reducing the number of calls made between PHP and the backend cache. Instead of storing one cache item per method and set of arguments, a single cache item is stored per method. This matches well with real-world use, where most properties in an object will need to be inspected.

Note that the absolute numbers in the above PR are best case. In production environments where memcache is on a remote server, we were seeing multiple seconds consumed by memcache calls.

Commits
-------

2a4f8a11d4 [PropertyInfo] Use a single cache item per method
2019-04-03 13:59:42 +02:00
Fabien Potencier
8da76862fa feature #30843 [HttpClient] Add ScopingHttpClient::forBaseUri() + tweak MockHttpClient (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] Add ScopingHttpClient::forBaseUri() + tweak MockHttpClient

| 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 allows creating scoped HTTP clients in one line:

```php
$client = ScopingHttpClient::forBaseUri($client, 'http://example.com');
```

`$client` now resolves relative URLs using the provided base URI.

If one also adds default options as 3rd argument, these will be applied conditionally when a URL matching the base URI is requested.

This PR also tweaks `MockHttpClient` to make it return `MockResponse` on its own when no constructor argument is provided, easing tests a bit.

Commits
-------

2b9b8e5707 [HttpClient] Add ScopingHttpClient::forBaseUri() + tweak MockHttpClient
2019-04-03 12:40:25 +02:00
Fabien Potencier
78afdd1c5f feature #30844 [Cache] add logs on early-recomputation and locking (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Cache] add logs on early-recomputation and locking

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Commits
-------

847a9bb86d [Cache] add logs on early-recomputation and locking
2019-04-03 12:38:27 +02:00
Fabien Potencier
4835136e7e bug #30846 [FrameworkBundle] fix HttpClient integration (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[FrameworkBundle] fix HttpClient integration

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

HttpClient should be an optional dep.
Fixes compat of SecurityBundle 4.2 with FrameworkBundle 4.3 as spotted by the CI.

Commits
-------

3e7a47c0bf [FrameworkBundle] fix HttpClient integration
2019-04-03 12:15:50 +02:00
Fabien Potencier
99bf6c2417 feature #30520 [RouterDebugCommand] add link to Controllers (nicoweb)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[RouterDebugCommand] add link to Controllers

| Q             | A
| ------------- | ---
| Branch?       | master for features
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Adds a link to the controller method on your IDE from dev's terminal:

<img width="734" alt="pr-debug-router" src="https://user-images.githubusercontent.com/29813575/54141007-1f3bc400-4425-11e9-82d0-1b37498d4953.png">

Configuration in your `services.yaml`:

```yaml
parameters:
    debug.file_link_format: phpstorm://open?file=%%f&line=%%l
```

Commits
-------

e9fca21d6b [RouterDebugCommand] add link to Controllers
2019-04-03 12:12:27 +02:00
Fabien Potencier
539f4ca162 feature #30212 [DI] Add support for "wither" methods - for greater immutable services (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DI] Add support for "wither" methods - for greater immutable services

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/10991

Let's say we want to define an immutable service while still using traits for composing its optional features. A nice way to do so without hitting [the downsides of setters](https://symfony.com/doc/current/service_container/injection_types.html#setter-injection) is to use withers. Here would be an example:

```php
 class MyService
{
    use LoggerAwareTrait;
}

trait LoggerAwareTrait
{
    private $logger;

    /**
     * @required
     * @return static
     */
    public function withLogger(LoggerInterface $logger)
    {
        $new = clone $this;
        $new->logger = $logger;

        return $new;
    }
}

$service = new MyService();
$service = $service->withLogger($logger);
```

As you can see, this nicely solves the setter issues.

BUT how do you make the service container create such a service? Right now, you need to resort to complex gymnastic using the "factory" setting - manageable for only one wither, but definitely not when more are involved and not compatible with autowiring.

So here we are: this PR allows configuring such services seamlessly.
Using explicit configuration, it adds a 3rd parameter to method calls configuration: after the method name and its parameters, you can pass `true` and done, you just declared a wither:
```yaml
services:
    MyService:
        calls:
            - [withLogger, ['@logger'], true]
```

In XML, you could use the new `returns-clone` attribute on the `<call>` tag.

And when using autowiring, the code looks for the `@return static` annotation and turns the flag on if found.

There is only one limitation: unlike services with regular setters, services with withers cannot be part of circular loops that involve calls to wither methods (unless they're declared lazy of course).

Commits
-------

f455d1bd97 [DI] Add support for "wither" methods - for greater immutable services
2019-04-03 12:09:58 +02:00
Robin Chalas
2e4020c430 [HttpKernel] Fix DebugHandlersListener constructor docblock 2019-04-03 12:07:21 +02:00
Nicolas Grekas
3e7a47c0bf [FrameworkBundle] fix HttpClient integration 2019-04-03 12:06:15 +02:00
nicoweb
e9fca21d6b [RouterDebugCommand] add link to Controllers 2019-04-03 11:55:14 +02:00
Nicolas Grekas
2b9b8e5707 [HttpClient] Add ScopingHttpClient::forBaseUri() + tweak MockHttpClient 2019-04-03 11:54:40 +02:00
Nicolas Grekas
bce6124f8f feature #30674 [FrameworkBundle] change the way http clients are configured by leveraging ScopingHttpClient (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[FrameworkBundle] change the way http clients are configured by leveraging ScopingHttpClient

| 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 PR allows configuring scoped HTTP clients ("scoped_clients" replaces the previous "clients" options):

```yaml
framework:
  http_client:
    max_host_connections: 4
    default_options:
      # ...
    scoped_clients:
      github_client:
        base_uri: https://api.github.com
        headers:
          Authorization: token abc123
          # ...
```

The base URI is turned into a scoping regular expression so that the token will be sent only when the `github_client` service is requesting the corresponding URLs.
When the base URI is too restrictive, the `scope` option can be used explicitly to define the regexp that URLs must match before any other options are applied.

~All defined scopes are passed to a new `scoping_http_client` service, that can be used to hit endpoints with authentication pre-configured for several hosts. Its named autowiring alias is `HttpClientInterface $scopingClient` (this cannot be done with `http_client` as we want safe defaults, e.g. credentials should not be used implicitly when writing webhooks/crawlers.)~

Commits
-------

f1a26b9aea [FrameworkBundle] change the way http clients are configured by leveraging ScopingHttpClient
2019-04-03 11:36:15 +02:00
Nicolas Grekas
847a9bb86d [Cache] add logs on early-recomputation and locking 2019-04-03 11:22:57 +02:00
Nicolas Grekas
f455d1bd97 [DI] Add support for "wither" methods - for greater immutable services 2019-04-03 11:14:18 +02:00
Nicolas Grekas
f1a26b9aea [FrameworkBundle] change the way http clients are configured by leveraging ScopingHttpClient 2019-04-03 10:47:24 +02:00
Valentin Udaltsov
2ae30a7e3d Rename WebTestAssertions -> WebTestAssertionsTrait 2019-04-03 11:22:11 +03:00
Wouter J
ce38fe3e58 Skip Glob brace test when GLOB_BRACE is unavailable 2019-04-02 21:54:57 +02:00
Fabien Potencier
a362b8b838 bumped Symfony version to 4.2.6 2019-04-02 21:06:21 +02:00
Fabien Potencier
da9ad29165 updated VERSION for 4.2.5 2019-04-02 21:03:51 +02:00
Fabien Potencier
668f585df4 bumped Symfony version to 3.4.25 2019-04-02 21:03:08 +02:00
Nicolas Grekas
4fb9752816 Prevent destructors with side-effects from being unserialized 2019-04-02 17:51:53 +02:00
Fabien Potencier
3dc0a03d8b updated VERSION for 3.4.24 2019-04-02 15:47:51 +02:00
Nicolas Grekas
755f41192f minor #30831 [HttpClient][Contracts] rename "raw_headers" to "response_headers" (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient][Contracts] rename "raw_headers" to "response_headers"

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

A preliminary step before adding the `request_headers` info on responses to ease debugging.

Commits
-------

0b21268bf5 [HttpClient][Contracts] rename "raw_headers" to "response_headers"
2019-04-02 13:11:42 +02:00
Nicolas Grekas
0b21268bf5 [HttpClient][Contracts] rename "raw_headers" to "response_headers" 2019-04-02 12:06:39 +02:00
Roland Franssen
c3477badbc [EventDispatcher] Split events across requests 2019-04-02 12:04:04 +02:00
Roland Franssen
19134c0554
[EventDispatcher] cleanup 2019-04-02 10:51:52 +02:00
Fabien Potencier
aa5b6f95b9 feature #30827 [TwigBridge] Add template file link to debug:twig command (yceruto)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[TwigBridge] Add template file link to debug:twig command

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT

![debug_twig_file_link](https://user-images.githubusercontent.com/2028198/55365428-8c85c680-54b2-11e9-9d4e-e4845fc7d411.png)

Commits
-------

05e2e1e088 Add template file link
2019-04-02 09:00:23 +02:00
Fabien Potencier
a63496bcf4 feature #30826 [Form] Add file links for described classes in debug:form command (yceruto)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] Add file links for described classes in debug:form command

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT

![debug_form_file_link](https://user-images.githubusercontent.com/2028198/55357775-d1eac980-549b-11e9-8aa8-500aee629753.png)

Commits
-------

dcba01d212 Add file links for described classes
2019-04-02 08:58:30 +02:00
Yonel Ceruto
05e2e1e088 Add template file link 2019-04-01 18:40:03 -04:00
Yonel Ceruto
dcba01d212 Add file links for described classes 2019-04-01 16:27:30 -04:00
Fabien Potencier
17a3ccf4b3 feature #30813 New PHPUnit assertions for the WebTestCase (Pierstoval, fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

New PHPUnit assertions for the WebTestCase

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | replaces #29990
| License       | MIT
| Doc PR        | n/a

While reviewing #29990, and working on some tests, I realized that we could do better by adding PHPUnit constraint classes in various components that are then used in WebTextCase.

**Before**

```php
<?php

namespace App\Tests;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class DefaultControllerTest extends WebTestCase
{
    public function testSomething()
    {
        $client = static::createClient();
        $crawler = $client->request('GET', '/test');

        $this->assertSame(200, $client->getResponse()->getStatusCode());
        $this->assertContains('Hello World', $crawler->filter('h1')->text());
    }
}
```

**After**

```php
<?php

namespace App\Tests;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class DefaultControllerTest extends WebTestCase
{
    public function testSomething()
    {
        $client = static::createClient();
        $client->request('GET', '/test');

        $this->assertResponseIsSuccessful();
        $this->assertSelectorTextContains('h1', 'Hello World');
    }
}
```

Commits
-------

4f91020c8d added PHPUnit assertions in various components
2f8040ee84 Create new PHPUnit assertions for the WebTestCase
2019-04-01 18:54:09 +02:00
Fabien Potencier
4f91020c8d added PHPUnit assertions in various components 2019-04-01 18:52:57 +02:00
Fabien Potencier
fefe62c4d0 updated CHANGELOG 2019-04-01 18:49:08 +02:00
Fabien Potencier
b01fd5f370 feature #27738 [Validator] Add a HaveIBeenPwned password validator (dunglas)
This PR was squashed before being merged into the 4.3-dev branch (closes #27738).

Discussion
----------

[Validator] Add a HaveIBeenPwned password validator

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- 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   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | todo

This PR adds a new `Pwned` validation constraint to prevent users to choose passwords that have been leaked in public data breaches.
The validator uses the https://haveibeenpwned.com/ API. The implementation is similar to the one used by [Firefox Monitor](https://blog.mozilla.org/futurereleases/2018/06/25/testing-firefox-monitor-a-new-security-tool/). It allows to not expose the password hash using a k-anonymity model. The specific implementation for HaveIBeenPwned has been [described in depth by Cloudflare](https://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity/).

Usage:

```php
// Rejects the password if is present in any number of times in any data breach
class User
{
    /** @Pwned */
    public $plainPassword;
}

// Rejects the password if is present more than 5 times in data breaches
class User
{
    /** @Pwned(maxCount=5) */
    public $plainPassword;
}

// Customize the error message
class User
{
    /** @Pwned(message='Please select another password, this one has already been hacked.') */
    public $plainPassword;
}
```

Commits
-------

ec1ded898a [Validator] Add a HaveIBeenPwned password validator
2019-04-01 18:48:04 +02:00
Kévin Dunglas
ec1ded898a [Validator] Add a HaveIBeenPwned password validator 2019-04-01 18:47:55 +02:00
Raulnet
61547a291d fix testIgnoredAttributesInContext 2019-04-01 18:12:17 +02:00
Fabien Potencier
1fcc994021 feature #30690 Changing messenger bus id from 'message_bus' to 'messenger.default_bus' (THERAGE Kévin)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Changing messenger bus id from 'message_bus' to 'messenger.default_bus'

Changing messenger bus tag from 'message_bus' to 'messenger.message_bus'

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | Maybe
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30670
| License       | MIT
| Doc PR |

All is in the title.
This PR change the tag of the default bus from 'message_bus' to 'messenger.message_bus'.

Commits
-------

3cee1cac12 #30690 - Changing messenger bus id from 'message_bus' to 'messenger.default_bus'
2019-04-01 16:50:37 +02:00
Alex Rock Ancelet
2f8040ee84 Create new PHPUnit assertions for the WebTestCase 2019-04-01 16:44:23 +02:00
Fabien Potencier
b921076df4 bug #30805 [Messenger] bug fixes in Doctrine Transport (vincenttouzet)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] bug fixes in Doctrine Transport

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Just tested the new Doctrine transport and I've see 3 bugs so far :
- [x] The message is not return by the transport
- [x] The headers column must be of type TEXT and not just STRING
- [ ] When using the PhpSerializer the message is truncated (PR: https://github.com/symfony/symfony/pull/30814)

The body in database looks like this :
```
O:36:"Symfony\Component\Messenger\Envelope":2:{s:44:"
```

The body given by the serializer is the following :
```
O:36:"Symfony\Component\Messenger\Envelope":2:{s:44:"Symfony\Component\Messenger\Envelopestamps";a:3:{s:49:"Symfony\Component\Messenger\Stamp\SerializerStamp";a:1:{i:0;O:49:"Symfony\Component\Messenger\Stamp\SerializerStamp":1:{s:58:"Symfony\Component\Messenger\Stamp\SerializerStampcontext";a:0:{}}}s:46:"Symfony\Component\Messenger\Stamp\BusNameStamp";a:1:{i:0;O:46:"Symfony\Component\Messenger\Stamp\BusNameStamp":1:{s:55:"Symfony\Component\Messenger\Stamp\BusNameStampbusName";s:21:"messenger.bus.default";}}s:43:"Symfony\Component\Messenger\Stamp\SentStamp";a:1:{i:0;O:43:"Symfony\Component\Messenger\Stamp\SentStamp":2:{s:56:"Symfony\Component\Messenger\Stamp\SentStampsenderClass";s:64:"Symfony\Component\Messenger\Transport\Doctrine\DoctrineTransport";s:56:"Symfony\Component\Messenger\Stamp\SentStampsenderAlias";s:16:"environment.stop";}}}s:45:"Symfony\Component\Messenger\Envelopemessage";O:34:"App\Message\EnvironmentStopMessage":1:{s:51:"App\Message\AbstractEnvironmentMessageenvironment";O:22:"App\Entity\Environment":5:{s:26:"App\Entity\Environmentid";s:36:"3bade252-b7a9-4188-82bd-3e68129e0da7";s:37:"App\Entity\EnvironmentrepositoryUrl";s:6:"string";s:30:"App\Entity\Environmentbranch";s:6:"string";s:33:"App\Entity\EnvironmenthostNames";a:1:{i:0;N;}s:27:"App\Entity\Environmentenv";a:2:{s:7:"APP_ENV";s:4:"prod";s:7:"APP_VAR";s:13:"example value";}}}}
```

Commits
-------

27466498d0 [Messenger] Fix get in Doctrine Transport
2019-04-01 16:43:38 +02:00
Fabien Potencier
1a5ab6b750 bug #30814 [Messenger] base64_encoding inside PhpSerializer to avoid null characters (weaverryan)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] base64_encoding inside PhpSerializer to avoid null characters

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30805
| License       | MIT
| Doc PR        | not needed

Hi!

As pointed out in #30805, the `PhpSerializer` creates strings with null bytes. This apparently causes problems on at least some database systems (I didn't notice, but @vincenttouzet did). I also read that, for example, SQS doesn't like null characters. And, in general, because we're sending this data over a transport, `base64_encoding` data is pretty standard.

Does anyone see any downsides?

Cheers!

Commits
-------

fe7ad812c7 base64_encoding inside PhpSerializer to avoid null characters
2019-04-01 16:41:45 +02:00
Fabien Potencier
29b48141ce minor #30816 Re-generate icu 64.1 data (jakzal)
This PR was merged into the 4.2 branch.

Discussion
----------

Re-generate icu 64.1 data

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| 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 | https://github.com/symfony/symfony/pull/30781#issuecomment-478468287
| License       | MIT
| Doc PR        | -

Commits
-------

6fb2c8668b Re-generate icu 64.1 data
2019-04-01 16:37:38 +02:00
Fabien Potencier
643e9f6b9d minor #30815 [Process] Added more detail to the exception when the CWD is invalid (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Process] Added more detail to the exception when the CWD is invalid

| 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 using panther with "special" directory structure, the message is
not really usefull. Let's add the CWD to the exception

Commits
-------

d27858f77b [Process] Added more detail to the exception when the CWD is invalid
2019-04-01 16:24:06 +02:00
Jakub Zalas
6fb2c8668b
Re-generate icu 64.1 data 2019-04-01 15:13:08 +01:00
Konstantin Myakshin
21f797714e
Improve PHPdoc / IDE autocomplete for config tree builder 2019-04-01 17:03:25 +03:00
Nicolas Grekas
164b45b79c [Inflector] remove "internal" marker from the component 2019-04-01 15:53:46 +02:00
Grégoire Pineau
d27858f77b [Process] Added more detail to the exception when the CWD is invalid 2019-04-01 15:29:45 +02:00
Ryan Weaver
fe7ad812c7 base64_encoding inside PhpSerializer to avoid null characters 2019-04-01 08:36:54 -04:00
THERAGE Kévin
3cee1cac12 #30690 - Changing messenger bus id from 'message_bus' to 'messenger.default_bus' 2019-04-01 14:33:42 +02:00
SpacePossum
b7120c5e49 [Bridge][Twig] DebugCommand - fix escaping and filter 2019-04-01 10:18:15 +02:00
Nicolas Grekas
99684434bc Merge branch '3.4' into 4.2
* 3.4:
  SCA: minor code tweaks
  [Intl] Update the ICU data to 64.1
  [Bridge][Twig] DebugCommand - fix escaping and filter
2019-04-01 09:32:59 +02:00
Vladimir Reznichenko
cc4529db51 SCA: minor code tweaks 2019-04-01 09:08:40 +02:00
Robin Chalas
9bcea2e9f4 fix test name 2019-03-31 23:15:36 +02:00
Fabien Potencier
5d0fa550df bug #30806 [EventDispatcher] Fix FC layer (bis) (chalasr)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[EventDispatcher] Fix FC layer (bis)

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Commits
-------

2e02986b26 [EventDispatcher] Fix FC layer (really)
2019-03-31 22:54:21 +02:00
Robin Chalas
2e02986b26 [EventDispatcher] Fix FC layer (really) 2019-03-31 22:38:00 +02:00
Fabien Potencier
96dee1ee20 [Messenger] fixed missing use statement 2019-03-31 22:37:12 +02:00
Fabien Potencier
1044dfb93d [Messenger] simplified code 2019-03-31 22:18:13 +02:00
Vincent Touzet
27466498d0 [Messenger] Fix get in Doctrine Transport 2019-03-31 20:44:41 +02:00
Fabien Potencier
9669e13554 [Messenger] made a const private 2019-03-31 19:35:08 +02:00
Fabien Potencier
dafc357fb9 minor #30803 [Messenger] Remove unused option in the Doctrine transport (vincenttouzet)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Remove unused option in the Doctrine transport

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

This PR remove the unused option `loop_sleep` in the Messenger Doctrine transport

Commits
-------

4811400372 [Messenger] Remove unused option in the Doctrine transport
2019-03-31 19:33:19 +02:00
Fabien Potencier
c54a6a2e1a minor #30802 [Messenger] Add psr/cache on Messenger's dependencies (sroze)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Add `psr/cache` on Messenger's dependencies

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30754
| License       | MIT
| Doc PR        | ø

Commits
-------

0b5004f59f Add `psr/cache` on Messenger's dependencies
2019-03-31 19:32:16 +02:00
Fabien Potencier
563900ffaa fixed CS 2019-03-31 19:31:00 +02:00
Fabien Potencier
dad5b01b9c feature #26890 [Inflector] Support pluralization in the inflector (mbabker)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Inflector] Support pluralization in the inflector

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | not yet
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | Not Yet

At present the inflector only supports singularizing plural words, this PR adds the capability to pluralize singular words.

Commits
-------

06920a79c4 Support pluralization in the inflector
2019-03-31 19:29:55 +02:00
Samuel ROZE
0b5004f59f Add psr/cache on Messenger's dependencies 2019-03-31 18:23:22 +01:00
Fabien Potencier
592e72fc9c feature #28637 [Validator] add number constraints (jschaedl)
This PR was squashed before being merged into the 4.3-dev branch (closes #28637).

Discussion
----------

[Validator] add number constraints

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #28608
| License       | MIT
| Doc PR        | tbd.

I added the following constraints:
* `Positive`
* `PositiveOrZero`
* `Negative`
* `NegativeOrZero`

Commits
-------

01870398eb [Validator] add number constraints
2019-03-31 19:19:07 +02:00
Jan Schädlich
01870398eb [Validator] add number constraints 2019-03-31 19:18:59 +02:00
Nicolas Grekas
6070151495 minor #30800 [Messenger] fix review (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] fix review

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Fixes my review left in #30754
/cc @weaverryan FYI

Commits
-------

a3de9020c8 [Messenger] fix review
2019-03-31 19:13:48 +02:00
Vincent Touzet
4811400372 [Messenger] Remove unused option in the Doctrine transport 2019-03-31 19:12:50 +02:00
Nicolas Grekas
a3de9020c8 [Messenger] fix review 2019-03-31 19:00:04 +02:00
Samuel ROZE
75e3355da5 Fix the Doctrine transport to use the new interface 2019-03-31 17:52:51 +01:00
Fabien Potencier
7c18377274 minor #30781 [Intl] Update the ICU data to 64.1 (jakzal)
This PR was squashed before being merged into the 3.4 branch (closes #30781).

Discussion
----------

[Intl] Update the ICU data to 64.1

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| 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, including the intl-data group
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

http://site.icu-project.org/download/64

Commits
-------

ae2cb6f5c5 [Intl] Update the ICU data to 64.1
2019-03-31 18:47:52 +02:00
Jakub Zalas
ae2cb6f5c5 [Intl] Update the ICU data to 64.1 2019-03-31 18:47:37 +02:00
Fabien Potencier
343d28e3d1 feature #30754 [Messenger] New messenger:stop-workers Command (weaverryan)
This PR was squashed before being merged into the 4.3-dev branch (closes #30754).

Discussion
----------

[Messenger] New messenger:stop-workers Command

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | Kinda of #29451
| License       | MIT
| Doc PR        | symfony/symfony-docs#11236

o/ me again.

This requires and is built on top of #30708

When you deploy, all workers need to be stopped and restarted. That's not currently possible, unless you manually track the pids and send a SIGTERM signal. We can make that much easier :).

Now run:

```
bin/console messenger:stop-workers
```

And it will signal to all workers (even if they're distributed on other servers) that they should stop, once they finish processing their current message. This is done via a key in `cache.app`.

Cheers!

Commits
-------

58971627f5 [Messenger] New messenger:stop-workers Command
2019-03-31 18:41:56 +02:00
Ryan Weaver
58971627f5 [Messenger] New messenger:stop-workers Command 2019-03-31 18:41:31 +02:00
Fabien Potencier
8c2ade9173 bug #30794 [EventDispatcher] Fix BC/FC layer (chalasr)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[EventDispatcher] Fix BC/FC layer

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Fixes
> TypeError: Argument 3 passed to Symfony\Component\EventDispatcher\EventDispatcher::doDispatch() must be an instance of Symfony\Component\EventDispatcher\Event

Spotted in https://github.com/lexik/LexikJWTAuthenticationBundle/pull/637

Commits
-------

caa0aded89 [EventDispatcher] Fix BC layer
2019-03-31 18:36:43 +02:00
Samuel ROZE
fd4146c768 Add back missing uses 2019-03-31 17:35:18 +01:00
Fabien Potencier
825335374a bug #30756 Changing to MessageDecodingFailedException so that invalid messages are rejected (weaverryan)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Changing to MessageDecodingFailedException so that invalid messages are rejected

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  |  no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #30649
| License       | MIT
| Doc PR        | not needed for bug fix

Bug fix if a message body is completely blank. I'm fixing this on master only, because in 4.2 and earlier, there is actually no system in place to fail serialization and cause the messages to be rejected. In 4.3, we just need to throw this exception.

Cheers!

Commits
-------

4be827d3ca Changing to MessageDecodingFailedException so that invalid messages are rejected
2019-03-31 18:34:24 +02:00
Fabien Potencier
177a0d9320 bug #30798 [Messenger] Updating SyncTransport for recent changes + tests (weaverryan)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Updating SyncTransport for recent changes + tests

| 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

When making the `SyncTransport`, I neglected having at least one test in each of these classes, which allowed the test suite to pass, even after some interface changes made these classes fail. Fixed all of that :)

Commits
-------

2df023be46 Updating SyncTransport for recent changes + tests
2019-03-31 18:31:45 +02:00
Fabien Potencier
3abca64c5d feature #30707 [Messenger][DX] Allow stamps to be passed directly to MessageBusInterface::dispatch() (weaverryan)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger][DX] Allow stamps to be passed directly to MessageBusInterface::dispatch()

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | none
| License       | MIT
| Doc PR        | TODO

Me again o/!

This proposal is *purely* for DX. With `DelayStamp`, the proposal of QueueNameStamp and future things like `AmqpRoutingKeyStamp`, stamps are becoming more common for end users to use. This changes how it looks to use them:

```php
// before
$bus->dispatch(new Envelope(new SendSmsNotification('Hi!'), new DelayStamp(10), new QueueNameStamp('low')));

// after
$bus->dispatch(new SendSmsNotification('Hi!'), [new DelayStamp(10), new QueueNameStamp('low')]);
```

It's definitely a BC break, which is allowed because the component is experimental, though it should be minimized. This BC break shouldn't be felt by most end users, as creating your own bus is an advanced use-case. Even if you decorated it, you'll get an obvious error.

Commits
-------

e861de7e61 Allow stamps to be passed directly to MessageBusInterface::dispatch()
2019-03-31 18:29:02 +02:00
Samuel ROZE
e897e6cc4e Add missing word in CHANGELOG 2019-03-31 17:26:00 +01:00
Samuel ROZE
d9e2732a7d feature #29007 [Messenger] Add a Doctrine transport (vincenttouzet)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Add a Doctrine transport

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | symfony/symfony-docs#10616
| DoctrineBundle PR | doctrine/DoctrineBundle#868

As discussed with @sroze at PHPForum in Paris I've worked on adding a Doctrine transport to the Messenger component.

Actually `AMQP` is the only supported transport and it could be a good thing to support multiple transports. Having a Doctrine transport could help users to start using the component IMHO (Almost all projects use a database).

# How it works

The code is splitted betwwen this PR and the one on the DoctrineBundle : doctrine/DoctrineBundle#868

## Configuration

To configure a Doctrine transport the dsn MUST have the format `doctrine://<entity_manager_name>` where `<entity_manager_name>` is the name of the entity manager (usually `default`)
```yml
        # config/packages/messenger.yaml
        framework:
            messenger:
                transports:
                    my_transport: "doctrine://default?queue=important"
```

## Table schema

Dispatched messages are stored into a database table with the following schema:

| Column       | Type     | Options                  | Description                                                       |
|--------------|----------|--------------------------|-------------------------------------------------------------------|
| id           | bigint   | AUTO_INCREMENT, NOT NULL | Primary key                                                       |
| body         | text     | NOT NULL                 | Body of the message                                               |
| headers      | text     | NOT NULL                 | Headers of the message                                            |
| queue      | varchar(32)     | NOT NULL                 | Headers of the message                                            |
| created_at   | datetime | NOT NULL                 | When the message was inserted onto the table. (automatically set) |
| available_at       | datetime   | NOT NULL                 | When the message is available to be handled                      |
| delivered_at | datetime | NULL                     | When the message was delivered to a worker                        |

## Message dispatching

When dispatching a message a new row is inserted into the table. See `Symfony\Component\Messenger\Transport\Doctrine::publish`

## Message consuming

The message is retrieved by the `Symfony\Component\Messenger\Transport\Doctrine\DoctrineReceiver`. It calls the `Symfony\Component\Messenger\Transport\Doctrine::get` method to get the next message to handle.

### Getting the next message

* Start a transaction
* Lock the table to get the first message to handle (The lock is done with the `SELECT ... FOR UPDATE` query)
* Update the message in database to update the delivered_at columns
* Commit the transaction

### Handling the message

The retrieved message is then passed to the handler. If the message is correctly handled the receiver call the `Symfony\Component\Messenger\Transport\Doctrine::ack` which delete the message from the table.

If an error occured the receiver call the `Symfony\Component\Messenger\Transport\Doctrine::nack` method which update the message to set the delivered_at column to `null`.

## Message requeueing

It may happen that a message is stuck in `delivered` state but the handler does not really handle the message (Database connection error, server crash, ...). To requeue messages the `DoctrineReceiver` call the `Symfony\Component\Messenger\Transport\Doctrine::requeueMessages`. This method update all the message with a  `delivered_at` not null since more than the "redeliver timeout" (default to 3600 seconds)

# TODO

- [x] Add tests
- [x] Create DOC PR
- [x] PR on doctrine-bundle for transport factory
- [x] Add a `available_at` column
- [x] Add a `queue` column
- [x] Implement the retry functionnality : See #30557
- [x] Rebase after #29476

Commits
-------

88d008c828 [Messenger] Add a Doctrine transport
2019-03-31 17:25:18 +01:00
Ryan Weaver
e861de7e61 Allow stamps to be passed directly to MessageBusInterface::dispatch()
And changing signature of Envelope::__construct() to accept an array of envelopes
2019-03-31 12:05:21 -04:00
Ryan Weaver
4be827d3ca Changing to MessageDecodingFailedException so that invalid messages are rejected 2019-03-31 11:54:28 -04:00
Ryan Weaver
2df023be46 Updating SyncTransport for recent changes + tests 2019-03-31 11:45:52 -04:00
Ryan Weaver
ef6f23e8b9 Making the serializer configurable by transport 2019-03-31 16:54:31 +02:00
Nicholas Ruunu
49ab2cd9d9 Make MessengerPass less strict when auto-register handlers 2019-03-31 16:44:42 +02:00
Vincent Touzet
88d008c828 [Messenger] Add a Doctrine transport 2019-03-31 16:05:11 +02:00
Fabien Potencier
07276642de fixed typo 2019-03-31 15:49:16 +02:00
Fabien Potencier
dd47fda441 fixed bad merge 2019-03-31 14:18:54 +02:00
Fabien Potencier
460da96f45 feature #30569 [FrameworkBundle][HttpKernel] Provide intuitive error message when a controller fails because it's not registered as a service (moynzzz)
This PR was squashed before being merged into the 4.3-dev branch (closes #30569).

Discussion
----------

[FrameworkBundle][HttpKernel] Provide intuitive error message when a controller fails because it's not registered as a service

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | no
| New feature?  | yes <!-- 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 | #27787, symfony/symfony-docs#7988 <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | none <!-- 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.
-->

Create a very late controller argument value resolver to throw an intuitive error message when controller fails because it is not registered as a service.

Commits
-------

fbfc623b72 [FrameworkBundle][HttpKernel] Provide intuitive error message when a controller fails because it's not registered as a service
2019-03-31 14:12:04 +02:00
Simeon Kolev
fbfc623b72 [FrameworkBundle][HttpKernel] Provide intuitive error message when a controller fails because it's not registered as a service 2019-03-31 14:11:56 +02:00
Robin Chalas
caa0aded89 [EventDispatcher] Fix BC layer 2019-03-31 14:11:52 +02:00
Fabien Potencier
b14d5cd358 feature #26484 [Validator] String normalization options for string-based validators (renan-taranto)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Validator] String normalization options for string-based validators

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #26239
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/9433

Todo:
- [x] Document the new options
- [x] Update Doc PR

Add trimming options to the string constraints.

Commits
-------

708d759b8d [Validator] String normalization options for string-based validators
2019-03-31 13:55:59 +02:00
Fabien Potencier
6bc2ae4018 feature #30320 [Form][TwigBridge] Add row_attr to form theme (alexander-schranz)
This PR was squashed before being merged into the 4.3-dev branch (closes #30320).

Discussion
----------

[Form][TwigBridge] Add row_attr to form theme

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | waiting for confirmation to implement
| Fixed tickets |
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Currently you need to copy the whole form_row block if you just want to add a class to the form_row div. Instead we could introduce a `row_attr` which can then simple be set the following in the theme e.g.:

```twig
{% block form_row %}
    {% set row_attr = { class: 'form__field' } %}
    {{ parent() }}
{% endblock %}
```

or in php:

```
$builder->add('test', TextType::class, ['row_attr' => ['class' => 'form__field']]);
```

Commits
-------

7ab1b00e02 [Form][TwigBridge] Add row_attr to form theme
2019-03-31 13:48:32 +02:00
Alexander Schranz
7ab1b00e02 [Form][TwigBridge] Add row_attr to form theme 2019-03-31 13:48:18 +02:00
Fabien Potencier
ce24e15775 feature #30371 [OptionsResolver] Add a new method addNormalizer and normalization hierarchy (yceruto)
This PR was squashed before being merged into the 4.3-dev branch (closes #30371).

Discussion
----------

[OptionsResolver] Add a new method addNormalizer and normalization hierarchy

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30310
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/11103

### 3rd-party package

<details><summary>Given: (CLICK ME)</summary>
<p>

Generic type:
```php
class FooType extends AbstractType
{
    private $registry;

    public function __construct(ManagerRegistry $registry)
    {
        $this->registry = $registry;
    }

    // buildForm ...

    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setRequired('class');
        $resolver->setDefaults([
            'em' => null,
            'query' => null,
        ]);
        $resolver->setAllowedTypes('em', ['null', 'string']);
        $resolver->setAllowedTypes('query', ['null', 'callable']);

        $resolver->setNormalizer('em', function (Options $options, $em) {
            if (null !== $em) {
                return $this->registry->getManager($em);
            }

            return $this->registry->getManagerForClass($options['class']);
        });

        $resolver->setNormalizer('query', function (Options $options, $query) {
            if (\is_callable($query)) {
                $query = $query($options['em']->getRepository($options['class']));

                if (!$query instanceof Query) {
                    throw new UnexpectedTypeException($query, 'Doctrine\ORM\Query');
                }
            }

            return $query;
        });
    }
}
```
</p>
</details>

### App context

<details><summary>Before (CLICK ME)</summary>
<p>

Normalizing the new allowed value will require to override the parent's normalizer:
```php
class BarType extends AbstractType
{
    private $registry;

    public function __construct(ManagerRegistry $registry)
    {
        $this->registry = $registry;
    }

    // buildForm ...

    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->addAllowedTypes('em', 'Doctrine\ORM\EntityManagerInterface');

        $resolver->setNormalizer('em', function (Options $options, $em) {
            if ($em instanceof EntityManagerInterface) {
                return $em;
            }

            if (null !== $em) {
                return $this->registry->getManager($em);
            }

            return $this->registry->getManagerForClass($options['class']);
        });

        $resolver->addAllowedTypes('query', 'string');

        $resolver->setNormalizer('query', function (Options $options, $query) {
            if (\is_callable($query)) {
                $query = $query($options['em']->getRepository($options['class']));

                if (!$query instanceof Query) {
                    throw new UnexpectedTypeException($query, 'Doctrine\ORM\Query');
                }
            }

            if (\is_string($query)) {
                $query = $options['em']->createQuery($query);
            }

            return $query;
        });
    }

    public function getParent()
    {
        return FooType::class;
    }
}
```
</p>
</details>

<details><summary>After (CLICK ME)</summary>
<p>

The new normalizer is added to the stack and it'll receive the previously normalized value or if `forcePrepend = true` the validated value:
```php
class BarType extends AbstractType
{
    // buildForm ...

    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->addAllowedTypes('em', 'Doctrine\ORM\EntityManagerInterface');

        $resolver->addNormalizer('em', function (Options $options, $em) {
            if ($em instanceof EntityManagerInterface) {
                return $em;
            }

            return $em;
        }, true); // $forcePrepend = true (3rd argument)

        $resolver->addAllowedTypes('query', 'string');

        $resolver->addNormalizer('query', function (Options $options, $query) {
            if (\is_string($query)) {
                $query = $options['em']->createQuery($query);
            }

            return $query;
        });
    }

    public function getParent()
    {
        return FooType::class;
    }
}
```
</p>
</details>

Commits
-------

cf41254223 [OptionsResolver] Add a new method addNormalizer and normalization hierarchy
2019-03-31 13:47:22 +02:00
Yonel Ceruto
cf41254223 [OptionsResolver] Add a new method addNormalizer and normalization hierarchy 2019-03-31 13:47:13 +02:00
Fabien Potencier
7554cf6f1d feature #27735 [Validator][DoctrineBridge][FWBundle] Automatic data validation (dunglas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Validator][DoctrineBridge][FWBundle] Automatic data validation

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes<!-- 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   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/11132

This feature automatically adds some validation constraints by inferring existing metadata. To do so, it uses the PropertyInfo component and Doctrine metadata, but it has been designed to be easily extendable.

Example:

```php
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 */
class Dummy
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(type="integer")
     */
    public $id;

    /**
     * @ORM\Column(nullable=true)
     */
    public $columnNullable;

    /**
     * @ORM\Column(length=20)
     */
    public $columnLength;

    /**
     * @ORM\Column(unique=true)
     */
    public $columnUnique;
}

$manager = $this->managerRegistry->getManager();
$manager->getRepository(Dummy::class);

$firstOne = new Dummy();
$firstOne->columnUnique = 'unique';
$firstOne->columnLength = '0';

$manager->persist($firstOne);
$manager->flush();

$dummy = new Dummy();
$dummy->columnNullable = 1; // type mistmatch
$dummy->columnLength = '012345678901234567890'; // too long
$dummy->columnUnique = 'unique'; // not unique

$res = $this->validator->validate($dummy);
dump((string) $res);

/*
Object(App\Entity\Dummy).columnUnique:\n
    This value is already used. (code 23bd9dbf-6b9b-41cd-a99e-4844bcf3077f)\n
Object(App\Entity\Dummy).columnLength:\n
    This value is too long. It should have 20 characters or less. (code d94b19cc-114f-4f44-9cc4-4138e80a87b9)\n
Object(App\Entity\Dummy).id:\n
    This value should not be null. (code ad32d13f-c3d4-423b-909a-857b961eb720)\n
Object(App\Entity\Dummy).columnNullable:\n
    This value should be of type string. (code ba785a8c-82cb-4283-967c-3cf342181b40)\n
*/
```

It also works for DTOs:

```php

class MyDto
{
    /** @var string */
    public $name;
}

$dto = new MyDto();
$dto->name = 1; // type error

dump($validator->validate($dto));

/*
Object(MyDto).name:\n
    This value should be of type string. (code ba785a8c-82cb-4283-967c-3cf342181b40)\n
*/
```

Supported constraints currently are:

* `@NotNull` (using PropertyInfo type extractor, so supports Doctrine metadata, getters/setters and PHPDoc)
* `@Type` (using PropertyInfo type extractor, so supports Doctrine metadata, getters/setters and PHPDoc)
* `@UniqueEntity` (using Doctrine's `unique` metadata)
* `@Length` (using Doctrine's `length` metadata)

Many users don't understand that the Doctrine mapping doesn't validate anything (it's just a hint for the schema generator). It leads to usability and security issues (that are not entirely fixed by this PR!!).
Even the ones who add constraints often omit important ones like `@Length`, or `@Type` (important when building web APIs).
This PR aims to improve things a bit, and ease the development process in RAD and when prototyping. It provides an upgrade path to use proper validation constraints.

I plan to make it opt-in, disabled by default, but enabled in the default Flex recipe. (= off by default when using components, on by default when using the full stack framework)

TODO:

* [x] Add configuration flags
* [x] Move the Doctrine-related DI logic from the extension to DoctrineBundle: doctrine/DoctrineBundle#831
* [x] Commit the tests

Commits
-------

2d64e703c2 [Validator][DoctrineBridge][FWBundle] Automatic data validation
2019-03-31 13:41:16 +02:00
Fabien Potencier
6f0863020a bug #30660 [Bridge][Twig] DebugCommand - fix escaping and filter (SpacePossum)
This PR was squashed before being merged into the 3.4 branch (closes #30660).

Discussion
----------

[Bridge][Twig] DebugCommand - fix escaping and filter

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

The PR fixes:
- output escaping was not done for decorated consoles
- filter was not applied when using format json

+ added some tests for paths currently not tested

Commits
-------

7bdb06641d [Bridge][Twig] DebugCommand - fix escaping and filter
2019-03-31 13:33:25 +02:00
SpacePossum
7bdb06641d [Bridge][Twig] DebugCommand - fix escaping and filter 2019-03-31 13:33:18 +02:00
Fabien Potencier
cbbfe84154 minor #30793 [Messenger] Remove the mention of handler in the ReceiverInterface::get phpdoc. (sroze)
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.
2019-03-31 12:26:30 +02:00
Fabien Potencier
3df44f5679 feature #30758 [PropertyAccess] Allow Can Accessor in Property Access (ragboyjr)
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
2019-03-31 12:12:59 +02:00
Samuel ROZE
9c63112d7c Remove the mention of handler in the phpdoc. 2019-03-31 11:12:50 +01:00
Fabien Potencier
6d51eaf5fc fixed CS 2019-03-31 12:10:11 +02:00
Fabien Potencier
e92c120f27 feature #30116 [Filesystem] Fix mirroring a directory into itself or in his child with realpath checks (Fleuv, XuruDragon)
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
2019-03-31 11:15:35 +02:00
Fabien Potencier
67083b6f93 feature #28879 [Debug] Mimic __toString php behavior in FlattenException (Deltachaos)
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
2019-03-31 11:12:58 +02:00
Fabien Potencier
47242e36e0 fixed CS 2019-03-31 10:40:49 +02:00
Fabien Potencier
2bd27ffd1b feature #29495 [Ldap] Implement pagination (kevans91)
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
2019-03-31 10:40:08 +02:00
Kyle Evans
b96347485c [Ldap] Implement pagination 2019-03-31 10:39:25 +02:00
Fabien Potencier
5e079536c9 [LDAP] fixed typos and CS 2019-03-31 10:31:43 +02:00
Fabien Potencier
22234e331e feature #29448 [Ldap] Entry move support (kevans91)
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
2019-03-31 10:29:16 +02:00
Kyle Evans
32743c850f [Ldap] Entry move support 2019-03-31 10:29:07 +02:00
Fabien Potencier
2fb2508cee Merge branch '3.4' into 4.2
* 3.4:
  [Serializer] Added check of constuctor modifiers to AbstractNormalizer
  [Intl] Simplify the compile binary
  [Routing] Fix routes annotation loading with glob pattern
  Fix hardcoded hotPathTagName
  [Validator] Improve constraint default option check
  [Validator] Fix annotation default for @Count and @Length
  Update composer.json
  Fix getSetMethodNormalizer to correctly ignore the attributes specified in "ignored_attributes"
  Add missing "vi" translations
  add missing German translations
  [Intl] Fix test
  added missing translation
  use behavior instead of behaviour
  [Validator] Translate JSON message to Hungarian
  [Validator] fix sr_Latn translations
  [FrameworkBundle][HttpFoundation] make session service resettable
2019-03-30 16:58:42 +01:00
Sebastiaan Stok
907adf47e3
[Mailer] Remove unneeded catch in ping()
The stop() method doesn't throw
2019-03-30 16:56:09 +01:00
Jan Schädlich
3ce7f5a5f9 [Translator] Add resource path to exception message for schema validation errors 2019-03-30 16:55:39 +01:00
Fabien Potencier
c128d50196 bug #30787 [Mailer] Fix SMTP support when a message cannot be sent (fabpot)
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
2019-03-30 16:52:03 +01:00
Fabien Potencier
3d25c1c613 [Mailer] fixed SMTP support when a message cannot be sent 2019-03-30 14:46:29 +01:00
Fabien Potencier
9cf665f2ea [Mailer] fixed typo 2019-03-30 14:28:10 +01:00
Fabien Potencier
827e61f645 fixed author 2019-03-30 13:09:36 +01:00
Fabien Potencier
845cf9e271 feature #30741 Add the Mailer component (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Add the Mailer component

| 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 | n/a
| License       | MIT
| Doc PR        | upcoming

https://speakerdeck.com/fabpot/mailer

Commits
-------

69b9ee794c added the Mailer component
2019-03-30 12:38:45 +01:00
Fabien Potencier
69b9ee794c added the Mailer component 2019-03-30 09:09:06 +01:00
Fabien Potencier
e3bbf8de11 bug #30720 Fix getSetMethodNormalizer to correctly ignore the attributes specified in "ignored_attributes" (Emmanuel BORGES)
This PR was merged into the 3.4 branch.

Discussion
----------

Fix getSetMethodNormalizer to correctly ignore the attributes specified in "ignored_attributes"

…ed in "ignored_attributes"

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30453
| License       | MIT

The GetSetMethodNormalizer class correctly ignores the attributes specified in "ignored_attributes"

Commits
-------

606d8d370d Fix getSetMethodNormalizer to correctly ignore the attributes specified in "ignored_attributes"
2019-03-30 08:48:10 +01:00
Fabien Potencier
760bbd595b feature #30780 Fix some exception previous type hints (fabpot)
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
2019-03-30 08:46:07 +01:00
Fabien Potencier
f92efeb429 fixed some exception previous type hints 2019-03-30 08:40:00 +01:00
Fabien Potencier
2041924587 minor #30779 Remove obsolete code (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Remove obsolete code

| 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

The bug referenced was fixed in 7.0 beta 3 (668ecaa606)

Commits
-------

8d25319783 removed obsolete code
2019-03-30 08:37:12 +01:00
Fabien Potencier
8d25319783 removed obsolete code 2019-03-30 08:32:15 +01:00
Silvio Ginter
15cb4754e7 [HttpKernel] change $previous argument for HttpException to \Throwable 2019-03-30 08:30:07 +01:00
Fabien Potencier
30b96175a6 feature #30744 [Finder] Throw a dedicated exception for non-existing directory (xelan)
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
2019-03-30 08:28:10 +01:00
Dmitriy Tkachenko
eb0e14c298 [Serializer] Added check of constuctor modifiers to AbstractNormalizer 2019-03-30 08:26:35 +01:00
Fabien Potencier
7cb14f3186 fixed typo 2019-03-30 08:22:54 +01:00
Fabien Potencier
6ffad7bba4 feature #30759 [Messenger] Adding the "sync" transport to call handlers synchronously (weaverryan)
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
2019-03-30 08:22:14 +01:00
Fabien Potencier
3edb79f5d3 feature #30772 [Contracts][EventDispatcher] move the Event class to symfony/contracts (nicolas-grekas)
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
2019-03-30 08:19:14 +01:00
Fabien Potencier
2b734606b8 bug #30776 [Routing] Fix routes annotation loading with glob pattern (snoob)
This PR was merged into the 3.4 branch.

Discussion
----------

[Routing] Fix routes annotation loading with glob pattern

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29747
| License       | MIT
| Doc PR        | n/a

Loading routes annotation loading with glob pattern triggers an error if one of the targetted directory contains an abstract class. This fixes it

Commits
-------

c7c45a13a7 [Routing] Fix routes annotation loading with glob pattern
2019-03-30 08:13:09 +01:00
Fabien Potencier
1c92836e8c bug #30773 [DependencyInjection] Fix hardcoded hotPathTagName (jderusse)
This PR was merged into the 3.4 branch.

Discussion
----------

[DependencyInjection] Fix hardcoded hotPathTagName

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | none
| License       | MIT
| Doc PR        | none

replace the hardcoded string by the injected variable

Commits
-------

67fb8eff2e Fix hardcoded hotPathTagName
2019-03-30 08:04:10 +01:00
Fabien Potencier
f4176b0cf6 fixed typos 2019-03-30 08:02:29 +01:00
Ryan Weaver
e800bd5bde [Messenger] ReceiverInterface::handle() to get() & Worker with prioritized transports 2019-03-30 08:01:26 +01:00
Fabien Potencier
6b8ff62648 minor #30778 [Intl] Simplify the compile binary (jakzal)
This PR was merged into the 3.4 branch.

Discussion
----------

[Intl] Simplify the compile binary

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| 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 | -
| License       | MIT
| Doc PR        | -

The intl docker image comes with build-essential packages now, so there's no need for additional installation steps.

re #30584

Commits
-------

b3184c26ad [Intl] Simplify the compile binary
2019-03-30 07:56:46 +01:00
Jakub Zalas
b3184c26ad
[Intl] Simplify the compile binary
The docker image comes with the build-essential packages now.
2019-03-29 22:39:22 +00:00
Yannick Snobbert
c7c45a13a7 [Routing] Fix routes annotation loading with glob pattern 2019-03-29 22:58:42 +01:00
Jérémy Derussé
67fb8eff2e
Fix hardcoded hotPathTagName 2019-03-29 20:18:37 +01:00
Nicolas Grekas
a4ce08ec30 [Contracts][EventDispatcher] move the Event class to symfony/contracts 2019-03-29 19:47:03 +01:00
Fabien Potencier
755d481168 minor #30761 [Security] Add symfony/polyfill-ctype to dev requirements (SpacePossum)
This PR was merged into the 3.4 branch.

Discussion
----------

[Security] Add symfony/polyfill-ctype to dev requirements

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

because this [test](https://github.com/symfony/symfony/blob/v3.4.0/src/Symfony/Component/Security/Csrf/Tests/TokenGenerator/UriSafeTokenGeneratorTest.php#L55) uses `ctype_print`

Commits
-------

f8a033c0ef Update composer.json
2019-03-29 18:48:25 +01:00
Fabien Potencier
ee5d7fdacf bug #30737 [Validator] Improve constraint default option check (vudaltsov)
This PR was squashed before being merged into the 3.4 branch (closes #30737).

Discussion
----------

[Validator] Improve constraint default option check

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Any constraint without default option used as annotation with unnamed first argument (for example, `@Assert\Collection(1)`) throws an exception with an ugly message `The options "" do not exist in constraint Collection`.

This PR makes constraint check the default option in the annotation case in the same way it checks it in the "real" code case. So the exception will be `No default option is configured for constraint Collection.`

Commits
-------

915912e18e [Validator] Improve constraint default option check
2019-03-29 18:25:59 +01:00
Valentin Udaltsov
915912e18e [Validator] Improve constraint default option check 2019-03-29 18:25:52 +01:00
Fabien Potencier
2389d7c686 Revert "feature #30651 Allow user to set the project dir (tdutrion)"
This reverts commit aa12dd0bd7, reversing
changes made to 7d01aae41e.
2019-03-29 18:00:10 +01:00
Fabien Potencier
c203379dd5 feature #27648 [Lock] Added MongoDBStore (Joe Bennett)
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
2019-03-29 17:15:05 +01:00
Valentin Udaltsov
7bfb8c1a4c [Validator] Fix annotation default for @Count and @Length 2019-03-29 16:49:31 +01:00
Ryan Weaver
9153c48bc4 Changing message handling log levels to higher levels 2019-03-29 09:51:35 -04:00
Joe Bennett
9c04639dc3 #27345 Added Lock/Store/MongoDbStore 2019-03-29 23:39:57 +10:00
SpacePossum
f8a033c0ef
Update composer.json 2019-03-29 09:11:11 +01:00
Ryan Weaver
3da5a438aa Adding the "sync" transport to call handlers synchronously 2019-03-28 14:59:51 -04:00
RJ Garcia
a4c95745bb [PropertyAccess] Allow Can Accessor in Property Access
- 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>
2019-03-28 11:50:55 -07:00
Nicolas Grekas
162d5a8272 feature #30752 [HttpClient] use "nyholm/psr7" by default in Psr18Client (nicolas-grekas)
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
2019-03-28 17:44:24 +01:00
Nicolas Grekas
f2222e4bf5 [HttpClient] use "nyholm/psr7" by default in Psr18Client 2019-03-28 17:41:24 +01:00
Nicolas Grekas
332a88c8ce [HttpClient] correctly clean state on destruct in CurlResponse 2019-03-28 16:53:35 +01:00
Samuel ROZE
c30f462c2e feature #30671 Add optional parameter prefetching for AMQP connection (fbouchery)
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
2019-03-28 18:47:49 +07:00
Nicolas Grekas
4184cc6bf2 minor #30731 [PropertyInfo] Add missing changelog for private / protected (joelwurtz)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[PropertyInfo] Add missing changelog for private / protected

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | somehow
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Add missing changelog for #30706

Commits
-------

8c5663d1cf Add missing changelog for private / protected
2019-03-28 12:42:00 +01:00
Andreas Erhard
48d5f94cda
Throw a dedicated exception for non-existing directory
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.
2019-03-28 12:28:31 +01:00
Mateusz Sip
aaf5422cfb [DI][Contracts] add and implement ServiceProviderInterface 2019-03-28 12:22:02 +01:00
fbouchery
47777eedd6 Add optional parameter prefetching in connection configuration, to setup channel prefetch count
Co-Authored-By: f2r <frederic.bouchery+github@gmail.com>
2019-03-28 18:20:31 +07:00
Samuel NELA
60b077337c [HttpClient] Remove unused local variable 2019-03-28 10:31:46 +01:00
Joel Wurtz
8c5663d1cf
Add missing changelog for private / protected 2019-03-27 14:33:41 +01:00
Fabien Potencier
71c33c1531 feature #30606 [Validator] allow brackets in the optional query string (Emmanuel BORGES)
This PR was squashed before being merged into the 4.3-dev branch (closes #30606).

Discussion
----------

[Validator] allow brackets in the optional query string

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30603
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Add the `allowBrackets` option from the Url constraint to allow brackets in the optional query string.

Commits
-------

40dc4c89df [Validator] allow brackets in the optional query string
2019-03-27 13:34:45 +01:00
Emmanuel BORGES
40dc4c89df [Validator] allow brackets in the optional query string 2019-03-27 13:32:56 +01:00
Samuel ROZE
91b0afaef3 feature #29476 [Messenger] Add a command to setup transports (vincenttouzet)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Add a command to setup transports

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

This PR add a `SetupTransportsCommand` that allow to setup the transports.

Actually the `AMQPTransport` is setup only if debug is enabled. With this PR the new `messenger:setup-transports` will setup all declared transports.

Commits
-------

fbb534a838 [Messenger] Add a command to setup transports
2019-03-27 18:26:38 +07:00
Anthony MARTIN
8011f494d4 Handling relative/absolute path 2019-03-27 10:50:42 +01:00
Fleuv
59437a4af9 Skipping iterations in the mirror() method where the iterated file's path name is equal to the target path
Added a new test what is called testMirrorAvoidCopyingTargetDirectoryIfInSourceDirectory

Adjustments to comply with the Symfony Code Standards
2019-03-27 10:48:06 +01:00
Christian Flothmann
578d842bcd fix tests 2019-03-27 10:09:36 +01:00
Fabien Potencier
93018de198 feature #30719 [Mime] Add BodyRendererInterface (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Mime] Add BodyRendererInterface

| 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 | 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
-------

0c9d684d0a [Mime] added BodyRendererInterface
2019-03-27 09:45:25 +01:00
Emmanuel BORGES
606d8d370d Fix getSetMethodNormalizer to correctly ignore the attributes specified in "ignored_attributes" 2019-03-27 09:43:12 +01:00
Fabien Potencier
a35ad63191 feature #30664 [Finder] Get filename without extension (antonch1989)
This PR was squashed before being merged into the 4.3-dev branch (closes #30664).

Discussion
----------

[Finder] Get filename without extension

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30655
| License       | MIT
| Doc PR        |

Commits
-------

821e55ab80 [Finder] Get filename without extension
2019-03-27 09:36:49 +01:00
Anton Chernikov
821e55ab80 [Finder] Get filename without extension 2019-03-27 09:36:42 +01:00
Fabien Potencier
0c9d684d0a [Mime] added BodyRendererInterface 2019-03-27 08:07:59 +01:00
Fabien Potencier
19c6639452 bug #30718 [Mime] Fix serialization of Message instances (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Mime] Fix serialization of Message instances

| 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

Commits
-------

f5386ffb2a [Mime] fixed serialization of Message instances
2019-03-27 08:00:39 +01:00
Fabien Potencier
f5386ffb2a [Mime] fixed serialization of Message instances 2019-03-27 07:58:31 +01:00
Fabien Potencier
fdb0490a16 bug #30621 [Cache] Ensure key exists before checking array value (jrjohnson)
This PR was merged into the 4.2 branch.

Discussion
----------

[Cache] Ensure key exists before checking array value

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Without this fix we're getting warnings like

```
PHP Notice:  Undefined index: %5BOUR-KEY%5D%5B1%5D in vendor/symfony/cache/Traits/PhpFilesTrait.php on line 136
```

when doing a `$cache->contains()` in some cases. I'm having a lot of trouble tracking down exactly when and where this error will happen and what changes in our app / cache cause it, but this fix seems benign enough that maybe it can be merged without that backstory.

Commits
-------

f8b4adef23 Ensure key exists before checking array value
2019-03-27 07:46:42 +01:00
Fabien Potencier
0c02a40d72 feature #30645 Alias for each assets package (gpenverne)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Alias for each assets package

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | no
| New feature?  | yes <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks?    | ?     <!-- 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        | <!-- required for new features -->

Add autowiring by type + name on assets packages
```yaml
framework:
    assets:
        packages:
            xxx:
                base_urls: 'xxxx'
```
```php
<?php

class MyService
{
    private $xxxPackage;

    public function __construct(PackageInterface $xxxPackage)
    {
        $this->xxxPackage = $xxxPackage;
        ...
    }

    public function myMethod(): string
    {
        return $this->xxxPackage->getUrl('some-image.png');
    }
}
```
instead of:
```php
<?php

class MyService
{
    private $packages;

    public function __construct(Packages $packages)
    {
        $this->packages = $packages;
        ...
    }

    public function myMethod(): string
    {
        return $this->packages->getPackage('xxx')->getUrl('some-image.png');
    }
}
```

Commits
-------

e8b9856ec3 Alias for each assets package
2019-03-27 07:44:58 +01:00
Fabien Potencier
8952c021c5 feature #30706 [PropertyInfo] Add possibility to extract private and protected properties in reflection extractor (joelwurtz)
This PR was squashed before being merged into the 4.3-dev branch (closes #30706).

Discussion
----------

[PropertyInfo] Add possibility to extract private and protected properties in reflection extractor

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30248
| License       | MIT
| Doc PR        | TODO

This PR add the possibility to extract private and protected properties from a class by passing a new argument to the `ReflectionExtractor`

This new argument consist of flag that filters properties, so someone will also be able to use the `ReflectionExtractor` only for private property

```php
new ReflectionExtractor(null, null, null, true, ReflectionExtractor::ALLOW_PRIVATE | ReflectionExtractor::ALLOW_PROTECTED)
```

Flags method was prefered over a list of bool to avoid too many parameters and also be close to the reflection API of PHP

Commits
-------

05e487f3b2 [PropertyInfo] Add possibility to extract private and protected properties in reflection extractor
2019-03-27 07:41:49 +01:00
Joel Wurtz
05e487f3b2 [PropertyInfo] Add possibility to extract private and protected properties in reflection extractor 2019-03-27 07:41:42 +01:00
Fabien Potencier
bc18e3919a feature #27808 [DI] Deprecate non-string default envs (ro0NL)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DI] Deprecate non-string default envs

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes-ish
| New feature?  | yes
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | yes
| Tests pass?   | no    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #27680, https://github.com/symfony/symfony/pull/27470#discussion_r196678923
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

This is a failing test to further clarify the issues raised in #27680

So given https://github.com/symfony/symfony/issues/27680#issuecomment-399402480

> We should be sure this solves a real-world issue.

I think it solves a real bug :)

Commits
-------

2311437c9f [DI] Deprecate non-string default envs
2019-03-27 07:31:58 +01:00
Fabien Potencier
438940f56a minor #30693 [DependencyInjection] Add test asserting service with factory is not tagged (malarzm)
This PR was merged into the 4.2 branch.

Discussion
----------

[DependencyInjection] Add test asserting service with factory is not tagged

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

I wrote a test for a scenario that was failing for me on `4.1` branch to find out it's already fixed in 4.2 (which is awesome). Since I already had a test written and couldn't really find a PR in the changelog that could have fixed my issue I figured I'll PR a test, so the behaviour I was expecting won't get broken :)

EDIT: For the record, the issue in 4.1 is: `Symfony\Component\DependencyInjection\Tests\Fixtures\BarInterface` gets tagged due to `_instanceof` which results in it being handed to `Symfony\Component\DependencyInjection\Tests\Fixtures\BarFactory` via `!tagged`. In the end this results in a recursion which is not handled.

Commits
-------

a8e9f4092c Test service with factory is not tagged
2019-03-27 07:29:35 +01:00
Fabien Potencier
c949f9a282 feature #30691 [Contracts][EventDispatcher] add EventDispatcherInterface to symfony/contracts and use it where possible (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Contracts][EventDispatcher] add EventDispatcherInterface to symfony/contracts and use it where possible

| 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 PR adds a new `EventDispatcherInterface` in `Contracts`. This interface contains only one method: `dispatch($event, $eventName)`. That covers almost all use cases of the event dispatcher in components (some use add/removeListeners/Subscribers but they are a minority.)

While doing so, it allows dispatching any objects as events - not only instances of `Event`.

This allows decoupling e.g. `Messenger` from the `EventDispatcher` component.
Next steps could be about planning to remove the base `Event` class from some concrete event classes and/or moving `EventSubscriberInterface` to `symfony/contracts`. It would allow decoupling e.g. `Workflow` from the component - but that's too far away for now, let's think about it in 5.1.

Commits
-------

3c3db2f14a [Contracts][EventDispatcher] add EventDispatcherInterface to symfony/contracts and use it where possible
2019-03-27 07:28:10 +01:00
Fabien Potencier
08faa536d1 minor #30716 Fixing bad return on getter (weaverryan)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Fixing bad return on getter

| 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

My bad - this method is only to make the Symfony Serializer happy (not used in our code), so I missed it. Test added to be sure.

Commits
-------

f3b3b2f4f3 Fixing bad return on getter
2019-03-27 07:27:38 +01:00
Fabien Potencier
84ce070d67 bug #30711 [Serializer] Use object class resolver when extracting attributes (joelwurtz)
This PR was squashed before being merged into the 4.2 branch (closes #30711).

Discussion
----------

[Serializer] Use object class resolver when extracting attributes

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no (not sure)
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Current ObjectNormalizer was not using the object class resolver when extracting attributes, i found this when trying to refactor api platform normalizers and dealing with doctrine proxy objet having __initialize__ property not wanted cf https://github.com/api-platform/core/pull/2579

I don't think this is BC break, but maybe some people using this object class resolver can get different behavior ?

Commits
-------

1d8b5af3f0 [Serializer] Use object class resolver when extracting attributes
2019-03-27 07:23:55 +01:00
Joel Wurtz
1d8b5af3f0 [Serializer] Use object class resolver when extracting attributes 2019-03-27 07:23:48 +01:00
Ryan Weaver
f3b3b2f4f3 Fixing bad return on getter 2019-03-26 23:10:31 -04:00
Quynh Xuan Nguyen
5c59e5fcad Add missing "vi" translations 2019-03-27 09:06:48 +07:00
Maxime Steinhausser
d11055cc1c [Form] TransformationFailedException: Support specifying message to display 2019-03-26 22:35:30 +01:00
Christian Flothmann
dccf1ee354 fix PHP 5.3 compatibility 2019-03-26 21:16:42 +01:00
Vincent Touzet
fbb534a838 [Messenger] Add a command to setup transports 2019-03-26 21:08:11 +01:00
Roland Franssen
2311437c9f [DI] Deprecate non-string default envs 2019-03-26 18:14:00 +01:00
Fabien Potencier
8d7e002168 bug #30641 [FrameworkBundle] properly describe service definitions without class (xabbuh)
This PR was merged into the 4.2 branch.

Discussion
----------

[FrameworkBundle] properly describe service definitions without class

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30638
| License       | MIT
| Doc PR        |

Commits
-------

e5b0fd37f6 properly describe service definitions without class
2019-03-26 11:37:02 +01:00
Fabien Potencier
76260e7d44 minor #30667 [Validator] BIC remove unused sprintf and parameter (kaznovac)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Validator] BIC remove unused sprintf and parameter

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

removed surplus parameter and sprintf as there are no placeholders in message template

Commits
-------

131e495269 [Validator] BIC remove unused sprintf and parameter
2019-03-26 11:26:31 +01:00
Fabien Potencier
5b796ac912 minor #30683 [Validator] add missing German translations (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] add missing German translations

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

78573a7c10 add missing German translations
2019-03-26 11:20:33 +01:00
Marko Kaznovac
131e495269 [Validator] BIC remove unused sprintf and parameter 2019-03-26 11:04:14 +01:00
David Maicher
6263e48392 [Messenger] rename auto-setup amqp option into auto_setup 2019-03-26 11:03:16 +01:00
Christian Flothmann
78573a7c10 add missing German translations 2019-03-26 09:59:29 +01:00
Fabien Potencier
0034a0f420 feature #30676 Avoid dispatching SendMessageToTransportsEvent on redeliver (weaverryan)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Avoid dispatching SendMessageToTransportsEvent on redeliver

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes - I think so
| New feature?  | no
| BC breaks?    | no (feature only on master)
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | none
| License       | MIT
| Doc PR        | a lot, soon :)

This purpose of this event is to be a hook when a message is sent to a transport.
If that message is redelivered later, that's not the purpose of this hook (there
are Worker events for that) and could cause problems if the user unknowingly
tries to modify the Envelope in some way, not thinking about how this might
be a redelivery message.

Commits
-------

3ac6bf9f24 Avoid dispatching SendMessageToTransportsEvent on redeliver
2019-03-26 07:14:35 +01:00
Fabien Potencier
40e9a776d7 bug #30697 [HttpClient] Fix missing use statement (chalasr)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] Fix missing use statement

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Commits
-------

6eddb52333 [HttpClient] Fix missing use statement
2019-03-26 07:13:35 +01:00
Ryan Weaver
3ac6bf9f24 Avoid dispatching SendMessageToTransportsEvent on redeliver
This purpose of this event is to be a hook when a message is sent to a transport.
If that message is redelivered later, that's not the purpose of this hook (there
are Worker events for that) and could cause problems if the user unknowingly
tries to modify the Envelope in some way, not thinking about how this might
be a redelivery message.
2019-03-25 21:09:24 -04:00
Robin Chalas
6eddb52333 [HttpClient] Fix missing use statement 2019-03-26 01:54:03 +01:00
Gregor Harlan
226dbbc54f
[Contracts] fix phpdoc for http-client (user_data) 2019-03-26 00:17:13 +01:00
Maciej Malarz
a8e9f4092c Test service with factory is not tagged 2019-03-25 22:29:53 +01:00
Nicolas Grekas
3c3db2f14a [Contracts][EventDispatcher] add EventDispatcherInterface to symfony/contracts and use it where possible 2019-03-25 18:18:00 +01:00
Nicolas Grekas
8585317c85 minor #30688 [Form] fix lowest deps tests (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] fix lowest deps tests

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

f5eaba0798 fix lowest deps tests
2019-03-25 18:17:19 +01:00
Nicolas Grekas
b8ab296adf fix typo 2019-03-25 17:39:02 +01:00
Jonathan Johnson
f8b4adef23
Ensure key exists before checking array value 2019-03-25 08:35:27 -07:00
Christian Flothmann
f5eaba0798 fix lowest deps tests 2019-03-25 14:49:18 +01:00
Christian Flothmann
f806e68613 Merge branch '4.2'
* 4.2:
  Debug finalized config in debug:config
2019-03-25 14:12:22 +01:00
Roland Franssen
adc68f9e3a
[Intl] Fix test 2019-03-25 13:55:18 +01:00
Fabien Potencier
5ca968d544 minor #30679 [Messenger] Add missing information in messenger logs (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Add missing information in messenger logs

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes-ish
| New feature?  | yes-ish
| BC breaks?    | no
| 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

When using `messenger:consume`, I get the following logs:

```
2019-03-25T11:39:05+01:00 [info] Received message "Symfony\Component\Mailer\EnvelopedMessage"
2019-03-25T11:39:05+01:00 [warning] An exception occurred while handling message "Symfony\Component\Mailer\EnvelopedMessage"
2019-03-25T11:39:05+01:00 [info] Retrying Symfony\Component\Mailer\EnvelopedMessage - retry #1.
2019-03-25T11:39:05+01:00 [info] Sending message "Symfony\Component\Mailer\EnvelopedMessage" with "Symfony\Component\Messenger\Transport\AmqpExt\AmqpTransport"
2019-03-25T11:39:06+01:00 [info] Received message "Symfony\Component\Mailer\EnvelopedMessage"
2019-03-25T11:39:06+01:00 [warning] An exception occurred while handling message "Symfony\Component\Mailer\EnvelopedMessage"
2019-03-25T11:39:06+01:00 [info] Retrying Symfony\Component\Mailer\EnvelopedMessage - retry #2.
2019-03-25T11:39:06+01:00 [info] Sending message "Symfony\Component\Mailer\EnvelopedMessage" with "Symfony\Component\Messenger\Transport\AmqpExt\AmqpTransport"
2019-03-25T11:39:09+01:00 [info] Received message "Symfony\Component\Mailer\EnvelopedMessage"
2019-03-25T11:39:09+01:00 [warning] An exception occurred while handling message "Symfony\Component\Mailer\EnvelopedMessage"
2019-03-25T11:39:09+01:00 [info] Retrying Symfony\Component\Mailer\EnvelopedMessage - retry #3.
2019-03-25T11:39:09+01:00 [info] Sending message "Symfony\Component\Mailer\EnvelopedMessage" with "Symfony\Component\Messenger\Transport\AmqpExt\AmqpTransport"
```

So, an. error occurred, but I have no idea what's going on. The exception is in the context, but the context is not displayed by default. So, this PR fixes it.

Commits
-------

20664caf25 [Messenger] added missing information in messenger logs
2019-03-25 12:46:31 +01:00
Fabien Potencier
e3d42a971c fixed missing dot for error message 2019-03-25 12:45:23 +01:00
Fabien Potencier
e86362116f added missing translation 2019-03-25 12:44:24 +01:00
Fabien Potencier
c1467446ad feature #26555 [Validator] Add constraint on unique elements collection(Assert\Unique) (zenmate, nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Validator] Add constraint on unique elements collection(Assert\Unique)

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | no    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #26535
| 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
-------

d0eb13e55a Rebase and update to latest CS
fc66683cf2 Add UniqueCollection constraint and validator
2019-03-25 12:42:44 +01:00
Patrick Landolt
94198876d0
[Mime] Removed unnecessary strtolower 2019-03-25 12:20:53 +01:00
Fabien Potencier
20664caf25 [Messenger] added missing information in messenger logs 2019-03-25 11:54:55 +01:00
Fabien Potencier
47a2f58421 feature #27684 [FrameworkBundle] Debug container environment variables (ro0NL)
This PR was squashed before being merged into the 4.3-dev branch (closes #27684).

Discussion
----------

[FrameworkBundle] Debug container environment variables

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| 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 -->

This PR is an attempt to ease debugging environment variables used by the container. Main purpose is to tell which are missing and show detailed usage information.

![image](https://user-images.githubusercontent.com/1047696/47601226-ae43c480-d9cd-11e8-926b-8c49069189fc.png)

![image](https://user-images.githubusercontent.com/1047696/47601234-d7645500-d9cd-11e8-9e3f-d1c2ad85dbc5.png)

Commits
-------

b813a05aa5 [FrameworkBundle] Debug container environment variables
2019-03-25 10:02:57 +01:00
Roland Franssen
b813a05aa5 [FrameworkBundle] Debug container environment variables 2019-03-25 10:02:50 +01:00
Fabien Potencier
31cd26b97e feature #30666 [Form][Console] Use dumper (ro0NL)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form][Console] Use dumper

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| 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 -->

Continuation of #28898 for `debug:form`

Commits
-------

a94228edba [Form][Console] Use dumper
2019-03-25 09:58:19 +01:00
Fabien Potencier
cb1ab077a7 bug #30677 Fix type hints for email attachments (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Fix type hints for email attachments

| 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

`createDataPart()` must return a `DataPart` instance, so `attachPart()` must only accept `DataPart` instances and `getAttachments()` is guaranteed to return an array of `DataPart` instances.

Commits
-------

8059c50e75 fixed type hints for email attachments
2019-03-25 09:54:47 +01:00
Roland Franssen
a94228edba [Form][Console] Use dumper 2019-03-25 09:47:26 +01:00
Oskar Stark
8b5c5ed587 use behavior instead of behaviour 2019-03-25 08:48:46 +01:00
Fabien Potencier
8059c50e75 fixed type hints for email attachments 2019-03-25 08:46:22 +01:00
Gábor Egyed
727e8891f3 [Validator] Translate JSON message to Hungarian 2019-03-25 07:31:38 +01:00
Fabien Potencier
041f60f80a feature #30559 [HttpClient] Parse common API error formats for better exception messages (dunglas)
This PR was squashed before being merged into the 4.3-dev branch (closes #30559).

Discussion
----------

[HttpClient] Parse common API error formats for better exception messages

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | no
| New feature?  | yes <!-- 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  <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | todo?

Use extra details provided by popular error formats following to improve HTTP exception messages.
The following formats are supported:

* Hydra (default in API Platform)
* RFC 7807 (followed by Symfony's [ConstraintViolationListNormalizer](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Serializer/Normalizer/ConstraintViolationListNormalizer.php) and supported by API Platform and Apigility)
* JSON:API (because it respects the semantic of the RFC 7807)

It allows to write code like the following (here in a test context):

```php
    public function testBadRequest()
    {
        $this->expectException(ClientExceptionInterface::class);
        $this->expectExceptionCode(400); // HTTP status code
        $this->expectExceptionMessage(<<<ERROR
Validation Failed

users: This collection should contain 1 element or more.
users: The current logged in user must be part of the users owning this resource.
ERROR
);

        $response = (HttpClient::create())->request('POST', 'http://example.com/api/projects', [
            'json' => [
                'name' => 'My project',
            ],
        ]);
        $response->getContent();
    }
```

Port of https://github.com/api-platform/core/pull/2608#issuecomment-472510732.

Commits
-------

96df4464a1 [HttpClient] Parse common API error formats for better exception messages
2019-03-24 18:15:37 +01:00
Kévin Dunglas
96df4464a1 [HttpClient] Parse common API error formats for better exception messages 2019-03-24 18:15:28 +01:00
Marko Kaznovac
788f477423 [Validator] fix sr_Latn translations 2019-03-24 17:39:46 +01:00
Fabien Potencier
c52af28b0e feature #28898 [Console] Add dumper (ro0NL)
This PR was squashed before being merged into the 4.3-dev branch (closes #28898).

Discussion
----------

[Console] Add dumper

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #...   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/issues/10502

This PR adds a new `Dumper` helper in the Console component. As there are 2 types of dumps

- debug purpose (e.g. `dd()`, `dump()`)
- output purpose (see #24208, #27684)

For the latter we cannot use the global system (debug) dumper, i.e. `VarDumper::dump()`, we need something tied to the current output and dependency free. Here it is:

```php
$io = new SymfonyStyle($input, $output);
$dumper = new Dumper($io);

$io->writeln($dumper([-0.5, 0, 1]));
$io->writeln($dumper(new \stdClass()));
$io->writeln($dumper(123));
$io->writeln($dumper('foo'));
$io->writeln($dumper(null));
$io->writeln($dumper(true));
```

With VarDumper comonent:

![image](https://user-images.githubusercontent.com/1047696/47069483-4cc26f80-d1ef-11e8-902e-2f9b0f040f25.png)

Without:

![image](https://user-images.githubusercontent.com/1047696/47069517-6663b700-d1ef-11e8-9328-ae1db0b83d7e.png)

> https://github.com/symfony/symfony/pull/27684#discussion_r224054237 var-dumper is not a mandatory dep of fwb, can we do without?

Now we can  :)

Commits
-------

fc7465c02c [Console] Add dumper
2019-03-24 11:32:40 +01:00
Roland Franssen
fc7465c02c [Console] Add dumper 2019-03-24 11:32:26 +01:00
Samuel ROZE
21235310e3 Add a BC layer for the ConsumeMessagesCommand arguments 2019-03-23 22:35:41 +07:00
Fabien Potencier
f206538c79 fixed typo 2019-03-23 16:11:21 +01:00
Fabien Potencier
d6c0de2f1b fixed CS 2019-03-23 16:10:57 +01:00
Fabien Potencier
359e1c7a44 feature #30629 [HttpClient] added CachingHttpClient (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] added CachingHttpClient

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

The proposed `CachingHttpClient` uses `HttpCache` from the HttpKernel component to provide an HTTP-compliant cache.

If this is accepted, it could replace the corresponding part in #30602

Commits
-------

dae5686722 [HttpClient] added CachingHttpClient
2019-03-23 16:10:13 +01:00
Fabien Potencier
d73a53a61c feature #30602 [BrowserKit] Add support for HttpClient (fabpot, THERAGE Kévin)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[BrowserKit] Add support for HttpClient

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| 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 | part of #30502
| License       | MIT
| Doc PR        | not yet

When combining the power of the new HttpClient component with the BrowserKit and Mime components, we can makes something really powerful... a full/better/awesome replacement for https://github.com/FriendsOfPHP/Goutte.

So, this PR is about integrating the HttpClient component with BrowserKit to give users a high-level interface to ease usages in the most common use cases.

Scraping websites can be done like this:

```php
use Symfony\Component\BrowserKit\HttpBrowser;
use Symfony\Component\HttpClient\HttpClient;

$client = HttpClient::create();
$browser = new HttpBrowser($client);

$browser->request('GET', 'https://example.com/');
$browser->clickLink('Log In');
$browser->submitForm('Sign In', ['username' => 'me', 'password' => 'pass']);
$browser->clickLink('Subscriptions')->filter('table tr:nth-child(2) td:nth-child(2)')->each(function ($node) {
    echo trim($node->text())."\n";
});
```

And voilà! Nice, isn't?

Want to add HTTP cache? Sure:

```php
use Symfony\Component\HttpKernel\HttpCache\Store;

$client = HttpClient::create();
$store = new Store(sys_get_temp_dir().'/http-cache-store');

$browser = new HttpBrowser($client, $store);

// ...
```

Want logging and debugging of HTTP Cache? Yep:

```php
use Psr\Log\AbstractLogger;

class EchoLogger extends AbstractLogger
{
    public function log($level, $message, array $context = [])
    {
        echo $message."\n";
    }
}

$browser = new HttpBrowser($client, $store, new EchoLogger());
```

The first time you run your code, you will get an output similar to:

```
Request: GET https://twig.symfony.com/
Response: 200 https://twig.symfony.com/
Cache: GET /: miss, store
Request: GET https://twig.symfony.com/doc/2.x/
Response: 200 https://twig.symfony.com/doc/2.x/
Cache: GET /doc/2.x/: miss, store
```

But then:

```
Cache: GET /: fresh
Cache: GET /doc/2.x/: fresh
```

Limit is the sky here as you get the full power of all the Symfony ecosystem.

Under the hood, these examples leverage HttpFoundation, HttpKernel (with HttpCache),
DomCrawler, BrowserKit, CssSelector, HttpClient, Mime, ...

Excited?

P.S. : Tests need to wait for the HttpClient Mock class to land into master.

Commits
-------

b5b2a2557c Add tests for HttpBrowser
dd55845706 [BrowserKit] added support for HttpClient
2019-03-23 16:07:52 +01:00
Fabien Potencier
eeae25798a bug #30642 [FrameworkBundle] Update Client class to KernelBrowser (SerkanYildiz)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[FrameworkBundle] Update Client class to KernelBrowser

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

I updated recently the WebTestCase with a check to provide a better/more clear exception message (see #30479). After that change @fabpot renamed different `Client` classes in components to a clearer name (for ex Client in HttpKernel is now KernelBrowser etc.). This PR aims to replace the Client in WebTestCase to the new name class name.

Commits
-------

28b6dd243e Replace class with new name.
2019-03-23 16:06:06 +01:00
Fabien Potencier
aa12dd0bd7 feature #30651 Allow user to set the project dir (tdutrion)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Allow user to set the project dir

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |  <!-- symfony/symfony-docs#... required for new features -->

Currently, the project directory is defined by the location of the composer.json file.

That file is not required in production, which therefore [breaks the method getProjectDir](https://github.com/symfony/symfony/issues/23950) (who sends back null).
The offered solution, while working, requires the developer to implement it, and uses inheritance override, while a more aesthetic solution could be used.

This does not fix the behaviour, but allows the developer to pass the project dir as a parameter.

While this solution does not include BC break or anything, it is important to notice that it includes
**an optional parameter**.

[Object instantiation in the framework bundle recipe](https://github.com/symfony/recipes/blob/master/symfony/framework-bundle/4.2/public/index.php#L23) could be updated as follow (in another PR):

```php
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
```

```php
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG'], dirname(__DIR__));
```

Commits
-------

c40017d63c Allow user to set the project dir
2019-03-23 16:01:31 +01:00
Fabien Potencier
7d01aae41e feature #30654 [HttpClient] Add a ScopingHttpClient (XuruDragon)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] Add a ScopingHttpClient

| 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 PR is a follow up of #30592 by @XuruDragon, with two main differences:
- I think `ScopingHttpClient` might be a better name for what is called a `ConditionalHttpClient` there,
- the `FrameworkBundle` part is removed so that it can be submitted separately later on.

With a `ScopingHttpClient`, you can add some default options conditionally based on the requested URL and a regexp that it should match. This allows building clients that add e.g. credentials based on the requested scheme/host/path.

When the requested URL is a relative one, a default index can be provided - whose corresponding default options (the `base_uri` one especially) will be used to turn it into an absolute URL.

Regexps are anchored on their left side.

E.g. this defines a client that will send some github token when a request is made to the corresponding API, and will not send those credentials if any other host is requested, while also turning relative URLs to github ones:
```php
$client = HttpClient::create();
$githubClient = new ScopingClient($client, [
    'http://api\.github\.com/' => [
        'base_uri' => 'http://api.github.com/',
        'headers' => ['Authorization: token '.$githubToken],
    ],
], 'http://api\.github\.com/');
```

Of course, it's possible to define several regexps as keys so that one can create a client that is authenticated against several hosts/paths.

Commits
-------

1ee0a1147a [HttpClient] Add a ScopingHttpClient
2019-03-23 15:56:28 +01:00
Fabien Potencier
22bd2504dc feature #30388 [Security] undeprecate the RoleHierarchyInterface (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Security] undeprecate the RoleHierarchyInterface

| 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/22048#discussion_r260247046
| License       | MIT
| Doc PR        |

Instead of deprecating the interface it is sufficient to deprecate its
getReachableRoles() method and add a new getReachableRoleNames() method
in Symfony 5.

Commits
-------

2d3f2b7a74 undeprecate the RoleHierarchyInterface
2019-03-23 15:37:30 +01:00
Samuel ROZE
1a693039e4 FWB 4.3 requires Messenger 4.3 2019-03-23 21:36:28 +07:00
Fabien Potencier
e512b7ecff feature #30652 Fixing a bug where messenger:consume could send message to wrong bus (weaverryan)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Fixing a bug where messenger:consume could send message to wrong bus

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | arguably, yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30631
| License       | MIT
| Doc PR        | Not needed

This fixes #30631, where you can run `messener:consume` and accidentally sent received messages into the wrong bus.

The fix (done via middleware) is to attach a "bus name" to the `Envelope` and use it when the message is received to find that bus.

Commits
-------

ef077cf26c Fixing a bug where a transport could receive a message and dispatch it to a different bus
2019-03-23 15:33:29 +01:00
Fabien Potencier
e3970f9879 feature #30650 Dispatching two events when a message is sent & handled (weaverryan)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Dispatching two events when a message is sent & handled

| 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        | TODO

Alternative to #30646. This uses a more generic system, so you could do anything when a message is sent. The main use-case is when a message is dispatched by a 3rd party.

I didn't try to add *exhaustive* events everywhere: I added an event for a very specific use-case:

When a message is dispatched by a 3rd party, being able to add stamps (e.g. `DelayStamp` or a future `AmqpRoutingKeyStamp` before the message is sent. Example:

```php
class MailerMessageSendToTransportEventSubscriber implements EventSubscriberInterface
{
    public function onSendMessage(SendMessageToTransportsEvent $event)
    {
        $envelope = $event->getEnvelope();
        if (!$envelope->getMessage() instanceof SomeMailerMessage) {
            return;
        }

        $event->setEnvelope($envelope->with(new AmpqRoutingKeyStamp('mailer-route')));
    }

    public static function getSubscribedEvents()
    {
        return [SendMessageToTransportsEvent::class => 'onSendMessage'];
    }
}
```

Along with #30557, we will now have the following events, regarding async messages:
* Event when a message is sent to transports (this PR)
* Event when a message is received from transport, but before handling it
* Event when a message is received from transport and after handling it

Commits
-------

a7ad1b4ccc Dispatching two events when a message is sent & handled
2019-03-23 15:32:21 +01:00
Ryan Weaver
ef077cf26c Fixing a bug where a transport could receive a message and dispatch it to a different bus 2019-03-23 21:29:45 +07:00
Ryan Weaver
a7ad1b4ccc Dispatching two events when a message is sent & handled 2019-03-23 10:14:01 -04:00
Samuel ROZE
46b9476b52 Ensure an exception is thrown when the AMQP connect() does not work 2019-03-23 21:09:32 +07:00
Ryan Weaver
a989384999 Adding global retry support, events & more to messenger transport
Co-authored-by: Samuel ROZE <samuel.roze@gmail.com>
2019-03-23 09:39:27 -04:00
Anthony MARTIN
1ee0a1147a [HttpClient] Add a ScopingHttpClient 2019-03-23 10:56:47 +01:00
Roland Franssen
b9ac3a52fb Debug finalized config in debug:config 2019-03-22 20:30:22 +01:00
tdutrion
c40017d63c
Allow user to set the project dir
Currently, the project directory is defined by the location of the composer.json file.
That file is not required in production, which therefore breaks the method getProjectDir (who sends back null).
This does not fix the behaviour, but allows the developer to pass the project dir as a parameter.
2019-03-22 19:38:23 +01:00
Fabien Potencier
dae5686722 [HttpClient] added CachingHttpClient 2019-03-22 16:52:17 +01:00
Christian Flothmann
2d3f2b7a74 undeprecate the RoleHierarchyInterface
Instead of deprecating the interface it is sufficient to deprecate its
getReachableRoles() method and add a new getReachableRoleNames() method
in Symfony 5.
2019-03-22 16:40:58 +01:00
David Maicher
e46ef76cb9 [FrameworkBundle][HttpFoundation] make session service resettable 2019-03-22 16:39:02 +01:00
Grégoire Pineau
59f20ad8fd minor #30551 [Workflow] Deprecate MultipleStateMarkingStore and SingleStateMarkingStore in favor of MethodMarkingStore (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Workflow] Deprecate MultipleStateMarkingStore and SingleStateMarkingStore in favor of MethodMarkingStore

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

4d58beb7c8 [Workflow] Deprecate MultipleStateMarkingStore and SingleStateMarkingStore in favor of MethodMarkingStore
2019-03-22 16:04:19 +01:00
Grégoire Pineau
9354c8ef45 minor #30643 Make MethodMarkingStore final (vudaltsov)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Make MethodMarkingStore final

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Made `MethodMarkingStore` final as proposed in https://github.com/symfony/symfony/pull/29146#issuecomment-475574327.

Commits
-------

bbf582bce5 Make MethodMarkingStore final
2019-03-22 15:58:38 +01:00
Grégoire Pineau
4d58beb7c8 [Workflow] Deprecate MultipleStateMarkingStore and SingleStateMarkingStore in favor of MethodMarkingStore 2019-03-22 15:53:11 +01:00
Grégoire Pineau
98045b1a90 feature #30468 [Workflow] Added support for many inital places (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Workflow] Added support for many inital places

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #30080
| License       | MIT
| Doc PR        |

Commits
-------

1af1bf29ef Added support for many inital places
2019-03-22 15:51:00 +01:00
gpenverne
e8b9856ec3 Alias for each assets package 2019-03-22 15:17:13 +01:00
Valentin Udaltsov
bbf582bce5 Make MethodMarkingStore final 2019-03-22 16:04:03 +03:00
Serkan Yildiz
28b6dd243e Replace class with new name. 2019-03-22 12:59:39 +01:00
THERAGE Kévin
b5b2a2557c Add tests for HttpBrowser 2019-03-22 12:38:01 +01:00
Fabien Potencier
dd55845706 [BrowserKit] added support for HttpClient 2019-03-22 12:38:00 +01:00
Christian Flothmann
e5b0fd37f6 properly describe service definitions without class 2019-03-22 10:37:57 +01:00
Fabien Potencier
522594a69d Merge branch '4.2'
* 4.2:
  [Phpunit] fixed support for PHP 5.3
  Response prepare method update
  [Workflow] Added missing license header
  Fix case when multiple loaders are providing paths for the same namespace
  Check if Client exists when test.client does not exist, to provide clearer exception message
  throw TypeErrors to prepare for type hints in 5.0
  [Form] Preventing validation of children if parent with Valid constraint has no validation groups
  [Form] Added ResetInterface to CachingFactoryDecorator
  Remove deprecated usage
  [Tests] fixed compatbility of assertEquals(): void
  Fixed usage of TranslatorInterface in form extension (fixes #30591)
  [Intl][4.2] Fix test
  [Intl] Fix test
  [Validator] Add the missing translations for the Arabic (ar) locale
  [Intl] Add compile binary
  Fix DebugCommand when chain loader is involved
  [Form] Fixed some phpdocs
2019-03-22 09:16:47 +01:00
Fabien Potencier
7e5dfcff7b Merge branch '3.4' into 4.2
* 3.4:
  [Phpunit] fixed support for PHP 5.3
  Response prepare method update
  [Workflow] Added missing license header
  Check if Client exists when test.client does not exist, to provide clearer exception message
  [Form] Preventing validation of children if parent with Valid constraint has no validation groups
  [Tests] fixed compatbility of assertEquals(): void
  [Intl] Fix test
  [Validator] Add the missing translations for the Arabic (ar) locale
  [Intl] Add compile binary
  [Form] Fixed some phpdocs
2019-03-22 09:16:34 +01:00
Fabien Potencier
606b8af8ec [Phpunit] fixed support for PHP 5.3 2019-03-22 09:11:54 +01:00
Fabien Potencier
0b2a9d56d7 feature #30448 [Finder] Ignore paths from .gitignore #26714 (amaabdou)
This PR was squashed before being merged into the 4.3-dev branch (closes #30448).

Discussion
----------

 [Finder] Ignore paths from .gitignore #26714

| Q             | A
| ------------- | ---
| Branch?       | master for features
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #26714
| 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.
-->
Implementation of feature request #26714

Finder::ignoreVCS() is great at ignoring file patterns for the files created by popular VCS systems.

However, it would be great to be able to instruct Finder to actually exclude the paths excluded by .gitignore.

So if we have .gitignore:

vendor/
cache/

Finder::create()
	->files()
    ->ignoreVCS(true) // <--- Ignores `.git`
	->ignoreVCSIgnored(true); // <--- Ignores vendor/ and cache/

Commits
-------

9491393dc2  [Finder] Ignore paths from .gitignore #26714
2019-03-22 08:19:31 +01:00
Ahmed Abdou
9491393dc2 [Finder] Ignore paths from .gitignore #26714 2019-03-22 08:19:24 +01:00
Fabien Potencier
7e30c971ab fixed CS 2019-03-22 07:07:54 +01:00
ScoobyDam
e89c9213e2
Response prepare method update
Response prepare updated for more coherence.
2019-03-21 19:51:37 +01:00
Fabien Potencier
4574f8543c feature #30625 [HttpKernel] add RealHttpKernel: handle requests with HttpClientInterface (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpKernel] add RealHttpKernel: handle requests with HttpClientInterface

| 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 commit is directly extracted from #30602 by @fabpot

Commits
-------

b579b023bd [HttpKernel] add RealHttpKernel: handle requests with HttpClientInterface
2019-03-21 15:56:27 +01:00
Nicolas Grekas
6fdc1b43f7 minor #30626 [HttpClient] improve MockResponse (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] improve MockResponse

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

While working with `MockHttpClient`, we figured out these would be useful:
 - `MockResponse::getRequestOptions()` to get the options that were used when doing the request
- relax the format of the `raw_headers` info and allow it to be defined as name=>value(s) pairs.

Commits
-------

26f6e28160 [HttpClient] improve MockResponse
2019-03-21 13:41:56 +01:00
Nicolas Grekas
26f6e28160 [HttpClient] improve MockResponse 2019-03-21 13:37:55 +01:00
Kévin Dunglas
2d64e703c2
[Validator][DoctrineBridge][FWBundle] Automatic data validation 2019-03-21 13:05:54 +01:00
Fabien Potencier
b579b023bd [HttpKernel] add RealHttpKernel: handle requests with HttpClientInterface 2019-03-21 12:53:53 +01:00
Fabien Potencier
af28965c24 fixed encoder in Mime 2019-03-20 21:49:31 +01:00
Grégoire Pineau
1af1bf29ef Added support for many inital places 2019-03-20 20:27:53 +01:00
Grégoire Pineau
e78a13f717 [Workflow] Added missing license header 2019-03-20 20:20:03 +01:00
Yonel Ceruto
393d7280e5 Fix case when multiple loaders are providing paths for the same namespace 2019-03-20 11:45:54 -04:00
Fabien Potencier
fc826aac4c feature #30508 [Routing] Exposed "utf8" option, defaults "locale" and "format" in configuration (Jules Pietri)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Routing] Exposed "utf8" option, defaults "locale" and "format" in configuration

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | symfony/symfony-docs#11126

A sibling to #30501, everything is in the title :).

Commits
-------

2911490c80 [Routing] Exposed "utf8" option, defaults "locale" and "format" in configuration
2019-03-20 16:17:03 +01:00
Jules Pietri
2911490c80 [Routing] Exposed "utf8" option, defaults "locale" and "format" in configuration 2019-03-20 15:57:56 +01:00
Fabien Potencier
1246c79b9f bug #30595 Do not validate child constraints if form has no validation groups (maryo)
This PR was merged into the 3.4 branch.

Discussion
----------

Do not validate child constraints if form has no validation groups

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

If a form has `Valid` constraint and `validation_groups` set to an empty array (to disable validation) then its children were still validated using default validation group because `FormValidator` validated the form data using the empty array validation group here
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php#L76

and then `RecursiveContextualValidator` treats the empty array as default validation group here.

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php#L86

Commits
-------

f45f0d03fc [Form] Preventing validation of children if parent with Valid constraint has no validation groups
2019-03-20 13:40:27 +01:00
Fabien Potencier
1479a26a0b feature #28920 [EventDispatcher] swap arguments of dispatch() to allow registering events by FQCN (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[EventDispatcher] swap arguments of dispatch() to allow registering events by FQCN

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

PR green and ready. From UPGRADE files:

 EventDispatcher
---------------

 * The signature of the `EventDispatcherInterface::dispatch()` method should be updated to `dispatch($event, string $eventName = null)`, not doing so is deprecated

HttpKernel
----------

 * Renamed `FilterControllerArgumentsEvent` to `ControllerArgumentsEvent`
 * Renamed `FilterControllerEvent` to `ControllerEvent`
 * Renamed `FilterResponseEvent` to `ResponseEvent`
 * Renamed `GetResponseEvent` to `RequestEvent`
 * Renamed `GetResponseForControllerResultEvent` to `ViewEvent`
 * Renamed `GetResponseForExceptionEvent` to `ExceptionEvent`
 * Renamed `PostResponseEvent` to `TerminateEvent`

Security
---------

 * The `ListenerInterface` is deprecated, turn your listeners into callables instead.
 * The `Firewall::handleRequest()` method is deprecated, use `Firewall::callListeners()` instead.

Commits
-------

75369dabb8 [EventDispatcher] swap arguments of dispatch() to allow registering events by FQCN
2019-03-20 13:34:13 +01:00
Fabien Potencier
81bf2abf19 feature #30605 [Cache] added DSN support for rediss in AbstractAdapter and RedisTrait (alex-vasilchenko-md)
This PR was squashed before being merged into the 4.3-dev branch (closes #30605).

Discussion
----------

[Cache] added DSN support for rediss in AbstractAdapter and RedisTrait

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/issues/30573
| License       | MIT

A fix for this issue: https://github.com/symfony/symfony/issues/30573
Support for "rediss:" in DSN added.

Commits
-------

7e2852dd44 [Cache] added DSN support for rediss in AbstractAdapter and RedisTrait
2019-03-20 12:35:16 +01:00
Alex Vasilchenko
7e2852dd44 [Cache] added DSN support for rediss in AbstractAdapter and RedisTrait 2019-03-20 12:35:07 +01:00
Fabien Potencier
2de59a1362 bug #30440 [TwigBridge] Fix DebugCommand when chain loader is involved (yceruto)
This PR was merged into the 4.2 branch.

Discussion
----------

[TwigBridge] Fix DebugCommand when chain loader is involved

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30426
| License       | MIT

Better diff: https://github.com/symfony/symfony/pull/30440/files?utf8=%E2%9C%93&diff=unified&w=1

Commits
-------

f647b4a29d Fix DebugCommand when chain loader is involved
2019-03-20 09:06:40 +01:00
Fabien Potencier
059ba38214 bug #30479 Check if Client exists when test.client does not exist, to provide clearer exception message (SerkanYildiz)
This PR was squashed before being merged into the 3.4 branch (closes #30479).

Discussion
----------

Check if Client exists when test.client does not exist, to provide clearer exception message

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30420
| License       | MIT

The `DotEnv` component does not overwrite by using environment variables declared in `.env` files.

In the `FrameworkExtension` will be checked if the framework.test config is set to a non-false value, if so it will load the `test.xml` file which contains the definition for the `test.client` service.

When running `php bin/phpunit` it will use `phpunit.xml.dist` but because we defined `APP_ENV` in our system it will not load `test.xml` so when creating a client to do functional tests, we'll get an exception which isn't correct: `You cannot create the client used in functional tests if the BrowserKit component is not available. Try running "composer require symfony/browser-kit"`

This PR aims to add a clearer exception message which indicates what really should be done to fix the error message.

Commits
-------

b429950af6 Check if Client exists when test.client does not exist, to provide clearer exception message
2019-03-20 08:44:30 +01:00
Serkan Yildiz
b429950af6 Check if Client exists when test.client does not exist, to provide clearer exception message 2019-03-20 08:44:21 +01:00
Fabien Potencier
3b9dad4e46 bug #30597 [Form] Added ResetInterface to CachingFactoryDecorator (HeahDude)
This PR was merged into the 4.2 branch.

Discussion
----------

[Form] Added ResetInterface to CachingFactoryDecorator

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29259
| License       | MIT
| Doc PR        | ~

I don't know if this should be considered a feature and target master, but I tend to see it as a bug fix.

Commits
-------

4ddf5a14eb [Form] Added ResetInterface to CachingFactoryDecorator
2019-03-20 08:34:28 +01:00
Fabien Potencier
d92ae4544c minor #30600 [Workflow] Remove deprecated usage (Nek-)
This PR was merged into the 4.2 branch.

Discussion
----------

[Workflow] Remove deprecated usage

| Q             | A
| ------------- | ---
| Branch?       | master for features / 3.4 up to 4.2 for bug fixes <!-- see below -->
| Bug fix?      | no
| New feature?  |no <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | yes/no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| License       | MIT

This is a little improvement suggestion because string usage is deprecated while it's still the default value. `null` is also deprecated but is required for BC.

Commits
-------

eeb3c29fab Remove deprecated usage
2019-03-20 08:31:47 +01:00
Fabien Potencier
2278d4c52b minor #30611 throw TypeErrors to prepare for type hints in 5.0 (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

throw TypeErrors to prepare for type hints in 5.0

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

10afb99e3f throw TypeErrors to prepare for type hints in 5.0
2019-03-20 08:28:49 +01:00
Christian Flothmann
3378f5e9a1 fix max host connections option for XML configs 2019-03-19 22:31:07 +01:00
Christian Flothmann
10afb99e3f throw TypeErrors to prepare for type hints in 5.0 2019-03-19 22:12:04 +01:00
Christian Flothmann
f18751bd98 throw TypeErrors to prepare for type hints in 5.0 2019-03-19 22:07:50 +01:00
Fabien Potencier
d5d1b50cf7 feature #30604 [HttpClient] add MockHttpClient (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] add MockHttpClient

| 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 PR introduces `MockHttpClient` and `MockResponse`, to be used for testing classes that need an HTTP client without making actual HTTP requests.

`MockHttpClient` is configured via its constructor: you provide it either with an iterable or a callable, and these will be used to provide responses as the consumer requests them.

Example:
```php
$responses = [
    new MockResponse($body1, $info1),
    new MockResponse($body2, $info2),
];

$client = new MockHttpClient($responses);
$response1 = $client->request(...); // created from $responses[0]
$response2 = $client->request(...); // created from $responses[1]
```

Or alternatively:
```php
$callback = function ($method, $url, $options) {
    return new MockResponse(...);
};

$client = new MockHttpClient($callback);
$response = $client->request(...); // calls $callback internal
```

The responses provided to the client don't have to be instances of `MockResponse` - any `ResponseInterface` works (e.g. `$this->getMockBuilder(ResponseInterface::class)->getMock()`).

Using `MockResponse` allows simulating chunked responses and timeouts:
```php
$body = function () {
    yield 'hello';
    yield ''; // the empty string is turned into a timeout so that they are easy to test
    yield 'world';
};
$mockResponse = new Mockresponse($body);
```

Last but not least, the implementation simulates the full lifecycle of a properly behaving `HttpClientInterface` contracts implementation: error handling, progress function, etc. This is "proved" by `MockHttpClientTest`, who implements and passes the reference test suite in `HttpClientTestCase`.

Commits
-------

8fd7584158 [HttpClient] add MockHttpClient
2019-03-19 19:41:07 +01:00
Nicolas Grekas
8fd7584158 [HttpClient] add MockHttpClient 2019-03-19 19:38:55 +01:00
Fabien Potencier
7169f4d3e2 [Templating] added more deprecation 2019-03-19 18:56:32 +01:00
Kévin Dunglas
224c891e10 [FrameworkBundle] Deprecate the Templating component integration 2019-03-19 18:23:24 +01:00
Fabien Potencier
4d6967e756 [TwigBundle] simplified code 2019-03-19 18:08:47 +01:00
Marek Štípek
f45f0d03fc [Form] Preventing validation of children if parent with Valid constraint has no validation groups 2019-03-19 13:37:12 +01:00
Jules Pietri
4ddf5a14eb [Form] Added ResetInterface to CachingFactoryDecorator 2019-03-19 13:02:46 +01:00
Maxime Veber
eeb3c29fab Remove deprecated usage
null is also deprecated but must be conserved for BC purpose. Also it will
will not let the develop think string is ok.
2019-03-19 10:13:19 +01:00
Jules Pietri
3f7bedc61f [Tests] fixed compatbility of assertEquals(): void 2019-03-19 08:51:13 +01:00
Fabien Potencier
bff9e68bb4 feature #30567 [HttpClient] exceptions carry response (antonch1989)
This PR was squashed before being merged into the 4.3-dev branch (closes #30567).

Discussion
----------

[HttpClient] exceptions carry response

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #30502
| License       | MIT
| Doc PR        |

Commits
-------

103448cc67 [HttpClient] exceptions carry response
2019-03-19 08:49:53 +01:00
Anton Chernikov
103448cc67 [HttpClient] exceptions carry response 2019-03-19 08:49:42 +01:00
Samuel ROZE
b15eee97b4 feature #28849 [Messenger] Support for handling messages after current bus is finished (Nyholm)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Support for handling messages after current bus is finished

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/10015

This is a replacement for #27844. We achieve the same goals without introducing the new concept of "recorder".

```php
class CreateUserHandler
{
    private $em;
    private $eventBus;

    public function __construct(MessageBus $eventBus, EntityManagerInterface $em)
    {
        $this->eventBus = $eventBus;
        $this->em = $em;
    }

    public function __invoke(CreateUser $command)
    {
        $user = new User($command->getUuid(), $command->getName(), $command->getEmail());
        $this->em->persist($user);

        $message = new UserCreatedEvent($command->getUuid();
        $this->eventBus->dispatch((new Envelope($message))->with(new DispatchAfterCurrentBus()));
    }
}
```

Note that this `DispatchAfterCurrentBusMiddleware` is added automatically as the first middleware.

2019-03-13: I updated the PR description.

Commits
-------

903355fbcc Support for handling messages after current bus is finished
2019-03-19 12:36:52 +07:00
Fabien Potencier
ddf0c951e2 fixed CHANGELOG 2019-03-19 06:12:32 +01:00
Fabien Potencier
603f5cf0c3 feature #29538 [Workflow] Add colors to workflow dumps (alexislefebvre)
This PR was squashed before being merged into the 4.3-dev branch (closes #29538).

Discussion
----------

[Workflow] Add colors to workflow dumps

Fixes #28874

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #28874, replaces #28933
| License       | MIT
| Doc PR        | TODO, requires https://github.com/symfony/symfony-docs/pull/9476

Fetch data with the `MetadataStore` from #26092 in order to add colors to the dumps.

Example of configuration:

```yaml
            transitions:
                submit:
                    from: start
                    to: travis
                    metadata:
                        title: transition submit title
                        dump_style:
                            label: 'My custom label'
                            arrow_color: '#0088FF'
                            label_color: 'Red'
```

This code was developed as a bundle, examples can be found on its repository: https://github.com/alexislefebvre/SymfonyWorkflowStyleBundle

Commits
-------

60ad109533 [Workflow] Add colors to workflow dumps
2019-03-19 06:08:57 +01:00
Alexis Lefebvre
60ad109533 [Workflow] Add colors to workflow dumps 2019-03-19 06:08:23 +01:00
Nyholm
903355fbcc Support for handling messages after current bus is finished
Co-authored-by: Maxime Steinhausser <ogizanagi@users.noreply.github.com>
2019-03-19 05:15:31 +01:00
Anthony MARTIN
01a663aea0 [HttpClient] changes minimal php version to use curl push function 2019-03-18 16:11:55 +01:00
Nicolas Grekas
ac93c9ece8 feature #28975 [DI] Add an url EnvProcessor (jderusse)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DI] Add an url EnvProcessor

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/11128

This PR add a new env processor `url` to convert an URL (or DSN) into an array.

The main goal is to simplify the project configuration and reduce the number of env variable when working with bundle which are not able to deal with DSN
(pick some random project in symfony/recipes-contrib: https://github.com/symfony/recipes-contrib/blob/master/facile-it/mongodb-bundle/0.6/manifest.json or https://github.com/symfony/recipes-contrib/blob/master/wouterj/eloquent-bundle/1.0/manifest.json)

```yaml
# before
MONGODB_HOST=localhost
MONGODB_PORT=27017
MONGODB_USER=
MONGODB_PASSWORD=
MONGODB_DB=symfony

mongo_db_bundle:
    data_collection: '%kernel.debug%'
    clients:
        default:
            hosts:
            - { host: '%env(MONGODB_HOST)%', port: '%env(int:MONGODB_PORT)%' }
            username: '%env(MONGODB_USER)%'
            password: '%env(MONGODB_PASSWORD)%'
            connectTimeoutMS: 3000
    connections:
        default:
            database_name: '%env(MONGODB_DB)%'

# after
MONGODB_DSN=mongodb://localhost:27017/symfony

mongo_db_bundle:
    data_collection: '%kernel.debug%'
    clients:
        default:
            hosts:
            - { host: '%env(key:host:url:MONGODB_DSN)%', port: '%env(key:port:url:MONGODB_DSN)%' }
            username: '%env(key:user:url:MONGODB_DSN)%'
            password: '%env(key:pass:url:MONGODB_DSN)%'
            connectTimeoutMS: 3000
    connections:
        default:
            database_name: '%env(key:path:url:MONGODB_DSN)%'
```

Added also a `query_string` processor to parse query string

```
DATABASE_DSN=mysql://localhost/db?charset=utf8

foo:
  bar:
    charset: '%env(key:charset:query_string🔑query:url:DATABASE_DSN)%'
```

Commits
-------

f253c9b7ca Add an url EnvProcessor
2019-03-18 12:19:06 +01:00
Matthias Althaus
d8092c7b7b Fixed usage of TranslatorInterface in form extension (fixes #30591) 2019-03-18 11:22:47 +01:00
Jérémy Derussé
f253c9b7ca
Add an url EnvProcessor 2019-03-17 18:30:10 +01:00
Nicolas Grekas
401c1d3d75 feature #30419 [FrameworkBundle] Add integration of http-client component (Ioni14, nicoweb)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[FrameworkBundle] Add integration of http-client component

| 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 PR adds the integration of the HttpClient component on FrameworkBundle.
By default, two services are provided, one implementing SFC-HttpClient, and another PSR18:
* `http_client` + its autowiring alias for `Symfony\Contracts\HttpClient\HttpClientInterface`)
This service is automatically set to the best HTTP client available with the configuration given under the `framework.http_client` key.
* `psr18.http_client` + its autowiring alias for `Psr\Http\Client\ClientInterface`). To make it work, one needs to provide autowiring aliases for `ResponseFactoryInterface` and `StreamFactoryInterface`, which are provided by [the recipe](https://github.com/symfony/recipes-contrib/blob/master/nyholm/psr7/1.0/config/packages/nyholm_psr7.yaml) for `nyholm/psr7` (but could be overriden by apps when using something else).

* one can also configure the default options, and "scoped" clients. For example:
```yaml
http_client:
    default_options:
        capath: '...'
    clients:
        github_client:
            default_options:
                base_uri: 'https://api.github.com'
```

This definition create a `github_client` service implementing SFC-HttpClient and a `psr18.github_client` one implementing PSR18, +2 corresponding named autowiring aliases: `HttpClientInterface $githubClient`,  and `ClientInterface $githubClient`.

Commits
-------

f2d2cf3021 work with attributes for xml config
0023a71260 [FrameworkBundle] Add integration of http-client component
2019-03-17 18:02:43 +01:00
nicoweb
f2d2cf3021 work with attributes for xml config 2019-03-17 17:54:33 +01:00
Nicolas Grekas
f88cb07d30 [DI] revert bad patch in previous PR 2019-03-17 17:47:41 +01:00
Thomas Talbot
0023a71260 [FrameworkBundle] Add integration of http-client component 2019-03-17 17:08:17 +01:00
Nicolas Grekas
3abf9ebc03 bug #30589 [DI] fix casting AutowiringFailedException to string when its callback throws (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DI] fix casting AutowiringFailedException to string when its callback throws

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30571
| License       | MIT
| Doc PR        | -

ping @weaverryan

Commits
-------

d57a148b8b [DI] fix casting AutowiringFailedException to string when its callback throws
2019-03-17 17:05:00 +01:00
Nicolas Grekas
d57a148b8b [DI] fix casting AutowiringFailedException to string when its callback throws 2019-03-17 16:55:03 +01:00
Grégoire Pineau
eac014febd [Messenger] Display a nice error when connection fail 2019-03-17 13:27:48 +01:00
Roland Franssen
50b52cffdd [Intl][4.2] Fix test 2019-03-17 10:32:54 +01:00
Roland Franssen
226f522c4d
[Intl] Fix test 2019-03-17 10:26:14 +01:00
Fabien Potencier
0762d2d9ac feature #30450 [Profiler] Render the performance graph with SVG (Tom32i)
This PR was squashed before being merged into the 4.3-dev branch (closes #30450).

Discussion
----------

[Profiler] Render the performance graph with SVG

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | Part 1, 3 and 4 of #27262
| License       | MIT
| Doc PR        | n/a

Following a suggestion by @ogizanagi in #27262,
Here's a proposal to render the Request Graph, from the performance profiler panel, with SVG instead of canvas.

Some benefits of the SVG format:
- The text labels are searchable and can be selected.
- It renders well on high DPI monitors.
- [Colors and text styles](https://github.com/symfony/symfony/issues/27262#issuecomment-388868068) can be defined with CSS just like the rest of the page.

In addition, SVG allow us to consider (and easily implement) interactives features such as:
- Zoom in and time navigation (thanks to the viewport).
- Highlight hovered line (or other DOM related events).

Preview:

![screenshot_2019-03-08 symfony profiler 1](https://user-images.githubusercontent.com/1846873/54036727-a33f4300-41bc-11e9-8be7-b1de10d4afd9.png)

Filtered events example:

![capture d ecran 2019-03-08 a 17 22 47](https://user-images.githubusercontent.com/1846873/54041039-00d88d00-41c7-11e9-9590-23e809415c34.png)

### Progress :
- [x] Render request events in SVG
- [x] Show labels with duration and memory
- [x] Show specific markers at start / end of lines
- [x] Re-render graph when window resize
- [x] Re-render graph when threshold change.
- [x]  Generate graph legend with only existing categories (part 1. of #27262 )
- [x] Show sub-request area with hatched pattern
- [x]  Allow to hide categories by clicking them on the legend (part 3. of #27262 )
- [x] Handle text overflow on long labels.
- [x] Ensure JS code is compatible with all supported browsers (used [classes](https://caniuse.com/#feat=es6-class) and [arrow functions](https://caniuse.com/#feat=arrow-functions).
- ~Add left-padding to sub-request graph?~

Commits
-------

a69a718ec9 [Profiler] Render the performance graph with SVG
2019-03-17 08:47:26 +01:00
Thomas Jarrand
a69a718ec9 [Profiler] Render the performance graph with SVG 2019-03-17 08:47:19 +01:00
Fabien Potencier
83aeef1907 minor #30534 [Form] Fixed some phpdocs (Jules Pietri)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] Fixed some phpdocs

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/6393

ref https://github.com/symfony/symfony-docs/issues/6144, https://github.com/symfony/symfony-docs/pull/6297, https://github.com/symfony/symfony/pull/14050

Commits
-------

b9162e8cfb [Form] Fixed some phpdocs
2019-03-17 08:27:38 +01:00
Fabien Potencier
d7fdcb1a5d minor #30549 [HttpClient] Make exceptions public (dunglas)
This PR was squashed before being merged into the 4.3-dev branch (closes #30549).

Discussion
----------

[HttpClient] Make exceptions public

| 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 | #...   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | n/a

Makes it easier to implement the interface. See api-platform/core#2608

Commits
-------

928d774e4a [HttpClient] Make exceptions public
2019-03-17 08:23:56 +01:00
Kévin Dunglas
928d774e4a [HttpClient] Make exceptions public 2019-03-17 08:23:49 +01:00
Fabien Potencier
b4431769a1 feature #29130 [Serializer] Normalize constraint violation parameters (ogizanagi)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Serializer] Normalize constraint violation parameters

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | no
| New feature?  | yes <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | yes <!-- 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   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | N/A?

Adding violation constraints' parameters to the normalized data, as these are valuable for an API client.

I used `parameters` for now, as it's the name used in `ConstraintViolationInterface::getParameters()`, but what about `placeholders` or `context`?

Commits
-------

32c90ebc8e [Serializer] Normalize constraint violation parameters
2019-03-17 08:15:05 +01:00
Fabien Potencier
6fa4d2b0cf feature #28330 [MonologBridge] Add monolog processors adding route and command info (trakos)
This PR was squashed before being merged into the 4.3-dev branch (closes #28330).

Discussion
----------

[MonologBridge] Add monolog processors adding route and command info

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | symfony/symfony-docs#10244

This PR adds two simple processors that add context to every log entry.

RouteProcessor adds routing information:
`app.INFO: Some log text {"someContext":"ctx"} {"route":{"controller":"App\\Controller\\SomeController::number","route":"index","route_params":[]}`

ConsoleCommandProcessors adds current command information:
`app.INFO: Some log text {"someContext":"ctx"} {"command":{"name":"app:some-command","arguments":{"command":"app:some-command","some-argument":10}}}`

For ConsoleCommandProcessor I've decided against including command options by default, because there's a lot of default ones:
`"options":{"help":false,"quiet":false,"verbose":false,"version":false,"ansi":false,"no-ansi":false,"no-interaction":false,"env":"dev","no-debug":false}`. This behavior can be changed with a constructor argument.

Commits
-------

669f6b2726 [MonologBridge] Add monolog processors adding route and command info
2019-03-17 08:08:51 +01:00
Piotr Stankowski
669f6b2726 [MonologBridge] Add monolog processors adding route and command info 2019-03-17 08:08:42 +01:00
Fabien Potencier
cbb0b81ebd feature #30339 [Monolog] Disable DebugLogger in CLI (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Monolog] Disable DebugLogger in CLI

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   |
| Fixed tickets | #30333 https://github.com/symfony/monolog-bundle/issues/165 #25876
| License       | MIT
| Doc PR        |

<details>
<summary>Considering this code:</summary>

```php
namespace App\Command;

use Psr\Log\LoggerInterface;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class LeakCommand extends Command
{
    protected static $defaultName = 'leak';

    private $logger;

    public function __construct(LoggerInterface $logger)
    {
        $this->logger = $logger;

        parent::__construct();
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $reportedAt = time();
        while (true) {
            $this->logger->info('Hello');

            if (time() - $reportedAt >= 1) {
                $output->writeln(sprintf('%dMb', memory_get_usage() / 1024 / 1024));
                $reportedAt = time();
            }
        }
    }
}
```

</details>

Without the patch
```
>…/dev/labs/symfony/website-skeleton(monolog %) bin/console leak
7Mb
28Mb
51Mb
76Mb
97Mb
````

With the patch
```
>…/dev/labs/symfony/website-skeleton(monolog %) bin/console leak
6Mb
6Mb
6Mb
6Mb
```

Commits
-------

17533da49c [Monolog] Disable DebugLogger in CLI
2019-03-17 07:59:53 +01:00
Fabien Potencier
218f29051d feature #30584 [Intl] Add compile binary (ro0NL)
This PR was merged into the 3.4 branch.

Discussion
----------

[Intl] Add compile binary

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no-ish
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| 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 -->

Compile the Intl data by invoking a single command, and make it work out-of-the-box. (Split from #28831)

```bash
$ src/Symfony/Component/Intl/Resources/bin/compile
```

run in repository root because of

b7e798ef74/src/Symfony/Component/Intl/Data/Generator/LocaleDataGenerator.php (L141)

3.4 is ok, 4.2 is not because of #28833 but new locales are introduced in https://github.com/symfony/symfony/pull/28977/files#diff-f52da32e1ee6b93598814090d0749aa6R1

So as long as 3.4 is supported, but branches above add filters etc. during generation we're risking this discrepancy. I suggest after merge in upper branches to re-run `compile` (potential for automating, but run if needed :))

Commits
-------

426b92f4a8 [Intl] Add compile binary
2019-03-17 07:57:13 +01:00
Mehdi Mabrouk
5df08d67a7 [Validator] Add the missing translations for the Arabic (ar) locale 2019-03-17 07:52:21 +01:00
Ryan Weaver
503c20989c Using AMQP auto-setup in all cases, not just in debug 2019-03-16 20:39:02 -04:00
Roland Franssen
426b92f4a8 [Intl] Add compile binary 2019-03-16 10:12:20 +01:00
Nicolas Grekas
b7e798ef74 Merge branch '4.2'
* 4.2:
  Fix Cache error while using anonymous class
  [Cache] fix LockRegistry
  Update validators.cs.xlf
  Make translations consistent with other translations.
  Correct language code for ukrainian language in security translations.
  Fix return type of Request::getRequestFormat
  [Cache] Fix perf when using RedisCluster by reducing roundtrips to the servers
2019-03-15 14:38:03 +01:00
Nicolas Grekas
e9814030c6 Merge branch '3.4' into 4.2
* 3.4:
  Fix Cache error while using anonymous class
  Update validators.cs.xlf
2019-03-15 14:37:34 +01:00
Emmanuel BORGES
036e72210d Fix Cache error while using anonymous class 2019-03-15 14:32:44 +01:00
Nicolas Grekas
040dc7bc09 feature #30348 [DependencyInjection] Add ability to define an index for service in an injected service locator argument (XuruDragon, nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DependencyInjection] Add ability to define an index for service in an injected service locator argument

| 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        | in progress /  symfony/symfony-docs#...

It's more or less the same thing then the PR #30257 but for a service locator argument

Add a simple way to specify an index based on a tag attribute to simplify retrieving a specific service when injecting a service locator as argument into services, but also a way to fallback to a static method on the service class.

Yaml:
```yaml
services:
  foo_service:
    class: Foo
    tags:
      - {name: foo_tag, key: foo_service}
  foo_service_tagged:
    class: Bar
    arguments:
      - !tagged_locator
          tag: 'foo_tag'
          index_by: 'key'
          default_index_method: 'static_method'
```
XML:
```xml
<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services
    http://symfony.com/schema/dic/services/services-1.0.xsd">
  <services>
    <service id="foo" class="Foo">
        <tag name="foo_tag" key="foo_service" />
    </service>
    <service id="foo_tagged_iterator" class="Bar" public="true">
      <argument type="tagged_locator" tag="foo_tag" index-by="key" default-index-method="static_method" />
    </service>
  </services>
</container>
```
PHP:
```php
// config/services.php
use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;

$container->register(Foo::class)
        ->addTag('foo_tag', ['key' => 'foo_service']);

$container->register(App\Handler\HandlerCollection::class)
         // inject all services tagged with app.handler as first argument
         ->addArgument(new ServiceLocatorArgument(new TaggedIteratorArgument('app.handler', 'key')));
```

Usage:
```php
// src/Handler/HandlerCollection.php
namespace App\Handler;

use Symfony\Component\DependencyInjection\ServiceLocator;

class HandlerCollection
{
     public function __construct(ServiceLocator $serviceLocator)
     {
           $foo = $serviceLocator->get('foo_service'):
     }
}
```

Tasks

* [x]  Support PHP loader/dumper
* [x]  Support YAML loader/dumper
* [x]  Support XML loader/dumper (and update XSD too)
* [x]  Add tests
* [x]  Documentation

Commits
-------

cb3c56bc0c Support indexing tagged locators by FQCN as fallback
250a2c8332 [DI] Allow tagged_locator tag to be used as an argument
2019-03-15 14:02:50 +01:00
Nicolas Grekas
f6662539aa feature #30469 Create a hyperlink to interfaces/classes that can be autowired (SerkanYildiz)
This PR was squashed before being merged into the 4.3-dev branch (closes #30469).

Discussion
----------

Create a hyperlink to interfaces/classes that can be autowired

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

Added hyperlink to definition of interfaces/classes that can be used for autowiring.
But I need help with:
- the aliases are becoming hyperlinks too, but shouldn't.
It's outputting `<fg=yellow;href=phpstorm://open?file=filepath&line=17>Symfony\Contracts\Translation\TranslatorInterface</> <fg=cyan>(translator.default)</>`

- it currently works with phpstorm because it's hardcoded but it should work with framework.ide option, but don't know what the best approach is to support that config option.

Commits
-------

a3dfcee406 Create a hyperlink to interfaces/classes that can be autowired
2019-03-15 13:59:08 +01:00
Serkan Yildiz
a3dfcee406 Create a hyperlink to interfaces/classes that can be autowired 2019-03-15 13:59:00 +01:00
Nicolas Grekas
05fe6a939a feature #30334 [DI] add ReverseContainer: a locator that turns services back to their ids (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DI] add ReverseContainer: a locator that turns services back to their ids

| 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 PR introduces a `ReverseContainer`, which is a class you can type hint for to get it as a service.

When you have a `ReverseContainer` at hand, you can then use it to know the service id of an object (if the object is not found, `null` is returned):
`$id = $reverseContainer->getId($someObject);`

You can also call `$reverseContainer->getService($id);` and get the service in return.

To be reversible, a service must either be public or be tagged with `container.reversible`.

I'm using this feature to serialize service references in a message, then send them through a Messenger bus, allowing the handler on the other side to use that referenced service to process the message. More specifically, my use case is sending messages for early cache expiration events through a bus and have a worker compute the soon-to-expire value in the background. The reversible services are the computation callbacks and the cache pools I need to compute the value for.

Commits
-------

ac1e4291e8 [DI] add ReverseContainer: a locator that turns services back to their ids
2019-03-15 13:51:46 +01:00
Nicolas Grekas
a116347e99 feature #30539 [Messenger] deprecate LoggingMiddleware in favor of providing a logger to SendMessageMiddleware (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] deprecate LoggingMiddleware in favor of providing a logger to SendMessageMiddleware

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Discussing with @simensen, we figured out the currently logged messages are not precise enough.
Logging is a cross-cutting concern: splitting it in a dedicated middleware means losing details - or building complexity.
Let's make things simple and log the best messages depending on the internal situation.

While the component is experimental, removing the `LoggingMiddleware` altogether would break FrameworkBundle 4.2 when it is used with Messenger 4.3. Not worth the trouble when it's two lines to deprecate IMHO.

Commits
-------

2bff625abe [Messenger] deprecate LoggingMiddleware in favor of providing a logger to SendMessageMiddleware
2019-03-15 13:50:41 +01:00
Nicolas Grekas
9ee5ff775d minor #30561 [HttpClient] strengthen bearer validation (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] strengthen bearer validation

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Better be sure CR/LF/etc cannot be passed inside raw header values, opening potential security risks.

Commits
-------

e6e162075d [HttpClient] strengthen bearer validation
2019-03-15 13:49:26 +01:00
Nicolas Grekas
f49df4ab05 [Cache] fix LockRegistry 2019-03-15 12:55:58 +01:00
Nicolas Grekas
ac1e4291e8 [DI] add ReverseContainer: a locator that turns services back to their ids 2019-03-14 17:23:04 +01:00
Nicolas Grekas
e6e162075d [HttpClient] strengthen bearer validation 2019-03-14 12:13:43 +01:00
Dennis Fridrich
5f49e6c4d5
Update validators.cs.xlf 2019-03-14 11:33:34 +01:00
Kévin Dunglas
7308e5a8e6
[HttpClient] Fix HttpOptions::setAuthBearer() 2019-03-14 10:55:31 +01:00
Nicolas Grekas
2bff625abe [Messenger] deprecate LoggingMiddleware in favor of providing a logger to SendMessageMiddleware 2019-03-14 08:52:20 +01:00
Nicolas Grekas
75369dabb8 [EventDispatcher] swap arguments of dispatch() to allow registering events by FQCN 2019-03-14 08:32:46 +01:00
Kévin Dunglas
8d5096a638
[HttpClient] Allow to pass user/pw as an array 2019-03-14 08:32:36 +01:00
Fabien Potencier
535c482a4d feature #30547 [HttpClient] Add new bearer option (dunglas)
This PR was squashed before being merged into the 4.3-dev branch (closes #30547).

Discussion
----------

[HttpClient] Add new bearer option

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes<!-- 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   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | n/a

Add a new "auth_bearer" option to set the corresponding flavor of the `Authorization` header as defined in RFC 6750 and used in OAuth (and others).

Also rename "auth" to "auth_basic" for consistency as discussed with @nicolas-grekas.

Commits
-------

f79ef21458 [HttpClient] Add new bearer option
2019-03-14 08:15:57 +01:00
Kévin Dunglas
f79ef21458 [HttpClient] Add new bearer option 2019-03-14 08:15:49 +01:00
Nicolas Grekas
8907650424 Merge branch '3.4' into 4.2
* 3.4:
  Make translations consistent with other translations.
  Correct language code for ukrainian language in security translations.
  Fix return type of Request::getRequestFormat
  [Cache] Fix perf when using RedisCluster by reducing roundtrips to the servers
2019-03-13 17:19:01 +01:00
Nicolas Grekas
343d645c23 bug #30548 Correct language code for ukrainian language (stanleyk)
This PR was merged into the 3.4 branch.

Discussion
----------

Correct language code for ukrainian language

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Correct language code for [ukrainian language](https://en.wikipedia.org/wiki/Ukrainian_language) is **uk**, not **ua**. Similar bug was earlier addressed in #5972, but somehow it appeared here again. Possible BC break in case someone relies on "ua" version being present, but I think that is a minor problem.

Commits
-------

b86fa9312b Correct language code for ukrainian language in security translations.
2019-03-13 17:13:37 +01:00
Nicolas Grekas
05a0b5416e minor #30550 [Validator] Improve Bulgarian translations. (moynzzz)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Improve Bulgarian translations.

| Q             | A
| ------------- | ---
| Branch?       | 3.4 <!-- see below -->
| 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 | none   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | none <!-- 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.
-->

This pull request is an improvement on top of #30227 and improves translations in the following ways:

- Make consistent how `This` word is translated.
- Make consistent how `This value` is translated.
- Fix capitalization rules for abbreviations.
- Change `email` to `имейл` (this is a word in the official Bulgarian dictionary).
- Removes unnecessary words in brackets.

Feel free to comment and criticize I'm not a professional translator.

Commits
-------

d15c76cd53 Make translations consistent with other translations.
2019-03-13 17:10:50 +01:00
Nicolas Grekas
26a92b1bbc bug #30518 [Cache] Fix perf when using RedisCluster by reducing roundtrips to the servers (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[Cache] Fix perf when using RedisCluster by reducing roundtrips to the servers

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

This is slimmed down version of: https://github.com/symfony/symfony/pull/28269 _(many of the fixes there are already part of 3.4)_

Does:
- Adds test coverage for Predis with RedisCluster
- Removes usage of key versioning when on RedisCluster, besides performance aspect of that it simplifies / aligning clear() handling across all clients
- reuse doDelete() from clear to make sure we call singular del calls when in predis cluster

Commits
-------

dacf17962b [Cache] Fix perf when using RedisCluster by reducing roundtrips to the servers
2019-03-13 16:58:56 +01:00
Nicolas Grekas
5218979a76 bug #30509 [Form] Fix debug form when using partial type name (yceruto)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] Fix debug form when using partial type name

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT

Since https://github.com/symfony/symfony/pull/29452 (4.3) we have the possibility of passing a partial type name. This fixes the case where `debug:form dateTime` doesn't work as expected:
```bash
In FormRegistry.php line 89:

  [Symfony\Component\Form\Exception\InvalidArgumentException]
  Could not load type "dateTime": class does not implement "Symfony\Component\Form\FormTypeInterface".
```

Commits
-------

22b20cab10 Fix debug:form dateTime
2019-03-13 16:58:09 +01:00
Nicolas Grekas
d0eb13e55a Rebase and update to latest CS 2019-03-13 16:47:52 +01:00
zenmate
fc66683cf2 Add UniqueCollection constraint and validator 2019-03-13 16:40:35 +01:00
Renan Taranto
708d759b8d [Validator] String normalization options for string-based validators 2019-03-13 16:38:44 +01:00
Simeon Kolev
d15c76cd53 Make translations consistent with other translations. 2019-03-13 17:31:25 +02:00
Grégoire Pineau
f9d3848581 minor #29457 [Workflow] Move code from ValidateWorkflowsPass to the FrameworkExtension (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Workflow] Move code from ValidateWorkflowsPass to the FrameworkExtension

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

---

Just some cleaning. See
https://github.com/symfony/symfony/pull/29146#issuecomment-44418654

Commits
-------

a608797165 [Workflow] Move code from ValidateWorkflowsPass to the FrameworkExtension
2019-03-13 16:26:34 +01:00
Grégoire Pineau
9305fe5c64 bug #30530 [Workflow] Fixed BC break with MarkingStoreInterface::setMarking() (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Workflow] Fixed BC break with `MarkingStoreInterface::setMarking()`

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #30524
| License       | MIT
| Doc PR        |

Commits
-------

7a94e5eaba [Workflow] Fixed BC break with `MarkingStoreInterface::setMarking()`
2019-03-13 16:24:02 +01:00
Nicolas Grekas
b6f3932004 feature #29303 [Messenger] add welcome notice when running the command (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] add welcome notice when running the command

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

The current behavior of `./bin/console messenger:consume-messages` is totally silent: you run it and nothing visible happens.

Here is what is displayed with this PR:
![image](https://user-images.githubusercontent.com/243674/54235039-af0a6c80-4510-11e9-89d8-3c1c55e946c0.png)

Combined with #30539, it gives:
![image](https://user-images.githubusercontent.com/243674/54235156-ed079080-4510-11e9-9d4d-9f27c87e16e5.png)

Commits
-------

673b58b964 [Messenger] add welcome notice when running the command
2019-03-13 16:19:25 +01:00
Stanislav Kocanda
b86fa9312b Correct language code for ukrainian language
in security translations.
2019-03-13 15:34:24 +01:00
Grégoire Pineau
7a94e5eaba [Workflow] Fixed BC break with MarkingStoreInterface::setMarking() 2019-03-13 10:27:38 +01:00
Nicolas Grekas
673b58b964 [Messenger] add welcome notice when running the command 2019-03-13 08:46:39 +01:00
Fabien Potencier
29f81b003f feature #30541 [BrowserKit] Rename Client to Browser (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[BrowserKit] Rename Client to Browser

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | yes
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

`Client` is very generic and used in 3 places: BrowserKit, HttpKernel, and FramewrokBundle. Each Client extends another one. So, to make things clearer, I'd like to rename Client to Browser like this:

Symfony\Component\BrowerKit\Client -> AbstractBrowser
Symfony\Component\HttpKernel\Client -> HttpKernelBrowser
Symfony\Bundle\FrameworkBundle\Client -> KernelBrowser

The next PR will introduce an `HttpBrowser` based on the new HttpClient component :)

Commits
-------

dbe4f8605b renamed Client to Browser
2019-03-12 22:00:59 +01:00
Fabien Potencier
dbe4f8605b renamed Client to Browser 2019-03-12 21:40:15 +01:00
Nicolas Grekas
a31c87798f Merge branch '4.2'
* 4.2:
  Fix README about BC promise
  Fixed typo
2019-03-12 19:57:21 +01:00
Nicolas Grekas
5ac6dd405f minor #30538 [Messenger] Fix README about BC promise (nicolas-grekas)
This PR was merged into the 4.2 branch.

Discussion
----------

[Messenger] Fix README about BC promise

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

We don't have a BC *break* policy :)
Should be applied to MIME and HttpClient when merging into master.

Commits
-------

9b2af69403 Fix README about BC promise
2019-03-12 19:56:24 +01:00
Nicolas Grekas
9b2af69403 Fix README about BC promise 2019-03-12 18:23:22 +01:00
Yonel Ceruto
f647b4a29d Fix DebugCommand when chain loader is involved 2019-03-12 11:49:41 -04:00
Teoh Han Hui
bd92349a3e
Fix return type of Request::getRequestFormat 2019-03-12 15:29:13 +01:00
Grégoire Pineau
a608797165 [Workflow] Move code from ValidateWorkflowsPass to the FrameworkExtension 2019-03-12 14:15:00 +01:00
Jules Pietri
b9162e8cfb [Form] Fixed some phpdocs 2019-03-12 14:00:52 +01:00
Grégoire Pineau
ae0adf1b9b Fixed typo 2019-03-12 12:29:59 +01:00
Nicolas Grekas
18cd3420a4 bug #30513 [HttpClient] yield a last chunk for completed responses also (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] yield a last chunk for completed responses also

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

When a response completed, streaming it again yields no chunks right now.
This PR makes it yield a `LastChunk` - or an `ErrorChunk` when applicable.
The reasoning for the previous behavior was that streams should yield only activity from the network.
But this looks more complex to use in practice. The proposed behavior is simpler to reason about I think.

Commits
-------

e11ef7ed12 [HttpClient] yield a last chunk for completed responses also
2019-03-12 09:16:06 +01:00
Nicolas Grekas
2ac5f1d08b Merge branch '4.2'
* 4.2:
  [Cache] Only delete one key at a time when on Predis + Cluster
  [Validator] Add missing translations for Swedish locale
  [Process] fix using argument $php of new PhpProcess()
  [Routing] removed a useless var
  [Routing] Fixed XML options resolution
2019-03-11 21:50:47 +01:00
Andrew Berry
2a4f8a11d4
[PropertyInfo] Use a single cache item per method 2019-03-11 16:31:39 -04:00
Nicolas Grekas
dacf17962b [Cache] Fix perf when using RedisCluster by reducing roundtrips to the servers
This is slimmed down version of: https://github.com/symfony/symfony/pull/28269 _(many of the fixes here are already part of 3.4)_

Adds:
- Test coverage for Predis with RedisCluster
- Removes usage of key versioning when on RedisCluster, besides performance aspect of that simplify / aligning clear() handling across cases
2019-03-11 15:17:09 +01:00
Nicolas Grekas
cb3c56bc0c Support indexing tagged locators by FQCN as fallback 2019-03-11 14:33:24 +01:00
Anthony MARTIN
250a2c8332 [DI] Allow tagged_locator tag to be used as an argument
Signed-off-by: Anthony MARTIN <anthony.martin@sensiolabs.com>
2019-03-11 14:33:24 +01:00
Nicolas Grekas
8af31f845d Merge branch '3.4' into 4.2
* 3.4:
  [Cache] Only delete one key at a time when on Predis + Cluster
  [Validator] Add missing translations for Swedish locale
  [Routing] removed a useless var
  [Routing] Fixed XML options resolution
2019-03-11 14:02:11 +01:00
Nicolas Grekas
21d01973f7 bug #30515 [Cache] Only delete one key at a time when on Predis + Cluster (andrerom)
This PR was merged into the 3.4 branch.

Discussion
----------

[Cache] Only delete one key at a time when on Predis + Cluster

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

Makes sure deletes when on Predis  Cluster is only done one by one as it's not able to send the keys to right cluster node like RedisCluster can.

_This is backport of logic from 4.x to fix this. With one tweak; make sure to only do this when on cluster so not all Predis users pay the penalty for it._

Commits
-------

f5ece20a83 [Cache] Only delete one key at a time when on Predis + Cluster
2019-03-11 13:58:49 +01:00
Nicolas Grekas
e11ef7ed12 [HttpClient] yield a last chunk for completed responses also 2019-03-11 12:00:28 +01:00
André R
f5ece20a83 [Cache] Only delete one key at a time when on Predis + Cluster 2019-03-11 11:49:54 +01:00
Fabien Potencier
f038da0f6b bug #30507 [Routing] Fixed XML options resolution (Jules Pietri)
This PR was merged into the 3.4 branch.

Discussion
----------

[Routing] Fixed XML options resolution

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

Found this bug while adding tests in #30501. I need it to be merged upward so it can get green there.
Thanks!

Commits
-------

53a6ff88f7 [Routing] Fixed XML options resolution
2019-03-11 11:46:25 +01:00
Fabien Potencier
0127b26a88 minor #30510 [Routing] removed a useless var (Jules Pietri)
This PR was merged into the 3.4 branch.

Discussion
----------

[Routing] removed a useless var

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

This was never documented, we should rely on `$routes->import()` instead.

Commits
-------

10c1313d41 [Routing] removed a useless var
2019-03-11 10:58:16 +01:00
Fabien Potencier
7e8b767204 minor #30512 [Validator] Add the missing translations for the Swedish ("sv") locale (lorceroth)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Add the missing translations for the Swedish ("sv") locale

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30190
| License       | MIT
| Doc PR        | -

Added the missing translations to the `src/Symfony/Component/Validator/Resources/translations/validators.sv.xlf` file.

Commits
-------

7e9f63da43 [Validator] Add missing translations for Swedish locale
2019-03-11 07:46:08 +01:00
Tobias Genberg
7e9f63da43 [Validator] Add missing translations for Swedish locale 2019-03-11 00:40:03 +01:00
Nicolas Grekas
f54c89c530 [HttpClient] add missing test case 2019-03-10 23:05:39 +01:00
Nicolas Grekas
aa6e5851f1 [Process] fix using argument $php of new PhpProcess() 2019-03-10 21:07:02 +01:00
Fabien Potencier
a96308f0ba feature #30504 [DI] replace "nullable" env processor by improving the "default" one (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DI] replace "nullable" env processor by improving the "default" one

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Neither `nullable` nor `default` are released yet.
I propose to replace the `nullable` processor (see #29767) with an improved `default` one (from #28976).
`%env(default::FOO)%` now defaults to `null` when the env var doesn't exist or compares to false".

ping @jderusse @bpolaszek

Commits
-------

c50aad2be1 [DI] replace "nullable" env processor by improving the "default" one
2019-03-10 20:40:48 +01:00
Jules Pietri
10c1313d41 [Routing] removed a useless var 2019-03-10 19:46:42 +01:00
Yonel Ceruto
22b20cab10 Fix debug:form dateTime 2019-03-10 14:20:19 -04:00
Nicolas Grekas
4619ae483d feature #30499 [HttpClient] add ResponseInterface::toArray() (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] add ResponseInterface::toArray()

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

I'd like we discuss adding a `toArray()` method to `ResponseInterface`.

JSON responses are so common when doing server-side requests that this may help remove boilerplate - especially the logic dealing with errors.

WDYT?

(about flags, I don't think we should make them configurable: if one really needs to deal with custom flags, there's always `ResponseInterface::getContent()` - but it should be very rare.).

Commits
-------

aabd1d455e [HttpClient] add ResponseInterface::toArray()
2019-03-10 18:25:55 +01:00
Nicolas Grekas
c50aad2be1 [DI] replace "nullable" env processor by improving the "default" one 2019-03-10 18:21:18 +01:00
Nicolas Grekas
c45bbd4442 Merge branch '4.2'
* 4.2:
  [TwigBridge] remove deprecation triggered when using Twig 2.7
2019-03-10 18:10:06 +01:00
Nicolas Grekas
33b881b9b7 Merge branch '3.4' into 4.2
* 3.4:
  [TwigBridge] remove deprecation triggered when using Twig 2.7
2019-03-10 18:09:50 +01:00
Nicolas Grekas
c17a5b25b5 [TwigBridge] remove deprecation triggered when using Twig 2.7 2019-03-10 18:07:42 +01:00
Jules Pietri
53a6ff88f7 [Routing] Fixed XML options resolution 2019-03-10 17:02:59 +01:00
Nicolas Grekas
6fd6b94628 Merge branch '4.2'
* 4.2:
  fix merge
2019-03-10 11:16:53 +01:00
Nicolas Grekas
11ac27d0b2 fix merge 2019-03-10 11:16:46 +01:00
Nicolas Grekas
bed7694132 Merge branch '4.2'
* 4.2: (27 commits)
  cs fix
  cs fix
  [PHPUnit-Bridge] override some environment variables
  [TwigBridge] Remove use spaceless tag
  Upgrade zookeeper ext
  [translation] Update defaut format from yml to yaml
  Change default log level for output streams
  update docblock to match the actual behavior
  Don't resolve the Deprecation error handler mode until a deprecation is triggered
  compatibility with phpunit8
  Make 'headers' key optional for encoded messages
  [Debug][DebugClassLoader] Detect annotations before blank docblock lines on final and internal methods
  Fix undefined variable fromConstructor when passing context to getTypes
  Added translations for chineese language.
  Allow 3rd argument to be null
  Remove whitespace (tab on blank line)
  [Monolog] Really reset logger when calling logger::reset()
  [Form] Fixes debug:form appears many times as type extensions configured with new getExtendedTypes method
  Update src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
  Update src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
  ...
2019-03-10 11:14:34 +01:00
Nicolas Grekas
a5951cef91 Merge branch '3.4' into 4.2
* 3.4:
  cs fix
  cs fix
  [PHPUnit-Bridge] override some environment variables
  [TwigBridge] Remove use spaceless tag
  [translation] Update defaut format from yml to yaml
  Change default log level for output streams
  update docblock to match the actual behavior
  compatibility with phpunit8
  [Debug][DebugClassLoader] Detect annotations before blank docblock lines on final and internal methods
  Added translations for chineese language.
2019-03-10 11:08:12 +01:00
Nicolas Grekas
b43cfc831d cs fix 2019-03-10 11:07:44 +01:00
Nicolas Grekas
504d4f2716 cs fix 2019-03-10 11:06:19 +01:00
Nicolas Grekas
42626744b2 bug #30496 [PHPUnit-Bridge] override some Composer environment variables (nicoweb)
This PR was merged into the 3.4 branch.

Discussion
----------

[PHPUnit-Bridge] override some Composer environment variables

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30467
| License       | MIT
| Doc PR        | -

Override `COMPOSER_VENDOR_DIR` and `COMPOSER_BIN_DIR` with their default values in PHPUnit Bridge: #30467

Commits
-------

628502645e [PHPUnit-Bridge] override some environment variables
2019-03-10 10:59:01 +01:00
Nicolas Grekas
c6a35ac106 bug #30505 [TwigBridge] Remove usages of the spaceless tag (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[TwigBridge] Remove usages of the spaceless tag

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

The spaceless tag is deprecated since version 2.7.

Commits
-------

2ee178b5c5 [TwigBridge] Remove use spaceless tag
2019-03-10 10:57:46 +01:00
nicoweb
628502645e [PHPUnit-Bridge] override some environment variables 2019-03-10 10:48:28 +01:00
Nicolas Grekas
2ee178b5c5 [TwigBridge] Remove use spaceless tag 2019-03-10 10:14:34 +01:00
Fabien Potencier
9c60490798 bug #30466 [Messenger] Make 'headers' key optional for encoded messages (yceruto)
This PR was merged into the 4.2 branch.

Discussion
----------

[Messenger] Make 'headers' key optional for encoded messages

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30455
| License       | MIT

Commits
-------

bb881c9cd0 Make 'headers' key optional for encoded messages
2019-03-09 20:40:16 +01:00
Fabien Potencier
c207cc7940 feature #30472 [Translation] Add XLIFF 1 source to metadata to differentiate from attr (ostrolucky)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Translation] Add XLIFF 1 source to metadata to differentiate from attr

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Here's our use case this patch solves:

We have 2 translation files. One is created by developer and has empty `<target>`. Second one is created by translator and has non-empty `<target>`, but same `<source>`.

Now, unlike Symfony fixtures, we also use `resname=` XLIFF1 attribute. This allows us to detect when translation is out of date, which happens when `<source>` in dev translation is changed, but `resname=` is not. As visualization which better illustrates problem:

dev.xlf:
```xml
<trans-unit id="source_is_different" resname="source_is_different">
    <source>Welcome to Calida</source>
</trans-unit>
```
real.xlf:
```xml
<trans-unit id="source_is_different" resname="source_is_different">
    <source>Welcome to Jacqueline</source>
    <target>Willkommen bei Jacqueline</target>
</trans-unit>
```

We need to be able to tell `<source>` for this pair is different (so we prepend alert glyph to translation message, to alert developer something is wrong). In current XliffFileLoader there is no way for consumer to figure out if translation key came from `resname` or `<source>`, so we had to copy whole loader.

Commits
-------

ab04f25da4 [Translation] Add XLIFF 1 source to metadata to differentiate from attr
2019-03-09 20:39:00 +01:00
Fabien Potencier
d583f80319 bug #30474 compatibility with phpunit8 (garak)
This PR was merged into the 3.4 branch.

Discussion
----------

compatibility with phpunit8

This basically adds the same phpunit8 compatibility layer added in https://github.com/symfony/symfony/pull/30084 (but for other test classes)
See also discussion in https://github.com/symfony/symfony/issues/30071

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30071
| License       | MIT
| Doc PR        | none

Commits
-------

5ef254fa65 compatibility with phpunit8
2019-03-09 20:37:12 +01:00
Fabien Potencier
cf728a599b bug #30497 [HttpKernel] Change default log level for output streams (yceruto)
This PR was merged into the 3.4 branch.

Discussion
----------

[HttpKernel] Change default log level for output streams

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes (visual)
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #27510
| License       | MIT

**BEFORE**
![default-logger-level-before](https://user-images.githubusercontent.com/2028198/54072209-94e93980-4245-11e9-855a-2d32de797072.png)

**AFTER**
![default-logger-level-after](https://user-images.githubusercontent.com/2028198/54072210-9a468400-4245-11e9-96ec-ce5334aba72c.png)

This should improve the first DX/UX for console-based apps.

Commits
-------

d69d5717cd Change default log level for output streams
2019-03-09 20:34:41 +01:00
Fabien Potencier
ee62741c43 bug #30498 [translation] Update defaut format from yml to yaml (GaryPEGEOT)
This PR was squashed before being merged into the 3.4 branch (closes #30498).

Discussion
----------

[translation] Update defaut format from yml to yaml

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #30443
| License       | MIT
| Doc PR        |

As stated in #30443 , command `php bin/console translation:update --dump-messages --force fr` will by default output the translation to yml format, which is not supported by Symfony

Commits
-------

ba42030641 [translation] Update defaut format from yml to yaml
2019-03-09 20:33:48 +01:00
Gary PEGEOT
ba42030641 [translation] Update defaut format from yml to yaml 2019-03-09 20:33:41 +01:00
Nicolas Grekas
aabd1d455e [HttpClient] add ResponseInterface::toArray() 2019-03-09 17:49:48 +01:00
Fabien Potencier
836970c776 [Mime] fixed wrong logic 2019-03-09 17:40:15 +01:00
Nicolas Grekas
0e2ea87199 [HttpClient] Remove dead code 2019-03-09 17:08:21 +01:00
Yonel Ceruto
d69d5717cd Change default log level for output streams 2019-03-09 08:26:56 -05:00
Christian Flothmann
83826daba9 update docblock to match the actual behavior 2019-03-08 19:10:13 +01:00
Emmanuel BORGES
f3a5b74dfd Don't resolve the Deprecation error handler mode until a deprecation is triggered 2019-03-08 18:11:28 +01:00
Fabien Potencier
d4326b238e bug #30491 [HttpClient] fixes (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpClient] fixes

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Spotted while playing with the client.
There is an issue with 307/308 redirects + streamed body that is not fixed here; use string bodies for now.
I'm going to look for a solution in another PR.

Commits
-------

3eca2b448d [HttpClient] fixes
2019-03-08 18:04:23 +01:00
Nicolas Grekas
3eca2b448d [HttpClient] fixes 2019-03-08 17:57:56 +01:00
Fabien Potencier
788bb812bf [Mime] added Headers::toArray() 2019-03-08 08:20:15 +01:00
Fabien Potencier
ed4a74a83a fixed logic 2019-03-08 00:10:16 +01:00
Fabien Potencier
c7a22910db fixed typo 2019-03-08 00:01:31 +01:00
Fabien Potencier
c01347fd38 feature #30482 [Mime] Fix support for date form parts (fabpot)
This PR was squashed before being merged into the 4.3-dev branch (closes #30482).

Discussion
----------

[Mime] Fix support for date form parts

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | yes <!-- 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
-------

5c8a4e3deb [Mime] removed the 2 parts constraints on Multipart (not true for DataFormPart for instance)
0450c4f244 [Mime] fixed support for date form parts
2019-03-07 23:47:35 +01:00
Fabien Potencier
5c8a4e3deb [Mime] removed the 2 parts constraints on Multipart (not true for DataFormPart for instance) 2019-03-07 23:36:31 +01:00
Fabien Potencier
0450c4f244 [Mime] fixed support for date form parts 2019-03-07 23:26:34 +01:00
Fabien Potencier
ba727ec509 minor #30480 [Mime] Use "yield from" when possible (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Mime] Use "yield from" when possible

| 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

Commits
-------

df1b627417 [Mime] used yield-from when possible
2019-03-07 23:09:42 +01:00
Fabien Potencier
df1b627417 [Mime] used yield-from when possible 2019-03-07 22:33:41 +01:00
Robin Chalas
ddd676723f feature #30385 [SecurityBundle] Validate the IPs configured in access_control (javiereguiluz)
This PR was squashed before being merged into the 4.3-dev branch (closes #30385).

Discussion
----------

[SecurityBundle] Validate the IPs configured in access_control

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30299
| License       | MIT
| Doc PR        | -

Commits
-------

857ac9519e [SecurityBundle] Validate the IPs configured in access_control
2019-03-07 21:34:44 +01:00
Javier Eguiluz
857ac9519e [SecurityBundle] Validate the IPs configured in access_control 2019-03-07 21:34:33 +01:00
Fabien Potencier
790854989e feature #30413 [HttpClient][Contracts] introduce component and related contracts (nicolas-grekas)
This PR was squashed before being merged into the 4.3-dev branch (closes #30413).

Discussion
----------

[HttpClient][Contracts] introduce component and related contracts

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #28628
| License       | MIT
| Doc PR        | -

This PR introduces new `HttpClient` contracts and
component. It makes no compromises between DX, performance, and design.
Its surface should be very simple to use, while still flexible enough
to cover most advanced use cases thanks to streaming+laziness.

Common existing HTTP clients for PHP rely on PSR-7, which is complex
and orthogonal to the way Symfony is designed. More reasons we need
this in core are the [package principles](https://en.wikipedia.org/wiki/Package_principles): if we want to be able to keep our
BC+deprecation promises, we have to build on more stable and more
abstract dependencies than Symfony itself. And we need an HTTP client
for e.g. Symfony Mailer or #27738.

The existing state-of-the-art puts a quite high bar in terms of features we must
support if we want any adoption. The code in this PR aims at implementing an
even better HTTP client for PHP than existing ones, with more (useful) features
and a better architecture. What a pitch :)

Two full implementations are provided:
 - `NativeHttpClient` is based on the native "http" stream wrapper.
   It's the most portable one but relies on a blocking `fopen()`.
 - `CurlHttpClient` relies on the curl extension. It supports full
   concurrency and HTTP/2, including server push.

Here are some examples that work with both clients.

For simple cases, all the methods on responses are synchronous:

```php
$client = new NativeHttpClient();

$response = $client->get('https://google.com');

$statusCode = $response->getStatusCode();
$headers = $response->getHeaders();
$content = $response->getContent();
```

By default, clients follow redirects. On `3xx`, `4xx` or `5xx`, the `getHeaders()` and `getContent()` methods throw an exception, unless their `$throw` argument is set to `false`.
This is part of the "failsafe" design of the component. Another example of this
failsafe property is that broken dechunk or gzip streams always trigger an exception,
unlike most other HTTP clients who can silently ignore the situations.

An array of options allows adjusting the behavior when sending requests.
They are documented in `HttpClientInterface`.

When several responses are 1) first requested in batch, 2) then accessed
via any of their public methods, requests are done concurrently while
waiting for one.

For more advanced use cases, when streaming is needed:

Streaming the request body is possible via the "body" request option.
Streaming the response content is done via client's `stream()` method:

```php
$client = new CurlHttpClient();

$response = $client->request('GET', 'http://...');

$output = fopen('output.file', 'w');

foreach ($client->stream($response) as $chunk) {
    fwrite($output, $chunk->getContent());
}
```

The `stream()` method also works with multiple responses:

```php
$client = new CurlHttpClient();
$pool = [];

for ($i = 0; $i < 379; ++$i) {
    $uri = "https://http2.akamai.com/demo/tile-$i.png";
    $pool[] = $client->get($uri);
}

$chunks = $client->stream($pool);

foreach ($chunks as $response => $chunk) {
    // $chunk is a ChunkInterface object
    if ($chunk->isLast()) {
        $content = $response->getContent();
    }
}
```

The `stream()` method accepts a second `$timeout` argument: responses that
are *inactive* for longer than the timeout will emit an empty chunk to signal
it. Providing `0` as timeout allows monitoring responses in a non-blocking way.

Implemented:
 - flexible contracts for HTTP clients
 - `fopen()` + `curl`-based clients with close feature parity
 - gzip compression enabled when possible
 - streaming multiple responses concurrently
 - `base_uri` option for scoped clients
 - progress callback with detailed info and able to cancel the request
 - more flexible options for precise behavior control
 - flexible timeout management allowing e.g. server sent events
 - public key pinning
 - auto proxy configuration via env vars
 - transparent IDN support
 - `HttpClient::create()` factory
 - extensive error handling, e.g. on broken dechunk/gzip streams
 - time stats, primary_ip and other info inspired from `curl_getinfo()`
 - transparent HTTP/2-push support with authority validation
 - `Psr18Client` for integration with libs relying on PSR-18
 - free from memory leaks by avoiding circular references
 - fixed handling of redirects when using the `fopen`-based client
 - DNS cache pre-population with `resolve` option

Help wanted (can be done after merge):
 - `FrameworkBundle` integration: autowireable alias + semantic configuration for default options
 - add `TraceableHttpClient` and integrate with the profiler
 - logger integration
 - add a mock client

More ideas:
 - record/replay like CsaGuzzleBundle
 - use raw sockets instead of the HTTP stream wrapper
 - `cookie_jar` option
 - HTTP/HSTS cache
 - using the symfony CLI binary to test ssl-related options, HTTP/2-push, etc.
 - add "auto" mode to the "buffer" option, based on the content-type? or array of content-types to buffer
 - *etc.*

Commits
-------

fc83120691 [HttpClient] Add Psr18Client - aka a PSR-18 adapter
8610668c1c [HttpClient] introduce the component
d2d63a28e1 [Contracts] introduce HttpClient contracts
2019-03-07 17:32:39 +01:00
Nicolas Grekas
fc83120691 [HttpClient] Add Psr18Client - aka a PSR-18 adapter 2019-03-07 17:16:39 +01:00
Nicolas Grekas
8610668c1c [HttpClient] introduce the component 2019-03-07 17:16:39 +01:00
Nicolas Grekas
d2d63a28e1 [Contracts] introduce HttpClient contracts 2019-03-07 17:16:38 +01:00
Massimiliano Arione
5ef254fa65
compatibility with phpunit8 2019-03-07 15:35:35 +01:00
Yonel Ceruto
bb881c9cd0 Make 'headers' key optional for encoded messages 2019-03-07 07:30:32 -05:00
Gabriel Ostrolucký
ab04f25da4
[Translation] Add XLIFF 1 source to metadata to differentiate from attr 2019-03-07 09:54:57 +01:00
Nicolas Grekas
81faf423ff feature #30377 [Validator] add MIR card scheme (antonch1989)
This PR was squashed before being merged into the 4.3-dev branch (closes #30377).

Discussion
----------

[Validator] add MIR card scheme

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30376
| License       | MIT

Commits
-------

aecb33a620 [Validator] add MIR card scheme
2019-03-07 09:22:46 +01:00
Anton Chernikov
aecb33a620 [Validator] add MIR card scheme 2019-03-07 09:22:39 +01:00
Nicolas Grekas
eb2972e7f7 bug #30396 [Form] Avoid a form type extension appears many times in debug:form (markitosgv)
This PR was merged into the 4.2 branch.

Discussion
----------

[Form] Avoid a form type extension appears many times in debug:form

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30394    <!-- #-prefixed issue number(s), if any -->
| License       | MIT

This PR fixes #30394. Avoid a form type extension appears many times in debug:form command. This is caused by new 4.2 feature getExtendedTypes().

Commits
-------

c4be39ce21 [Form] Fixes debug:form appears many times as type extensions configured with new getExtendedTypes method
2019-03-07 09:16:29 +01:00
Grégoire Pineau
7d5b7a3392 [Workflow] Added a context to Workflow::apply() 2019-03-06 19:14:46 +01:00
Thomas Calvet
e97ea77af5 [Debug][DebugClassLoader] Detect annotations before blank docblock lines on final and internal methods 2019-03-06 15:53:23 +01:00
Fabien Potencier
f8664e7703 feature #30433 [Form] Allow to disable and customize PercentType symbol (Ken Stanley, OskarStark)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] Allow to disable and customize PercentType symbol

| 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 | #28796   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#11078

<!--
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.
-->

## `PercentType` `symbol` option
As of this writing, Symfony will forcibly append a percentage sign (`%`) to all input fields that are of the PercentType form type. This PR will introduce a boolean flag called `symbol` that, when `false`, will not display the percentage sign. Each of the default layouts that define percent_widget will respect this option. You could also use a customised string as value for `symbol` option.

By default, this new option will be set to `true` so that it maintains backward compatibility. The unit tests have been updated where appropriate, and a new unit test has been added (as appropriate).

Commits
-------

53c5f41f37 [Form] Allow to disable and customize PercentType symbol
9aeaea06fc Add ‘symbol’ option to PercentType
2019-03-05 11:16:31 +01:00
alfidinouhail
3be1850dcb Added translations for chineese language. 2019-03-05 11:00:34 +01:00
Oskar Stark
53c5f41f37 [Form] Allow to disable and customize PercentType symbol 2019-03-05 11:00:13 +01:00
Fabien Potencier
af52f6e7d8 bug #30361 [PropertyInfo] Fix undefined variable fromConstructor when passing context to getTypes (mantis, OskarStark)
This PR was merged into the 4.2 branch.

Discussion
----------

[PropertyInfo] Fix undefined variable fromConstructor when passing context to getTypes

| Q             | A
| ------------- | ---
| Branch?       | 4.1, 4.2, master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | symfony/symfony-docs#10969
| License       | MIT
| Doc PR        |

If passing context to getTypes, it checks value of $context['enable_constructor_extraction'] for true/false or the constructor value of enableConstructorExtraction and should then populate fromConstructor if necessary. The missing brackets around the first part of this check mean that fromConstructor is only applied if context is not set.

This fixes the issue described at [symfony/symfony-docs#10969](https://github.com/symfony/symfony-docs/pull/10969)

Commits
-------

8e401afa37 Allow 3rd argument to be null
04dc6921bd Remove whitespace (tab on blank line)
a0aa15a41e Update src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
c2986d5e40 Update src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
42995c859c Update src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
2d88298ace Update src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
e43a3bce11 Update ReflectionExtractorTest.php
2c91c754bc Update ReflectionExtractorTest.php
5acc85c48b Update ReflectionExtractorTest.php
d0a2dc0a2d Update ReflectionExtractorTest.php
be8d14a129 Fix undefined variable fromConstructor when passing context to getTypes
2019-03-05 10:45:59 +01:00
Fabien Potencier
c877cf8264 feature #30408 [HttpKernel] Better exception page when the invokable controller returns nothing (dimabory)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[HttpKernel] Better exception page when the invokable controller returns nothing

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #27138
| License       | MIT
| Doc PR        |

---

__Prerequisites__
_Configure invokable controller_
```php
# config/routes.yaml
index:
    path: /
    controller: App\Controller\Start
```

__Before:__
![before](https://user-images.githubusercontent.com/11414342/53577698-ca739000-3b7e-11e9-98ac-8c8e27626fbe.png)

__After:__
![after](https://user-images.githubusercontent.com/11414342/53577733-df502380-3b7e-11e9-8377-a4a97ea73df8.png)

---

Take a look for an enhancement/refactoring in `HttpKernel.php`

Commits
-------

f6c1622fb5 [HttpKernel] Better exception page when the invokable controller returns nothing
2019-03-05 10:44:46 +01:00
Fabien Potencier
203cfc47b4 bug #30410 [Monolog] Really reset logger when calling logger::reset() (lyrixx)
This PR was merged into the 4.2 branch.

Discussion
----------

[Monolog] Really reset logger when calling logger::reset()

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

08a20ee0ba [Monolog] Really reset logger when calling logger::reset()
2019-03-05 10:43:41 +01:00
Ken Stanley
9aeaea06fc Add ‘symbol’ option to PercentType 2019-03-05 09:34:20 +01:00
Dmytro
f6c1622fb5 [HttpKernel] Better exception page when the invokable controller returns nothing 2019-03-05 10:07:05 +02:00
Mantis Development
8e401afa37
Allow 3rd argument to be null 2019-03-04 22:36:58 +00:00
Mantis Development
04dc6921bd
Remove whitespace (tab on blank line) 2019-03-04 22:04:58 +00:00
Fabien Potencier
0034e14463 feature #30325 [HttpKernel] Prevent search engines from indexing dev applications (GaryPEGEOT)
This PR was squashed before being merged into the 4.3-dev branch (closes #30325).

Discussion
----------

[HttpKernel] Prevent search engines from indexing dev applications

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30318
| License       | MIT
| Doc PR        | TODO

Add the *X-Robots-Tag: noindex* to dev (and test) applications to prevent search engines to index them.

Commits
-------

3dd86719bf [HttpKernel] Prevent search engines from indexing dev applications
2019-03-04 21:45:15 +01:00
Gary PEGEOT
3dd86719bf [HttpKernel] Prevent search engines from indexing dev applications 2019-03-04 21:45:08 +01:00
Fabien Potencier
11f1660b93 bug #30445 [Mime] Fix generate message id with named address (Jibbarth)
This PR was squashed before being merged into the 4.3-dev branch (closes #30445).

Discussion
----------

[Mime] Fix generate message id with named address

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| 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 | #...   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        |

When using a NamedAddress in from(), the generated MessageId don't pass the validation.
In effect, the email passed to generateMessageId look like this `Fabien <fabien@symfony.com>` and the strstr transform email in this `4641b2b294b53fe983a05b1a@symfony.com>`
By passing the address only instead of toString, it's fixed.

<!--
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
-------

375ac9237f [Mime] Fix generate message id with named address
2019-03-04 21:36:48 +01:00
Jibé Barth
375ac9237f [Mime] Fix generate message id with named address 2019-03-04 21:36:41 +01:00
Fabien Potencier
a75dd9feb1 feature #30390 [FrameworkBundle] Fix UrlGenerator::generate to return an empty string instead of null (Emmanuel BORGES)
This PR was squashed before being merged into the 4.3-dev branch (closes #30390).

Discussion
----------

[FrameworkBundle] Fix UrlGenerator::generate to return an empty string instead of null

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30306
| License       | MIT

Fix #30306 : Controller::generateUrl() must be of the type string, null returned

Commits
-------

c5b1247977 [FrameworkBundle] Fix UrlGenerator::generate to return an empty string instead of null
2019-03-04 21:07:50 +01:00
Emmanuel BORGES
c5b1247977 [FrameworkBundle] Fix UrlGenerator::generate to return an empty string instead of null 2019-03-04 21:07:39 +01:00
Christian Flothmann
fff93acf92 [Mime] remove some @final annotations 2019-03-04 14:12:17 +01:00
Christian Flothmann
22ef4589a9 add back accidentally removed code 2019-03-04 13:19:55 +01:00
Nicolas Grekas
07c4a61681 Merge branch '4.2'
* 4.2:
  Fix typo
  fix required DependencyInjection component version
2019-03-04 12:48:42 +01:00
Nicolas Grekas
ed78e71c88 Merge branch '3.4' into 4.2
* 3.4:
  Fix typo
  fix required DependencyInjection component version
2019-03-04 12:47:55 +01:00
Nicolas Grekas
e03545a299 Fix typo 2019-03-04 12:46:21 +01:00
Nicolas Grekas
c360f845df minor #30438 fix required DependencyInjection component version (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

fix required DependencyInjection component version

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

ec64d8c94d fix required DependencyInjection component version
2019-03-04 12:43:52 +01:00
Christian Flothmann
ec64d8c94d fix required DependencyInjection component version 2019-03-04 12:28:05 +01:00
Fabien Potencier
de72deacc3 Merge branch '4.2'
* 4.2:
  detect annotations before blank docblock lines
  Serializer: Use the context in supports calls
2019-03-04 12:23:10 +01:00
Fabien Potencier
981550ba14 Merge branch '3.4' into 4.2
* 3.4:
  detect annotations before blank docblock lines
2019-03-04 12:23:00 +01:00
Fabien Potencier
9d791132d9 bug #30437 [Debug] detect annotations before blank docblock lines (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Debug] detect annotations before blank docblock lines

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

This fixes the tests and a small issue after the CS changes made in df1d50dcc2 for #29920.

Commits
-------

dedd526b19 detect annotations before blank docblock lines
2019-03-04 12:21:48 +01:00
Christian Flothmann
dedd526b19 detect annotations before blank docblock lines 2019-03-04 11:54:25 +01:00
Fabien Potencier
b727f59e01 feature #30375 [Messenger] Added transport agnostic exception (nikossvnk, lolmx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Messenger] Added transport agnostic exception

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30346
| License       | MIT
| Doc PR        | TODO

As described in #30346, client code shouldn't care about which transport is currently used by the message bus. This pr adds a new generic exception that is thrown by the `AmqpSender` if the message couldn't be delivered.

Commits
-------

7d6a3fa487 Updated changelog to document changes in AmqpReceiver
62a08eeea0 Updated exception message in AmqpSender, updated AmqpReceiver to throw new TransportException
b2b0640d80 Chain new exception with previous one
06c84040c4 forgot one backslash, my bad
93c10013fa [Messenger] Added new TransportException which is thrown if transport could not send a message
2019-03-04 11:53:27 +01:00
Nicolas Grekas
aa6a60ead6 [Contracts] bump branch alias 2019-03-04 11:50:13 +01:00
soyuka
a02ad96336
Serializer: Use the context in supports calls 2019-03-04 11:48:31 +01:00
Fabien Potencier
ba953d984f Merge branch '4.2'
* 4.2:
  moved XSD to HTTPS
  moved XSD to HTTPS
2019-03-04 11:47:02 +01:00
Fabien Potencier
129c616092 moved XSD to HTTPS 2019-03-04 11:46:52 +01:00
Fabien Potencier
a72c0ac6bd Merge branch '3.4' into 4.2
* 3.4:
  moved XSD to HTTPS
2019-03-04 11:46:38 +01:00
Fabien Potencier
e3c0878661 moved XSD to HTTPS 2019-03-04 11:46:26 +01:00
Fabien Potencier
774a89c085 moved XSD to HTTPS 2019-03-04 11:38:54 +01:00
Fabien Potencier
ecb5378c41 Merge branch '4.2'
* 4.2:
  moved XSD to HTTPS
  moved XSD to HTTPS
2019-03-04 11:38:40 +01:00
Fabien Potencier
50dc0d2550 moved XSD to HTTPS 2019-03-04 11:38:31 +01:00
Fabien Potencier
b82d3b969f Merge branch '3.4' into 4.2
* 3.4:
  moved XSD to HTTPS
2019-03-04 11:37:56 +01:00
Eric Masoero
7d6a3fa487 Updated changelog to document changes in AmqpReceiver 2019-03-04 11:14:17 +01:00
Eric Masoero
62a08eeea0 Updated exception message in AmqpSender, updated AmqpReceiver to throw new TransportException 2019-03-04 11:14:17 +01:00
Eric Masoero
b2b0640d80 Chain new exception with previous one 2019-03-04 11:14:17 +01:00
nikos.sotiropoulos
06c84040c4 forgot one backslash, my bad 2019-03-04 11:14:17 +01:00
Eric Masoero
93c10013fa [Messenger] Added new TransportException which is thrown if transport could not send a message 2019-03-04 11:14:17 +01:00
Fabien Potencier
95e90b87b6 moved XSD to HTTPS 2019-03-04 11:06:18 +01:00
Fabien Potencier
0db9b30e14 fixed typo 2019-03-04 10:25:03 +01:00
Fabien Potencier
90b68826e9 feature #29254 [FrameworkBundle] Added the condition routing option to the debug router command (soufianZantar)
This PR was squashed before being merged into the 4.3-dev branch (closes #29254).

Discussion
----------

[FrameworkBundle] Added the condition routing option to the debug router command

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| 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 |   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        |  <!-- 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.
-->
This PR will add the condition routing option to debug:router command, to show if a route have conditions or not and showing this conditions.

Commits
-------

92bdc9b5f4 [FrameworkBundle] Added the condition routing option to the debug router command
2019-03-04 10:24:25 +01:00
Soufian EZ ZANTAR
92bdc9b5f4 [FrameworkBundle] Added the condition routing option to the debug router command 2019-03-04 10:21:00 +01:00
Fabien Potencier
6c4ab8942e fixed CS 2019-03-04 10:20:13 +01:00
Fabien Potencier
8b636ef18e Merge branch '4.2'
* 4.2:
  fixed CS
  Autoconfig: don't automatically tag decorators
  removed suggestion
  [PropertyAccess] Fixed PropertyPathBuilder remove that fails to reset internal indexes
  bumped Symfony version to 4.2.5
  updated VERSION for 4.2.4
  updated CHANGELOG for 4.2.4
  bumped Symfony version to 3.4.24
  updated VERSION for 3.4.23
  update CONTRIBUTORS for 3.4.23
  updated CHANGELOG for 3.4.23
  [Routing][ServiceRouterLoader] Remove an outdated comment
2019-03-04 10:16:46 +01:00
Fabien Potencier
617bd80273 Merge branch '3.4' into 4.2
* 3.4:
  fixed CS
  removed suggestion
  [PropertyAccess] Fixed PropertyPathBuilder remove that fails to reset internal indexes
  bumped Symfony version to 3.4.24
  updated VERSION for 3.4.23
  update CONTRIBUTORS for 3.4.23
  updated CHANGELOG for 3.4.23
  [Routing][ServiceRouterLoader] Remove an outdated comment
2019-03-04 10:16:25 +01:00
Fabien Potencier
df1d50dcc2 fixed CS 2019-03-04 10:11:50 +01:00
Kévin Dunglas
05ecf829fe Autoconfig: don't automatically tag decorators 2019-03-04 09:49:34 +01:00
Nicolas Grekas
05d6475c5e Drop more usages of Serializable 2019-03-04 09:45:35 +01:00
Fabien Potencier
62e7f7dc78 removed suggestion 2019-03-04 09:36:25 +01:00
Fabien Potencier
6f273c8e34 minor #30403 [Routing][ServiceRouterLoader] Remove an outdated comment (fancyweb)
This PR was merged into the 3.4 branch.

Discussion
----------

[Routing][ServiceRouterLoader] Remove an outdated comment

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Since 0043653ea8, this comment is technically false.

Commits
-------

a2b73489dd [Routing][ServiceRouterLoader] Remove an outdated comment
2019-03-04 09:35:44 +01:00
Greg ORIOL
479dff4f8a [PropertyAccess] Fixed PropertyPathBuilder remove that fails to reset internal indexes 2019-03-04 07:36:31 +01:00
Fabien Potencier
ec8033f4a9 feature #30379 [FrameworkBundle][Routing] allow boolean container parameters for routes (dmaicher)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[FrameworkBundle][Routing] allow boolean container parameters for routes

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30366
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/11059

This fixes https://github.com/symfony/symfony/issues/30366 and adds support for boolean container parameters in route conditions, defaults etc.

Commits
-------

21f4e38800 [FrameworkBundle][Routing] allow boolean container parameters for routes
2019-03-04 07:35:11 +01:00
Fabien Potencier
1e94c50699 feature #29661 [Filesystem] Support resources and deprecate using arrays in dumpFile() and appendToFile() (thewilkybarkid)
This PR was squashed before being merged into the 4.3-dev branch (closes #29661).

Discussion
----------

[Filesystem] Support resources and deprecate using arrays in dumpFile() and appendToFile()

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Running PHPStan on my project picked up that passing a resource to `Filesystem::dumpFile()` didn't match the documented type.

I found this has been discussed in #20980 and #28019, without a clear result. But, my reading is that only strings should be supported. While I think that not supporting streams makes this a lot less useful (and I'm going to switch away from it), this does need to be resolved. So, I've deprecated using arrays and resources.

Commits
-------

0eaf9d2474 [Filesystem] Support resources and deprecate using arrays in dumpFile() and appendToFile()
2019-03-03 22:36:26 +01:00
Chris Wilkinson
0eaf9d2474 [Filesystem] Support resources and deprecate using arrays in dumpFile() and appendToFile() 2019-03-03 22:36:18 +01:00
Fabien Potencier
7535383163 bumped Symfony version to 4.2.5 2019-03-03 20:47:05 +01:00
Fabien Potencier
ea78c21cb6 updated VERSION for 4.2.4 2019-03-03 20:38:09 +01:00
Fabien Potencier
4203bef6f3 bumped Symfony version to 3.4.24 2019-03-03 20:25:29 +01:00
Fabien Potencier
16881cb72d updated VERSION for 3.4.23 2019-03-03 19:52:34 +01:00
Fabien Potencier
e1d8a5aeae Merge branch '4.2'
* 4.2:
  Removed non-existing parameters for LogoutUrlGenerator calls
  [WebProfilerBundle] toolbar: invisible route name in Firefox
  Drop spurious execution bit
  [HttpKernel] Correctly merging cache directives in HttpCache/ResponseCacheStrategy
  [Validator] Add the missing translations for the Latvian ("lv") locale
  Fixed the DebugClassLoader compatibility with eval()'d code on Darwin
  [Validator] Update Serbian translation file
2019-03-03 19:12:18 +01:00
Fabien Potencier
c52dcc40a8 Merge branch '3.4' into 4.2
* 3.4:
  Removed non-existing parameters for LogoutUrlGenerator calls
  [HttpKernel] Correctly merging cache directives in HttpCache/ResponseCacheStrategy
  [Validator] Add the missing translations for the Latvian ("lv") locale
  Fixed the DebugClassLoader compatibility with eval()'d code on Darwin
  [Validator] Update Serbian translation file
2019-03-03 19:11:24 +01:00
Fabien Potencier
e1d44375ca feature #30358 [Form] be able to specify the input format for times (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] be able to specify the input format for times

| 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 expands the work started in #29887 to also allow to configure the input format for string inputs in the `TimeType`.

Commits
-------

2d9bc18c1b be able to specify the input format for times
2019-03-03 19:05:04 +01:00
tsantos
b3d536f04d [PropertyInfo] Removed useless namespace 2019-03-03 07:59:38 -03:00
Thomas Schulz
d3ee2b676e Removed non-existing parameters for LogoutUrlGenerator calls 2019-03-02 17:24:44 +01:00
Fabien Potencier
a07627ea9a fixed tests 2019-03-02 15:55:10 +01:00
Fabien Potencier
ee787d17b4 [Mime] added classes for generating MIME messages 2019-03-02 15:10:47 +01:00
Grégoire Pineau
08a20ee0ba [Monolog] Really reset logger when calling logger::reset() 2019-02-28 18:49:31 +01:00
Fabien Potencier
675c45850c bug #30383 [WebProfilerBundle] toolbar: invisible route name in Firefox (inmarelibero)
This PR was squashed before being merged into the 4.2 branch (closes #30383).

Discussion
----------

[WebProfilerBundle] toolbar: invisible route name in Firefox

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29858
| License       | MIT
| Doc PR        | -

This fixes #29858, fixing a bug that prevents Route name displaying in debug toolbar on Firefox

Commits
-------

6b6bd453e1 [WebProfilerBundle] toolbar: invisible route name in Firefox
2019-02-28 15:59:51 +01:00
Emanuele Gaspari
6b6bd453e1 [WebProfilerBundle] toolbar: invisible route name in Firefox 2019-02-28 15:59:23 +01:00
Thomas Calvet
a2b73489dd [Routing][ServiceRouterLoader] Remove an outdated comment 2019-02-27 23:16:31 +01:00
Marcos Gómez Vilches
c4be39ce21 [Form] Fixes debug:form appears many times as type extensions configured with new getExtendedTypes method 2019-02-27 15:40:07 +01:00
David Prévot
93dab5c381 Drop spurious execution bit 2019-02-26 17:31:50 -10:00
Fabien Potencier
91c5b14d8b bug #30380 [WebProfilerBundle] Fix row update on finish ajax request (yceruto)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[WebProfilerBundle] Fix row update on finish ajax request

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

```
Uncaught TypeError: Cannot read property 'setAttribute' of undefined
    at finishAjaxRequest
    at XMLHttpRequest.<anonymous>
```

Continuation of https://github.com/symfony/symfony/pull/30130

Commits
-------

ff9e494776 Fix row update on finish ajax request
2019-02-26 12:14:15 +01:00
Nicolas Grekas
5754846683 Merge branch '4.2'
* 4.2:
  Fix git diff marker
  Removed eval() from KernelShutdownOnTearDownTrait
2019-02-26 09:35:29 +01:00
Soner Sayakci
d631bd96ac
Fix git diff marker 2019-02-26 09:03:39 +01:00
Yonel Ceruto
ff9e494776 Fix row update on finish ajax request 2019-02-25 16:12:18 -05:00
David Maicher
21f4e38800 [FrameworkBundle][Routing] allow boolean container parameters for routes 2019-02-25 19:39:36 +01:00
Fabien Potencier
d2e9a7051f feature #22048 [Security] deprecate the Role and SwitchUserRole classes (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Security] deprecate the Role and SwitchUserRole classes

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #20824
| License       | MIT
| Doc PR        | symfony/symfony-docs#11047

In #20801, we deprecated the `RoleInterface`. The next logical step would be to also deprecate the `Role` class. However, we currently have the `SwitchUserRole` class (a sub-class of `Role`) that acts as an indicator to check whether or not the authenticated user switched to another user.

This PR proposes an alternative solution to the usage of the special `SwitchUserRole` class by storing the original token inside the `UsernamePasswordToken`. This PR is not complete, but rather acts as a proof of concept of how we could get rid of the `Role` and the `SwitchUserRole` classes.

Please share your opinions whether you think this is a valid approach and I will be happy to finalise the PR.

Commits
-------

d7aaa615b9 deprecate the Role and SwitchUserRole classes
2019-02-25 17:04:33 +01:00
Fabien Potencier
c8d6decb61 minor #30374 [Validator] Add the missing translations for the Latvian ("lv") locale #30174 (k0d3r1s)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Add the missing translations for the Latvian ("lv") locale #30174

Fixes #30174

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30174
| License       | MIT
| Doc PR        | -

Commits
-------

86b8c253c7 [Validator] Add the missing translations for the Latvian ("lv") locale
2019-02-25 16:58:38 +01:00
Fabien Potencier
bb903594ee bug #26532 [HttpKernel] Correctly merging cache directives in HttpCache/ResponseCacheStrategy (aschempp)
This PR was squashed before being merged into the 3.4 branch (closes #26532).

Discussion
----------

[HttpKernel] Correctly merging cache directives in HttpCache/ResponseCacheStrategy

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #26245, #26352, #28872
| License       | MIT
| Doc PR        | -

This PR is a first draft to fix the incorrect merging of private and other cache-related headers that are not meant for the shared cache but the browser (see mentioned issues).

The existing implementation of `HttpFoundation\Response` is very much tailored to the `HttpCache`, for example `isCacheable` returns `false` if the response is `private`, which is not true for a browser cache. That is why my implementation does not longer use much of the response methods. They are however still used by the `HttpCache` and we should keep them as-is. FYI, the `ResponseCacheStrategy` does **not** affect the stored data of `HttpCache` but is only applied to the result of multiple merged subrequests/ESI responses.

I did read up a lot on RFC2616 as a reference. [Section 13.4](https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.4) gives an overall view of when a response MAY be cached. [Section 14.9.1](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1) has more insight into the `Cache-Control` directives.

Here's a summary of the relevant information I applied to the implementation:

 - > Unless specifically constrained by a cache-control (section 14.9) directive, a caching system MAY always store a successful response (see section 13.8) as a cache entry, MAY return it without validation if it is fresh, and MAY return it after successful validation.

    A response without cache control headers is totally fine, and it's up to the cache (shared or private) to decide what to do with it. That is why the implementation does not longer set `no-cache` if no `Cache-Control` headers are present.

 - > A response received with a status code of 200, 203, 206, 300, 301 or 410 MAY be stored […] unless a cache-control directive prohibits caching.

    > A response received with any other status code (e.g. status codes 302 and 307) MUST NOT be returned […] unless there are cache-control directives or another header(s) that explicitly allow it.

    This is what `ResponseCacheStrategy::isUncacheable` implements to decide whether a response is not cacheable at all. It differs from `Response::isCacheable` which only returns true if there are actual `Cache-Control` headers.

 - > [Section 13.2.3](https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.2.3): When a response is generated from a cache entry, the cache MUST include a single Age header field in the response with a value equal to the cache entry's current_age.

    That's why the implementation **always** adds the `Age` header. It takes the oldest age of any of the responses as common denominator for the content.

 - > [Section 14.9.3](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.3): If a response includes an s-maxage directive, then for a shared cache (but not for a private cache), the maximum age specified by this directive overrides the maximum age specified by either the max-age directive or the Expires header.

    This effectively means that `max-age`, `s-maxage` and `Expires` must all be kept on the response. My implementation assumes that we can only do that if they exist in **all** of the responses, and then takes the lowest value of any of them. Be aware the implementation might look confusing at first. Due to the fact that the `Age` header might come from another subresponse than the lowest expiration value, the values are stored relative to the current response date and then re-calculated based on the age header.

The Symfony implementation did not and still does not implement the full RFC. As an example, some of the `Cache-Control` headers (like `private` and `no-cache`) MAY actually have a string value, but the implementation only supports boolean. Also, [Custom `Cache-Control` headers](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.6) are currently not merged into the final response.

**ToDo/Questions:**

 1. [Section 13.5.2](https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.5.2) specifies that we must add a [`Warning 214 Transformation applied`](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.46) if we modify the response headers.

 2. Should we add an `Expires` headers based on `max-age` if none is explicitly set in the responses? This would essentially provide the same information as `max-age` but with support for HTTP/1.0 proxies/clients.

 3. I'm not sure about the implemented handling of the `private` directive. The directive is currently only added to the final response if it is present in all of the subresponses. This can effectively result in no cache-control directive, which does not tell a shared cache that the response must not be cached. However, adding a `private` might also tell a browser to actually cache it, even though non of the other responses asked for that.

 4. > [Section 14.9.2](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.2): The purpose of the `no-store` directive is to prevent the inadvertent release or retention of sensitive information […]. The `no-store` directive applies to the entire message, and MAY be sent either in a response or in a request. If sent in a request, a cache MUST NOT store any part of either this request or any response to it. If sent in a response, a cache MUST NOT store any part of either this response or the request that elicited it.

    I have not (yet) validated whether the `HttpCache` implementation respects any of this.

 5. As far as I understand, the current implementation of [`ResponseHeaderBag::computeCacheControlValue`](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/ResponseHeaderBag.php#L313) is incorrect. `no-cache` means a response [must not be cached by a shared or private cache](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1), which overrides `private` automatically.

 5. The unit tests are still very limited and I want to add plenty more to test and sort-of describe the implementation or assumptions on the RFC.

/cc @nicolas-grekas

#SymfonyConHackday2018

Commits
-------

893118f978 [HttpKernel] Correctly merging cache directives in HttpCache/ResponseCacheStrategy
2019-02-25 12:22:17 +01:00
Andreas Schempp
893118f978 [HttpKernel] Correctly merging cache directives in HttpCache/ResponseCacheStrategy 2019-02-25 12:22:09 +01:00
Dāvis Zālītis
86b8c253c7
[Validator] Add the missing translations for the Latvian ("lv") locale
Fixes #30174
2019-02-25 11:32:21 +02:00
Christian Flothmann
2d9bc18c1b be able to specify the input format for times 2019-02-25 09:54:42 +01:00
Pascal Luna
6c2aa2446d Fixed the DebugClassLoader compatibility with eval()'d code on Darwin 2019-02-24 16:45:11 +01:00
Grégoire Pineau
17533da49c [Monolog] Disable DebugLogger in CLI 2019-02-24 14:22:28 +01:00
Maxime Steinhausser
32c90ebc8e [Serializer] Normalize constraint violation parameters 2019-02-24 12:04:56 +01:00
Pascal Luna
324b70afa3 Removed eval() from KernelShutdownOnTearDownTrait 2019-02-24 02:12:10 +00:00
Oskar Stark
a0aa15a41e
Update src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
Co-Authored-By: mantis <mantis@users.noreply.github.com>
2019-02-23 19:26:32 +00:00
Oskar Stark
c2986d5e40
Update src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
Co-Authored-By: mantis <mantis@users.noreply.github.com>
2019-02-23 19:26:31 +00:00
Oskar Stark
42995c859c
Update src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
Co-Authored-By: mantis <mantis@users.noreply.github.com>
2019-02-23 19:26:31 +00:00
Oskar Stark
2d88298ace
Update src/Symfony/Component/PropertyInfo/Tests/Extractor/ReflectionExtractorTest.php
Co-Authored-By: mantis <mantis@users.noreply.github.com>
2019-02-23 19:26:30 +00:00
Mantis Development
e43a3bce11
Update ReflectionExtractorTest.php 2019-02-23 19:26:00 +00:00
Mantis Development
2c91c754bc
Update ReflectionExtractorTest.php 2019-02-23 19:25:30 +00:00
Mantis Development
5acc85c48b
Update ReflectionExtractorTest.php 2019-02-23 19:25:30 +00:00
Mantis Development
d0a2dc0a2d
Update ReflectionExtractorTest.php
Add test case
2019-02-23 19:25:30 +00:00
Mantis Development
be8d14a129
Fix undefined variable fromConstructor when passing context to getTypes
If passing context to getTypes, it checks value of $context['enable_constructor_extraction'] for true/false or the constructor value of enableConstructorExtraction and should then populate fromConstructor if necessary. The missing brackets around the first part of this check mean that fromConstructor is only applied if context is not set.

This fixes the issuse described at [symfony/symfony-docs#10969](https://github.com/symfony/symfony-docs/pull/10969)
2019-02-23 19:23:31 +00:00
Fabien Potencier
9202d9ed3e minor #30352 [Validator] Update Serbian translation file (burnmaniac)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Update Serbian translation file

| Q             | A
| ------------- | ---
| Branch?       | 3.4 <!-- see below -->
| 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 | #30189  <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | / <!-- 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.
-->
I am not sure about some translations, if someone could check these, I would appreciate it.

Also, I've found that singular/plural translations have 3 translations. I am not sure if that's a mistake or not. I removed the third translation, but if I was wrong, I'll be happy to put it back.

Commits
-------

9e9a57a544 [Validator] Update Serbian translation file
2019-02-23 18:17:20 +01:00
Danijel Obradović
9e9a57a544 [Validator] Update Serbian translation file 2019-02-23 18:15:28 +01:00
Nicolas Grekas
3895acd175 fix merge 2019-02-23 17:20:51 +01:00
Nicolas Grekas
3969948cbc Merge branch '4.2'
* 4.2:
  fix merge
2019-02-23 16:42:19 +01:00
Nicolas Grekas
5b23a2b257 fix merge 2019-02-23 16:42:05 +01:00
Nicolas Grekas
a0c566504c Merge branch '4.2'
* 4.2: (26 commits)
  Apply php-cs-fixer rule for array_key_exists()
  [Cache] fix warming up cache.system and apcu
  [Security] Change FormAuthenticator if condition
  handles multi-byte characters in autocomplete
  speed up tests running them without debug flag
  [Translations] added missing Croatian validators
  Fix getItems() performance issue with RedisCluster (php-redis)
  [VarDumper] Keep a ref to objects to ensure their handle cannot be reused while cloning
  IntegerType: reject submitted non-integer numbers
  be keen to newcomers
  [HttpKernel] Fix possible infinite loop of exceptions
  fixed CS
  [Validator] Added missing translations for Afrikaans
  do not validate non-submitted form fields in PATCH requests
  Update usage example in ArrayInput doc block.
  [Console] Prevent ArgvInput::getFirstArgument() from returning an option value
  [Validator] Fixed duplicate UUID
  fixed CS
  [EventDispatcher] Fix unknown priority
  Avoid mutating the Finder when building the iterator
  ...
2019-02-23 16:22:31 +01:00
Nicolas Grekas
87f3c36d60 Merge branch '3.4' into 4.2
* 3.4: (24 commits)
  Apply php-cs-fixer rule for array_key_exists()
  [Security] Change FormAuthenticator if condition
  handles multi-byte characters in autocomplete
  speed up tests running them without debug flag
  [Translations] added missing Croatian validators
  Fix getItems() performance issue with RedisCluster (php-redis)
  [VarDumper] Keep a ref to objects to ensure their handle cannot be reused while cloning
  IntegerType: reject submitted non-integer numbers
  be keen to newcomers
  [HttpKernel] Fix possible infinite loop of exceptions
  fixed CS
  [Validator] Added missing translations for Afrikaans
  do not validate non-submitted form fields in PATCH requests
  Update usage example in ArrayInput doc block.
  [Console] Prevent ArgvInput::getFirstArgument() from returning an option value
  [Validator] Fixed duplicate UUID
  fixed CS
  [EventDispatcher] Fix unknown priority
  Avoid mutating the Finder when building the iterator
  [Validator] Add the missing translations for the Greek (el) locale
  ...
2019-02-23 16:17:42 +01:00
Nicolas Grekas
b0a3208588 Apply php-cs-fixer rule for array_key_exists() 2019-02-23 16:06:07 +01:00
Nicolas Grekas
af666411d4 bug #30329 [Form] IntegerType: reject submitted non-integer numbers (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] IntegerType: reject submitted non-integer numbers

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #10240
| License       | MIT
| Doc PR        |

Commits
-------

6a43e74828 IntegerType: reject submitted non-integer numbers
2019-02-23 15:37:48 +01:00
Nicolas Grekas
b0a85ad015 [Cache] fix warming up cache.system and apcu 2019-02-23 15:35:37 +01:00
Nicolas Grekas
1aac865da7 bug #30347 [Security] Change FormAuthenticator if condition (PReimers)
This PR was squashed before being merged into the 3.4 branch (closes #30347).

Discussion
----------

[Security] Change FormAuthenticator if condition

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30341
| License       | MIT
| Doc PR        | -

I changed the if condition in `SimpleFormAuthenticationListener` and `UsernamePasswordFormAuthenticationListener` based on the solution provided by @nikic in issue #30341

#OpenSourceFriday

Commits
-------

67ae121b2e [Security] Change FormAuthenticator if condition
2019-02-23 15:32:41 +01:00
Patrick Reimers
67ae121b2e [Security] Change FormAuthenticator if condition 2019-02-23 15:32:34 +01:00
Nicolas Grekas
173b5eaf8c bug #30354 [Console] handles multi-byte characters in autocomplete (jls-esokia)
This PR was merged into the 3.4 branch.

Discussion
----------

[Console] handles multi-byte characters in autocomplete

fixes #29966

| Q             | A
| ------------- | ---
| Branch?       | 3.4 <!-- see below -->
| 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 | #29966   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | - <!-- required for new features -->

I used the `mb_ord` to detect whether the amount of bytes read is valid before proceeding.  I limit the number of bytes read to 4 before giving up because characters can use at most 4 bytes.
The test passes with or without the fix though.

Commits
-------

47320a63e2 handles multi-byte characters in autocomplete
2019-02-23 15:30:59 +01:00
Fabien Potencier
4cc10062e2 bug #30351 Fix getItems() performance issue with RedisCluster (php-redis) (andrerom)
This PR was merged into the 3.4 branch.

Discussion
----------

Fix getItems() performance issue with RedisCluster (php-redis)

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | TBD
| License       | MIT

On any kind of multi loads, including tags loading where it's always the case, current code leads to an explosion of Redis lookups affecting performance on RedisCluster _(as it does not support pipeline)_.

This backports the code for mget() usage from 4.x in order to fix it.
It's done with one small improvment which would also be relevant for 4.x, only using pipeline on cluster on predis as mget is more efficient (ref redis doc).

Commits
-------

178506e72c Fix getItems() performance issue with RedisCluster (php-redis)
2019-02-23 12:03:32 +01:00
Fabien Potencier
83fec23d61 bug #30350 [VarDumper] Keep a ref to objects to ensure their handle cannot be reused while cloning (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[VarDumper] Keep a ref to objects to ensure their handle cannot be reused while cloning

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Fixes the root issue that led to https://github.com/symfony/symfony/pull/30311#issuecomment-466457434

Commits
-------

29a0683107 [VarDumper] Keep a ref to objects to ensure their handle cannot be reused while cloning
2019-02-23 11:36:56 +01:00
Fabien Potencier
2e8bf334ca bug #30349 [VarDumper] fix dumping Ds maps and pairs (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[VarDumper] fix dumping Ds maps and pairs

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Fixes https://github.com/symfony/symfony/pull/30311#issuecomment-466457434

![image](https://user-images.githubusercontent.com/243674/53267273-41260e80-36e3-11e9-8723-a73bf0690a01.png)

Commits
-------

45869ac10c [VarDumper] fix dumping Ds maps and pairs
2019-02-23 11:35:34 +01:00
Jonathan
47320a63e2 handles multi-byte characters in autocomplete 2019-02-23 14:31:39 +04:00
Fabien Potencier
e9a2c3d753 feature #30345 [Monolog] Added a way to configure the ConsoleFormatter from the ConsoleHandler (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Monolog] Added a way to configure the ConsoleFormatter from the ConsoleHandler

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        |

see also https://github.com/symfony/monolog-bundle/pull/297

from that:
![image](https://user-images.githubusercontent.com/408368/53246085-f63ed380-36af-11e9-9bff-2e42f8af141c.png)

to that:
![image](https://user-images.githubusercontent.com/408368/53246115-0787e000-36b0-11e9-93ef-e47ed058adbf.png)

with some configuration:

```yaml
diff --git a/config/packages/dev/monolog.yaml b/config/packages/dev/monolog.yaml
index b1998da..66ae2db 100644
--- a/config/packages/dev/monolog.yaml
+++ b/config/packages/dev/monolog.yaml
@@ -17,3 +17,6 @@ monolog:
             type: console
             process_psr_3_messages: false
             channels: ["!event", "!doctrine", "!console"]
+            console_formater_options:
+                format: "%%datetime%% %%start_tag%%%%level_name%%%%end_tag%% <comment>[%%channel%%]</> %%message%%%%context%%\n"
+                multiline: false
```

Commits
-------

5e494db04c [Monolog] Added a way to configure the ConsoleFormatter from the ConsoleHandler
2019-02-23 11:19:35 +01:00
Fabien Potencier
9e4ff87214 minor #30356 [FrameworkBundle][SecurityBundle] speed up tests running them without debug flag (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[FrameworkBundle][SecurityBundle] speed up tests running them without debug flag

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

dfb924f6a9 speed up tests running them without debug flag
2019-02-23 11:17:05 +01:00
Fabien Potencier
5f8aa34396 feature #30357 [TwigBridge] rename parent_form() to form_parent() (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[TwigBridge] rename parent_form() to form_parent()

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | symfony/symfony-docs#11049

We got some feedback on the blog post that form_parent() would be better
for consistency with all the existing form_*() functions. I think that
user has a point about that.

Commits
-------

057d177378 rename parent_form() to form_parent()
2019-02-23 11:12:29 +01:00
Christian Flothmann
dfb924f6a9 speed up tests running them without debug flag 2019-02-23 11:01:03 +01:00
Christian Flothmann
057d177378 rename parent_form() to form_parent()
We got some feedback on the blog post that form_parent() would be better
for consistency with all the existing form_*() functions. I think that
user has a point about that.
2019-02-23 10:52:13 +01:00
Antonio Peric
b9ce861ff6
[Translations] added missing Croatian validators 2019-02-23 10:13:05 +01:00
Christian Flothmann
d7aaa615b9 deprecate the Role and SwitchUserRole classes 2019-02-23 00:57:00 +01:00
André R
178506e72c Fix getItems() performance issue with RedisCluster (php-redis)
On any kind of multi loads, including tags loading, current code leads to
an explosion of Redis lookups slowing down performance.

This backports the code for mget() usage from 4.x in order to fix it.
It's done with one small improvment which would also be relevant for 4.x,
only using pipeline on cluster on predis as mget is more efficient.
2019-02-22 22:23:30 +01:00
Nicolas Grekas
29a0683107 [VarDumper] Keep a ref to objects to ensure their handle cannot be reused while cloning 2019-02-22 21:52:27 +01:00
Nicolas Grekas
45869ac10c [VarDumper] fix dumping Ds maps and pairs 2019-02-22 21:35:02 +01:00
Christian Flothmann
6a43e74828 IntegerType: reject submitted non-integer numbers 2019-02-22 15:45:47 +01:00
Oskar Stark
c008ee046a be keen to newcomers 2019-02-22 15:44:53 +01:00
Anthony MARTIN
101bfd79bf [DI] change name to tag + add XMl support + adding yaml/xml tests 2019-02-22 14:36:50 +01:00
Grégoire Pineau
5e494db04c [Monolog] Added a way to configure the ConsoleFormatter from the ConsoleHandler 2019-02-22 14:32:09 +01:00
François-Xavier de Guillebon
845d3a681b Allow to choose an index for tagged collection 2019-02-22 11:27:55 +01:00
Nicolas Grekas
fec0475e8c feature #30311 [VarDumper] Implement DsCaster (enumag)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[VarDumper] Implement DsCaster

| 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 dumping the data structures from [Ds extension](http://php.net/manual/en/book.ds.php) Symfony only shows the class name but not the actual data. So in this PR I tried to write a Caster for these data structures.

Map can't be simply casted to array because it can contain objects as keys so I dump the pairs instead.

Commits
-------

eab631fc45 [VarDumper] Implement DsCaster
2019-02-22 09:46:13 +01:00
Nicolas Grekas
848a83078c bug #30327 [HttpKernel] Fix possible infinite loop of exceptions (enumag)
This PR was merged into the 3.4 branch.

Discussion
----------

[HttpKernel] Fix possible infinite loop of exceptions

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

I ran into an [issue](https://github.com/php-enqueue/enqueue-dev/issues/774) in the enqueue library which copied this part of code from Symfony. I'm now starting to understand what the problem is and it should most likely be fixed in Symfony as well.

I didn't actually run into it in Symfony itself but it seems at least hypothetically possible. Imagine if [here](8c3dc8254a/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php (L77)) `$e` is somehow the same (===) as `$exception`. The code [below](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php#L82-L92) will then find the last exception in the `getPrevious()` chain and assigns `$exception` as the previous. However in the off chance that `$exception` is actually `$e` (the first exception in the chain) then it creates an infinite loop of exceptions which is not good for monolog and exception handlers.

What do you think?

Commits
-------

3447222b68 [HttpKernel] Fix possible infinite loop of exceptions
2019-02-22 09:41:30 +01:00
Maximilian Ruta
514a1b506c [Debug] Mimic __toString php behavior in FlattenException 2019-02-21 14:05:12 +01:00
Christian Flothmann
715cf8db81 fix lowest supported Routing component version 2019-02-21 13:27:02 +01:00
Jáchym Toušek
3447222b68
[HttpKernel] Fix possible infinite loop of exceptions 2019-02-21 13:02:05 +01:00
Fabien Potencier
7b4f4bfd47 fixed CS 2019-02-21 11:18:37 +01:00
Fabien Potencier
5ac4c2abf5 bug #27601 [Routing] fix URL generation with look-around requirements (nasimnabavi)
This PR was merged into the 3.4 branch.

Discussion
----------

[Routing] fix URL generation with look-around requirements

| Q             | A
| ------------- | ---
| Branch?       | 2.8 up to 4.1 for bug fixes
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #10548
| License       | MIT
| Doc PR        |

If you have a non-catchable pattern in requirements like f.e. a positive lookahead (.+(?=/foo/)), the generator will not accept the parameter as the parameter itself cannot fulfil the requirement, but only matches in the context of the entire path.
This fix looks for lookAround in the path and ignores checking the requirements if any lookAround exists.

Commits
-------

c474451176 [Routing] fix URL generation with look-around requirements
2019-02-21 11:17:01 +01:00
Fabien Potencier
5a3e894203 feature #27570 [PropertyInfo] Added support for extract type from default value (tsantos84)
This PR was squashed before being merged into the 4.3-dev branch (closes #27570).

Discussion
----------

[PropertyInfo] Added support for extract type from default value

| Q             | A
| ------------- | ---
| Branch?       | master |
| Bug fix?      | no
| New feature?  | yes |
| BC breaks?    | no   |
| Deprecations? | no |
| Tests pass?   | yes |
| Fixed tickets | - |
| License       | MIT |
| Doc PR        | - |

Added support for extract type from property's default value.

```php

class Dummy
{
    private $age = 30;
}

$types = $propertyInfo->getTypes('Dummy', 'age');

/*
  Example Result
  --------------
  array(1) {
    [0] =>
    class Symfony\Component\PropertyInfo\Type (6) {
      private $builtinType          => string(3) "int"
      private $nullable             => bool(false)
      private $class                => 'Dummy'
      private $collection           => bool(false)
      private $collectionKeyType    => NULL
      private $collectionValueType  => NULL
    }
  }
*/
```

Commits
-------

f6510cda40 [PropertyInfo] Added support for extract type from default value
2019-02-21 11:10:14 +01:00
tsantos
f6510cda40 [PropertyInfo] Added support for extract type from default value 2019-02-21 11:10:02 +01:00
Fabien Potencier
4e1ad10d91 feature #28919 [DX][WebProfilerBundle] Add Pretty Print functionality for Request Content (SamFleming)
This PR was squashed before being merged into the 4.3-dev branch (closes #28919).

Discussion
----------

[DX][WebProfilerBundle] Add Pretty Print functionality for Request Content

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | n/a ?

## Why?
Quite often when attempting to debug issues with JSON requests sent to a Symfony API, I use the Web Profiler to check the request content. More often than not the request content isn't easily readable (99% of the time it's all stuck on a single line and impossible to read). I always find myself copying + pasting the content into a random online tool to have it "pretty-print" the JSON.

Usually this isn't an issue, but can be annoying when offline. There's also the security issue of sending entire JSON payloads to a third-party server just for formatting 😳. Alternatively, maybe developers  copy+paste into their chosen editors and this PR is all a waste of time — I hope not 😛.

## How?
This PR adds "Pretty-Print" JSON functionality straight into the profiler.

We can use `collector.requestheaders` to detect if the request was JSON and conditionally show the Pretty Print button.

When the button is clicked, we format the JSON from the "Request Content" card.

## What does it look like?
Before:
![without-pretty-print](https://user-images.githubusercontent.com/573318/47180751-36b0ce00-d319-11e8-86ed-eb0d78ebcbe3.png)

After:
![pretty](https://user-images.githubusercontent.com/573318/47180763-3c0e1880-d319-11e8-995d-eba565aad827.png)

Non-JSON Requests (unchanged):
![non-json-request](https://user-images.githubusercontent.com/573318/47181080-03227380-d31a-11e8-8cf2-e8b2e8c1a21d.png)

## Things to consider

- Is `JSON.stringify(JSON.parse(content));` the safest, most efficient way to do this?
- Should the "Pretty Print" button be in-line next to the "Request Content" header? I couldn't find a pattern for this sort of thing elsewhere in the profiler.
- Do people want JSON formatted with 4 spaces, would 2 spaces be preferred? Should this be a configuration option stored in localStorage (such as the light/dark theme configuration)?
- Should this be a toggle? E.g. click to pretty print, then click to undo

## Future Improvements

Depending on how this is received it could be extended to support formatting different request content-types (e.g. XML formatting) — I assume.

## Progress

- [x] Gather feedback and decide where to perform the pretty-print: [server-side, or client-side](https://github.com/symfony/symfony/pull/28919#issuecomment-431508361).
*It was decided server-side would be better.*

Commits
-------

9f85103151 [DX][WebProfilerBundle] Add Pretty Print functionality for Request Content
2019-02-21 10:57:57 +01:00
Sam Fleming
9f85103151 [DX][WebProfilerBundle] Add Pretty Print functionality for Request Content 2019-02-21 10:57:48 +01:00
Christian Flothmann
93c2feb7b3 feature #28723 [Form] deprecate custom formats with HTML5 widgets (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] deprecate custom formats with HTML5 widgets

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | symfony/symfony-docs#10986

Commits
-------

b70c1b6e0d deprecate custom formats with HTML5 widgets
2019-02-21 10:41:31 +01:00
Fabien Potencier
3560cfdebe feature #29865 [Console] Added suggestions for missing packages (przemyslaw-bogusz)
This PR was squashed before being merged into the 4.3-dev branch (closes #29865).

Discussion
----------

[Console] Added suggestions for missing packages

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

Currently, when someone runs one of the most common commands, e.g. `server:run`, but does not have a required package installed, they will get a general **'There are no commands defined...'** message.

This commit adds a more useful message, informing the user about a package that might be missing and suggesting a command that should be run in order to install it, e.g. `composer require symfony/web-server-bundle --dev`.

Commits
-------

423a54f46e [Console] Added suggestions for missing packages
2019-02-21 10:36:22 +01:00
Przemysław Bogusz
423a54f46e [Console] Added suggestions for missing packages 2019-02-21 10:36:15 +01:00
Fabien Potencier
cbe8cff882 feature #30301 [VarDumper] add link to source next to class names (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[VarDumper] add link to source next to class names

| 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 PR adds a `^` next to language identifiers (class and callback names) both on the Web and on the CLI. Clicking it opens the IDE to the target source code:

Eg in the profiler:
![image](https://user-images.githubusercontent.com/243674/53021031-900c4380-3458-11e9-9439-260ff11f0910.png)

And in the CLI:
![image](https://user-images.githubusercontent.com/243674/53021092-b16d2f80-3458-11e9-9f03-cdab59da4585.png)

Commits
-------

5fcd6b1d4e [VarDumper] add link to source next to class names
2019-02-21 10:23:57 +01:00
Fabien Potencier
8c3dc8254a minor #30326 Additional addons for the ghost (przemyslaw-bogusz)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Additional addons for the ghost

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

Following #30236 I've prepared two additional addons for the ghost.

The first one will display a plus on February 29, to indicate it's a leap year.
![ghost-plus](https://user-images.githubusercontent.com/35422131/53133091-3730ce00-3572-11e9-89f7-44568d796f7e.png)

The second one will display a gift on October 18, to indicate it's Symfony's birthday.
![ghost-gift](https://user-images.githubusercontent.com/35422131/53133127-5596c980-3572-11e9-8901-704785e235a8.png)

I would just like to point out that the addons are purely for fun, to amuse every hardcoding Symfony developer and offer a chance to smile on these few selected occasions.

Commits
-------

51ed942ef5 Additional addons for the ghost
2019-02-21 10:03:39 +01:00
Fabien Potencier
4b5661769d minor #30243 [Validator] Added missing translations for Afrikaans (Chris Tiearney)
This PR was squashed before being merged into the 3.4 branch (closes #30243).

Discussion
----------

[Validator] Added missing translations for Afrikaans

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30148
| License       | MIT

Added missing translations for Afrikaans

Commits
-------

8a931576d2 [Validator] Added missing translations for Afrikaans
2019-02-21 10:00:18 +01:00
Chris Tiearney
8a931576d2 [Validator] Added missing translations for Afrikaans 2019-02-21 10:00:09 +01:00
Fabien Potencier
ff4b1d4bff bug #30277 [Console] Prevent ArgvInput::getFirstArgument() from returning an option value (chalasr)
This PR was merged into the 3.4 branch.

Discussion
----------

[Console] Prevent ArgvInput::getFirstArgument() from returning an option value

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #23343
| License       | MIT
| Doc PR        | n/a

Fixes the case where the passed input string contains no command name but one or more global (i.e. application-defined) options accepting values.

Commits
-------

46461e91f9 [Console] Prevent ArgvInput::getFirstArgument() from returning an option value
2019-02-21 09:51:54 +01:00
Fabien Potencier
ba725c2d70 feature #30225 publish message with custom queue options : flags | attributes (fedor.f, insidestyles)
This PR was merged into the 4.3-dev branch.

Discussion
----------

publish message with custom queue options : flags | attributes

| 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 | #...   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

option for publish persistent message:
`amqp://localhost/%2f/messages?queue[attributes][delivery_mode]=2&queue[flags]=1`
or
options:
>queue:
>>name: '%env(MESSENGER_QUEUE)%'
>>routing_key: '%env(MESSENGER_ROUTING_KEY)%'
>>attributes:
>>>delivery_mode: 2

>>flags: 1

Commits
-------

5e16053c70 update test case for custom queue options
4532319520 publish message with custom queue options : update ConnectionTest
6f9fdaf7e4 publish message with custom queue options : flags | attributes
2019-02-21 09:34:03 +01:00
Fabien Potencier
68d5597125 bug #29981 [Security] Complain about an empty decision strategy (corphi)
This PR was merged into the 3.4 branch.

Discussion
----------

[Security] Complain about an empty decision strategy

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

When an empty string is passed (or objects with a similarly behaving `__toString()` method) to the constructor, the call to `decide` causes infinite recursion.

Commits
-------

3a22cad29b Fix infinite recursion when passed an empty string
2019-02-21 09:28:33 +01:00
Fabien Potencier
2e6d0698f5 feature #30249 [Routing] deprecate some router options (Tobion)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Routing] deprecate some router options

| 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? | yes <!-- 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 | https://github.com/symfony/symfony/pull/28865#issuecomment-463480970
| 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
-------

bf4cd6164d [Routing] deprecate some router options
2019-02-21 09:24:00 +01:00
Fabien Potencier
da16b9c49b bug #29822 [EventDispatcher] Fix unknown priority (ro0NL)
This PR was merged into the 3.4 branch.

Discussion
----------

[EventDispatcher] Fix unknown priority

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| 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 -->

Somehow, after #29411 the profiler actually shows the security firewall `ContextListener`.

This listener removes itself at call time, but at this point it's wrapped reference is already in the call stack; to be displayed in the profiler.

Because the wrapped listener lazily collects its priority - it asks it from the dispatcher -  we get null; the listener was already removed.

This causes the profiler to render `-` by default:

![image](https://user-images.githubusercontent.com/1047696/50850320-d5c5ee80-1379-11e9-8516-0c6bc54512ce.png)

This fixes it by always passing the expected priority at call time.

Commits
-------

9fb619ac62 [EventDispatcher] Fix unknown priority
2019-02-21 09:22:09 +01:00
Fabien Potencier
6207f19317 feature #30267 [Form] add option to render NumberType as type="number" (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] add option to render NumberType as type="number"

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #8106
| License       | MIT
| Doc PR        | symfony/symfony-docs#10997

Commits
-------

42e8f5e3a2 add option to render NumberType as type="number"
2019-02-21 09:19:09 +01:00
Christian Flothmann
b70c1b6e0d deprecate custom formats with HTML5 widgets 2019-02-21 08:51:58 +01:00
Fabien Potencier
eb7a612763 minor #30319 [Console] Doc Block: More intuitive usage example in ArrayInput. (mattjanssen)
This PR was merged into the 3.4 branch.

Discussion
----------

[Console] Doc Block: More intuitive usage example in ArrayInput.

Make the ArrayInput doc block example more self-explanatory and less misleading. Show the common use case of having `command`, and replace the confusing `name` argument with something more arbitrary.

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

The current doc block example for `ArrayInput` seems to imply that the command name goes in as `name`, but this is actually just a random argument, named "name", in this case.
```php
new ArrayInput(['name' => 'foo', '--bar' => 'foobar']);
```

It might be more helpful to provide an example that works with Symfony's `Console` component out of the box, as that is a common use case:
```php
new ArrayInput(['command' => 'foo:bar', 'foo' => 'bar', '--bar' => 'foobar']);
```

Commits
-------

0c8d311657 Update usage example in ArrayInput doc block.
2019-02-21 08:45:12 +01:00
Fabien Potencier
02d6c0f22f feature #28969 [Form] deprecate using invalid names for buttons (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] deprecate using invalid names for buttons

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #28964
| License       | MIT
| Doc PR        |

Commits
-------

405aa548eb deprecate using invalid names for buttons
2019-02-21 08:40:33 +01:00
Fabien Potencier
a67441ab1f bug #30324 [Validator] Fixed duplicate UUID (ralfkuehnel)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Fixed duplicate UUID

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30285
| License       | MIT
| Doc PR        | N/A

Fixes the `TOO_HIGH_ERROR` constant had the same value in two different constraints: `LessThan` and `LessThanOrEqual`.

Commits
-------

0bd5dd84ef [Validator] Fixed duplicate UUID
2019-02-21 08:36:17 +01:00
Christian Flothmann
191403119c bug #30265 [Form] do not validate non-submitted form fields in PATCH requests (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] do not validate non-submitted form fields in PATCH requests

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #11493, #19788, #20805, #24453, #30011
| License       | MIT
| Doc PR        |

When a form field is not embedded as part of a HTTP PATCH requests, its
validation constraints configured through the `constraints` option must
not be evaluated. The fix from #10567 achieved this by not mapping their
violations to the underlying form field. This however also means that
constraint violations caused by validating the whole underlying data
object will never cause the form to be invalid. This breaks use cases
where some constraints may, for example, depend on the value of other
properties that were changed by the submitted data.

Commits
-------

a60d802619 do not validate non-submitted form fields in PATCH requests
2019-02-21 08:31:48 +01:00
Christian Flothmann
a60d802619 do not validate non-submitted form fields in PATCH requests 2019-02-21 08:19:04 +01:00
Christian Flothmann
42e8f5e3a2 add option to render NumberType as type="number" 2019-02-21 08:09:42 +01:00
Przemysław Bogusz
51ed942ef5 Additional addons for the ghost 2019-02-21 00:39:50 +01:00
Matt Janssen
0c8d311657 Update usage example in ArrayInput doc block.
Make the ArrayInput doc block example more self-explanatory and less misleading. Show the common use case of having `command`, and replace the confusing `name` argument with something more arbitrary.
2019-02-20 16:12:06 -06:00
Robin Chalas
46461e91f9 [Console] Prevent ArgvInput::getFirstArgument() from returning an option value 2019-02-20 21:43:41 +01:00
Ralf Kühnel
0bd5dd84ef [Validator] Fixed duplicate UUID 2019-02-20 20:51:21 +01:00
Fabien Potencier
c6de2dc03e fixed CS 2019-02-20 15:47:01 +01:00
Jáchym Toušek
eab631fc45
[VarDumper] Implement DsCaster 2019-02-20 12:31:22 +01:00
Roland Franssen
9fb619ac62 [EventDispatcher] Fix unknown priority 2019-02-20 11:38:05 +01:00
Christophe Coevoet
94989fe794 Avoid mutating the Finder when building the iterator 2019-02-20 10:38:23 +01:00
Christian Flothmann
5c7390006b feature #29887 [Form] Add input_format option to DateType and DateTimeType (fancyweb)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] Add input_format option to DateType and DateTimeType

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/issues/29883
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/10882

Add a new option to specify the date format when using the `string` input type.

Commits
-------

c8240a0423 [Form] Add input_format option to DateType and DateTimeType
2019-02-20 08:48:20 +01:00
Christian Flothmann
c3cf08e238 minor #30230 [Form] undeprecate date formats in single_text widgets (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] undeprecate date formats in single_text widgets

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

1a983d07db undeprecate date formats in single_text widgets
2019-02-20 08:44:41 +01:00
Nicolas Grekas
424773da1f bug #30294 [FrameworkBundle] Fix Descriptor throwing on non existent parent (GuilhemN)
This PR was merged into the 4.2 branch.

Discussion
----------

[FrameworkBundle] Fix Descriptor throwing on non existent parent

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| 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 | https://github.com/nelmio/NelmioApiDocBundle/issues/1470  <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        |

The Descriptor throws an exception when it encounters a class having a non existent parent, see https://github.com/nelmio/NelmioApiDocBundle/issues/1470 for the record.

<!--
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
-------

6b354cc304 Fix Descriptor throwing on non existent parent
2019-02-20 08:36:13 +01:00
Nicolas Grekas
df0fc5ee72 minor #30308 [Validator] Added missing translations pt_BR (felipyamorim)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Added missing translations pt_BR

| Q | A |
|--|--|
| Branch? | 3.4
| Bug fix? | no
|New feature?	| no
|BC breaks?	| no
|Deprecations?	|no
|Tests pass?	| yes
|Fixed tickets	| #30182
|License	| MIT

Added missing translations.

Commits
-------

19ca344685 [Validator] Added missing translations pt_BR
2019-02-20 08:24:15 +01:00
nikos.sotiropoulos
7db66b3a30 [Validator] Add the missing translations for the Greek (el) locale
closes #30158
2019-02-20 01:41:21 +02:00
Philipp Cordes
3a22cad29b Fix infinite recursion when passed an empty string 2019-02-19 23:14:55 +01:00
Nicolas Grekas
5fcd6b1d4e [VarDumper] add link to source next to class names 2019-02-19 22:52:41 +01:00
Nicolas Grekas
51b72f3284 [Form] Relax fixture 2019-02-19 19:43:50 +01:00
Nicolas Grekas
ccd4bbeb31 Merge branch '4.2'
* 4.2:
  [Form] Relax fixture
2019-02-19 19:42:38 +01:00
Nicolas Grekas
822867d7d5 [Form] Relax fixture 2019-02-19 19:41:56 +01:00
Nicolas Grekas
374c8b0063 Merge branch '4.2'
* 4.2:
  [Console] Fix command testing with missing inputs
  [Validator] Sync no/nb translation files
  [Translation] Added a script to display the status of translations
  [Validator] Added missing translations for Norwegian (\"no\") locale #30179
  [Security\Guard] bump lowest version of security-core
  [TwigBridge] Fix test
  Remove unnecessary ProgressBar stdout writes (fixes flickering)
  [Validator] improve translations for albanian ("sq") locale
  [VarDumper] fix serializing Stub instances
  [Validator] Added missing use statement for UnexpectedTypeException
  Don't resolve the Deprecation error handler mode until a deprecation is triggered
  bug #30245 fix lost namespace in eval (fizzka)
  fix lost namespace in eval
  [Twig] removed usage of non-namespaced classes
  added missing dot
  Update validators.lt.xlf
  #30172 Add the missing validation translations for the Luxembourgish …
  [Debug][ErrorHandler] Preserve next error handler
2019-02-19 19:29:52 +01:00
Nicolas Grekas
890c2ac9f5 Merge branch '3.4' into 4.2
* 3.4:
  [Console] Fix command testing with missing inputs
  [Validator] Sync no/nb translation files
  [Translation] Added a script to display the status of translations
  [Validator] Added missing translations for Norwegian (\"no\") locale #30179
  [Security\Guard] bump lowest version of security-core
2019-02-19 19:28:05 +01:00
Felipy Amorim
19ca344685
[Validator] Added missing translations pt_BR
| Q | A |
|--|--|
| Branch? | 3.4 |
| Bug fix? |no|
|New feature?	|no|
|BC breaks?	|no|
|Deprecations?	|no|
|Tests pass?	|yes|
|Fixed tickets	|#30182|
|License	|MIT|

Added missing translations.
2019-02-19 14:53:11 -03:00
Robin Chalas
005e75cbab [Form] Fix describing closures 2019-02-19 15:40:04 +01:00
Nicolas Grekas
5909a47664 minor #30296 [VarDumper] link paths in stack traces to IDE (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[VarDumper] link paths in stack traces to IDE

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | not really
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

`./test.php:8` and `./test.php:11` can now be clicked:

![image](https://user-images.githubusercontent.com/243674/52971041-466b1c80-33b6-11e9-9bc1-0e55dc115f63.png)

Commits
-------

6672ac3f43 [VarDumper] link paths in stack traces to IDE
2019-02-19 14:25:47 +01:00
Nicolas Grekas
6672ac3f43 [VarDumper] link paths in stack traces to IDE 2019-02-18 19:48:10 +01:00
Robin Chalas
ac4e9b0b26 [Console] Fix command testing with missing inputs 2019-02-18 19:44:35 +01:00
Nicolas Grekas
f3659b684e [VarDumper] dump Closures' parameters once: in their signatures 2019-02-18 19:32:59 +01:00
Thomas Calvet
c8240a0423 [Form] Add input_format option to DateType and DateTimeType 2019-02-18 19:19:29 +01:00
Guilhem Niot
6b354cc304 Fix Descriptor throwing on non existent parent 2019-02-18 17:11:20 +01:00
Robin Chalas
f2af0801c4 [Validator] Sync no/nb translation files 2019-02-18 15:33:02 +01:00
Fabien Potencier
1f829eca87 minor #30237 [Translation] Added a script to display the status of translations (javiereguiluz)
This PR was squashed before being merged into the 3.4 branch (closes #30237).

Discussion
----------

[Translation] Added a script to display the status of translations

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| 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 | -
| License       | MIT
| Doc PR        | -

This is the script I used to get the missing translations for each locale. I think it could come in handy for Symfony to always keep translations in sync.

Commits
-------

5ca7dedaaa [Translation] Added a script to display the status of translations
2019-02-18 13:35:36 +01:00
Javier Eguiluz
5ca7dedaaa [Translation] Added a script to display the status of translations 2019-02-18 13:35:29 +01:00
caalholm
c8dcc5b8e6 [Validator] Added missing translations for Norwegian (\"no\") locale #30179 2019-02-18 13:32:58 +01:00
Robin Chalas
e69855e906 minor #30282 [Security\Guard] bump lowest version of security-core (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[Security\Guard] bump lowest version of security-core

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Forgotten in #30006 so that `PostAuthenticationGuardToken` can call `AbstractToken::doSerialize()`.

Commits
-------

93cfd5b2a0 [Security\Guard] bump lowest version of security-core
2019-02-18 10:29:27 +01:00
Fabien Potencier
caa2579e0a Merge branch '3.4' into 4.2
* 3.4:
  [TwigBridge] Fix test
  Remove unnecessary ProgressBar stdout writes (fixes flickering)
  [Validator] improve translations for albanian ("sq") locale
  [VarDumper] fix serializing Stub instances
  Don't resolve the Deprecation error handler mode until a deprecation is triggered
  bug #30245 fix lost namespace in eval (fizzka)
  [Twig] removed usage of non-namespaced classes
  added missing dot
  Update validators.lt.xlf
  #30172 Add the missing validation translations for the Luxembourgish …
  [Debug][ErrorHandler] Preserve next error handler
2019-02-18 07:49:49 +01:00
Fabien Potencier
ede6c9d6b0 minor #30279 [TwigBridge] Fix test (chalasr)
This PR was merged into the 3.4 branch.

Discussion
----------

[TwigBridge] Fix test

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Commits
-------

ad752b1a48 [TwigBridge] Fix test
2019-02-18 07:42:23 +01:00
Fabien Potencier
d962a74206 minor #30276 [Validator] improve translations for albanian ("sq") locale (Eno Mullaraj)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] improve translations for albanian ("sq") locale

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

While reviewing the changes announced in the "A Week of Symfony #633" post I found that there was room for improvement in the Validation component translations as they were defined earlier in 2012 and were never revisited.

All the translations have been reviewed and some of them were updated with the following improvements:
* overall translation message consistency
* fix singular expression messages
* fix grammatical errors
* use albanian form of expression
* restore, as lexical gap, the "locale" translation

Commits
-------

5cac9ad97d [Validator] improve translations for albanian ("sq") locale
2019-02-18 07:41:39 +01:00
Nicolas Grekas
93cfd5b2a0 [Security\Guard] bump lowest version of security-core 2019-02-17 23:00:14 +01:00
Robin Chalas
ad752b1a48 [TwigBridge] Fix test 2019-02-17 19:45:33 +01:00
Gabriel Ostrolucký
3fbcb965d0
Remove unnecessary ProgressBar stdout writes (fixes flickering) 2019-02-17 18:48:00 +01:00
Eno Mullaraj
5cac9ad97d [Validator] improve translations for albanian ("sq") locale
* improve overall translation message consistency
* fix singular expression messages
* fix grammatical errors
* use albanian form of expression
* restore as lexical gap the "locale" translation
2019-02-17 14:05:03 +01:00
insidestyles
5e16053c70 update test case for custom queue options 2019-02-17 13:03:29 +02:00
renanbr
f8bf9738f0 Drop \Serializable 2019-02-17 10:56:33 +01:00
Nicolas Grekas
46d6a4d9ec [VarDumper] fix serializing Stub instances 2019-02-16 23:55:29 +01:00
devrck
d10347fb15 [Validator] Added missing use statement for UnexpectedTypeException 2019-02-16 22:59:42 +01:00
Fabien Potencier
bb5992476f feature #30236 Add element to ghost in Exception (przemyslaw-bogusz)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Add element to ghost in Exception

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

Let's make love (& good code) not war. Sorry for not submitting it at least yesterday, but hopefully you will accept it, and we will be able to merge today. This will allow us to add different addons on other special ocasions.

![zrzut ekranu 2019-02-14 o 09 53 42](https://user-images.githubusercontent.com/35422131/52775440-0582a900-3040-11e9-8d9a-ee4959fa6982.png)

On personal side, I dedicate it, with lots of kisses, to my wife Martha.

If you like it, just ❤️

Commits
-------

c8d6dd7c8f Add element to ghost in Exception
2019-02-16 22:20:28 +01:00
Nicolas Grekas
eb3299341f bug #30247 Don't resolve the Deprecation error handler mode until a deprecation is triggered (ossinkine)
This PR was merged into the 3.4 branch.

Discussion
----------

Don't resolve the Deprecation error handler mode until a deprecation is triggered

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30047
| License       | MIT

<!--
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.
-->
If an error happens before `.env.test` is loaded the mode is set to 0 and cached so SYMFONY_DEPRECATIONS_HELPER is not read from `.env.test`.

Commits
-------

1090b8cb6e Don't resolve the Deprecation error handler mode until a deprecation is triggered
2019-02-16 19:51:27 +01:00
Gocha Ossinkine
1090b8cb6e Don't resolve the Deprecation error handler mode until a deprecation is triggered 2019-02-16 19:50:26 +01:00
Nicolas Grekas
f02c97f857 bug #30261 [Translation] restore compatibility with FrameworkBundle 4.2 (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Translation] restore compatibility with FrameworkBundle 4.2

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30260
| License       | MIT
| Doc PR        |

Commits
-------

45dde5d00c restore compatibility with FrameworkBundle 4.2
2019-02-16 19:46:38 +01:00
Nicolas Grekas
dee2fcb50d bug #30264 [Debug][ErrorHandler] Preserve next error handler (fancyweb)
This PR was merged into the 3.4 branch.

Discussion
----------

[Debug][ErrorHandler] Preserve next error handler

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/issues/30140
| License       | MIT
| Doc PR        | -

Thank you @cuchac

Getting the current error handler in the error handler itself actually works. If you try to see the content of the `$currentErrorHandler` var however, you will always see `null`. That's why I thought it was impossible. Because I did not test from end to end until today.

Commits
-------

a8b34348e7 [Debug][ErrorHandler] Preserve next error handler
2019-02-16 18:23:37 +01:00
Fabien Potencier
da325fc0e2 bug #30245 fix lost namespace in eval (fizzka)
This PR was squashed before being merged into the 4.2 branch (closes #30245).

Discussion
----------

fix lost namespace in eval

Bugfix:
phpunit8 tearDown() declaration

Commits
-------

8743a1ada8 fix lost namespace in eval
2019-02-16 18:13:04 +01:00
Fabien Potencier
3b8fa1210c feature #30120 [FrameworkBundle][Translation] Added support for PHP files with trans() in translation commands (yceruto)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[FrameworkBundle][Translation] Added support for PHP files with trans() in translation commands

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29085
| License       | MIT
| Doc PR        | -

This PR allows translation commands be able to debug and update translation messages from any PHP file/class defined as service, injecting or wiring the `translator` service, e.g.:
```php
use Symfony\Component\Translation\TranslatorInterface;

class ParallelUniverseController extends AbstractController
{
    public function hello(Request $request, TranslatorInterface $translator)
    {
        // this id 'hello_message' will be extracted from translation:update
        $message = $translator->trans('hello_message');

        // send message to space...
    }
}
```
this supports all ways of wiring (auto or not): via constructor, public property, method calls, service subscriber and controller argument.

Commits
-------

9f9b828832 Added support for PHP files with translation in translation commands
2019-02-16 12:57:22 +01:00
Fabien Potencier
37a1302dff bug #30245 fix lost namespace in eval (fizzka)
This PR was squashed before being merged into the 4.2 branch (closes #30245).

Discussion
----------

fix lost namespace in eval

Bugfix:
phpunit8 tearDown() declaration

Commits
-------

8743a1ada8 fix lost namespace in eval
2019-02-16 12:54:38 +01:00
Ilya Bulakh
8743a1ada8 fix lost namespace in eval 2019-02-16 12:54:31 +01:00
Fabien Potencier
5a154538c7 minor #30233 [Twig] removed usage of non-namespaced classes (fabpot)
This PR was merged into the 3.4 branch.

Discussion
----------

[Twig] removed usage of non-namespaced classes

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| 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

<!--
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
-------

bd719cd7e1 [Twig] removed usage of non-namespaced classes
2019-02-16 12:52:47 +01:00
Fabien Potencier
bd719cd7e1 [Twig] removed usage of non-namespaced classes 2019-02-16 12:50:39 +01:00
Fabien Potencier
d83c296e3e minor #30239 Add missing Romanian translations for validator (deverad)
This PR was squashed before being merged into the 4.3-dev branch (closes #30239).

Discussion
----------

Add missing Romanian translations for validator

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30183 [Validator] Add the missing translations for the Romanian ("ro") locale

Commits
-------

6674391dd4 Add missing Romanian translations for validator
2019-02-16 12:49:17 +01:00
Sergio
6674391dd4 Add missing Romanian translations for validator 2019-02-16 12:49:11 +01:00
Fabien Potencier
85c448e915 added missing dot 2019-02-16 12:46:43 +01:00
Fabien Potencier
de1f4c482b minor #30242 Update validators.lt.xlf (jlemesh)
This PR was squashed before being merged into the 3.4 branch (closes #30242).

Discussion
----------

Update validators.lt.xlf

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30173
| License       | MIT

Commits
-------

f9772359b3 Update validators.lt.xlf
2019-02-16 12:46:20 +01:00
JL
f9772359b3 Update validators.lt.xlf 2019-02-16 12:46:14 +01:00
Fabien Potencier
8364fe42ca minor #30251 #30172 Add the missing validation translations for the Luxembourgish … (Evrard Boulou)
This PR was squashed before being merged into the 3.4 branch (closes #30251).

Discussion
----------

#30172 Add the missing validation translations for the Luxembourgish …

…locale

| Q             | A
| ------------- | ---
| Branch?       | master for features / 3.4 up to 4.2 for bug fixes <!-- see below -->
| 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 | #30172  <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Add the missing validation translations for the Luxembourgish locale

Commits
-------

b0be36648f #30172 Add the missing validation translations for the Luxembourgish …
2019-02-16 12:43:59 +01:00
Evrard Boulou
b0be36648f #30172 Add the missing validation translations for the Luxembourgish … 2019-02-16 12:43:53 +01:00
Thomas Calvet
a8b34348e7 [Debug][ErrorHandler] Preserve next error handler
Co-authored-by: Joe <cuchac@email.cz>
2019-02-16 11:38:56 +01:00
Christian Flothmann
45dde5d00c restore compatibility with FrameworkBundle 4.2 2019-02-15 20:21:53 +01:00
Christian Flothmann
346491c672 Merge branch '4.2'
* 4.2:
  fix tests by adapting Twig namespace changes
2019-02-15 19:54:52 +01:00
Christian Flothmann
348193609f Merge branch '3.4' into 4.2
* 3.4:
  fix tests by adapting Twig namespace changes
2019-02-15 19:54:27 +01:00
Christian Flothmann
bbc2656619 fix tests by adapting Twig namespace changes 2019-02-15 18:05:19 +01:00
Tobias Schultze
bf4cd6164d [Routing] deprecate some router options 2019-02-15 15:28:25 +01:00
Christian Flothmann
592e03f065 ignore not-existent service definitions 2019-02-14 17:43:30 +01:00
Christian Flothmann
d42e054d2c (finally) fix version dependent Form tests 2019-02-14 17:03:15 +01:00
Christian Flothmann
b09761778a Merge branch '4.2'
* 4.2:
  allow to skip tests based on the supported version
  Update validators.bg.xlf
  Update validators.ca.xlf
  fixed CS
  Updated validators.eu.xlf with missing translations
  fixed typo
  backported a translation
  [Validator] added missing translation for UK validator
  Validator: add the Persian translations
  Update validators.sq.xlf
  fixed CS
  forward valid numeric values to transform()
  add constraint validators before optimizations
2019-02-14 16:32:59 +01:00
Christian Flothmann
c58d4c2e22 Merge branch '3.4' into 4.2
* 3.4:
  allow to skip tests based on the supported version
  Update validators.bg.xlf
  Update validators.ca.xlf
  fixed CS
  Updated validators.eu.xlf with missing translations
  fixed typo
  backported a translation
  [Validator] added missing translation for UK validator
  Validator: add the Persian translations
  Update validators.sq.xlf
  fixed CS
  forward valid numeric values to transform()
  add constraint validators before optimizations
2019-02-14 16:32:36 +01:00
Christian Flothmann
37b0eeb007 minor #30241 allow to skip tests based on the supported version (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

allow to skip tests based on the supported version

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Writing tests for Form related features in the Doctrine and Twig bridges
as well as the FrameworkBundle is a pain as soon as these tests are run
with more recent versions of the Form component. This is due to the fact
that our tests in the bridges and bundle extend test cases from the
component. The tests in the component are expanded with every feature
that gets added there. However, these new features are not present in
the other packages in older version and we thus need to be able to skip
them somehow.

Commits
-------

be23926bf8 allow to skip tests based on the supported version
2019-02-14 16:26:56 +01:00
Christian Flothmann
be23926bf8 allow to skip tests based on the supported version
Writing tests for Form related features in the Doctrine and Twig bridges
as well as the FrameworkBundle is a pain as soon as these tests are run
with more recent versions of the Form component. This is due to the fact
that our tests in the bridges and bundle extend test cases from the
component. The tests in the component are expanded with every feature
that gets added there. However, these new features are not present in
the other packages in older version and we thus need to be able to skip
them somehow.
2019-02-14 15:58:36 +01:00
Fabien Potencier
6a80e7ddd5 minor #30234 [Routing] fix changelog typo (Tobion)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Routing] fix changelog typo

| 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 |
| License       | MIT
| Doc PR        |

Fix small typos from #28865

Commits
-------

37dbab263e [Routing] fix changelog typos
2019-02-14 12:58:43 +01:00
LubenZA
4f3bc6bd47 Update validators.bg.xlf 2019-02-14 12:57:40 +01:00
Christian Flothmann
6bfc5f0901 properly move test methods 2019-02-14 10:58:14 +01:00
Przemysław Bogusz
c8d6dd7c8f Add element to ghost in Exception 2019-02-14 10:10:17 +01:00
Tobias Schultze
37dbab263e
[Routing] fix changelog typos
Fix small typos from #28865
2019-02-14 04:47:16 +01:00
Yonel Ceruto
9f9b828832 Added support for PHP files with translation in translation commands 2019-02-13 19:06:53 -05:00
Christian Flothmann
1fe359995b fix tests 2019-02-13 22:52:06 +01:00
Christian Flothmann
1a983d07db undeprecate date formats in single_text widgets 2019-02-13 20:45:31 +01:00
fedor.f
4532319520 publish message with custom queue options : update ConnectionTest 2019-02-13 14:53:10 +02:00
Fabien Potencier
320c05f9f1 minor #30223 Updated validators.eu.xlf (ikerib)
This PR was merged into the 3.4 branch.

Discussion
----------

Updated validators.eu.xlf

with missing translations

Commits
-------

f496ab638e Updated validators.eu.xlf with missing translations
2019-02-13 10:39:43 +01:00
Fabien Potencier
45023acc86 minor #30224 Update validators.ca.xlf (rogerguasch)
This PR was squashed before being merged into the 3.4 branch (closes #30224).

Discussion
----------

Update validators.ca.xlf

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Update validators.ca.xlf for Catalan language.

Commits
-------

077df27eca Update validators.ca.xlf
2019-02-13 10:38:01 +01:00
Roger Guasch
077df27eca Update validators.ca.xlf 2019-02-13 10:37:46 +01:00
Fabien Potencier
6c0190eee8 fixed CS 2019-02-13 10:35:08 +01:00
fedor.f
6f9fdaf7e4 publish message with custom queue options : flags | attributes 2019-02-13 11:30:45 +02:00
Iker Ibarguren
f496ab638e
Updated validators.eu.xlf with missing translations 2019-02-13 09:13:09 +01:00
Fabien Potencier
c6a2c3348f feature #28812 [Form] add a convenience method to get the parent form in Twig templates (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] add a convenience method to get the parent form in Twig templates

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #28686
| License       | MIT
| Doc PR        |

Commits
-------

cb60642d15 add a convenience method to get the parent form in Twig templates
2019-02-13 08:55:41 +01:00
Fabien Potencier
0887f62573 bug #30090 [FrameworkBundle] add constraint validators before optimizations (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[FrameworkBundle] add constraint validators before optimizations

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #24222
| License       | MIT
| Doc PR        |

Commits
-------

05e0e162d3 add constraint validators before optimizations
2019-02-13 08:52:59 +01:00
Fabien Potencier
03dfdc4db3 feature #29121 [FrameworkBundle][Translation] Add support for Translator paths, Twig paths and Translator aware services paths in commands (yceruto)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[FrameworkBundle][Translation] Add support for Translator paths, Twig paths and Translator aware services paths in commands

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29085, #29633, #17739
| License       | MIT
| Doc PR        | TODO

Add custom (also common) Twig and Translation paths to the translation commands:
 * Custom directories configured in `twig.paths`.
 * Custom directories configured in `translator.paths`
 * The `Resources/translations/` directory of `Validation` component (if installed).
 * The `Resources/translations/` directory of `Form` component (if installed).
 * The `Resources/translations/` directory of Security Core component (if installed).

Commits
-------

31d7a09bf5 Add support for translator paths and twig paths in translation commands
2019-02-13 08:43:59 +01:00
Fabien Potencier
3b8893fd92 fixed typo 2019-02-13 08:40:41 +01:00
Fabien Potencier
3be75ccf82 minor #30220 [Validator] added missing translation for UK validator (Andrii Boiko)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] added missing translation for UK validator

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  |no
| BC breaks?    | no
| Deprecations? |no
| Tests pass?   | yes
| Fixed tickets | #30194
| License       | MIT

Commits
-------

387295e6a4 [Validator] added missing translation for UK validator
2019-02-13 08:38:34 +01:00
Fabien Potencier
1873f32a80 backported a translation 2019-02-13 08:37:30 +01:00
Fabien Potencier
21b8efc44c fixed typo 2019-02-13 08:36:40 +01:00
Fabien Potencier
b951a0fce4 feature #28477 [Validator] Add new json Validator (zairigimad)
This PR was squashed before being merged into the 4.3-dev branch (closes #28477).

Discussion
----------

[Validator] Add new json Validator

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/10351

Hi,

in so many cases we want to test if a value is a valid json or not, so I propose this new ~~NotJson~~  `Json` constraint for this need.

cordially,

Commits
-------

131febc7be [Validator] Add new json Validator
2019-02-13 08:35:29 +01:00
zairig imad
131febc7be [Validator] Add new json Validator 2019-02-13 08:35:16 +01:00
Andrii Boiko
387295e6a4 [Validator] added missing translation for UK validator 2019-02-13 09:30:52 +02:00
Fabien Potencier
fd7875726b feature #30126 [Form] forward valid numeric values to transform() (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] forward valid numeric values to transform()

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30114
| License       | MIT
| Doc PR        |

Commits
-------

3be0d35b17 forward valid numeric values to transform()
2019-02-13 08:28:22 +01:00
Fabien Potencier
09275d4e27 feature #28635 [Form] Add label_translation_parameters, help_translation_parameters and attr_translation_parameters options to base form type (webnet-fr)
This PR was squashed before being merged into the 4.3-dev branch (closes #28635).

Discussion
----------

[Form] Add label_translation_parameters, help_translation_parameters and attr_translation_parameters options to base form type

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes. Travis-ci isn't green because it tests the components separately. Fabbot.io requires license headers in files where they were not present before.
| Fixed tickets | #27698
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/10065

Hi, this is an alternative to #27775.

`translation_parameters` is separated to `label_translation_parameters`, `help_translation_parameters`, `attr_translation_parameters`.

Commits
-------

b3f3c5361f [Form] Add label_translation_parameters, help_translation_parameters and attr_translation_parameters options to base form type
2019-02-13 08:24:11 +01:00
Webnet team
b3f3c5361f [Form] Add label_translation_parameters, help_translation_parameters and attr_translation_parameters options to base form type 2019-02-13 08:24:03 +01:00
Fabien Potencier
12a01a26c9 feature #29767 Nullable environment variable processor (bpolaszek)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Nullable environment variable processor

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | todo

Hey there,

Because environment variables are strings by design, empty environment variables are evaluated to `""` by default.
In the same way, `MY_ENV_VAR=null` will be evaluated to `"null"`, as a string.

What I suggest is to allow some environment variables to be evaluated to `null` (the real one) when their strings are _blank_ or equal _null_, _Null_ or _NULL_.

This can be easily done through a new `nullable` processor:

```bash
# .env
API_KEY=
```

```yaml
# config/services.yaml
services:
    FooService:
        arguments:
            $apiKey: %env(nullable:API_KEY)%
```
```php
# src/Services/FooService
namespace App\Services;

final class FooService
{
    /**
     * @var string|null
     */
    private $apiKey;

    /**
     * FooService constructor.
     */
    public function __construct(?string $apiKey)
    {
        $this->apiKey = $apiKey;
    }

    public function doSomething()
    {
        // Free plan
        if (null === $this->apiKey) {
            // ...
        }
    }

}
```
That's an example that comes to my mind but there can be many others.
This can also help in using null coalesce operators in constructors instead of checking if a string equals `""` (which is very PHP4 style).

Of course it can be used in conjunction with other types, i.e. `%env(float:nullable:SOME_OPTIONAL_FLOAT_ENV_VAR)%`.

What do you think?

Commits
-------

3a604ac392 Nullable environment variable processor
2019-02-13 08:12:17 +01:00
Fabien Potencier
491e87a1c4 minor #30219 Validator: add the Persian translations (behnoushnorouzi)
This PR was merged into the 3.4 branch.

Discussion
----------

Validator: add the Persian translations

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30162
| License       | MIT
| Doc PR        | -

Add the missing translations for the Persian (fa) validator.

Commits
-------

32306d8795 Validator: add the Persian translations
2019-02-13 08:09:37 +01:00
Behnoush
32306d8795 Validator: add the Persian translations 2019-02-12 22:50:28 +01:00
Faton
62b226e78e
Update validators.sq.xlf
#30187 Added the missing translations for the Albanian language
2019-02-12 22:10:37 +01:00
Fabien Potencier
3c2dc44af6 Merge branch '4.2'
* 4.2: (25 commits)
  Add missing ID_id validators translation
  fixed CS
  Added missing translations in validators.tr.xlf
  Update validators.es.xlf
  Update validators.hu.xlf
  [Validator] Add the missing translations for the Welsh (cy) locale
  [Validator] Add missing DE validator translations
  [Validator] Add the missing translations for the Dutch (nl) locale
  Add missing PL translation
  Add missing translations.
  Add missing translations for IT to Validator
  minor #30184 [Validator] Add the missing translations for the Russian (ru) locale (antonch1989)
  [Validator] Add the missing translations for the Arabic (ar) locale
  add_missing_translations_for_portuguese : [Validator] Add the missing translations for the Portuguese ("pt") locale
  [Validator] Add the missing translations for the French (fr) locale
  [Validator] Add some missing contents to the English translation
  use PropertyAccessorInterface instead of PropertyAccessor
  Fix KernelTestCase compatibility for PhpUnit 8 (bis)
  add xabbuh as code owner of the Form component
  [Validator] Added a missing translation
  ...
2019-02-12 21:07:40 +01:00
Fabien Potencier
c9c0d45d11 fixed CS 2019-02-12 21:06:43 +01:00
Fabien Potencier
1614a52b28 Merge branch '3.4' into 4.2
* 3.4: (25 commits)
  Add missing ID_id validators translation
  fixed CS
  Added missing translations in validators.tr.xlf
  Update validators.es.xlf
  Update validators.hu.xlf
  [Validator] Add the missing translations for the Welsh (cy) locale
  [Validator] Add missing DE validator translations
  [Validator] Add the missing translations for the Dutch (nl) locale
  Add missing PL translation
  Add missing translations.
  Add missing translations for IT to Validator
  minor #30184 [Validator] Add the missing translations for the Russian (ru) locale (antonch1989)
  [Validator] Add the missing translations for the Arabic (ar) locale
  add_missing_translations_for_portuguese : [Validator] Add the missing translations for the Portuguese ("pt") locale
  [Validator] Add the missing translations for the French (fr) locale
  [Validator] Add some missing contents to the English translation
  use PropertyAccessorInterface instead of PropertyAccessor
  Fix KernelTestCase compatibility for PhpUnit 8 (bis)
  add xabbuh as code owner of the Form component
  [Validator] Added a missing translation
  ...
2019-02-12 21:06:11 +01:00
Fabien Potencier
a9353c2977 minor #30216 [Validator] Add the missing translations for the Dutch (nl) locale (reyostallenberg)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Add the missing translations for the Dutch (nl) locale

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30177
| License       | MIT

This PR addresses the issue #30177, adding the missing translations for the Dutch (nl) locale.

Commits
-------

02662384c3 [Validator] Add the missing translations for the Dutch (nl) locale
2019-02-12 21:00:30 +01:00
Fabien Potencier
bc7ff55bf3 minor #30207 [Validator] Add the missing translations for the Russian (ru) locale (Anton Chernikov)
This PR was merged into the 3.4 branch.

Discussion
----------

 [Validator] Add the missing translations for the Russian (ru) locale

… (ru) locale (antonch1989)

| Q             | A
| ------------- | ---
| Branch?       |  3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30184
| License       | MIT

Added missing ru translations for the validator component

Commits
-------

8d84cf916b minor #30184 [Validator] Add the missing translations for the Russian (ru) locale (antonch1989)
2019-02-12 20:58:53 +01:00
Fabien Potencier
82af8e7df4 minor #30157 [Validator] Add some missing contents to the English translation (javiereguiluz)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Add some missing contents to the English translation

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| 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 | -
| License       | MIT
| Doc PR        | -

To simplify things, translated files contains all the keys of the English file in `master` branch. That's why our translations in 3.4 branch contain the key `id = 85` even if that is not used in 3.4 branch.

I propose to also include that unused key in the English file to make it easier to keep things in sync.

Commits
-------

ce4ff50b41 [Validator] Add some missing contents to the English translation
2019-02-12 20:57:31 +01:00
Fabien Potencier
7548f9ce2b minor #30204 Add missing ID_id validators translation (ikhsan017)
This PR was squashed before being merged into the 3.4 branch (closes #30204).

Discussion
----------

Add missing ID_id validators translation

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30170
| License       | MIT
| Doc PR        |

Add the missing translations for the Indonesian ("id") locale

Commits
-------

b645024f5d Add missing ID_id validators translation
2019-02-12 20:55:48 +01:00
Ikhsan Agustian
b645024f5d Add missing ID_id validators translation 2019-02-12 20:55:42 +01:00
Fabien Potencier
1885eac26a fixed CS 2019-02-12 20:54:51 +01:00
Fabien Potencier
6e269cf1be minor #30203 Added missing translations in validators.tr.xlf (mertingen)
This PR was squashed before being merged into the 3.4 branch (closes #30203).

Discussion
----------

Added missing translations in validators.tr.xlf

I referred the same tone and style in the new translations. I did not touch the abbreviation name such as IBAN or BIC. Because they have no counterparts.

| Q             | A
| ------------- | ---
| Branch?       | master for features / 3.4 up to 4.2 for bug fixes <!-- see below -->
| Bug fix?      | yes/no
| New feature?  | yes/no <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | yes/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
-------

48f1189879 Added missing translations in validators.tr.xlf
2019-02-12 20:53:59 +01:00
mertingen
48f1189879 Added missing translations in validators.tr.xlf 2019-02-12 20:53:50 +01:00
Fabien Potencier
59617eebc9 minor #30198 Update validators.es.xlf (davidpv)
This PR was squashed before being merged into the 3.4 branch (closes #30198).

Discussion
----------

Update validators.es.xlf

| Q             | A
| ------------- | ---
| Branch?       | master for features / 3.4 up to 4.2 for bug fixes <!-- see below -->
| Bug fix?      | yes/no
| New feature?  | yes/no <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | yes/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
-------

3197a5ff29 Update validators.es.xlf
2019-02-12 20:51:46 +01:00
David Perez Vicens
3197a5ff29 Update validators.es.xlf 2019-02-12 20:51:39 +01:00
Fabien Potencier
de2301b6c3 minor #30200 Update validators.hu.xlf (connorhu)
This PR was squashed before being merged into the 3.4 branch (closes #30200).

Discussion
----------

Update validators.hu.xlf

Translating message of DivisibleBy constraint.

| Q             | A
| ------------- | ---
| Branch?       | master for features / 3.4 up to 4.2 for bug fixes
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30168
| License       | MIT

Commits
-------

4ab3af0036 Update validators.hu.xlf
2019-02-12 20:50:30 +01:00
Karoly Gossler
4ab3af0036 Update validators.hu.xlf 2019-02-12 20:50:23 +01:00
Fabien Potencier
b799c95fe9 minor #30208 [Validator] Add the missing translations for the Welsh (cy) locale (houdmont)
This PR was squashed before being merged into the 3.4 branch (closes #30208).

Discussion
----------

[Validator] Add the missing translations for the Welsh (cy) locale

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30154
| License       | MIT

Addresses the missing translations listed in #30154

Commits
-------

8f701ce4e5 [Validator] Add the missing translations for the Welsh (cy) locale
2019-02-12 20:48:57 +01:00
Tom Houdmont
8f701ce4e5 [Validator] Add the missing translations for the Welsh (cy) locale 2019-02-12 20:48:45 +01:00
Fabien Potencier
0af5bd17ab minor #30205 [Validator] Add the missing translations for the Arabic (ar) locale (PhyDevs)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Add the missing translations for the Arabic (ar) locale

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| 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 | #30149    <!-- #-prefixed issue number(s), if any -->
| License       | MIT

This PR addresses the issue #30149, adding the missing translations.

Commits
-------

21b5a27507 [Validator] Add the missing translations for the Arabic (ar) locale
2019-02-12 20:46:34 +01:00
Fabien Potencier
4974e0e7ac minor #30202 [Validator] Add missing DE validator translations (janvt)
This PR was squashed before being merged into the 3.4 branch (closes #30202).

Discussion
----------

[Validator] Add missing DE validator translations

| Q             | A
| ------------- | ---
| Branch       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30156
| License       | MIT

Updated the validator translation file with the missing German (DE) translations.

Commits
-------

c489cc8b33 [Validator] Add missing DE validator translations
2019-02-12 20:45:42 +01:00
janvt
c489cc8b33 [Validator] Add missing DE validator translations 2019-02-12 20:45:35 +01:00
Fabien Potencier
558032b257 minor #30210 [Validator] Add the missing translations for the Galician (gl) locale (Lutacon)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Add the missing translations for the Galician (gl) locale

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30165
| License       | MIT
| Doc PR        |

Add the missing Galician translations.

Commits
-------

d7bcdddda7 Add missing translations.
2019-02-12 20:43:45 +01:00
Fabien Potencier
2382670c01 minor #30209 [Validator] Add missing translations for IT to Validator (Andrea Giannantonio)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Add missing translations for IT to Validator

| Q             | A
| ------------- | ---
| Branch?       | 3.4 <!-- see below -->
| 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 | #30171   <!-- #-prefixed issue number(s), if any -->
| License       | MIT

I add missing translations for IT to Validator going to solve the following issue: #30171

Commits
-------

40903335fd Add missing translations for IT to Validator
2019-02-12 20:41:57 +01:00
Reyo Stallenberg
02662384c3 [Validator] Add the missing translations for the Dutch (nl) locale 2019-02-12 20:38:21 +01:00
Dominik Hajduk
763f8dfeb3
Add missing PL translation 2019-02-12 20:12:42 +01:00
Luis Tacon
d7bcdddda7 Add missing translations. 2019-02-12 17:55:32 +01:00
Andrea Giannantonio
40903335fd Add missing translations for IT to Validator 2019-02-12 17:19:32 +01:00
Anton Chernikov
8d84cf916b minor #30184 [Validator] Add the missing translations for the Russian (ru) locale (antonch1989) 2019-02-12 18:05:36 +03:00
phydevs
21b5a27507
[Validator] Add the missing translations for the Arabic (ar) locale 2019-02-12 15:13:13 +01:00
Fabien Potencier
f2370eb570 minor #30201 [Validator] Add the missing translations for the Portuguese ("pt") locale (pedroresende)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Add the missing translations for the Portuguese ("pt") locale

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30181
| License       | MIT

This PR addresses the issue https://github.com/symfony/symfony/issues/30181, adding the missing translations.

Commits
-------

95795dc8cd add_missing_translations_for_portuguese : [Validator] Add the missing translations for the Portuguese ("pt") locale
2019-02-12 13:46:20 +01:00
Pedro Resende
95795dc8cd add_missing_translations_for_portuguese : [Validator] Add the missing translations for the Portuguese ("pt") locale 2019-02-12 12:09:26 +00:00
Martin
9a86504fc1 [Validator] Add the missing translations for the French (fr) locale 2019-02-12 12:07:44 +01:00
Javier Eguiluz
ce4ff50b41
[Validator] Add some missing contents to the English translation 2019-02-12 11:07:29 +01:00
Fabien Potencier
b9b8f9da98 minor #30001 [FrameworkBundle] consolidate the mime types service definition (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[FrameworkBundle] consolidate the mime types service definition

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

I wonder if we couldn't simplify things by just initializing the default `MimeTypes` instance once the first one is going to be created.

Commits
-------

ce546f5e5b consolidate the mime types service definition
2019-02-12 08:31:46 +01:00
Fabien Potencier
865127bca0 feature #30111 [SecurityBundle] Deprecate the normalization of the cookie names (javiereguiluz)
This PR was squashed before being merged into the 4.3-dev branch (closes #30111).

Discussion
----------

[SecurityBundle] Deprecate the normalization of the cookie names

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

This is an alternative solution to #24018 providing a BC layer until Symfony 5.0.

Commits
-------

36c5df4589 [SecurityBundle] Deprecate the normalization of the cookie names
2019-02-12 08:26:13 +01:00
Javier Eguiluz
36c5df4589 [SecurityBundle] Deprecate the normalization of the cookie names 2019-02-12 08:26:06 +01:00
Fabien Potencier
d3d880a1e7 bug #30122 [Security] fix switch user without having current token (Antoine Lamirault)
This PR was merged into the 3.4 branch.

Discussion
----------

[Security] fix switch user without having current token

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #22729
| License       | MIT

Attempting to switch a user cause an error when not having any token in the storage

Commits
-------

15db914984 [Security] fix switch user without having current token
2019-02-12 08:21:07 +01:00
Fabien Potencier
a205211d16 minor #30132 [Form] add back test after fixing it (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] add back test after fixing it

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/29934#discussion_r250501108
| License       | MIT
| Doc PR        |

Commits
-------

0daeba8e8a add back test after fixing it
2019-02-12 08:16:18 +01:00
Nick Chiu
3e3ca9d467 use PropertyAccessorInterface instead of PropertyAccessor 2019-02-12 08:15:17 +01:00
Fabien Potencier
637b10cce7 minor #30143 [PhpunitBridge] dropping ext-zip suggestion as its no longer needed (scuben)
This PR was merged into the 3.4 branch.

Discussion
----------

[PhpunitBridge] dropping ext-zip suggestion as its no longer needed

| Q             | A
| ------------- | ---
| Branch?       | 3.4 <!-- see below -->
| 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 -->
| License       | MIT

The zip requirement was dropped after this pull request: https://github.com/symfony/symfony/pull/29265

Commits
-------

bb4b53bc45 Update composer.json
2019-02-12 08:13:11 +01:00
Fabien Potencier
82ba2d6c69 minor #30144 [Validator] Added a missing translation (javiereguiluz)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Added a missing translation

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| 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 | -
| License       | MIT
| Doc PR        | -

Commits
-------

34698372e4 [Validator] Added a missing translation
2019-02-12 08:12:10 +01:00
Fabien Potencier
6d881f7900 bug #30124 Fix KernelTestCase compatibility for PhpUnit 8 (bis) (nicolas-grekas)
This PR was squashed before being merged into the 3.4 branch (closes #30124).

Discussion
----------

Fix KernelTestCase compatibility for PhpUnit 8 (bis)

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Follow up of #30084 and @Tobion's comment there.

Fabbot failure is a false-positive.

Commits
-------

1077df60ab Fix KernelTestCase compatibility for PhpUnit 8 (bis)
2019-02-12 08:11:16 +01:00
Nicolas Grekas
1077df60ab Fix KernelTestCase compatibility for PhpUnit 8 (bis) 2019-02-12 08:11:06 +01:00
Christian Flothmann
2d12aa0141 minor #30119 [Form] add missing null return type (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] add missing null return type

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

This reflects how all our implementations of this interface actually behave.

Commits
-------

03abfc09bd add missing null return type
2019-02-11 22:02:10 +01:00
Javier Eguiluz
34698372e4
[Validator] Added a missing translation 2019-02-11 19:25:53 +01:00
Patrick Landolt
bb4b53bc45
Update composer.json 2019-02-11 18:30:33 +01:00
Christian Flothmann
0daeba8e8a add back test after fixing it 2019-02-10 22:02:18 +01:00
Antoine Lamirault
70a38cfdfd [WebProfilerBundle] Add ajax request number 2019-02-10 19:13:17 +01:00
Christian Flothmann
3be0d35b17 forward valid numeric values to transform() 2019-02-09 15:44:59 +01:00
Thomas Calvet
fc09c285a6 [Form][MappingRule] Remove unnecessary cast 2019-02-09 11:17:15 +01:00
Antoine Lamirault
15db914984 [Security] fix switch user without having current token 2019-02-09 10:27:13 +01:00
Yonel Ceruto
31d7a09bf5 Add support for translator paths and twig paths in translation commands 2019-02-08 12:20:37 -05:00
Christian Flothmann
03abfc09bd add missing null return type 2019-02-08 18:03:34 +01:00
Christian Flothmann
ce546f5e5b consolidate the mime types service definition 2019-02-08 14:33:15 +01:00
Nicolas Grekas
5ed68eec7e Merge branch '4.2'
* 4.2:
  replace mocks with real objects in tests
2019-02-08 14:20:39 +01:00
Christian Flothmann
cee3ccd70f replace mocks with real objects in tests 2019-02-08 14:13:18 +01:00
Nicolas Grekas
41cc6d2676 Merge branch '4.2'
* 4.2:
  New extensions were released supporting PHP 7.3
  Remove "internal" annotation from datacollector serialization methods
  replace mocks with real objects in tests
  [DependencyInjection] fix #29930 add $lazyLoad flag to the generated factory code for lazy non-shared services
  escape function does not always take a string
  Fix phpunit 8 compatibility
  render integer types with grouping as text input
  ignore _method forms in NativeRequestHandler
  don't lose int precision with not needed type casts
2019-02-08 14:07:06 +01:00
Nicolas Grekas
17ac014306 Merge branch '3.4' into 4.2
* 3.4:
  Remove "internal" annotation from datacollector serialization methods
  replace mocks with real objects in tests
  Fix phpunit 8 compatibility
  render integer types with grouping as text input
  ignore _method forms in NativeRequestHandler
  don't lose int precision with not needed type casts
2019-02-08 14:06:27 +01:00
Nicolas Grekas
bb54e40ca7 minor #30112 Remove "internal" annotation from datacollector serialization methods (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

Remove "internal" annotation from datacollector serialization methods

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

I've been a bit too aggressively adding `@internal` in #30035.

Commits
-------

3c8fd2072f Remove "internal" annotation from datacollector serialization methods
2019-02-08 13:55:24 +01:00
Nicolas Grekas
3c8fd2072f Remove "internal" annotation from datacollector serialization methods 2019-02-08 13:25:22 +01:00
Anthony MARTIN
0403e4ad67 [FrameworkBundle] Add sid_length and sid_bits_per_character session ini options in configuration
| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29830
| License       | MIT
| Doc PR        | n/a

this a fix for the issue #29830

After deliberation, we estimate that only `sid_length` and` sid_bits_per_character` session options should be exposed. These options à optional.

For others, we recommend changing your php.ini file

We can now configure the session like this :

```yaml
framwork:
  session:
    sid_length: 64 //optional, recommended value is 32
    sid_bits_per_character: 6 //optional, recommended value is 5
```
2019-02-08 13:22:56 +01:00
Nicolas Grekas
f331c54dbc bug #30061 [Form] render integer types with grouping as text input (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] render integer types with grouping as text input

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29422
| License       | MIT
| Doc PR        |

Commits
-------

d6a5fde521 render integer types with grouping as text input
2019-02-08 13:13:01 +01:00
Nicolas Grekas
eb2a18ece1 bug #30063 [Form] don't lose int precision with not needed type casts (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] don't lose int precision with not needed type casts

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #26795
| License       | MIT
| Doc PR        |

Commits
-------

72136f1c04 don't lose int precision with not needed type casts
2019-02-08 13:10:33 +01:00
Nicolas Grekas
68b4825d91 bug #30076 [Form] ignore _method forms in NativeRequestHandler (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] ignore _method forms in NativeRequestHandler

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #19017
| License       | MIT
| Doc PR        |

Commits
-------

bc4b0913b4 ignore _method forms in NativeRequestHandler
2019-02-08 13:09:54 +01:00
Nicolas Grekas
a36dc51273 bug #30084 Fix KernelTestCase compatibility for PhpUnit 8 (alexander-schranz)
This PR was merged into the 3.4 branch.

Discussion
----------

Fix KernelTestCase compatibility for PhpUnit 8

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  |no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30071
| License       | MIT
| Doc PR        |

As the PhpUnit 8 Testcase has different return types as PhpUnit 7 there need to be 2 different classes to support both PhpUnit 8 and PhpUnit 7. With a class alias we can then change which version is used based on the PhpUnit Version constant. The fix is a little bit hacky but to support different major versions I see no other way.

Not sure as we can't upgrade symfony/symfony to PhpUnit 8 how we can create a TestCase for this change.

Commits
-------

83a56a0cbe Fix phpunit 8 compatibility
2019-02-08 13:09:15 +01:00
Nicolas Grekas
717dcc9001 bug #30093 [DependencyInjection] add $lazyLoad context to the generated code for lazy non-shared service by PhpDumper (XuruDragon)
This PR was merged into the 4.2 branch.

Discussion
----------

[DependencyInjection] add $lazyLoad context to the generated code for lazy non-shared service by PhpDumper

| Q             | A
| ------------- | ---
| Branch?       | 4.1
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29930
| License       | MIT
| Doc PR        | n/a

Fix #29930  by adding $lazyLoad context to the generated code for lazy non-shared service by PhpDumper

Commits
-------

98d4dfdadb [DependencyInjection] fix #29930 add $lazyLoad flag to the generated factory code for lazy non-shared services
2019-02-08 13:00:12 +01:00
Nicolas Grekas
fd4306a3ab feature #30075 [DependencyInjection] Added information about deprecated aliases in debug:autowiring (XuruDragon)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DependencyInjection] Added information about deprecated aliases in debug:autowiring

| 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        | n/a

Fix and improves a bit PR #29968 and #29995

![Screenshot](https://i.imgur.com/GDj2NIY.png)

Commits
-------

3d2378dab5 [DependencyInjection] Added information about deprecated aliases in debug:autowiring
2019-02-08 12:50:01 +01:00
Grégoire Pineau
bac2c99733 bug #30102 [Workflow] Graphviz dumper escape not always a string (Korbeil)
This PR was merged into the 4.2 branch.

Discussion
----------

[Workflow] Graphviz dumper escape not always a string

| Q             | A
| ------------- | ---
| Branch?       | 4.1
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

The `escape` function takes a string as parameter but it can be a `bool` (see `findTransitions` method in same class). In this PR I allow any type in `escape` and does escaping only for `string`.

Commits
-------

1b17192b0a escape function does not always take a string
2019-02-08 11:00:05 +01:00
Christian Flothmann
6ac2550dc8 replace mocks with real objects in tests 2019-02-07 23:32:19 +01:00
Nicolas Grekas
7f3f75d85d Merge branch '4.2'
* 4.2:
  fix merge
  [FrameworkBundle] fix xsd
  [FrameworkBundle] update xsd to match the 4.2 configuration
  [FrameworkBundle] Update the xsd to match the actual session configuration
  [Form] CsrfValidationListener marks the token as invalid if it is not a string
  [Routing] fix perf issue when dumping large number of routes
  Fix wrong value in file id attribute for Xliff 2.0
  [VarDumper] Fixed phpDoc
  [PhpUnitBridge] fix PHP  5.3 compat
  [Messenger] Fix DataCollector template
  [Filesystem] Fixed some docblocks and typos
  bumped Symfony version to 4.2.4
  updated VERSION for 4.2.3
  updated CHANGELOG for 4.2.3
  bumped Symfony version to 3.4.23
  updated VERSION for 3.4.22
  update CONTRIBUTORS for 3.4.22
  updated CHANGELOG for 3.4.22
  fix some minor typos
  do not overwrite the constraint being evaluated
2019-02-07 19:43:24 +01:00
Nicolas Grekas
02adcc33a2 fix merge 2019-02-07 19:39:48 +01:00
Anthony MARTIN
436c3b9402 [FrameworkBundle] fix xsd 2019-02-07 19:28:32 +01:00
Anthony MARTIN
98d4dfdadb [DependencyInjection] fix #29930 add $lazyLoad flag to the generated factory code for lazy non-shared services
| Q             | A
| ------------- | ---
| Branch?       | 4.1
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29930
| License       | MIT
| Doc PR        | n/a

Fix #29930  by adding $lazyLoad context to the generated code for lazy non-shared service by PhpDumper
2019-02-07 19:08:46 +01:00
Baptiste Leduc
1b17192b0a
escape function does not always take a string 2019-02-07 19:06:43 +01:00
Anthony MARTIN
3d2378dab5 [DependencyInjection] Added information about deprecated aliases in debug:autowiring
| 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        | n/a

Fix and improves a bit PR #29968 and #29995
2019-02-07 13:21:48 +01:00
Anthony MARTIN
7782e60b00 [FrameworkBundle] update xsd to match the 4.2 configuration
| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/A

Update the FrameworkBundle xsd to match the 4.2 configuration
2019-02-07 12:59:23 +01:00
Nicolas Grekas
32e14005a6 Merge branch '3.4' into 4.2
* 3.4:
  [FrameworkBundle] Update the xsd to match the actual session configuration
  [Form] CsrfValidationListener marks the token as invalid if it is not a string
  [VarDumper] Fixed phpDoc
  [PhpUnitBridge] fix PHP  5.3 compat
  [Filesystem] Fixed some docblocks and typos
  bumped Symfony version to 3.4.23
  updated VERSION for 3.4.22
  update CONTRIBUTORS for 3.4.22
  updated CHANGELOG for 3.4.22
  fix some minor typos
  do not overwrite the constraint being evaluated
2019-02-07 12:40:08 +01:00
Nicolas Grekas
8f29f56d67 minor #30100 [FrameworkBundle] Update the xsd to match the actual session configuration (XuruDragon)
This PR was merged into the 3.4 branch.

Discussion
----------

[FrameworkBundle] Update the xsd to match the actual session configuration

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Update the FrameworkBundle xsd to match the actual session configuration

Commits
-------

40bd76c9d4 [FrameworkBundle] Update the xsd to match the actual session configuration
2019-02-07 12:35:39 +01:00
Anthony MARTIN
40bd76c9d4 [FrameworkBundle] Update the xsd to match the actual session configuration
| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Update the FrameworkBundle xsd to match the actual session configuration
2019-02-07 11:24:20 +01:00
Nicolas Grekas
5c7931c992 bug #29884 [Form] CsrfValidationListener marks the token as invalid if it is not a string (umpirsky)
This PR was squashed before being merged into the 3.4 branch (closes #29884).

Discussion
----------

[Form] CsrfValidationListener marks the token as invalid if it is not a string

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29882
| License       | MIT

Commits
-------

deb8e95091 [Form] CsrfValidationListener marks the token as invalid if it is not a string
2019-02-07 10:44:29 +01:00
Saša Stamenković
deb8e95091 [Form] CsrfValidationListener marks the token as invalid if it is not a string 2019-02-07 10:44:13 +01:00
Nicolas Grekas
a6a1be803d feature #30024 [Debug] Display more details in the simple error page of Debug (javiereguiluz)
This PR was squashed before being merged into the 4.3-dev branch (closes #30024).

Discussion
----------

[Debug] Display more details in the simple error page of Debug

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29891
| License       | MIT
| Doc PR        | -

Note: this only changes the simple error page of Debug component, which is different from the full-featured error page of WebProfilerBundle.

-----

#29891 shows a confusing error page. In #29928 we improved the first error message displayed to the user. In this PR we implement @nicolas-grekas' idea to replace the generic error page title by a better error message. So, this PR + #29928 would fix #29891 to me.

### Before

![error-before](https://user-images.githubusercontent.com/73419/51920135-1519b500-23e5-11e9-99d6-e9b631b97499.png)

### After

![error-after](https://user-images.githubusercontent.com/73419/51920141-1945d280-23e5-11e9-97c3-49b2170dbd15.png)

Commits
-------

75ff151580 [Debug] Display more details in the simple error page of Debug
2019-02-07 10:41:46 +01:00
Javier Eguiluz
75ff151580 [Debug] Display more details in the simple error page of Debug 2019-02-07 10:41:41 +01:00
Nicolas Grekas
fd720ed704 bug #30058 [Routing] fix perf issue when dumping large number of routes (nicolas-grekas)
This PR was merged into the 4.2 branch.

Discussion
----------

[Routing] fix perf issue when dumping large number of routes

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29918
| License       | MIT
| Doc PR        | -

In my reproducer, dumping 12k routes goes from 40s to 3s without xdebug, and from 50s to 12s with xdebug.

There is a lower level issue which is that `strpos` is called 16M times, but that's still a lot faster than calling `preg_match` 16M times. Reducing the number of checks is certainly possible, but that would be more involving. This could happen on master if someone is up to dig into it.

Commits
-------

872efe5729 [Routing] fix perf issue when dumping large number of routes
2019-02-07 10:20:22 +01:00
Nicolas Grekas
872efe5729 [Routing] fix perf issue when dumping large number of routes 2019-02-07 10:16:03 +01:00
Alexander Schranz
83a56a0cbe Fix phpunit 8 compatibility 2019-02-07 09:56:45 +01:00
Nicolas Grekas
6fa8d07902 bug #30062 [Form] do not overwrite the constraint being evaluated (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] do not overwrite the constraint being evaluated

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #27362
| License       | MIT
| Doc PR        |

Commits
-------

345a6329dd do not overwrite the constraint being evaluated
2019-02-07 09:55:37 +01:00
Nicolas Grekas
0bb0c7f88c bug #30074 Fix wrong value in file id attribute for Xliff 2.0 (deguif)
This PR was squashed before being merged into the 4.2 branch (closes #30074).

Discussion
----------

Fix wrong value in file id attribute for Xliff 2.0

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | ?
| Deprecations? | no
| Tests pass?   | ?
| Fixed tickets |
| License       | MIT
| Doc PR        |

Currently using the `XliffFileDumper` for exporting messages from catalogue with domain of the form `xxxx+intl-icu` produces an invalid Xliff version 2.0 file as the file id attribute is of type `xs:NMTOKEN` (cf. https://github.com/symfony/translation/blob/master/Resources/schemas/xliff-core-2.0.xsd#L139) which doesn't accept `+` character (cf. http://www.datypic.com/sc/xsd/t-xsd_NMTOKEN.html).
Exception is thrown when loading the content after.

Commits
-------

8bf12f89a3 Fix wrong value in file id attribute for Xliff 2.0
2019-02-07 09:55:10 +01:00
François-Xavier de Guillebon
8bf12f89a3 Fix wrong value in file id attribute for Xliff 2.0 2019-02-07 09:55:01 +01:00
renanbr
006c6ddda3 makes serialize methods final 2019-02-07 09:54:38 +01:00
Nicolas Grekas
034cd46a61 minor #30065 [Filesystem] Fixed some docblocks and typos (samnela)
This PR was merged into the 3.4 branch.

Discussion
----------

[Filesystem] Fixed some docblocks and typos

| Q             | A
| ------------- | ---
| Branch?       |  3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Commits
-------

972b971129 [Filesystem] Fixed some docblocks and typos
2019-02-07 09:17:13 +01:00
enomotodev
506231f353 [VarDumper] Fixed phpDoc 2019-02-07 09:14:15 +01:00
Christian Flothmann
05e0e162d3 add constraint validators before optimizations 2019-02-06 11:00:25 +01:00
Christian Flothmann
974cab3604 feature #27898 [Yaml] Fixed invalid Parser behavior (guiguiboy)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Yaml] Fixed invalid Parser behavior

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #27874
| License       | MIT
| Doc PR        | NA

This fixes #27874
I'm not sure about the update in composer.json though. It seems a good idea because I was able to run composer update without the zip extension. If required, I'll remove it.

Commits
-------

7bf83815bd Added deprecation notice when mapping keys are found in multi-line blocks
2019-02-06 09:40:40 +01:00
Nicolas Grekas
b45cbf6e9e [PhpUnitBridge] fix PHP 5.3 compat 2019-02-06 09:03:17 +01:00
Dimitri Gritsajuk
146ae74fac [Messenger] Fix DataCollector template 2019-02-05 09:26:58 +01:00
Samuel NELA
972b971129 [Filesystem] Fixed some docblocks and typos 2019-02-04 22:34:32 +01:00
Christian Flothmann
d6a5fde521 render integer types with grouping as text input 2019-02-04 20:23:31 +01:00
Christian Flothmann
405aa548eb deprecate using invalid names for buttons 2019-02-04 19:38:43 +01:00
Christian Flothmann
bc4b0913b4 ignore _method forms in NativeRequestHandler 2019-02-04 19:34:59 +01:00
Christian Flothmann
72136f1c04 don't lose int precision with not needed type casts 2019-02-04 18:56:50 +01:00
Fabien Potencier
d4f4d8aca7 bumped Symfony version to 4.2.4 2019-02-03 13:51:55 +01:00
Fabien Potencier
c41a869379 updated VERSION for 4.2.3 2019-02-03 13:47:33 +01:00
Fabien Potencier
205b0ba2cc bumped Symfony version to 3.4.23 2019-02-03 13:46:56 +01:00
Fabien Potencier
6abe200ebf updated VERSION for 3.4.22 2019-02-03 13:22:50 +01:00
Christian Flothmann
590850fe29 fix some minor typos 2019-02-02 11:16:32 +01:00
Christian Flothmann
345a6329dd do not overwrite the constraint being evaluated 2019-02-02 10:48:17 +01:00
Nicolas Grekas
23fe9c89db Merge branch '4.2'
* 4.2:
  fix pruning pdo cache for vendors that throw on execute
  Fix typo in translation
  Declare exceptions that are already thrown by implementations
2019-02-01 12:07:50 +01:00
Anthony MARTIN
b0925025f8 [DependencyInjection] Fix serialization of \Closure in RemoveUnusedDefinitionsPass
Signed-off-by: Anthony MARTIN <anthony.martin@sensiolabs.com>

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29694
| License       | MIT
| Doc PR        | n/a

Fix the issue #29694
2019-02-01 12:06:24 +01:00
Nicolas Grekas
d44fba1260 Merge branch '3.4' into 4.2
* 3.4:
  Fix typo in translation
  Declare exceptions that are already thrown by implementations
2019-02-01 11:47:37 +01:00
Ben Davies
14b9fa5234 fix pruning pdo cache for vendors that throw on execute 2019-01-31 15:08:08 +00:00
Tarjei Huse
e8cdda3cf2 Fix typo in translation 2019-01-31 11:03:47 +01:00
Robin Chalas
9429face97 feature #29753 [Console] Add an iterate method to the ProgressBar class (jvasseur)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Console] Add an iterate method to the ProgressBar class

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/10949

Add an iterate method to the `ProgressBar` class that simplify updating the progress bar when iterating over an `iterable`.

Before:
```php
$bar->start();
foreach ($iterable as $value) {
    // Process $value

    $bar->advance();
}
$bar->finish();
```

After:
```php
foreach ($bar->iterate($iterable) as $value) {
    // Process $value
}
```

Additionally if `$iterable` is countable, the progress bar max step will automatically set to its count. If it isn't countable, nothing is done (instead of setting it to 0) to allow passing a max independently before calling `iterate`.

I will try to do the doc PR soon.

Commits
-------

eb355314b0 Add an iterate method to the ProgressBar class
2019-01-31 10:53:43 +01:00
Robin Chalas
52a986b15e minor #29779 [Security] Declare exceptions that are already thrown by implementations (umulmrum)
This PR was merged into the 3.4 branch.

Discussion
----------

[Security] Declare exceptions that are already thrown by implementations

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29650
| License       | MIT
| Doc PR        |

Adding exception declarations for PasswordEncoderInterface. I think it's a matter of opinion whether this change is a BC break. The BC promise doesn't cover such a case; I'd see it as a BC break to add exceptions in general, but in this case it's more of a "documentation" issue, as most implementations of the interface have been throwing those exceptions for years.

Commits
-------

f4cc30b72b Declare exceptions that are already thrown by implementations
2019-01-31 10:50:26 +01:00
Jérôme Vasseur
eb355314b0 Add an iterate method to the ProgressBar class 2019-01-30 21:33:07 +01:00
Nicolas Grekas
25fcc3ed77 Merge branch '4.2'
* 4.2:
  [DI] Fix dumping Doctrine-like service graphs
  fix serialization workaround in CustomUserMessageAuthenticationException
  PHPUnit Bridge: Rollback to traditional array syntax.
  [Form] fix some docblocks and type checks
2019-01-30 18:52:12 +01:00
Nicolas Grekas
4f6541e4f5 Merge branch '3.4' into 4.2
* 3.4:
  [DI] Fix dumping Doctrine-like service graphs
  fix serialization workaround in CustomUserMessageAuthenticationException
  PHPUnit Bridge: Rollback to traditional array syntax.
  [Form] fix some docblocks and type checks
2019-01-30 18:51:38 +01:00
Nicolas Grekas
5b1948e6b7 bug #30046 [DI] Fix dumping Doctrine-like service graphs (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[DI] Fix dumping Doctrine-like service graphs

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30017 #29637 #29693
| License       | MIT
| Doc PR        | -

I'm unable to provide a reproducer for this, the required service reference graph is too crazy, but that does the job :)

Commits
-------

ed96830893 [DI] Fix dumping Doctrine-like service graphs
2019-01-30 18:48:51 +01:00
Nicolas Grekas
83bab56a38 minor #30041 PHPUnit Bridge: Rollback to traditional array syntax. (derrabus)
This PR was merged into the 3.4 branch.

Discussion
----------

PHPUnit Bridge: Rollback to traditional array syntax.

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30039
| License       | MIT
| Doc PR        | N/A

I've used PHP CS Fixer to convert all short array expressions back to the traditional syntax understood by php 5.3. Unfortunately, I don't have a local php 5.3 setup anymore, so I hope I've caught all occurrences.

Commits
-------

8b330de7f7 PHPUnit Bridge: Rollback to traditional array syntax.
2019-01-30 18:19:24 +01:00
Nicolas Grekas
ed96830893 [DI] Fix dumping Doctrine-like service graphs 2019-01-30 18:15:16 +01:00
renanbr
542e9e29b9 fix serialization workaround in CustomUserMessageAuthenticationException 2019-01-30 16:28:03 +01:00
Beno!t POLASZEK
3a604ac392 Nullable environment variable processor 2019-01-30 14:43:25 +01:00
Alexander M. Turek
8b330de7f7 PHPUnit Bridge: Rollback to traditional array syntax. 2019-01-30 14:30:37 +01:00
Fabien Potencier
b324445d6a feature #29999 [PropertyAccess] speed up accessing object properties (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[PropertyAccess] speed up accessing object properties

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #28926, #29405
| License       | MIT
| Doc PR        |

I propose to improve the performance of the `ObjectNormalizer` by not adding a new interface to the PropertyAccess component, but by adding some shortcut for cases where we know that we do not need to perform all checks. The added benefit is that this will not only speed up the `ObjectNormalizer` class, but will be available for every consumer of the `PropertyAccessor` without having to adapt to a new API.

TODO:

- [ ] confirm that these changes indeed introduce the same benefit as #29405 doing an actual benchmark

Commits
-------

ef7876e517 speed up accessing object properties
2019-01-30 13:41:05 +01:00
Fabien Potencier
46edcee92a bug #30028 [Form] fix some docblocks and type checks (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] fix some docblocks and type checks

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30018
| License       | MIT
| Doc PR        |

Commits
-------

ec0c37192b [Form] fix some docblocks and type checks
2019-01-30 13:38:07 +01:00
Nicolas Grekas
3417a15d95 Merge branch '4.2'
* 4.2:
  Add missing `@internal` annotations
  Disable Twig in the profiler menu when Twig is not used
  Mark some/most implementations of Serializable as `@internal`
  [Config] ensure moving away from Serializable wont break cache:clear
  [VarDumper] dont implement Serializable in Stub
  [Config] fix compat with wrapping autoloaders
  [Messenger] fixed RabbitMQ arguments not passed as integer values
2019-01-30 12:44:59 +01:00
Nicolas Grekas
bc8656c573 Merge branch '3.4' into 4.2
* 3.4:
  Add missing `@internal` annotations
  Disable Twig in the profiler menu when Twig is not used
  Mark some/most implementations of Serializable as `@internal`
  [Config] ensure moving away from Serializable wont break cache:clear
  [VarDumper] dont implement Serializable in Stub
  [Config] fix compat with wrapping autoloaders
2019-01-30 12:44:30 +01:00
Nicolas Grekas
823a95d81e Add missing @internal annotations 2019-01-30 12:43:38 +01:00
Nicolas Grekas
82394d8a19 minor #30023 [Config] fix compat with wrapping autoloaders (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[Config] fix compat with wrapping autoloaders

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Registering this private method as autoloader works, until one wants to decorate autoloaders (like our DebugClassLoader does.)

Commits
-------

695d84be4c [Config] fix compat with wrapping autoloaders
2019-01-30 12:33:42 +01:00
Nicolas Grekas
fb43484f85 bug #30037 Disable Twig in the profiler menu when Twig is not used (javiereguiluz)
This PR was merged into the 3.4 branch.

Discussion
----------

Disable Twig in the profiler menu when Twig is not used

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| 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 | #30033
| License       | MIT
| Doc PR        | -

Commits
-------

b47408179f Disable Twig in the profiler menu when Twig is not used
2019-01-30 12:31:21 +01:00
Nicolas Grekas
591c805ccd bug #30026 [VarDumper] dont implement Serializable in Stub (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[VarDumper] dont implement Serializable in Stub

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #30014
| License       | MIT
| Doc PR        | -

`Serializable` is really really broken...

Commits
-------

73070d7d32 [VarDumper] dont implement Serializable in Stub
2019-01-30 12:22:50 +01:00
Nicolas Grekas
fb2f57da5e minor #30035 Mark some/most implementations of Serializable as @internal (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

Mark some/most implementations of Serializable as `@internal`

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

There are more usages of `Serializable` in the code base, but the remaining are unfortunately exposed as part of interfaces.

All these places are IMHO already considered internal, this just makes it explicit.

Will ease moving away from `Serializable`.

Commits
-------

7b9d73d891 Mark some/most implementations of Serializable as `@internal`
2019-01-30 12:21:16 +01:00
Javier Eguiluz
b47408179f Disable Twig in the profiler menu when Twig is not used 2019-01-30 11:27:26 +01:00
Nicolas Grekas
7b9d73d891 Mark some/most implementations of Serializable as @internal 2019-01-30 10:03:33 +01:00
Nicolas Grekas
9d3180a7e2 [Config] ensure moving away from Serializable wont break cache:clear 2019-01-30 09:47:57 +01:00
Christian Flothmann
ec0c37192b [Form] fix some docblocks and type checks 2019-01-30 09:09:50 +01:00
Fabien Potencier
0ac32bcc59 fixed typo 2019-01-30 08:03:13 +01:00
Tomáš Votruba
947aaee22c
[Console] Make "warning" in SymfonyStyle use orange color 2019-01-29 23:35:02 +01:00
Fabien Potencier
d18aa4d11b minor #30019 [Mime] improve some types in docblocks (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Mime] improve some types in docblocks

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

27463daced [Mime] improve some types in docblocks
2019-01-29 22:32:03 +01:00
Nicolas Grekas
73070d7d32 [VarDumper] dont implement Serializable in Stub 2019-01-29 17:19:17 +01:00
Nicolas Grekas
695d84be4c [Config] fix compat with wrapping autoloaders 2019-01-29 16:40:56 +01:00
Christian Flothmann
27463daced [Mime] improve some types in docblocks 2019-01-29 14:08:21 +01:00
Emanuele Panzeri
f19c035aaa [Messenger] fixed RabbitMQ arguments not passed as integer values 2019-01-29 13:42:22 +01:00
Nicolas Grekas
a3b45eb034 Merge branch '4.2'
* 4.2:
  [Cache] fix connecting using socket with phpredis
  [HttpKernel] fix nested calls to serialize when using DataCollector
2019-01-29 11:17:58 +01:00
Nicolas Grekas
48e5df87a3 [Cache] fix connecting using socket with phpredis 2019-01-29 11:14:57 +01:00
Nicolas Grekas
fac1052038 Merge branch '4.1' into 4.2
* 4.1:
  [HttpKernel] fix nested calls to serialize when using DataCollector
2019-01-29 11:04:11 +01:00
Nicolas Grekas
b7f1fe2a48 Merge branch '3.4' into 4.1
* 3.4:
  [HttpKernel] fix nested calls to serialize when using DataCollector
2019-01-29 11:03:57 +01:00
Nicolas Grekas
3cfb558f03 [HttpKernel] fix nested calls to serialize when using DataCollector 2019-01-29 11:03:44 +01:00
Nicolas Grekas
32aa969dff Merge branch '4.2'
* 4.2:
  [Routing] dont redirect routes with greedy trailing vars with no explicit slash
  skip native serialize among child and parent serializable objects
  [Routing] backport tests from 4.1
  [MonologBridge] Remove unused local variable
  Remove unreachable code
  Add PackageNameTest to ConfigurationTest also add in the changelog the corresponding entry to this PR
  Support use of hyphen in asset package name
  Fix format strings for deprecation notices
  Remove a harmless duplicate array key from VarDumper
  [VarDumper] Fixed search bar
  Remove gendered pronouns
  Replace gender by eye color in tests
  [Security] dont do nested calls to serialize()
2019-01-29 10:50:57 +01:00
Nicolas Grekas
adbdec838a Merge branch '4.1' into 4.2
* 4.1:
  [Routing] dont redirect routes with greedy trailing vars with no explicit slash
  skip native serialize among child and parent serializable objects
  [Routing] backport tests from 4.1
  [MonologBridge] Remove unused local variable
  Remove unreachable code
  Add PackageNameTest to ConfigurationTest also add in the changelog the corresponding entry to this PR
  Support use of hyphen in asset package name
  Remove gendered pronouns
  Replace gender by eye color in tests
  [Security] dont do nested calls to serialize()
2019-01-29 10:49:29 +01:00
Nicolas Grekas
2bb8890bbb [Routing] dont redirect routes with greedy trailing vars with no explicit slash 2019-01-29 10:39:33 +01:00
Nicolas Grekas
78c23c7838 Merge branch '3.4' into 4.1
* 3.4:
  skip native serialize among child and parent serializable objects
  [Routing] backport tests from 4.1
  Add PackageNameTest to ConfigurationTest also add in the changelog the corresponding entry to this PR
  Support use of hyphen in asset package name
  Remove gendered pronouns
  Replace gender by eye color in tests
  [Security] dont do nested calls to serialize()
2019-01-29 10:21:38 +01:00
Nicolas Grekas
b4357d734b bug #30006 [Security] don't do nested calls to serialize() (nicolas-grekas, Renan)
This PR was merged into the 3.4 branch.

Discussion
----------

[Security] don't do nested calls to serialize()

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29951
| License       | MIT
| Doc PR        | n/a

The problem (originally reported as `Symfony\Component\Security\Core\Authentication\Token\AbstractToken` issue), may occur also in classes extending `Symfony\Component\Security\Core\Exception\AuthenticationException`

Tasks:

- [x] Skip native serializer (workaround itself)
- [x] Token test
- [x] Exception test

Commits
-------

10256fc4fd skip native serialize among child and parent serializable objects
41000f1de0 [Security] dont do nested calls to serialize()
2019-01-29 10:07:09 +01:00
Nicolas Grekas
957b47726a minor #30012 [Routing] backport tests from 4.1 (nicolas-grekas)
This PR was merged into the 3.4 branch.

Discussion
----------

[Routing] backport tests from 4.1

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Commits
-------

c2e0f9701d [Routing] backport tests from 4.1
2019-01-29 10:06:41 +01:00
Renan
10256fc4fd skip native serialize among child and parent serializable objects 2019-01-29 10:04:09 +01:00
Nicolas Grekas
c2e0f9701d [Routing] backport tests from 4.1 2019-01-29 09:47:12 +01:00
Fabien Potencier
be5d85e112 feature #29641 [Validator] NotBlank: add a new option to allow null values (dunglas)
This PR was squashed before being merged into the 4.3-dev branch (closes #29641).

Discussion
----------

[Validator] NotBlank: add a new option to allow null values

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- 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 | #27876
| License       | MIT
| Doc PR        | todo

This PR adds a new option to the `@NotBlank` constraint to allow null values. As described in #27876, this is particularly useful when creating web APIs.

Commits
-------

484d22a6d9 [Validator] NotBlank: add a new option to allow null values
2019-01-29 07:35:29 +01:00
Kévin Dunglas
484d22a6d9 [Validator] NotBlank: add a new option to allow null values 2019-01-29 07:35:22 +01:00
Samuel NELA
5580473740 [MonologBridge] Remove unused local variable 2019-01-28 21:24:44 +01:00
Nicolas Grekas
6b611d53b4 minor #30002 Remove a harmless duplicate array key from VarDumper (TysonAndre)
This PR was merged into the 4.2 branch.

Discussion
----------

Remove a harmless duplicate array key from VarDumper

This has the same field order as the original code.

Detected via static analysis - The `type` is also the first element of the array. This change preserves the key order of the resulting array.

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes (harmless)
| New feature?  | no
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| Tests pass?   | N/A
| Fixed tickets |
| License       | MIT
| Doc PR        |

<!--
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
-------

1cd30acc2a Remove a harmless duplicate array key from VarDumper
2019-01-28 19:04:41 +01:00
Tyson Andre
2fb8f49146 Remove unreachable code
The try/finally block will either return or throw.
Additionally, $socket was never defined.

Detected via static analysis
2019-01-28 19:03:55 +01:00
Nicolas Grekas
dca09750ed bug #29995 [DI] add id of referencing service when a deprecated alias is found (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DI] add id of referencing service when a deprecated alias is found

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Improves #29968 a bit for DX.

Commits
-------

b124fb7271 [DI] add id of referencing service when a deprecated alias is found
2019-01-28 17:42:45 +01:00
Nicolas Grekas
b124fb7271 [DI] add id of referencing service when a deprecated alias is found 2019-01-28 17:40:12 +01:00
Anthony MARTIN
5c58b6e875 Add PackageNameTest to ConfigurationTest also add in the changelog the corresponding entry to this PR 2019-01-28 15:09:38 +01:00
damaya
30b6a4f7bf Support use of hyphen in asset package name
| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| Tests pass?   | yes (Manual tests only)
| Fixed tickets | #28122
| License       | MIT
| Doc PR        | n/a

According to issue https://github.com/symfony/symfony-docs/pull/10442, we tested in a demo bundle, for example in src/AppBundle/Resources/config/config.yml a package using hyphens: app-client-frontend, and withouth the patch it fails because the package is not recognized. With the patch, it works as expected.
```
framework:
    assets:
        packages:
            app-client-frontend:
                version: "%env(FRONTEND_VERSION)%"
                version_format: '%%2$s/dist/%%1$s'
                base_urls:
                  - "%env(FRONTEND_URL)%"
```
2019-01-28 15:09:19 +01:00
Fabien Potencier
5a8c06e961 minor #30000 [Mime] move add mime type guesser pass to the component (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Mime] move add mime type guesser pass to the component

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

ba20bb2e7e move add mime type guesser pass to the component
2019-01-28 07:41:18 +01:00
Tyson Andre
2e00dfb0c8 Fix format strings for deprecation notices
The `%c` conversion specifier expects an integer
(the value of the byte to print)

Detected via static analysis
2019-01-27 18:11:39 -05:00
Tyson Andre
1cd30acc2a Remove a harmless duplicate array key from VarDumper
This has the same field order as the original code.

Detected via static analysis.
2019-01-27 17:40:41 -05:00
Christian Flothmann
ef7876e517 speed up accessing object properties 2019-01-27 23:03:33 +01:00
Nicolas Grekas
98bc3e7917 minor #29724 [PHPUnitBridge] Static access in closure (greg0ire, nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[PHPUnitBridge] Static access in closure

| Q             | A
| ------------- | ---
| Branch?       | master for features
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n / a
| License       | MIT
| Doc PR        | n / a

#29718 bumps php to 5.5 . This is what we could simplify if it gets merged, thanks to this "new" PHP feature: https://3v4l.org/sJOWr

EDIT: it was merged, this can be reviewed.

Commits
-------

97f3023963 Use the scope of an instance
9df76ebbe5 Extract closures into static functions
2019-01-27 19:07:22 +01:00
Nicolas Grekas
97f3023963 Use the scope of an instance 2019-01-27 19:04:53 +01:00
Grégoire Paris
9df76ebbe5
Extract closures into static functions 2019-01-27 18:08:35 +01:00
Nicolas Grekas
f4682c3ab9 feature #28721 [Form] deprecate some options for single_text widgets (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Form] deprecate some options for single_text widgets

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

89ff331865 deprecate some options for single_text widgets
2019-01-27 15:37:17 +01:00
Roland Franssen
99d2893b78 [VarDumper] Fixed search bar 2019-01-27 14:54:44 +01:00
Christian Flothmann
ba20bb2e7e move add mime type guesser pass to the component 2019-01-27 12:43:19 +01:00
Fabien Potencier
57f3cbb87e feature #29936 [Mime] Add a set of default content-types for some extensions (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Mime] Add a set of default content-types for some extensions

| 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 | n/a
| License       | MIT
| Doc PR        | n/a

Some extensions have many possible content-types. This PR forces the first (preferred) content type for some extensions (the preset comes from Swiftmailer).

Commits
-------

37065d45f3 [Mime] added a set of default content-types for some extensions
2019-01-27 11:47:24 +01:00
Fabien Potencier
a60a4591f7 minor #29998 remove accidentally added changelog entries (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

remove accidentally added changelog entries

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

The `help_html` option is neither part of the Twig bridge nor of the
FrameworkBundle. It is provided by the Form component.

Commits
-------

aa354cef57 remove accidentally added changelog entries
2019-01-27 11:46:22 +01:00
Fabien Potencier
3659e32279 minor #29988 [Debug][DebugClassLoader] Match callable() type for parameters not defined in sub classes (fancyweb)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Debug][DebugClassLoader] Match callable() type for parameters not defined in sub classes

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29969
| License       | MIT
| Doc PR        | -

Added test fixture for multi param, no param type and multi spaces as well.

BTW, I didn't understand why there was a positive lookbehind on the current regex. Looks useless to me and tests passes without it.

Commits
-------

89c89c9776 [Debug][DebugClassLoader] Match callable() type for parameters not defined in sub classes
2019-01-27 11:31:13 +01:00
Fabien Potencier
37065d45f3 [Mime] added a set of default content-types for some extensions 2019-01-27 11:27:12 +01:00
Christian Flothmann
aa354cef57 remove accidentally added changelog entries
The `help_html` option is neither part of the Twig bridge nor of the
FrameworkBundle. It is provided by the Form component.
2019-01-27 10:18:12 +01:00
Raphaëll Roussel
bc6e0f80ff Remove gendered pronouns 2019-01-27 10:04:14 +01:00
Nicolas Grekas
1aa652e2cb bug #29992 [DependencyInjection] fix DOM element namespace URL access (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DependencyInjection] fix DOM element namespace URL access

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

429bddf96b fix DOM element namespace URL access
2019-01-26 21:58:56 +01:00
Nicolas Grekas
d0effcd35c feature #28865 [Routing] allow using compiled matchers and generators without dumping PHP code (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Routing] allow using compiled matchers and generators without dumping PHP code

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #29590
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/10790

This is a resurrection of #25909 to make matcher+generator dumpers output PHP arrays instead of PHP code.
Don't be fooled by the diff stats, it's mostly fixtures.

This PR should contribute to making the Routing component easier to use standalone.

On the way back from SFLive USA.

![image](https://user-images.githubusercontent.com/243674/46920076-784e1b80-cf9d-11e8-86e7-850fffb409de.png)

Commits
-------

f0a519ac7d [Routing] allow using compiled matchers and generators without dumping PHP code
2019-01-26 21:52:17 +01:00
Raphaëll Roussel
72180342b7 Replace gender by eye color in tests 2019-01-26 20:55:54 +01:00
Christian Flothmann
429bddf96b fix DOM element namespace URL access 2019-01-26 14:00:18 +01:00
Thomas Calvet
89c89c9776 [Debug][DebugClassLoader] Match callable() type for parameters not defined in sub classes 2019-01-26 12:58:26 +01:00
guiguiboy
7bf83815bd Added deprecation notice when mapping keys are found in multi-line blocks 2019-01-25 21:45:15 +01:00
Nicolas Grekas
5006be63c1 [Cache] deprecate all PSR-16 adapters, provide Psr16Cache instead 2019-01-25 18:46:02 +01:00
Nicolas Grekas
41000f1de0 [Security] dont do nested calls to serialize() 2019-01-25 18:08:32 +01:00
Nicolas Grekas
0f947130f2 Merge branch '4.1' into 4.2
* 4.1:
  fix merge
2019-01-25 16:37:00 +01:00
Nicolas Grekas
23e9985ee0 fix merge 2019-01-25 16:35:59 +01:00
Nicolas Grekas
a6d2114277 feature #29958 introducing native php serialize() support for Messenger transport (weaverryan, xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

introducing native php serialize() support for Messenger transport

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes and no
| New feature?  | yes and no
| BC breaks?    | maybe (yes if we change the default)
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29163
| License       | MIT
| Doc PR        | TODO!

Messenger currently uses the Serialize to serialize to JSON and then unserialize. This creates a lot of issues:

1) The default serializer requires you to have getter & setter method (or public properties) for them to be serialized. This makes it easy for data to disappear. I've seen several really smart people have this problem.

2) Related to the above, the forced getters/setters (and no required constructor args) force you to design your message classes around this.

It's not that the serializer is doing a bad job - it's just not the right use-case for it.

This PR proposes simply using `serialize()` and `unserialize()`. This is the behavior we want: we want to put objects to sleep and wake them back up.

I believe the original reason we did not do this was so that we could export "generic JSON", in case we wanted other workers (not our Symfony app) to consume the messages. But, that's an edge case, and could still be accomplished by creating your own serializer.

Btw, Laravel uses `serialize()` as does Enqueue for (un)serializing Event objects. We're making our life more difficult for no benefit.

Cheers!

Commits
-------

97e2e32af4 Changing default serializer in Messenger component to PhpSerializer
3111cef9a4 Update src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml
4132bfebe7 updating CHANGELOGs and fixing tests
b4788e4808 introducing native php serialize() support for Messenger transport
2019-01-25 16:26:09 +01:00
Ryan Weaver
97e2e32af4 Changing default serializer in Messenger component to PhpSerializer 2019-01-25 10:10:32 -05:00
Nicolas Grekas
0b99eaf553 Merge branch '4.2'
* 4.2:
  [Cache] fix create table at prepare time
  fix merge
2019-01-25 15:56:25 +01:00
Nicolas Grekas
f419851eb1 [Cache] fix create table at prepare time 2019-01-25 15:56:12 +01:00
Nicolas Grekas
82617b90e5 Merge branch '4.1' into 4.2
* 4.1:
  fix merge
2019-01-25 15:52:33 +01:00
Nicolas Grekas
151ee3ee18 fix merge 2019-01-25 15:52:25 +01:00
Nicolas Grekas
4edfbb5975 Merge branch '4.2'
* 4.2:
  [HttpFoundation] Check file exists before unlink
  [Console] Fixed #29835: ConfirmationQuestion with default true for answer '0'
  [Cache] PDO-based cache pool table autocreation does not work
  [Translation] Concatenated translation messages
  [Form] ensure compatibility with older PHPUnit mocks
  [Serializer] Docblock about throwing exceptions on serializer
  [Cache] fix used variable name
  [Debug][ErrorHandler] Preserve our error handler when a logger set another one
  [Form] Changed UrlType input type to text when default_protocol is not null
  [Bugfix] MemcachedSessionHandler::close() must close connection
  Always pass $key to NullAdapter->createCacheItem
2019-01-25 15:35:46 +01:00
Nicolas Grekas
62c595a649 Merge branch '4.1' into 4.2
* 4.1:
  [HttpFoundation] Check file exists before unlink
  [Console] Fixed #29835: ConfirmationQuestion with default true for answer '0'
  [Translation] Concatenated translation messages
  [Form] ensure compatibility with older PHPUnit mocks
  [Serializer] Docblock about throwing exceptions on serializer
  [Debug][ErrorHandler] Preserve our error handler when a logger set another one
  [Form] Changed UrlType input type to text when default_protocol is not null
  [Bugfix] MemcachedSessionHandler::close() must close connection
2019-01-25 15:35:16 +01:00
Nicolas Grekas
02fe23d064 Merge branch '3.4' into 4.1
* 3.4:
  [HttpFoundation] Check file exists before unlink
  [Console] Fixed #29835: ConfirmationQuestion with default true for answer '0'
  [Translation] Concatenated translation messages
  [Form] ensure compatibility with older PHPUnit mocks
  [Serializer] Docblock about throwing exceptions on serializer
  [Debug][ErrorHandler] Preserve our error handler when a logger set another one
  [Form] Changed UrlType input type to text when default_protocol is not null
  [Bugfix] MemcachedSessionHandler::close() must close connection
2019-01-25 15:34:37 +01:00
Nicolas Grekas
cd4b031b7e minor #29777 [VarDumper] Improve performance of AbstractCloner (javiereguiluz)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[VarDumper] Improve performance of AbstractCloner

| 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 | -   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | -

While profiling Symfony in "dev" environment (see #29762) I found that `VarCloner::addCasters()` was making thousands of `strtolower()` calls.

![varcloner-addcasters](https://user-images.githubusercontent.com/73419/50694461-40a1bd80-103a-11e9-83c0-a28b8f8f161e.png)

In this PR I propose to remove all those calls. I think it's possible to do it ... but I could be completely wrong, so please review.

-----

As a side note, in the past we did the same `strtolower()` to service IDs and parameter names. We stopped doing that in Symfony 3.3 and it gave us a small performance improvement (same as we could gain here).

If the `strtolower()` calls of `VarCloner::addCasters()` are made just to apply the caster even if the class name is wrongly spelled, I think we could make this change. My guess is that nothing would break for the user (unlike removing the `strtolower()` in DependencyInjection, which broke wrongly spelled services and params). Thanks!

Commits
-------

cff23e52bf [VarDumper] Improve performance of AbstractCloner
2019-01-25 13:15:01 +01:00
Javier Eguiluz
cff23e52bf [VarDumper] Improve performance of AbstractCloner 2019-01-25 13:12:05 +01:00
adam-mospan
1954187fac [HttpFoundation] Check file exists before unlink 2019-01-25 12:01:01 +01:00
Nicolas Grekas
a25daa8bd8 bug #29770 [Routing] Make important parameters required when matching (vudaltsov)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Routing] Make important parameters required when matching

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/issues/29763
| License       | MIT
| Doc PR        | n/a

1. This PR improves "important" route parameters implementation. Instead of considering `!slug` to be a variable name (which is not correct from my POV and leads to a lot of `'!' === $varName[0]` and `substr($varName, 1)` snippets), I took advantage of the `$token` array and used offset `[5]` for keeping boolean importance flag. This approach improved and simplified code.
1. This PR makes important parameters required when matching according to https://github.com/symfony/symfony/issues/29763

Commits
-------

2c3ab22080 Made important parameters required when matching
2019-01-25 11:59:33 +01:00
Nicolas Grekas
a1a3ffc1b9 bug #29783 [HttpFoundation] MemcachedSessionHandler::close() must close connection (grachevko)
This PR was merged into the 3.4 branch.

Discussion
----------

[HttpFoundation] MemcachedSessionHandler::close() must close connection

| Q             | A
| ------------- | ---
| Branch?       | 3.4 <!-- see below -->
| 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 -->
| License       | MIT

Intoduced here https://github.com/symfony/symfony/pull/3333

Commits
-------

38a9d8b6a3 [Bugfix] MemcachedSessionHandler::close() must close connection
2019-01-25 11:55:39 +01:00
Nicolas Grekas
968e7363e1 bug #29794 Always pass $key to NullAdapter->createCacheItem (TysonAndre)
This PR was merged into the 4.2 branch.

Discussion
----------

Always pass $key to NullAdapter->createCacheItem

| Q             | A
| ------------- | ---
| Branch?       | 4.2
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes (build failure seems unrelated)
| Fixed tickets |
| License       | MIT
| Doc PR        |

Previously, if this were called, it would throw an ArgumentCountError.
I'm assuming existing code always checks hasItem, so this bug hasn't impacted many people.
This was noticed via static analysis.

The get() method was added to NullAdapter in symfony 4.2

Commits
-------

1976d29e01 Always pass $key to NullAdapter->createCacheItem
2019-01-25 11:49:23 +01:00
Nicolas Grekas
46ebf23a5c bug #29844 [Console] Fixed #29835: ConfirmationQuestion with default true for answer '0' (mrthehud)
This PR was squashed before being merged into the 3.4 branch (closes #29844).

Discussion
----------

[Console] Fixed #29835: ConfirmationQuestion with default true for answer '0'

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | Almost all, one failure on appveyor?
| Fixed tickets | #29835
| 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.
-->

When using the ConfirmationQuestion class to ask a yes / no question,
if the default is true, and the answer regex is '/^y/i', then any
value not starting with [yY] is considered false.

This must include "0", which previously would return true, producing results such as:
```
$ php bin/console do:stuff
$ Do you want to continue? 0 <enter>
$ Ok, continuing!
```

Commits
-------

a0a7400d6f [Console] Fixed #29835: ConfirmationQuestion with default true for answer '0'
2019-01-25 11:42:12 +01:00
James Hudson
a0a7400d6f [Console] Fixed #29835: ConfirmationQuestion with default true for answer '0' 2019-01-25 11:42:01 +01:00
Mathieu Piot
33f5f855d6 [Form][TwigBridge] Add help_html option 2019-01-25 11:36:18 +01:00
Nicolas Grekas
1a79a138d5 bug #29869 [Debug][ErrorHandler] Preserve our error handler when a logger sets another one (fancyweb)
This PR was merged into the 3.4 branch.

Discussion
----------

[Debug][ErrorHandler] Preserve our error handler when a logger sets another one

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

When logging errors handled by the `ErrorHandler::handleError()` method, the logger can temporarily set its own custom error handler. This is for example the case of `Monolog` in the `StreamHandler` class (cf ebb804e432/src/Monolog/Handler/StreamHandler.php (L101)).

However, when the previous error handler is restored by the logger, it "skips" the real previous handler (the `ErrorHandler::handleError()` one) in the pile and goes back directly to the one before. I guess this is because the `restore_error_handler()` call is technically done in the error handler itself, so it logically restore it to the one before and not to itself.

Here is an easy small example that shows the PHP behavior : https://3v4l.org/4OZNZ

The only solution I have found to fix it is to set our error handler everytime an error is logged.

Here are the things I discovered while trying to find a cleaner fix :
- Setting the same error handler in the error handler itself doesn't actually add it to the pile. This is why adding a check is useless.
- Checking if the logger modified the error handler is impossible anyway : to get the current error handler, you need to set a new one temporarirly and then revert it. However, when you revert it by calling `restore_error_handler()` you end up having the same problem you are trying to fix...
- Also trying to get the current error handler in the error handler itself will return NULL if it is itself.

Commits
-------

b979fff6b8 [Debug][ErrorHandler] Preserve our error handler when a logger set another one
2019-01-25 11:19:25 +01:00
Nicolas Grekas
f7b9bb2ffd bug #29900 [Cache] PDO-based cache pool table autocreation does not work (errogaht)
This PR was merged into the 4.2 branch.

Discussion
----------

[Cache] PDO-based cache pool table autocreation does not work

look at https://github.com/symfony/symfony/issues/29898
I believe that it is not good fix... But pgsq table not foutd throwed right there, in execute(). Dont know about another DB drivers, and i dont know will execute() again work or not, please if some one know more about PDO than me, check it!

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29898
| License       | MIT

Commits
-------

81d3716b0d [Cache] PDO-based cache pool table autocreation does not work
2019-01-25 11:13:52 +01:00
Alex Teterin
81d3716b0d [Cache] PDO-based cache pool table autocreation does not work 2019-01-25 11:11:34 +01:00
Nicolas Grekas
e3b010fe16 bug #29926 [Form] Changed UrlType input type to text when default_protocol is not null (MatTheCat)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] Changed UrlType input type to text when default_protocol is not null

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29690
| License       | MIT
| Doc PR        |

replaces #29691

Commits
-------

2791edf1fb [Form] Changed UrlType input type to text when default_protocol is not null
2019-01-25 11:08:56 +01:00
Nicolas Grekas
13d1d7673a bug #29961 [Translation] Concatenated translation messages (Stadly)
This PR was squashed before being merged into the 3.4 branch (closes #29961).

Discussion
----------

[Translation] Concatenated translation messages

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/issues/29956
| License       | MIT
| Doc PR        | none

Concatenated translation messages are now treated correctly.

Commits
-------

df73ebf00f [Translation] Concatenated translation messages
2019-01-25 11:00:44 +01:00
Stadly
df73ebf00f [Translation] Concatenated translation messages 2019-01-25 11:00:38 +01:00
Nicolas Grekas
edc4a0f572 feature #29968 [DI] Added support for deprecating aliases (j92, Renan)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DI] Added support for deprecating aliases

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? |no
| Tests pass?   | yes
| Fixed tickets | #24507
| License       | MIT
| Doc PR        | TBD

This PR is a continuity of #24707

Commits
-------

6c571adda7 Added support for deprecating aliases (runtime+dumper)
0eb071b9f8 Added support for deprecating an alias
2019-01-25 10:57:49 +01:00
Nicolas Grekas
0901bbe18d bug #29975 [Mime] fix adding extensions when creating a MimeTypes instance (nicolas-grekas)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Mime] fix adding extensions when creating a MimeTypes instance

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Commits
-------

6c7d03431c [Mime] fix adding extensions when creating a MimeTypes instance
2019-01-25 10:56:29 +01:00
Nicolas Grekas
765539bcfb minor #29934 ensure compatibility with older PHPUnit mocks (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

ensure compatibility with older PHPUnit mocks

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

0d9de7e7e3 [Form] ensure compatibility with older PHPUnit mocks
2019-01-25 10:40:19 +01:00
Christian Flothmann
0d9de7e7e3 [Form] ensure compatibility with older PHPUnit mocks 2019-01-25 10:38:07 +01:00
Renan
6c571adda7 Added support for deprecating aliases (runtime+dumper) 2019-01-25 10:36:47 +01:00
Kévin Dunglas
dc6a3bb176
minor #29889 [Serializer] Docblock about throwing exceptions on serializer (gmponos)
This PR was squashed before being merged into the 3.4 branch (closes #29889).

Discussion
----------

[Serializer] Docblock about throwing exceptions on serializer

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

Most of the serializers can throw a `\Symfony\Component\Serializer\ExceptionInterface`. This makes the docblock in line with that.

Similar to this https://github.com/symfony/symfony/pull/29832

Commits
-------

0b44ad79c6 [Serializer] Docblock about throwing exceptions on serializer
2019-01-25 10:02:54 +01:00
George Mponos
0b44ad79c6
[Serializer] Docblock about throwing exceptions on serializer 2019-01-25 10:02:43 +01:00
Valentin
2c3ab22080 Made important parameters required when matching 2019-01-25 10:55:44 +03:00
Christian Flothmann
794526a791 [Cache] fix used variable name 2019-01-25 08:37:41 +01:00
Nicolas Grekas
8edddfa3dc Merge branch '4.2'
* 4.2:
  [Process] disable transient test on Windows
  Enable PHP 7.3 on Travis
2019-01-24 23:35:38 +01:00
Nicolas Grekas
343d24dc0c Merge branch '3.4' into 4.1
* 3.4:
  Enable PHP 7.3 on Travis
2019-01-24 23:33:25 +01:00
Nicolas Grekas
a5dd57f5e5 minor #29979 Enable PHP 7.3 on Travis (tvlooy)
This PR was merged into the 3.4 branch.

Discussion
----------

Enable PHP 7.3 on Travis

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

The bits of #29624 that apply to 3.4.

Commits
-------

335036cf09 Enable PHP 7.3 on Travis
2019-01-24 23:27:38 +01:00
Nicolas Grekas
399fee64f8 [Process] disable transient test on Windows 2019-01-24 23:05:03 +01:00
Tom Van Looy
335036cf09 Enable PHP 7.3 on Travis 2019-01-24 22:57:19 +01:00
Nicolas Grekas
d8af8b6edd Merge branch '4.2'
* 4.2:
  Bump phpunit bridge cache id
  [appveyor] fix create-project phpunit
  Fix HttpKernel Debug requirement
  Fix heredoc
  use final annotation to allow mocking the class
  synchronise the form builder docblock
  Grammar fix in exception message
  fix tests
  forward the parse error to the calling code
  Avoid dots in generated class names.
  [Debug][DebugClassLoader] Match more cases for final, deprecated and internal classes / methods extends
  ensure compatibility with older PHPUnit mocks
  [Security] Do not mix usage of password_*() functions and sodium_*() ones
2019-01-24 22:40:22 +01:00
Nicolas Grekas
61bf16c71d Merge branch '4.1' into 4.2
* 4.1:
  Bump phpunit bridge cache id
  [appveyor] fix create-project phpunit
  Fix HttpKernel Debug requirement
  Fix heredoc
  use final annotation to allow mocking the class
  synchronise the form builder docblock
  Grammar fix in exception message
  fix tests
  forward the parse error to the calling code
  [Debug][DebugClassLoader] Match more cases for final, deprecated and internal classes / methods extends
  ensure compatibility with older PHPUnit mocks
  [Security] Do not mix usage of password_*() functions and sodium_*() ones
2019-01-24 22:39:51 +01:00
Nicolas Grekas
aff17e2cc4 Merge branch '3.4' into 4.1
* 3.4:
  Bump phpunit bridge cache id
  [appveyor] fix create-project phpunit
  Fix HttpKernel Debug requirement
  Fix heredoc
  use final annotation to allow mocking the class
  synchronise the form builder docblock
  Grammar fix in exception message
  fix tests
  forward the parse error to the calling code
  [Debug][DebugClassLoader] Match more cases for final, deprecated and internal classes / methods extends
  ensure compatibility with older PHPUnit mocks
  [Security] Do not mix usage of password_*() functions and sodium_*() ones
2019-01-24 22:39:39 +01:00
Nicolas Grekas
aad0c58d6c [appveyor] fix create-project phpunit 2019-01-24 22:26:46 +01:00
Nicolas Grekas
68d84d11a1 bug #29920 [Debug][DebugClassLoader] Match more cases for final, deprecated and internal classes / methods extends (fancyweb)
This PR was merged into the 3.4 branch.

Discussion
----------

[Debug][DebugClassLoader] Match more cases for final, deprecated and internal classes / methods extends

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Currently, when there is no comment for a tag and another tag after, the detection does not work. Example :
```php
/**
 * @final
 *
 * @author John
 */
class A {

}
```

AFAIK, those tags must not be in a specific order. That's why we should try to support more cases because we might miss things to report.

Also I do not understand why the regex is not the same for the classes and methods detection. I fixed that too.

I added a lot of cases in the "extends from final class" test and an easy way to add more when needed. Adding them everywhere might be overkill and useless. WDYT ?

I'm considering this as bug fix.

Commits
-------

c3b670a908 [Debug][DebugClassLoader] Match more cases for final, deprecated and internal classes / methods extends
2019-01-24 22:19:05 +01:00
Thomas Calvet
b979fff6b8 [Debug][ErrorHandler] Preserve our error handler when a logger set another one 2019-01-24 21:41:57 +01:00
Nicolas Grekas
14d458d0dc feature #29850 [FrameworkBundle] xliff-version option to translation update command (andrewwro)
This PR was squashed before being merged into the 4.3-dev branch (closes #29850).

Discussion
----------

[FrameworkBundle] xliff-version option to translation update command

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- 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?   | no    <!-- please add some, will be required by reviewers -->
| License       | MIT

New 'version' option added to xliff translation update command. Currently xliff version is hardcoded to 1.2.

Commits
-------

4ec28bd45d [FrameworkBundle] xliff-version option to translation update command
2019-01-24 21:08:18 +01:00
Andrzej
4ec28bd45d [FrameworkBundle] xliff-version option to translation update command 2019-01-24 21:08:11 +01:00
Christian Flothmann
3111cef9a4
Update src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml
Co-Authored-By: weaverryan <weaverryan+github@gmail.com>
2019-01-24 12:03:31 -08:00
Nicolas Grekas
6c7d03431c [Mime] fix adding extensions when creating a MimeTypes instance 2019-01-24 19:14:26 +01:00
Nicolas Grekas
f0a519ac7d [Routing] allow using compiled matchers and generators without dumping PHP code 2019-01-23 16:21:00 +01:00
Ryan Weaver
4132bfebe7 updating CHANGELOGs and fixing tests 2019-01-23 10:01:36 -05:00
Joost van Driel
0eb071b9f8 Added support for deprecating an alias 2019-01-23 15:43:53 +01:00
Fabien Potencier
ccf6223c7a minor #29964 [HttpKernel] Fix HttpKernel Debug requirement (jvasseur)
This PR was merged into the 3.4 branch.

Discussion
----------

[HttpKernel] Fix HttpKernel Debug requirement

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

The `LoggerDataCollector` is using the `SilencedErrorContext` class that doesn't exists before Symfony 3.2

Commits
-------

69feb49c0d Fix HttpKernel Debug requirement
2019-01-23 15:15:26 +01:00
Jérôme Vasseur
69feb49c0d Fix HttpKernel Debug requirement 2019-01-23 14:37:11 +01:00
Fabien Potencier
0c323028d2 minor #29954 [Form] synchronise the form builder docblock (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Form] synchronise the form builder docblock

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

419d3db86c synchronise the form builder docblock
2019-01-23 14:02:34 +01:00
Fabien Potencier
d760c27909 minor #29960 Fix heredoc (Stadly)
This PR was merged into the 3.4 branch.

Discussion
----------

Fix heredoc

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | none
| License       | MIT
| Doc PR        | none

A heredoc was erroneously a nowdoc.

Commits
-------

15f5f69b1d Fix heredoc
2019-01-23 13:58:53 +01:00
Robin Chalas
47b739cba2 minor #29955 [Security] use final annotation to allow mocking the class (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Security] use final annotation to allow mocking the class

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29946
| License       | MIT
| Doc PR        |

When the class was initially marked as `final`, it did only contain constants. Since #24337 the `Security` class also contains useful shortcut methods so allowing developers to mock the class in tests looks reasonable to me.

Commits
-------

1da00db247 use final annotation to allow mocking the class
2019-01-23 12:22:36 +01:00
Stadly
15f5f69b1d Fix heredoc 2019-01-23 09:53:40 +01:00
Ryan Weaver
b4788e4808 introducing native php serialize() support for Messenger transport 2019-01-22 15:44:32 -05:00
Christian Flothmann
1da00db247 use final annotation to allow mocking the class 2019-01-22 15:51:10 +01:00
Christian Flothmann
419d3db86c synchronise the form builder docblock 2019-01-22 15:49:00 +01:00
Michael Käfer
6e279a006b Grammar fix in exception message
According to https://en.wiktionary.org/wiki/whitespace and https://english.stackexchange.com/questions/25368/what-is-the-plural-form-of-whitespace valid sentences would be:
- Whitespace is ...
- Whitespaces are ...
- Whitespace characters are ...

But this is not correct:
- Whitespace are ...
2019-01-21 14:02:53 +01:00
Robin Chalas
a44f19c5f1 [HttpFoundation] Add missing changelog/upgrade notes 2019-01-20 19:14:21 +01:00
Christian Flothmann
4db0a6e099 fix tests 2019-01-20 09:34:00 +01:00
Fabien Potencier
333b544d8b minor #29928 [DependencyInjection] forward the parse error to the calling code (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[DependencyInjection] forward the parse error to the calling code

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29891
| License       | MIT
| Doc PR        |

This change does not fully solve the linked issue, but improves the exception a bit by providing a bit more context.

The error page will no start like this:

![bildschirmfoto 2019-01-18 um 12 28 14](https://user-images.githubusercontent.com/1957048/51384558-f7af3600-1b1c-11e9-9744-a40c41c821ce.png)

Commits
-------

c5c2d31fef forward the parse error to the calling code
2019-01-20 09:19:46 +01:00
Christian Flothmann
c5c2d31fef forward the parse error to the calling code 2019-01-20 09:08:17 +01:00
Alexander M. Turek
52c80e6cf2 Avoid dots in generated class names. 2019-01-19 17:51:40 +01:00
Robin Chalas
b972d15d52 bug #29863 [Security] Do not mix password_*() API with libsodium one (chalasr)
This PR was merged into the 3.4 branch.

Discussion
----------

[Security] Do not mix password_*() API with libsodium one

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | n/a
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Argon2IPasswordEncoder uses native `password_hash()` and `password_verify()` functions if the current PHP installation embeds Argon2 support (>=7.2, compiled `--with-password-argon2`).
Otherwise, it fallbacks to the libsodium extension.

This was fine at time the encoder was introduced, but meanwhile libsodium changed the algorithm used by `sodium_crypto_pwhash_str()` which is now argon2id, that goes outside of the scope of the encoder which was designed to deal with `argon2i` only.
Nothing we can do as databases may already contain passwords hashed with argon2id, the encoder must keep validating those.

However, the PHP installation may change as time goes by, and could suddenly embed the Argon2 core integration. In this case, the encoder would use the `password_verify()` function which would fail in case the password was not hashed using argon2i.
This PR prevents it by detecting that argon2id was used, avoiding usage of `password_verify()`.

See https://github.com/jedisct1/libsodium-php/issues/194 and https://github.com/symfony/symfony/issues/28093 for references.
Patch cannot be tested as it is platform dependent.

Side note: I'm currently working on a new implementation for 4.3 that will properly supports argon2id (which has been added to the PHP core sodium integration in 7.3) and argon2i, distinctively.

Commits
-------

d6cfde94b4 [Security] Do not mix usage of password_*() functions and sodium_*() ones
2019-01-18 19:41:49 +01:00
Mathieu Lechat
2791edf1fb [Form] Changed UrlType input type to text when default_protocol is not null 2019-01-18 10:39:23 +01:00
Thomas Calvet
c3b670a908 [Debug][DebugClassLoader] Match more cases for final, deprecated and internal classes / methods extends 2019-01-17 18:28:22 +01:00
Christian Flothmann
b714419faf ensure compatibility with older PHPUnit mocks 2019-01-17 09:49:40 +01:00
Christian Flothmann
89ff331865 deprecate some options for single_text widgets 2019-01-17 00:04:01 +01:00
Christian Flothmann
cb60642d15 add a convenience method to get the parent form in Twig templates 2019-01-17 00:02:21 +01:00
Fabien Potencier
bdca5d999b tweaked code 2019-01-17 00:00:01 +01:00
Fabien Potencier
5268389191 [Mime] added freedesktop as a source for mime types 2019-01-16 23:56:01 +01:00
Fabien Potencier
74ca91deaa [Mime] added the component 2019-01-16 23:56:01 +01:00
Fabien Potencier
d7ee0ecc49 [HttpFoundation] updated File code 2019-01-16 23:56:01 +01:00
Fabien Potencier
5aa0967f9f fixed CS 2019-01-16 23:37:52 +01:00
Fabien Potencier
18b9e45f4a fixed CS 2019-01-16 22:53:45 +01:00
Fabien Potencier
51a359c079 Merge branch '4.2' into short-array-master
* 4.2:
  fixed CS
  fixed CS
  fixed tests
  fixed CS
  fixed CS
  fixed CS
  fixed short array CS in comments
  fixed CS in ExpressionLanguage fixtures
  fixed CS in generated files
  fixed CS on generated container files
  fixed CS on Form PHP templates
  fixed CS on YAML fixtures
  fixed fixtures
  switched array() to []
2019-01-16 22:53:39 +01:00
Fabien Potencier
e03db43894 fixed CS 2019-01-16 22:31:25 +01:00
Fabien Potencier
d2098d7e5d fixed CS 2019-01-16 21:35:37 +01:00
Fabien Potencier
c0323bd24b Merge branch '4.1' into 4.2
* 4.1:
  fixed tests
  fixed CS
  fixed CS
  fixed CS
  fixed short array CS in comments
  fixed CS in ExpressionLanguage fixtures
  fixed CS in generated files
  fixed CS on generated container files
  fixed CS on Form PHP templates
  fixed CS on YAML fixtures
  fixed fixtures
  switched array() to []
2019-01-16 21:31:39 +01:00
Fabien Potencier
de3fb2ca84 fixed tests 2019-01-16 21:06:39 +01:00
Fabien Potencier
44056b002a fixed CS 2019-01-16 20:07:26 +01:00
Fabien Potencier
d58b5c3b76 fixed CS 2019-01-16 19:35:49 +01:00
Fabien Potencier
572864b223 Merge branch '3.4' into 4.1
* 3.4:
  fixed CS
  fixed short array CS in comments
  fixed CS in ExpressionLanguage fixtures
  fixed CS in generated files
  fixed CS on generated container files
  fixed CS on Form PHP templates
  fixed CS on YAML fixtures
  fixed fixtures
  switched array() to []
2019-01-16 19:21:11 +01:00
Fabien Potencier
37ab4cd056 fixed CS 2019-01-16 14:43:35 +01:00
Fabien Potencier
1429267f9c fixed short array CS in comments 2019-01-16 14:27:11 +01:00
Fabien Potencier
25240831e2 fixed CS in ExpressionLanguage fixtures 2019-01-16 13:52:19 +01:00
Fabien Potencier
ec7dcb2784 fixed CS in generated files 2019-01-16 13:48:01 +01:00
Fabien Potencier
afaa13e946 fixed CS on generated container files 2019-01-16 13:30:46 +01:00
Fabien Potencier
7ffd8d3e03 fixed CS on Form PHP templates 2019-01-16 12:03:13 +01:00
Fabien Potencier
0ba1acc82f fixed CS on YAML fixtures 2019-01-16 11:59:17 +01:00
Fabien Potencier
ac9d6cff81 fixed fixtures 2019-01-16 11:05:08 +01:00
Fabien Potencier
33a001e460 switched array() to [] 2019-01-16 10:39:14 +01:00
Fabien Potencier
1aecafc442 Merge branch '4.2'
* 4.2:
  the string "0" is a valid service identifier
  remove unreachable code
2019-01-16 10:27:39 +01:00
Fabien Potencier
cf8cc199fb Merge branch '4.1' into 4.2
* 4.1:
  the string "0" is a valid service identifier
  remove unreachable code
  updated MimeType extensions
2019-01-16 10:27:29 +01:00
Fabien Potencier
55c871d56a Merge branch '3.4' into 4.1
* 3.4:
  the string "0" is a valid service identifier
  remove unreachable code
  updated MimeType extensions
2019-01-16 10:27:19 +01:00
Fabien Potencier
38247ddf78 feature #29862 Add block prefix to csrf token field (alexander-schranz)
This PR was squashed before being merged into the 4.3-dev branch (closes #29862).

Discussion
----------

Add block prefix to csrf token field

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #...
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/10867

Currently I use the following code snippet to overwrite the token rendering:

```twig
{%- block hidden_widget -%}
    {%- if form.vars.name == '_token' -%}
        {{ block('app__token_widget') }}
    {%- else -%}
        {{ block('hidden_widget', 'form_div_layout.html.twig') }}
    {%- endif -%}
{%- endblock hidden_widget -%}

{%- block app__token_widget %}
    {{ render_esi(controller('SuluFormBundle:FormWebsite:token', { 'form': form.parent.vars.name })) }}
{%- endblock app__token_widget -%}
```

With the change of https://symfony.com/blog/new-in-symfony-4-3-simpler-form-theming this workaround can now be removed and the following can be used:

```twig
{%- block token_widget %}
    {{ render_esi(controller('SuluFormBundle:FormWebsite:token', { 'form': form.parent.vars.name })) }}
{%- endblock token_widget -%}
```

Commits
-------

02bd6893a5 Add block prefix to csrf token field
2019-01-16 10:22:19 +01:00
Alexander Schranz
02bd6893a5 Add block prefix to csrf token field 2019-01-16 10:22:12 +01:00
Fabien Potencier
c7f46e4795 minor #29892 [TwigBridge] remove unreachable code (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[TwigBridge] remove unreachable code

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Since our version constraint is `^1.37.1|^2.6.2` any Twig version that
is below 2.4.5 must be a Twig 1.x release.

Commits
-------

16f97b9769 remove unreachable code
2019-01-16 09:32:02 +01:00
Fabien Potencier
eb75781ccd simplified PHPUnit exception expectations 2019-01-16 07:59:14 +01:00
Christian Flothmann
caca373383 the string "0" is a valid service identifier 2019-01-15 14:43:24 +01:00
Christian Flothmann
16f97b9769 remove unreachable code
Since our version constraint is `^1.37.1|^2.6.2` any Twig version that
is below 2.4.5 must be a Twig 1.x release.
2019-01-15 14:09:02 +01:00
Fabien Potencier
ba7e68f842 Merge branch '4.2'
* 4.2:
  fix test after revert of bugfix
2019-01-15 07:11:48 +01:00
Christian Flothmann
81f63b1a43 fix test after revert of bugfix
In #29853 the bugfix made in #29597 was reverted as it did not work as
expected. This fixture file has been modified after the 3.4 branch was
merged up to account for the changes made in #2957 and must now be
reverted to the former state too.
2019-01-14 19:15:26 +01:00
Fabien Potencier
7789a99968 bug #29885 Update MimeType extensions (fabpot)
This PR was merged into the 3.4 branch.

Discussion
----------

Update MimeType extensions

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| 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
-------

5183049b73 updated MimeType extensions
2019-01-14 18:53:36 +01:00
Fabien Potencier
6ca39740c1 bug #29885 Update MimeType extensions (fabpot)
This PR was merged into the 4.3-dev branch.

Discussion
----------

Update MimeType extensions

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| 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
-------

5183049b73 updated MimeType extensions
2019-01-14 18:43:35 +01:00
Fabien Potencier
5183049b73 updated MimeType extensions 2019-01-14 18:38:02 +01:00
Fabien Potencier
508602d995 Merge branch '4.2'
* 4.2:
  bump required Twig version
  fix compatibility with Twig >= 2.6.1
  [Form] SA fix
  fix compatibility with PHPUnit 4.8
  remove return type hint for PHP 5 compatibility
  SCA: minor code tweaks
  Component CssSelector tests
  [DebugClassLoader] Readd findFile() method
  [Console] Fix composer.json suggest/provide
  Revert "bug #29597 [DI] fix reporting bindings on overriden services as unused (nicolas-grekas)"
  Fixed exception wording
  Fix SwiftMailerHandler to support Monolog's latest reset functionality
2019-01-14 16:34:34 +01:00
Fabien Potencier
6d37740cfd Merge branch '4.1' into 4.2
* 4.1:
  bump required Twig version
  fix compatibility with Twig >= 2.6.1
  [Form] SA fix
  fix compatibility with PHPUnit 4.8
  remove return type hint for PHP 5 compatibility
  SCA: minor code tweaks
  Component CssSelector tests
  [DebugClassLoader] Readd findFile() method
  [Console] Fix composer.json suggest/provide
  Revert "bug #29597 [DI] fix reporting bindings on overriden services as unused (nicolas-grekas)"
  Fixed exception wording
  Fix SwiftMailerHandler to support Monolog's latest reset functionality
2019-01-14 16:33:52 +01:00
Fabien Potencier
175f6b5a84 Merge branch '3.4' into 4.1
* 3.4:
  bump required Twig version
2019-01-14 16:30:23 +01:00
Fabien Potencier
9045a4e580 [BrowserKit] marked Response as @final 2019-01-14 16:15:59 +01:00
Fabien Potencier
0abff982e0 [BrowserKit] deprecated Response::buildHeader() 2019-01-14 16:15:59 +01:00
Fabien Potencier
e8e52355d4 [BrowserKit] deprecated Response::getStatus() in favor of Response::getStatusCode() 2019-01-14 16:15:59 +01:00
Christian Flothmann
37e8ccba0f bump required Twig version 2019-01-14 16:05:06 +01:00
Yonel Ceruto
53d26e5a88 Removing isFormValid remnants 2019-01-14 08:47:52 -05:00
Christian Flothmann
00b73da791 Merge branch '3.4' into 4.1
* 3.4:
  fix compatibility with Twig >= 2.6.1
  [Form] SA fix
  fix compatibility with PHPUnit 4.8
  remove return type hint for PHP 5 compatibility
  Component CssSelector tests
  [DebugClassLoader] Readd findFile() method
  [Console] Fix composer.json suggest/provide
  Revert "bug #29597 [DI] fix reporting bindings on overriden services as unused (nicolas-grekas)"
  Fixed exception wording
  Fix SwiftMailerHandler to support Monolog's latest reset functionality
2019-01-14 12:04:47 +01:00
Fabien Potencier
3b082137b7 feature #29813 [FrameworkBundle] Remove ControllerTrait::isFormValid() (lyrixx)
This PR was squashed before being merged into the 4.3-dev branch (closes #29813).

Discussion
----------

[FrameworkBundle] Remove ControllerTrait::isFormValid()

| 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/24576#issuecomment-452220557
| License       | MIT
| Doc PR        |

**edit**: During the first draft I made, I did not use the request stack. I finally used it to mimic other shortcut! It was a bad idea. Now there is less code, it's simpler. Love it more

Commits
-------

2be1987ad1 [FrameworkBundle] Remove ControllerTrait::isFormValid()
2019-01-14 11:58:53 +01:00
Grégoire Pineau
2be1987ad1 [FrameworkBundle] Remove ControllerTrait::isFormValid() 2019-01-14 11:53:07 +01:00
Christian Flothmann
40089fb28f fix compatibility with Twig >= 2.6.1 2019-01-14 11:10:57 +01:00
Fabien Potencier
51d4ca3756 minor #29864 [Form] SA fix (ro0NL)
This PR was squashed before being merged into the 3.4 branch (closes #29864).

Discussion
----------

[Form] SA fix

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no
| 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
-------

1c85707946 [Form] SA fix
2019-01-14 10:46:03 +01:00
Roland Franssen
1c85707946 [Form] SA fix 2019-01-14 10:45:52 +01:00
Christian Flothmann
189da22528 fix compatibility with PHPUnit 4.8 2019-01-14 10:12:36 +01:00
Christian Flothmann
1f31471ffe remove return type hint for PHP 5 compatibility 2019-01-14 09:43:48 +01:00
Fabien Potencier
1874369577 minor #29745 SCA: minor code tweaks (kalessil)
This PR was squashed before being merged into the 4.1 branch (closes #29745).

Discussion
----------

SCA: minor code tweaks

| Q             | A
| ------------- | ---
| Branch?       | 4.1
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Eliminated a few excessive calls, tweaked query parameters sorting

Commits
-------

8887f76b64 SCA: minor code tweaks
2019-01-13 17:56:47 +01:00
Vladimir Reznichenko
8887f76b64 SCA: minor code tweaks 2019-01-13 17:56:40 +01:00
Fabien Potencier
3ea4901516 bug #29837 Fix SwiftMailerHandler to support Monolog's latest reset functionality (Seldaek)
This PR was merged into the 3.4 branch.

Discussion
----------

Fix SwiftMailerHandler to support Monolog's latest reset functionality

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

Monolog 1.24 added the ResettableInterface which is meant to support resetting handlers. Reset should also flush as if the request was ending, and it can be used for long running workers for example in between each job that is processed. Due to SwiftMailer's spool however the emails in case of errors are right now only sent at the very end of the worker's lifetime.

For older Monolog versions, this will be ignored, and is thus harmless.

Commits
-------

ada2d83b67 Fix SwiftMailerHandler to support Monolog's latest reset functionality
2019-01-13 17:54:10 +01:00
Fabien Potencier
f95036440a minor #29797 [Dotenv] improved code coverage and removed unreachable code (Stas-Soroka)
This PR was squashed before being merged into the 4.3-dev branch (closes #29797).

Discussion
----------

[Dotenv] improved code coverage and removed unreachable code

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

Commits
-------

34dac7c8fd [Dotenv] improved code coverage and removed unreachable code
2019-01-13 17:52:51 +01:00
Stas Soroka
34dac7c8fd [Dotenv] improved code coverage and removed unreachable code 2019-01-13 17:52:45 +01:00
Gordienko Vladislav
c7410bef29 Component CssSelector tests 2019-01-13 17:50:36 +01:00
Fabien Potencier
9e9506ebef feature #29148 Load original file metadata when loading Xliff 1.2 files (eternoendless)
This PR was squashed before being merged into the 4.3-dev branch (closes #29148).

Discussion
----------

Load original file metadata when loading Xliff 1.2 files

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

At PrestaShop, we maintain our translations catalog automatically using an internal tool based on our [TranslationToolsBundle](https://github.com/PrestaShop/TranslationToolsBundle), which is capable of reverse building a MessageCatalogue by parsing the source code, and then saving it to Xliff files.

Currently, this tool is only capable of building catalogs from scratch. We are currently moving to an incremental catalog where we only add new wordings, and keep old ones even if they are no longer present in the code (because of B/C). To do that, instead of starting from a clean MessageCatalogue, we load our current catalog using XliffLoader, and use that MessageCatalogue as a base. Easy peasy. But then we found a problem...

The Xliff 1.2 standard defines a list of `<trans-unit>` elements within a collection of `<file>` elements. The `<file>` element has a required attribute named `original`, which is supposed to contain the name of the file where the wordings are used in (at least in our case it does). **This attribute is currently ignored by XliffFileLoader**.

This means that it's currently impossible to read a Xliff 1.2 file using XliffFileloader, and save it back to Xliff without losing data.

This Pull Request adds a new `file` element to the messages' metadata (alongside `notes`, `target-attributes` and `id`). Right now, it only contains `original`, but it could be extended to contain all the other attributes from the `<file>` element if needed.

This required a small change in the loader where we loop through `<file>` elements before fetching their `<trans-unit>` children, instead of fetching all `<trans-unit>` elements at once.

Commits
-------

4073319d0f Load original file metadata when loading Xliff 1.2 files
2019-01-13 17:47:52 +01:00
Pablo Borowicz
4073319d0f Load original file metadata when loading Xliff 1.2 files 2019-01-13 17:47:46 +01:00
Fabien Potencier
ea68e28cf0 bug #29853 Revert "bug #29597 [DI] fix reporting bindings on overriden services as unused" (mmarynich)
This PR was merged into the 3.4 branch.

Discussion
----------

Revert "bug #29597 [DI] fix reporting bindings on overriden services as unused"

This reverts commit 44e9a91f30, reversing
changes made to 91b28ff081.

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #29836
| License       | MIT
| Doc PR        |

4.2.2 release changed the way tagged service are injected

As asked by @nicolas-grekas https://github.com/symfony/symfony/issues/29836#issuecomment-453464500

Commits
-------

b3e17d2101 Revert "bug #29597 [DI] fix reporting bindings on overriden services as unused (nicolas-grekas)"
2019-01-13 17:45:27 +01:00
Fabien Potencier
34365ec2fe feature #29840 [FrameworkBundle] pass project dir into the assets install command (xabbuh)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[FrameworkBundle] pass project dir into the assets install command

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | https://github.com/symfony/symfony/pull/29708#discussion_r244287106
| License       | MIT
| Doc PR        |

Commits
-------

b373d4206b pass project dir into the assets install command
2019-01-13 17:43:24 +01:00
Fabien Potencier
6573cd35b4 minor #29849 [Validator] Fixed exception wording (vudaltsov)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] Fixed exception wording

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

Commits
-------

8266262c9c Fixed exception wording
2019-01-13 17:39:55 +01:00
Thomas Calvet
4f690a31c6 [DebugClassLoader] Readd findFile() method 2019-01-13 17:36:47 +01:00
Robin Chalas
4db43f3e76 [Console] Fix composer.json suggest/provide 2019-01-12 12:06:42 +01:00
Robin Chalas
d6cfde94b4 [Security] Do not mix usage of password_*() functions and sodium_*() ones 2019-01-12 03:20:20 +01:00
Mikhail Marynich
b3e17d2101 Revert "bug #29597 [DI] fix reporting bindings on overriden services as unused (nicolas-grekas)"
This reverts commit 44e9a91f30, reversing
changes made to 91b28ff081.
2019-01-11 16:53:30 +01:00
Christian Flothmann
4d21ab4e7b Merge branch '4.2'
* 4.2:
  account for the short array syntax in Twig
2019-01-11 15:23:08 +01:00
Christian Flothmann
2dddea4d0d Merge branch '4.1' into 4.2
* 4.1:
  account for the short array syntax in Twig
2019-01-11 15:22:29 +01:00
Christian Flothmann
c325155e10 Merge branch '3.4' into 4.1
* 3.4:
  account for the short array syntax in Twig
2019-01-11 15:09:01 +01:00
Valentin
8266262c9c Fixed exception wording 2019-01-11 17:00:45 +03:00
Christian Flothmann
b373d4206b pass project dir into the assets install command 2019-01-11 12:41:57 +01:00
Jordi Boggiano
ada2d83b67
Fix SwiftMailerHandler to support Monolog's latest reset functionality 2019-01-10 16:10:12 +01:00
Christian Flothmann
59a4dc609d account for the short array syntax in Twig 2019-01-10 09:15:17 +01:00
Christian Flothmann
4ba6397c5b Merge branch '4.2'
* 4.2:
  Fix docs
  enabled short array notation in CS
  [fabbot] enable short arrays
  bumped Symfony version to 4.2.3
  updated VERSION for 4.2.2
  updated CHANGELOG for 4.2.2
  bumped Symfony version to 4.1.11
  updated VERSION for 4.1.10
  updated CHANGELOG for 4.1.10
  bumped Symfony version to 3.4.22
  updated VERSION for 3.4.21
  update CONTRIBUTORS for 3.4.21
  updated CHANGELOG for 3.4.21
2019-01-10 08:43:17 +01:00
Christian Flothmann
2c9a3717a7 Merge branch '4.1' into 4.2
* 4.1:
  Fix docs
  enabled short array notation in CS
  [fabbot] enable short arrays
  bumped Symfony version to 4.1.11
  updated VERSION for 4.1.10
  updated CHANGELOG for 4.1.10
  bumped Symfony version to 3.4.22
  updated VERSION for 3.4.21
  update CONTRIBUTORS for 3.4.21
  updated CHANGELOG for 3.4.21
2019-01-10 08:34:23 +01:00
Christian Flothmann
7efc487333 Merge branch '3.4' into 4.1
* 3.4:
  Fix docs
  enabled short array notation in CS
  [fabbot] enable short arrays
  bumped Symfony version to 3.4.22
  updated VERSION for 3.4.21
  update CONTRIBUTORS for 3.4.21
  updated CHANGELOG for 3.4.21
2019-01-10 08:32:51 +01:00
Tom Van Looy
64a65e9cd1 Fix docs
symfony documentation tells people to pass null, and it is the default, but the method docs don't allow it so static analyzers complain about it (spotted by phan)
2019-01-09 19:02:24 +01:00
Nicolas Grekas
5e88dc63e2 [VarDumper] add caster for OpenSSL X.509 resources 2019-01-08 17:42:08 +01:00
Konstantin Grachev
38a9d8b6a3
[Bugfix] MemcachedSessionHandler::close() must close connection 2019-01-06 22:40:17 +03:00
Fabien Potencier
006dacd18d minor #29762 Improved performance of LoggerDataCollector (javiereguiluz)
This PR was squashed before being merged into the 4.3-dev branch (closes #29762).

Discussion
----------

Improved performance of LoggerDataCollector

| 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 | -   <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | -

My feeling is that Symfony's "dev" environment is more and more slow lately. After profiling the Symfony Demo app with Blackfire, I found that `getContainerCompilerLogs()` is one of the slowest methods.

Given that you rarely need or look at these "compiler logs", in this PR I propose to get them only when/if you really need them.

[The before/after profile comparison](https://blackfire.io/profiles/compare/4959d918-8e00-4cd7-9b0b-41919e73ae62/graph) confirms a nice performance improvement and thousands of functions no longer called.

Commits
-------

3b8d6d19ec Improved performance of LoggerDataCollector
2019-01-06 17:31:10 +01:00
Javier Eguiluz
3b8d6d19ec Improved performance of LoggerDataCollector 2019-01-06 17:31:01 +01:00
Fabien Potencier
0083ba1d88 feature #29781 [DI] Add trim env processor (ogizanagi)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[DI] Add trim env processor

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes <!-- 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 | #26708  <!-- #-prefixed issue number(s), if any -->
| License       | MIT
| Doc PR        | Todo

Which is especially useful in combination with the `file` env processor.

Commits
-------

e226492db7 [DI] Add trim env processor
2019-01-06 17:27:17 +01:00
Fabien Potencier
40a53d555a bumped Symfony version to 4.2.3 2019-01-06 17:25:15 +01:00
Fabien Potencier
c78e7482d5 updated VERSION for 4.2.2 2019-01-06 17:19:23 +01:00
Fabien Potencier
4ef814a19d bumped Symfony version to 4.1.11 2019-01-06 17:18:42 +01:00
Fabien Potencier
379d486959 updated VERSION for 4.1.10 2019-01-06 17:16:13 +01:00
Fabien Potencier
7f04e55856 bumped Symfony version to 3.4.22 2019-01-06 17:15:41 +01:00
Fabien Potencier
32863ef27b updated VERSION for 3.4.21 2019-01-06 16:53:59 +01:00
Fabien Potencier
fdb7a8f10c Merge branch '4.2'
* 4.2:
  Add Japanese translation for #28479
2019-01-06 15:14:12 +01:00
Fabien Potencier
9fe204ee92 Merge branch '4.1' into 4.2
* 4.1:
  Add Japanese translation for #28479
2019-01-06 15:13:54 +01:00
Fabien Potencier
64999e62d4 Merge branch '3.4' into 4.1
* 3.4:
  Add Japanese translation for #28479
2019-01-06 15:13:40 +01:00
Issei.M
7a0bddedea Add Japanese translation for #28479 2019-01-06 15:07:11 +01:00
Robin Chalas
af9920cf10 Merge branch '4.2'
* 4.2:
  properly fix tests on PHP 5
  fix tests on PHP 5
  remove doubled dot from exception message
  bug #29697 [DI] Fixed wrong factory method in exception (Wojciech Gorczyca)
  [Intl] make type-hinted arguments nullable
  [DI] Fixed wrong factory method in exception
  Changed gender choice types to color
  Fix unnecessary use
  remove no longer needed PHP version checks
  remove no longer needed PHP version checks
  Fixed groupBy argument value in DefaultChoiceListFactoryTest
  [HttpKernel] Correctly Render Signed URIs Containing Fragments
  [HttpFoundation] Fix request uri when it starts with double slashes
2019-01-05 17:38:08 +01:00
Robin Chalas
f27269330b Merge branch '4.1' into 4.2
* 4.1:
  properly fix tests on PHP 5
  fix tests on PHP 5
  remove doubled dot from exception message
  bug #29697 [DI] Fixed wrong factory method in exception (Wojciech Gorczyca)
  [Intl] make type-hinted arguments nullable
  [DI] Fixed wrong factory method in exception
  Changed gender choice types to color
  remove no longer needed PHP version checks
  remove no longer needed PHP version checks
  Fixed groupBy argument value in DefaultChoiceListFactoryTest
  [HttpKernel] Correctly Render Signed URIs Containing Fragments
  [HttpFoundation] Fix request uri when it starts with double slashes
2019-01-05 17:37:49 +01:00
Robin Chalas
1fa24cb363 Merge branch '3.4' into 4.1
* 3.4:
  properly fix tests on PHP 5
  fix tests on PHP 5
  bug #29697 [DI] Fixed wrong factory method in exception (Wojciech Gorczyca)
  Changed gender choice types to color
  remove no longer needed PHP version checks
  Fixed groupBy argument value in DefaultChoiceListFactoryTest
  [HttpKernel] Correctly Render Signed URIs Containing Fragments
  [HttpFoundation] Fix request uri when it starts with double slashes
2019-01-05 17:36:16 +01:00
Tyson Andre
1976d29e01 Always pass $key to NullAdapter->createCacheItem
Previously, if this were called, it would throw an ArgumentCountError.
I'm assuming existing code always checks hasItem, so this bug hasn't impacted many people.
This was noticed via static analysis.

The get() method was added to NullAdapter in symfony 4.2
2019-01-05 11:11:59 -05:00
Christian Flothmann
c8ced3a9a2 properly fix tests on PHP 5 2019-01-05 13:26:58 +01:00
Christian Flothmann
6d84aeb131 fix tests on PHP 5 2019-01-05 13:04:54 +01:00
Fabien Potencier
96b962d8c4 minor #29791 [PropertyAccess] remove doubled dot from exception message (xabbuh)
This PR was merged into the 4.1 branch.

Discussion
----------

[PropertyAccess] remove doubled dot from exception message

| Q             | A
| ------------- | ---
| Branch?       | 4.1
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

4c04328b59 remove doubled dot from exception message
2019-01-05 12:58:34 +01:00
Christian Flothmann
4c04328b59 remove doubled dot from exception message 2019-01-05 12:52:22 +01:00