This PR was merged into the 2.3 branch.
Discussion
----------
[Translation][fixed test] refresh cache when resources are no longer fresh.
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Fixed tickets | #14279
| Tests pass? | yes
| License | MIT
Commits
-------
04b8e4e [Translation][fixed test] refresh cache when resources are no longer fresh.
This PR was merged into the 2.6 branch.
Discussion
----------
[WebProfilerBundle] Fix resiliency to exceptions thrown by the url generator
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #14111, #14337, #14342 in conjunction with #14345
| License | MIT
| Doc PR | -
Commits
-------
92e33e4 [WebProfilerBundle] Fix resiliency to exceptions thrown by the url generator
This PR was merged into the 2.7 branch.
Discussion
----------
[Finder] Removed duplicated toRegex() code
This patch removes duplicated `toRegex()` code by using the already existing `Glob` class. As this class wasn't unit-tested to begin with, this duplication also makes sure this class is tested properly.
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #14075
| License | MIT
Commits
-------
6150c3a Removed duplicated toRegex() code
This PR was merged into the 2.6 branch.
Discussion
----------
[FrameworkBundle] improve usage of Table helper
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets |
| License | MIT
| Doc PR |
Use the `Table` helper if present in favor of the deprecated
`TableHelper` class.
Commits
-------
71d84e6 [FrameworkBundle] improve usage of Table helper
This PR was squashed before being merged into the 2.3 branch (closes#14231).
Discussion
----------
[DependencyInjection] Show better error when the Yaml component is not installed
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| License | MIT
As the Yaml component is a suggested dependency, if someone try to use the `YamlFileLoader` or the `YamlDumper` without the component will get an ugly message:
```
PHP Fatal error: Class 'Symfony\Component\Yaml\Dumper' not found in xxxx
```
With this PR the error will be an exception with the message: `Unable to dump the container as the Symfony Yaml Component is not installed.` for `YamlDumper` and `Unable to load YAML files service definitions as the Symfony Yaml Component is not installed.'` for `YamlFileLoader`
Commits
-------
870a299 [DependencyInjection] Show better error when the Yaml component is not installed
This PR was squashed before being merged into the 2.3 branch (closes#14206).
Discussion
----------
[2.3] SCA for Components - reference mismatches
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | n/a
| License | MIT
| Doc PR | n/a
Static Code Analysis with Php Inspections (EA Extended), no functional changes:
- worked out some of reference mismatches
Commits
-------
f732659 [2.3] SCA for Components - reference mismatches
This PR was squashed before being merged into the 2.3 branch (closes#14097).
Discussion
----------
[2.3] Static Code Analysis for Components
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | n/a
| License | MIT
| Doc PR | n/a
Static Code Analysis with Php Inspections (EA Extended), no functional changes:
- array_keys/array_values usage as foreach array
- foreach value by reference - added unsets to keep scope clear
- strstr usage as strpos fixed
- array_push miss-use resolved
Commits
-------
78cc93c [2.3] Static Code Analysis for Components
This PR was merged into the 2.7 branch.
Discussion
----------
[Translation] Revert inlining fallback catalogues as it might cause inconsistent results when a cache is used
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #14315
| License | MIT
| Doc PR | n/a
The results from `getCatalogue()` are inconsistent when we're in production *and* a cache comes into play.
This is due to the changes in 6eb5e7395c, where the fallback catalogues will be *merged* into the primary catalogue when it is written to the cache.
Strictly speaking, this is a BC break because it behaved differently before.
I am not sure what the relevance of this might be in practice.
However, it may cause headaches because
* The result changes only in the second+ try (when the cache is warm); a priori you cannot tell whether you're going to see this
* The catalogue is clearly not what the loader provided
* You have no chance of telling whether the message was originally available in the catalogue or not
* Generally, for every message you retrieve from the catalogue, you have no way of telling which locale it actually comes from (it need not be from the catalogue's locale, and the catalogue does not provide fallback catalogues either)
Regarding the last point, you usually don't care when using the `Translator`. Its purpose is to get the "best" translation available. However, when you bother to explicitly retrieve the catalogue, chances are your intentions are different.
Commits
-------
12a183a Revert inlining the fallback messages in production that was added in 6eb5e7395c
This PR was squashed before being merged into the 2.6 branch (closes#14129).
Discussion
----------
[FrameworkBundle] Fixed server:start --router relative path issue #14124
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #14124
| License | MIT
| Doc PR | -
This ensures that a relative path can be used to specify the router script, and that if the router script cannot be found an error is reported and the command fails.
The file path for the router script is now determined and checked prior to the child process being forked, which seems cleaner. The same change could be made in ServerRunCommand.php, or possibly in the ServerCommand base class; to keep the scope small, though, this wasn't done as part of this bug fix.
Commits
-------
0c1b9ba [FrameworkBundle] Fixed server:start --router relative path issue #14124
* 2.7:
[HttpKernel] fixed a regression when no exception listeners are registered
renamed some confusing tests
propel/propel1 is now useless
bumped Symfony version to 2.7.0
updated VERSION for 2.7.0-BETA1
updated CHANGELOG for 2.7.0-BETA1
[2.3] Fix @link annotations
[2.7] For @link annotations
[2.6] Fix @link annotations
[2.7][Console] Count the array instead of
[Config][cache factory] check type of callback argument.
Fix javascript
[2.3][Translation] test refresh cache when resources File change.
Added deprecation message and original color back
[Translator] Cache does not take fallback locales into consideration
* 2.3:
renamed some confusing tests
[2.3] Fix @link annotations
Fix javascript
[2.3][Translation] test refresh cache when resources File change.
[Translator] Cache does not take fallback locales into consideration
Conflicts:
src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php
src/Symfony/Bundle/FrameworkBundle/Translation/Translator.php
This PR was merged into the 2.3 branch.
Discussion
----------
renamed some confusing tests
| Q | A
| ------------- | ---
| 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
-------
a8e4c43 renamed some confusing tests
This PR was merged into the 2.3 branch.
Discussion
----------
[2.3] Fix javascript
| Q | A
| ------------- | ---
| Bug fix? |yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| License | MIT
Remove dead code and add missing semicolons.
Commits
-------
df76126 Fix javascript
This PR was merged into the 2.7 branch.
Discussion
----------
[Config][cache factory] check type of callback argument.
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Fixed tickets | #14178
| Tests pass? | yes
| License | MIT
/cc @mpdude
Commits
-------
11f798c [Config][cache factory] check type of callback argument.
This PR was merged into the 2.7 branch.
Discussion
----------
[WebProfiler] Added deprecation message and original color back
For some reason, the deprecation message and its original yellow color were removed. This means that you don't know the error (without a stack, you would just see an empty bar) and they aren't easy to find anymore in a long list of logs (yeah, the filter can be used...).
**Before**
![sf-logger-deprecation-before](https://cloud.githubusercontent.com/assets/749025/7062927/4094d5d4-dea2-11e4-80e2-c13a02d6d748.png)
**After**
![sf-logger-deprecation-after](https://cloud.githubusercontent.com/assets/749025/7062930/475fc2b6-dea2-11e4-978f-0f18262f283c.png)
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
Commits
-------
773df8c Added deprecation message and original color back
This PR was squashed before being merged into the 2.7 branch (closes#14283).
Discussion
----------
[2.7][Console] Count the $messages array instead of $message
| Q | A
| ------------- | ---
| Bug fix? | [yes]
| New feature? | [no]
| BC breaks? | [no]
| Deprecations? | [no]
| Tests pass? | [yes]
| Fixed tickets | n/a
| License | MIT
I think you mean $messages instead of $message. With this patch, the number of messages is correctly counted.
Commits
-------
95aa167 [2.7][Console] Count the array instead of
This PR was merged into the 3.0-dev branch.
Discussion
----------
changed deps from 2.7 to 2.8 in all composer.json
| Q | A
| ------------- | ---
| 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
-------
4dedb97 bumped deps on 2.8 in all composer.json
This PR was merged into the 2.7 branch.
Discussion
----------
removed 3.0 constraints from 2.7 composer files
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | n/a
| License | MIT
| Doc PR | n/a
Those 3.0 constraints will be kept in the new 2.8.
Commits
-------
5503804 removed 3.0 constraints from 2.7 composer files
* 2.8:
[Translation] avoid freshness check based on content *inside* the cache.
[Translator] Cache does not take fallback locales into consideration
[Translator] Cache does not take fallback locales into consideration
[VarDumper] Fix call site detection
[Form] Cleanup deprecation notices
[Console] Made output docopt compatible
[Process] Fix volatile test
Remove some useless @group annotations
Removed useless strtolower call
[Validator] Use strict comparisons in loaders
CS: Use "self" keyword instead of class name if possible
Conflicts:
.travis.yml
src/Symfony/Component/Console/Tests/Input/InputDefinitionTest.php
src/Symfony/Component/Form/FormTypeExtensionInterface.php
src/Symfony/Component/Form/FormTypeInterface.php
* 2.6:
[Translator] Cache does not take fallback locales into consideration
[VarDumper] Fix call site detection
[Process] Fix volatile test
Remove some useless @group annotations
Removed useless strtolower call
[Validator] Use strict comparisons in loaders
CS: Use "self" keyword instead of class name if possible
Conflicts:
.travis.yml
src/Symfony/Component/Translation/Translator.php
This PR was merged into the 2.6 branch.
Discussion
----------
[VarDumper] Fix call site detection
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
`$trace[$i]['file']` is not always defined and `call_user_func_array` should also be filtered out.
Commits
-------
d8fb6a4 [VarDumper] Fix call site detection
As we're dumping entire catalogues including their fallbacks (standalone or inlined in ~2.7), we need to use different cache files for different sets of fallback locales.
This PR was merged into the 2.7 branch.
Discussion
----------
[Form] Cleanup deprecation notices
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
This uses the same technique used for FlattenException in HttpKernel that prevents repeated notices triggered by the constructor.
Commits
-------
3f58862 [Form] Cleanup deprecation notices
This PR was squashed before being merged into the 2.7 branch (closes#13220).
Discussion
----------
[Console] Made output docopt compatible
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #6329
| License | MIT
| Doc PR | https://github.com/symfony/symfony-docs/issues/5016
This was harder than I thought. To sum up:
* The output now follows the [docopt](http://docopt.org/) specification
* There is a new `addUsage` method to add more usage patterns
* The handling of spaces in the descriptors is refactored to make it easier to understand and to make it render better (using sprintf's features only made it worse imo)
Todo
---
* [x] Add test for `addUsage` and friends
* [x] Add test for multiline descriptions of arguments
* <s>Convert long descriptions to multiline automatically</s>
* [ ] Submit a doc PR for `addUsage`
Question
---
The docopt specification suggests we should add these usage patterns:
%command.name% -h | --help
%command.name% --version
I didn't do that yet, as I think it'll only makes the output more verbose and it's already pretty obvious.
I've taken some decisions which I don't think everybody agrees with. I'm willing to change it, so feel free to comment :)
/cc @Seldaek
Commits
-------
3910940 [Console] Made output docopt compatible
* 2.3:
Remove some useless @group annotations
Removed useless strtolower call
[Validator] Use strict comparisons in loaders
CS: Use "self" keyword instead of class name if possible
* 2.7:
[Config] Delegate creation of ConfigCache instances to a factory.
[Form] Fixed DateType/TimeType that were broken since 849fb29984 and 1c4a75a00a
[Console] Fixed SymfonyStyle when get terminal width fails
[SecurityBundle] UserPasswordEncoderCommand: Improve & simplify the command usage
Fixed the line length of the new Symfony Styles
[Debug] Skip unsilencing test on PHP7
[Profiler][Logger] fixed cycle odd/even.
Update logger.html.twig
Conflicts:
src/Symfony/Bundle/SecurityBundle/composer.json
src/Symfony/Component/Config/CHANGELOG.md
src/Symfony/Component/HttpKernel/composer.json
src/Symfony/Component/Routing/composer.json
src/Symfony/Component/Translation/composer.json
* 2.6:
[Form] Fixed DateType/TimeType that were broken since 849fb29984 and 1c4a75a00a
[Debug] Skip unsilencing test on PHP7
[Profiler][Logger] fixed cycle odd/even.
This PR was merged into the 2.7 branch.
Discussion
----------
[Console] Fixed SymfonyStyle when get terminal width fails
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
Commits
-------
a52b658 [Console] Fixed SymfonyStyle when get terminal width fails
This PR was squashed before being merged into the 2.7 branch (closes#14178).
Discussion
----------
[Config] Delegate creation of ConfigCache instances to a factory.
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | yes (refactoring, new flex point)
| BC breaks? | no
| Deprecations? | yes
| Tests pass? | we'll see :-)
| Fixed tickets | n/a
| License | MIT
| Doc PR | symfony/symfony-docs#5136
In the Routing/Router and Translation/Translator, delegate creation of ConfigCache instances to a factory. The factory can be setter-injected but will default to a BC implementation.
The ```ConfigCacheFactoryInterface``` is designed in a way that captures the common ```$cache = new ...; if (!$cache->isFresh()) { ... do sth }``` pattern. But more importantly, this design allows factory implementations to take additional measures to avoid race conditions before actually filling the cache.
By using an exchangeable ConfigCache factory it becomes possible to implement different resource (freshness) checking strategies, especially service-based ones.
The goal is to be able to validate Translators and Routers generated by database-based loaders. It might also help with symfony/AsseticBundle#168. This PR only contains the minimum changes needed, so the rest could be implemented in a bundle outside the core (at least for the beginning).
Component/HttpKernel/Kernel::initializeContainer still uses the ConfigCache implementation directly as there is no sensible way of getting/injecting a factory service (chicken-egg).
This is a pick off #7230. It replaces #7781 which was against the master branch. Also see #7781 for additional comments/explanations.
## Todo
* [ ] Allow `symfony/config` `~3.0.0` in `composer.json` for the HttpKernel and Translator component as well as TwigBundle once this PR has been merged into the master branch (fail deps=high tests for the time being).
Commits
-------
6fbe9b1 [Config] Delegate creation of ConfigCache instances to a factory.
This PR was merged into the 2.6 branch.
Discussion
----------
[Debug] Skip unsilencing test on PHP7
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #14227
| License | MIT
| Doc PR | -
Commits
-------
6a87ad3 [Debug] Skip unsilencing test on PHP7
This PR was merged into the 3.0-dev branch.
Discussion
----------
[3.0][Console][OutputStyle] Implements verbosity levels methods
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | N/A - Travis build for #14032
| License | MIT
Implements the verbosity level methods from `OutputInterface` for the new `OutputStyle` abstract class in 3.0 branch.
Fixes Travis builds with `deps=high` env var for #14032 PR and future console style updates.
=========
Related to: #14032, #14057, #14138, #14132, #14172, ...
Commits
-------
a30f507 [Console] [OutputStyle] Implements verbosity methods
This PR was squashed before being merged into the 2.7 branch (closes#14032).
Discussion
----------
[SecurityBundle] UserPasswordEncoderCommand: Improve & simplify the command usage
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #13988
| License | MIT
Overlaps #14017 (might replace or follow it) . Sorry if it is considered as a duplicate, but the debate has evolved, and I think the arguments ordering isn't the best nor single way to improve this command usage anymore.
Thank you @saro0h for having considered the mentioned issues and spent time on it.
# Salt option & salt generation
Thanks to @ircmaxell & @inanimatt, we came to the conclusion that the use-cases for the `salt` option/argument are pretty arguable. So I suggest to get rid of it: **a salt will always be generated by the command.**
### Generated salt
The generated salt is now in the Table output:
`security:encode-password test -n`
![screenshot 2015-03-30 a 21 38 21](https://cloud.githubusercontent.com/assets/2211145/6905081/d96f3ea4-d725-11e4-9b7c-83de8a75f28e.PNG)
The "Generated salt" row and the last comment about the salt aren't present if the new `empty-salt` option is provided (see below).
# New empty-salt option
As some encoders might generate their own built-in salts (like the `BCryptPasswordEncoder`) and some custom encoders could do the same (or not require a salt at all), I suggest a new option: `empty-salt`.
This option will not provide any salt to the configured encoder, which will generate its own, then.
With the interactive way, the user will always be asked confirmation for the salt generation if the `empty-salt` option isn't set:
`security:encode-password password`
![screenshot 2015-03-30 a 21 38 43](https://cloud.githubusercontent.com/assets/2211145/6905072/c53df984-d725-11e4-9a1a-81c3a363b5fe.PNG)
### bcrypt encoder
As the `BCryptPasswordEncoder` is shipped with the security component, and listening to @inanimatt valuable comments in #13988, I introduced a second commit (0cdb546) making an exception for the `bcrypt` encoder, and always set the `empty-salt` option with it.
We're aware that's not ideal from a OO design perspective, but far better from a DX one. If not desired, I will revert it.
Anyway I think https://github.com/symfony/symfony/issues/13988#issuecomment-85068382 and other comments about the `PasswordEncoder` API and salt generation should be considered for 3.0.
A note is added when bcrypt encoder is detected without the `empty-salt` option:
`security:encode-password password "Custom\Class\Bcrypt\User" -n`
![screenshot 2015-03-30 a 19 46 36](https://cloud.githubusercontent.com/assets/2211145/6905066/b53edb52-d725-11e4-87e9-636bf177299a.PNG)
# Default user-class
The default `user-class` is set to `Symfony\Component\Security\Core\User\User`.
I think this makes sense, as in the previous version of the command, the Symfony\Component\Security\Core\User\User was configured in the setAutocompleterValues and set the $value to Symfony\Component\Security\Core\User\User if null.
Asking the question to the user with the interactive command would have been useful only if the user was able to pick one encoder from a choice list.
# Arguments order / make arguments options
When we had both `salt` and `user-class` as arguments, the command looked like:
```sh
security:encode-password [password] [user-class] [salt]
```
All arguments were optional, for the interactive command purpose (The command asked the user for missing arguments).
But, as they were arguments, we had to provide each of them in the proper order. That meant we couldn't provide a salt without defining the optional user-class.
So I suggested using options instead of arguments for both user-class & salt.
But as the `salt` option/argument is removed, now I don't feel the need for the `user-class` to be an option.
Indeed, the new command short version will look like the following:
```sh
#Default user-class: Symfony\Component\Security\Core\User\User
security:encode-password password
#Another user-class:
security:encode-password password "AppBundle\Model\User"
```
Making the user-class an option IMO isn't a necessity anymore, and will only lengthen the command:
```sh
security:encode-password password --user-class="AppBundle\Model\User"
```
## Bonus:
- [The new command documentation](https://cloud.githubusercontent.com/assets/2211145/6845201/48a66382-d3b2-11e4-8227-b799215a2783.PNG). Thanks to @javiereguiluz.
- [Full interactivity output](https://cloud.githubusercontent.com/assets/2211145/6906381/d7753ce4-d72e-11e4-8547-2ef35c6257e9.PNG)
Commits
-------
b3f6340 [SecurityBundle] UserPasswordEncoderCommand: Improve & simplify the command usage
Harmonize TranslationDebugCommand and TranslationUpdateCommand to
expect an optional bundle name or a directory and fall back to kernel
root dir if none of them is given.