This introduced a regression from #9246, with an incomplete fix ;
As the `started` flag on the NativeSessionStorage was not `true`
anymore when saving the session, the session id was always empty
when saving it, and thus when sending the `PHPSESSID` cookie
This PR was submitted for the master branch but it was merged into the 2.4 branch instead (closes#9624).
Discussion
----------
[Console] Fix undefined offset when formatting namespace suggestions
[`preg_grep`](http://www.php.net/manual/en/function.preg-grep.php) returns an array indexed using the keys from the input array. `array_values` is used in the method `find`, but was missing in `findNamespace`.
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #9614
| License | MIT
| Doc PR | n/a
Edit: should be merged to 2.4
Commits
-------
f5c4011 [Console] Fix undefined offset when formatting namespace suggestions
This PR was merged into the 2.3 branch.
Discussion
----------
Adjusting CacheClear Warmup method to namespaced kernels
Backported the patch in #9525 to the 2.3 branch.
| Q | A
| ------------- | ---
| Bug fix? | [yes]
| New feature? | [no]
| BC breaks? | [no]
| Deprecations? | [no]
| Tests pass? | have not tried yet
| License | MIT
| Fixed tickets | further fixes#1431
My kernel has been moved and namespaced to `Cfs\Bundle\MultiSiteBundle\Kernel\CfsKernel`. This worked fine until a change was made to how the kernel temp stuff is handled in the warmup phase.
When the app generates its own cache (i.e you run cache without warmup and access the site) everything is generated ok and the .meta files generate the proper reference to the FQN of the Kernel.
However if the warmup is used, it uses `Cfs\Bundle\MultiSiteBundle\Kernel\CfsKerne_` as the temporary Kernel, and when it does "fix references to the Kernel in .meta files" it generates 2 errors.
1. It does not use a string safe tempKernel name, so it never finds the reference to the kernel
2. If you fix that, then it replaces the FQN of the tempKernel with `CfsKernel`, the non-namespaced name of the proper Kernel (it also leaves the character count wrong in the serialization `C:43:<class>` where 43 is the char count for the FQN above)
The two changes above fix this, by escaping the string and replacing it with a FQN Kernel Class name.
What are your thoughts on this? If this sounds reasonable i'll do further enhancements and check tests.
Commits
-------
00d79d5 Adjusting CacheClear Warmup method to namespaced kernels
* 2.3:
Fixed mistake in upgrade docu
Container::camelize also takes backslashes into consideration
fixed typos
fixed @expectedException class names
fixed some typos
fixed @expectedException class names
Typo and better wording for german validator translation
This PR was merged into the 2.4 branch.
Discussion
----------
[HttpKernel] Http kernel regression fix
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | ~
| License | MIT
| Doc PR | ~
Commits
-------
d1e5006 [HttpKernel] fixed regression introduced in 2.4 in the base DataCollector class. Added more unit tests coverage for the RequestDataCollector object.
This PR was submitted for the master branch but it was merged into the 2.3 branch instead (closes#9616).
Discussion
----------
Fixed mistake in upgrade docu
Commits
-------
821006b Fixed mistake in upgrade docu
This PR was submitted for the 2.4 branch but it was merged into the 2.3 branch instead (closes#9610).
Discussion
----------
Container::camelize also takes backslashes into consideration
I [complained](https://github.com/symfony/symfony/pull/8494) about unreported and unnoticed BC break.
Service names in our DI container contain backslashes and that pull request rendered newer versions of Symfony unusable for us.
This commit fixes this - it normalizes backslashes in service names into underscores.
Commits
-------
0f9bb0a Container::camelize also takes backslashes into consideration
This PR was merged into the 2.2 branch.
Discussion
----------
Fixed some typos
Commits
-------
5c6edb3 fixed some typos
8d69bb5 fixed @expectedException class names
This PR was merged into the 2.4 branch.
Discussion
----------
[HttpKernel] Fix a bug when using the kernel property in overridden method Client::setServerParameters()
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
**TL;DR**
Fixes a fatal error when using `$this->kernel` in overridden `Client::setServerParameters` method happening since @Tobion commit 111ac18232.
**Long story**
In my tests, I'm overriding the `test.client.class` parameter to use a custom class which overrides the `setServerParameters` method with the following code :
```
public function setServerParameters(array $server)
{
if (!isset($server['HTTP_HOST'])) {
$server['HTTP_HOST'] = $this->getContainer()->getParameter('website_domain');
}
parent::setServerParameters($server);
}
```
The purpose is to set the HTTP_HOST variable on every client request in the tests with the application domain (instead of the default value "localhost"). This fixed issues when switching between domains (standard, secure, etc) and also issues with CSRF protection.
If you know of a better idea on how to set this attribute with a value from a DIC parameter to every client request done in any tests in one place without overriding Symfony stuff, I'd be **very glad** to hear it. :)
**Detailed error**
```
[Exception]
PHP Fatal error: Call to a member function getContainer() on a non-object in /home/gnutix/lamp/sf-2.4/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Clie
nt.php on line 48
PHP Stack trace:
PHP 1. {main}() /usr/bin/phpunit:0
PHP 2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:46
PHP 3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:129
PHP 4. PHPUnit_TextUI_TestRunner->doRun() /usr/share/php/PHPUnit/TextUI/Command.php:176
PHP 5. PHPUnit_Framework_TestSuite->run() /home/gnutix/lamp/sf-2.4/vendor/phpunit/phpunit/PHPUnit/TextUI/TestRunner.php:349
PHP 6. PHPUnit_Framework_TestSuite->runTest() /home/gnutix/lamp/sf-2.4/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:745
PHP 7. PHPUnit_Framework_TestCase->run() /home/gnutix/lamp/sf-2.4/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:775
PHP 8. PHPUnit_Framework_TestResult->run() /home/gnutix/lamp/sf-2.4/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:783
PHP 9. PHPUnit_Framework_TestCase->runBare() /home/gnutix/lamp/sf-2.4/vendor/phpunit/phpunit/PHPUnit/Framework/TestResult.php:648
PHP 10. Gnutix\Tests\FunctionalTestsHelper->setUp() /home/gnutix/lamp/sf-2.4/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:835
PHP 11. Gnutix\Tests\FunctionalTestsHelper::createClient() /home/gnutix/lamp/sf-2.4/src/Gnutix/Tests/FunctionalTestsHelper.php:82
PHP 12. Symfony\Bundle\FrameworkBundle\Test\WebTestCase::createClient() /home/gnutix/lamp/sf-2.4/src/Gnutix/CommonBundle/Tests/FunctionalTestsHelper.php:440
PHP 13. Symfony\Component\DependencyInjection\Container->get() /home/gnutix/lamp/sf-2.4/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Test/WebTestCase.p
hp:49
PHP 14. appTestDebugProjectContainer->getTest_ClientService() /home/gnutix/lamp/sf-2.4/app/bootstrap.php.cache:2033
PHP 15. Symfony\Bundle\FrameworkBundle\Client->__construct() /home/gnutix/lamp/sf-2.4/app/cache/test/appTestDebugProjectContainer.php:5806
PHP 16. Symfony\Component\HttpKernel\Client->__construct() /home/gnutix/lamp/sf-2.4/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Client.php:38
PHP 17. Symfony\Component\BrowserKit\Client->__construct() /home/gnutix/lamp/sf-2.4/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Client.php:46
PHP 18. SymfonyExtension\Bundle\FrameworkBundle\Client->setServerParameters() /home/gnutix/lamp/sf-2.4/vendor/symfony/symfony/src/Symfony/Component/BrowserKit/Clien
t.php:60
PHP 19. Symfony\Bundle\FrameworkBundle\Client->getContainer() /home/gnutix/lamp/sf-2.4/src/SymfonyExtension/Bundle/FrameworkBundle/Client.php:24
```
Commits
-------
ec43a0c Fix an issue when overriding Client::setServerParameters() and using the getContainer() method in it.
This PR was squashed before being merged into the master branch (closes#9597).
Discussion
----------
[Security] Typos in Security's ExpressionLanguage
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #9593
| License | MIT
| Doc PR | none
Fixed the ExpressionLanguage and added the tests. It looks ok to me, but please, take a close look (some people will depend on this working right, including me :D ).
Thanks !
Commits
-------
087403b [Security] Typos in Security's ExpressionLanguage
This PR was merged into the master branch.
Discussion
----------
[SecurityBundle] minor simplification in main configuration
As per @stof's suggestion (https://github.com/symfony/symfony/pull/9587#discussion_r7875630).
| 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
-------
0d8c34b [SecurityBundle] minor simplification in main configuration
This PR was submitted for the master branch but it was merged into the 2.3 branch instead (closes#9599).
Discussion
----------
[Validator] Typo and better wording for german validator translation
Follow up of #9588 as supposed by @craue
Commits
-------
263b618 Typo and better wording for german validator translation
* 2.3: (24 commits)
Add german translation for several validators (Greater/Equal/Less)
No Entity Manager defined exception
fixed CS
[Acl] Fix for issue #9433
[Validator] fix docblock typos
[DependencyInjection] removed the unused Reference and Parameter classes use statements from the compiled container class
Removed useless check if self::$trustProxies is set
Fix mistake in translation's service definition.
if handler_id is identical to null fix
CS fix
Fixed ModelChoiceList tests in Propel1 bridge.
[AclProvider] Fix incorrect behaviour when partial results returned from cache
Check if the pipe array is empty before calling stream_select()
[Intl] fixed datetime test as described in #9455
bumped Symfony version to 2.3.8
updated VERSION for 2.3.7
updated CHANGELOG for 2.3.7
re-factor Propel1 ModelChoiceList
[Form] Added method Form::getClickedButton() to remove memory leak in FormValidator
[Locale] fixed the failing test described in #9455
...
Conflicts:
src/Symfony/Bridge/Propel1/Form/ChoiceList/ModelChoiceList.php
src/Symfony/Bridge/Propel1/Tests/Fixtures/ItemQuery.php
src/Symfony/Bridge/Propel1/Tests/Form/ChoiceList/ModelChoiceListTest.php
src/Symfony/Bridge/Propel1/Tests/Propel1TestCase.php
src/Symfony/Component/Form/Tests/CompoundFormTest.php
src/Symfony/Component/HttpKernel/Kernel.php
src/Symfony/Component/Process/Process.php
* 2.2:
No Entity Manager defined exception
fixed CS
[Acl] Fix for issue #9433
[Validator] fix docblock typos
[DependencyInjection] removed the unused Reference and Parameter classes use statements from the compiled container class
Fix mistake in translation's service definition.
if handler_id is identical to null fix
CS fix
Fixed ModelChoiceList tests in Propel1 bridge.
[AclProvider] Fix incorrect behaviour when partial results returned from cache
Check if the pipe array is empty before calling stream_select()
re-factor Propel1 ModelChoiceList
[Locale] fixed the failing test described in #9455
[Process] fix phpdoc and timeout of 0
bug #9445 [BrowserKit] fixed protocol-relative url redirection
Conflicts:
src/Symfony/Component/BrowserKit/Tests/ClientTest.php
src/Symfony/Component/Locale/Tests/Stub/StubIntlDateFormatterTest.php
This PR was merged into the 2.3 branch.
Discussion
----------
Add missing german translation for validators
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #9575
| License | MIT
| Doc PR |
Some validators do not have german translation yet.
Commits
-------
11fd126 Add german translation for several validators (Greater/Equal/Less)
This PR was merged into the master branch.
Discussion
----------
[SecurityBundle] Added csrf_token_generator and csrf_token_id as new
names for csrf_provider and intention options
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | yes
| Tests pass? | yes
| Fixed tickets | #9176
| License | MIT
| Doc PR | n/a
Commits
-------
f2f15f5 [SecurityBundle] Added csrf_token_generator and csrf_token_id as new names for csrf_provider and intention options
This PR was submitted for the 2.3 branch but it was merged into the master branch instead (closes#9578).
Discussion
----------
[DomCrawler] Fixes `attr` method returning empty string for missing attributes
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
Bug discovered on Behat/MinkBrowserKitDriver#32.
Commits
-------
51d23fa [DomCrawler] Fixes `attr` method returning empty string for missing attributes
This PR was merged into the master branch.
Discussion
----------
[Debug] Fixed ClassNotFoundFatalErrorHandler which could cause a fatal error
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #9104
| License | MIT
| Doc PR | -
It might happen that `require_once` will include a file second time (for example with links or case-changed paths). Therefore we need to check if a class exists before requiring the file.
I also removed an unused argument from two methods (`$loader`).
Commits
-------
0baae4c [Debug] Fixed ClassNotFoundFatalErrorHandler which could cause a fatal error.
This PR was merged into the master branch.
Discussion
----------
Cache Warmup Breaks Namespaced Kernel
| Q | A
| ------------- | ---
| Bug fix? | [yes]
| New feature? | [no]
| BC breaks? | [no]
| Deprecations? | [no]
| Tests pass? | have not tried yet
| License | MIT
| Fixed tickets | further fixes#1431
My kernel has been moved and namespaced to `Cfs\Bundle\MultiSiteBundle\Kernel\CfsKernel`. This worked fine until a change was made to how the kernel temp stuff is handled in the warmup phase.
When the app generates its own cache (i.e you run cache without warmup and access the site) everything is generated ok and the .meta files generate the proper reference to the FQN of the Kernel.
However if the warmup is used, it uses `Cfs\Bundle\MultiSiteBundle\Kernel\CfsKerne_` as the temporary Kernel, and when it does "fix references to the Kernel in .meta files" it generates 2 errors.
1. It does not use a string safe tempKernel name, so it never finds the reference to the kernel
2. If you fix that, then it replaces the FQN of the tempKernel with `CfsKernel`, the non-namespaced name of the proper Kernel (it also leaves the character count wrong in the serialization `C:43:<class>` where 43 is the char count for the FQN above)
The two changes above fix this, by escaping the string and replacing it with a FQN Kernel Class name.
What are your thoughts on this? If this sounds reasonable i'll do further enhancements and check tests.
Commits
-------
9e7788e Cache Warmup Breaks Namespaced Kernel
It might happen that require_once will include a file second time (for
example with links or case-changed paths). Therefore we need to check
if a class exists before requiring the file.
This PR was merged into the 2.2 branch.
Discussion
----------
[BrowserKit] fixed protocol-relative url redirection
Fixed redirects to protocol relative URLs, e.g. //www.example.org. Previously the code would treat this as a relative URL.
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #9445
| License | MIT
| Doc PR |
Commits
-------
e8b5c84 bug #9445 [BrowserKit] fixed protocol-relative url redirection
This PR was merged into the master branch.
Discussion
----------
unify constructor initialization style throughout symfony
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | n/a
In almost all classes symfony uses property initialization when the value is static. Constructor initialization is only used for things that actually have logic, like passed parameters or dynamic values. IMHO it makes the code much more readable because property definition, phpdoc and default value is in one place. Also one can easily see what the constructor implements for logic like overridden default value of a parent class. Otherwise the real deal is just hidden behind 10 property initializations. One more advantage is that it requires less code. As you can see, the code was almost cut in half (210 additions and 395 deletions).
I unified it accordingly across symfony. Sometimes it was [not even consistent within one class](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Config/Definition/BaseNode.php#L32). At the same time I recognized some errors like missing parent constructor call, or undefined properties or private properties that are not even used.
I then realized that a few Kernel tests were not passing because they were deeply implementation specific like modifying booted flag with a custom `KernelForTest->setIsBooted();`. I improved and refactored the kernel tests in the __second commit__.
__Third commit__ unifies short ternary operator, e.g. `$foo ?: new Foo()`. __Forth commit__ unifies missing parentheses, e.g. `new Foo()`.
Commits
-------
077a089 unify missing parentheses
2888594 unify short ternary operator
2a9daff [HttpKernel] better written kernel tests
111ac18 unify constructor initialization style throughout symfony
This PR was submitted for the master branch but it was merged into the 2.2 branch instead (closes#9535).
Discussion
----------
No Entity Manager defined exception
This PR is linked to this issue : https://github.com/symfony/symfony/issues/9534
Commits
-------
719ccb7 No Entity Manager defined exception
This PR was merged into the master branch.
Discussion
----------
[HttpFoundation] fixed the issue described in #9480
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #9480
| License | MIT
| Doc PR | -
Commits
-------
7d35ce3 [HttpFoundation] fixed the issue described in #9480
This PR was squashed before being merged into the 2.2 branch (closes#9485).
Discussion
----------
[Acl] Fix for issue #9433
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #9433
| License | MIT
| Doc PR |
Two new test for issue #9433 :
`testUpdateAclInsertingMultipleObjectFieldAcesThrowsDBConstraintViolations()`
`testUpdateAclDeletingObjectFieldAcesThrowsDBConstraintViolations()`
The change to `updateAces()` line 857 is enough to make the first test succeed. When changing the `order` field value to a higher value, we must first change the value of the next entry (and all the next entries recursively) to preserve uniqueness of the `order` field in the database.
All the other changes are for the second test. In the former `updateAcl()` method, we commit the changes of the existing ACEs to the database before deleting or adding the new ones. We must delete the old ACEs before changing the existing ACEs in order to preserve uniqueness of the `order` field in the database.
Commits
-------
a38fab9 [Acl] Fix for issue #9433