Commit Graph

8546 Commits

Author SHA1 Message Date
Fabien Potencier
8e21cac9e1 Merge branch '2.2' into 2.3
* 2.2:
  [DoctrineBridge] Loosened CollectionToArrayTransformer::transform() to accept arrays
  Removed unused use statements.
  Make usleep longer and simplify assertions
  Added japanese translation resource for security component.
  [Yaml] Fixed the escaping of strings starting with a dash when dumping
  Fix in ChainLoader.php
  fixed wrong started states
2013-10-17 13:48:01 +02:00
Fabien Potencier
4c164ca0ca Revert "minor #9269 [Console] make InputArgument::setDefault() chainable (pscheit)"
This reverts commit ab7bf648cc, reversing
changes made to 5b6ef23196.
2013-10-16 18:16:10 +02:00
Fabien Potencier
514fabd01d Revert "fixed CS"
This reverts commit 39c9c1266e.
2013-10-16 18:16:05 +02:00
Samuel Vogel
0d232ba2f2 Improve documentation of X-Forwarded-For header handling 2013-10-16 17:16:00 +02:00
Fabien Potencier
39c9c1266e fixed CS 2013-10-16 16:56:32 +02:00
Fabien Potencier
ab7bf648cc minor #9269 [Console] make InputArgument::setDefault() chainable (pscheit)
This PR was merged into the master branch.

Discussion
----------

[Console] make InputArgument::setDefault() chainable

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

To allow chaining of methods, setDefault should return the InputArgument. I'm not quite sure if you would tread this as a BC break?

best regards
Philipp

Commits
-------

7b7a4c1 [Console] make InputArgument::setDefault() chainable
2013-10-16 16:56:21 +02:00
Fabien Potencier
5b6ef23196 bug #9297 [Form] Add missing use in form renderer (egeloen)
This PR was merged into the master branch.

Discussion
----------

[Form] Add missing use in form renderer

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

Commits
-------

7686867 [Form] Add missing use in form renderer
2013-10-16 16:53:26 +02:00
Fabien Potencier
64b9381002 minor #9305 Removed dead code (unused use statements). (hhamon)
This PR was merged into the master branch.

Discussion
----------

Removed dead code (unused use statements).

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

Commits
-------

eced94b Removed dead code (unused use statements).
2013-10-16 16:52:55 +02:00
François Pluchino
d3079ee559 Fix unresolved class 2013-10-16 16:40:12 +02:00
Hugo Hamon
0946be6c5b Removed unused use statements. 2013-10-16 14:19:20 +02:00
Hugo Hamon
eced94b7b9 Removed dead code (unused use statements). 2013-10-16 13:59:56 +02:00
Eric GELOEN
7686867b2c [Form] Add missing use in form renderer 2013-10-15 22:21:24 +02:00
Brikou Carré
beae3b1a8b Make usleep longer and simplify assertions 2013-10-15 18:59:35 +02:00
hidenorigoto
26e50fff97 Added japanese translation resource for security component. 2013-10-15 18:57:17 +02:00
Jakub Zalas
bb8930c4da Replaced the @inheritdoc with an actual list of params since the original method has a different signature.
Also, fixed indentation in other docblocks.
2013-10-15 11:16:18 +01:00
Abdul Malik Ikhsan
6892779d0b fix typo : StdClass should be stdClass with little "s" 2013-10-13 08:32:10 +02:00
Gábor Tóth
304c7b6f87 Remove unnecessary continue from Request 2013-10-11 13:59:44 +02:00
Tobias Schultze
5798029450 [Console] improve regex performance to validate name
using possesive quantifier
2013-10-11 13:57:48 +02:00
Tobias Schultze
22b09cea94 [Console] make parent constructor test more reliable
it also fixes the test since f2b60e9c68 and improves phpdoc
2013-10-11 13:57:47 +02:00
Christophe Coevoet
af369aee64 [Yaml] Fixed the escaping of strings starting with a dash when dumping
Dashes need to be escaped in character sets in regexes as they are used to
specify a range otherwise.
Refs #9039
2013-10-11 00:23:27 +02:00
janschoenherr
e2ecc0fd23 Fix in ChainLoader.php
The LoaderInterface requires the time to be passed.
2013-10-10 17:51:38 +02:00
Thomas Adam
e8d3ab22b4 fixed wrong started states 2013-10-10 17:50:52 +02:00
Fabien Potencier
7b2fd0bdce Merge branch '2.3'
* 2.3:
  bumped Symfony version to 2.3.7
  updated VERSION for 2.3.6
  updated CHANGELOG for 2.3.6
  bumped Symfony version to 2.2.10
  updated VERSION for 2.2.9
  update CONTRIBUTORS for 2.2.9
  updated CHANGELOG for 2.2.9
  [Security] limited the password length passed to encoders
  [HttpKernel] Fixed a test (compiler pass class name has been changed).
  assets:install command should mirror .dotfiles (.htaccess)
  PoFileDumper - PO headers
  removed whitespaces

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
	src/Symfony/Component/Security/Core/Encoder/BCryptPasswordEncoder.php
	src/Symfony/Component/Security/Core/Encoder/BasePasswordEncoder.php
	src/Symfony/Component/Security/Core/Encoder/MessageDigestPasswordEncoder.php
	src/Symfony/Component/Security/Core/Encoder/Pbkdf2PasswordEncoder.php
	src/Symfony/Component/Security/Core/Encoder/PlaintextPasswordEncoder.php
	src/Symfony/Component/Security/Core/Tests/Encoder/MessageDigestPasswordEncoderTest.php
	src/Symfony/Component/Security/Core/Tests/Encoder/Pbkdf2PasswordEncoderTest.php
	src/Symfony/Component/Security/Core/Tests/Encoder/PlaintextPasswordEncoderTest.php
2013-10-10 16:19:44 +02:00
Fabien Potencier
f3bd125aed bumped Symfony version to 2.3.7 2013-10-10 16:16:40 +02:00
Fabien Potencier
d0597156c4 updated VERSION for 2.3.6 2013-10-10 15:24:22 +02:00
Fabien Potencier
e7df974ab8 Merge branch '2.2' into 2.3
* 2.2:
  bumped Symfony version to 2.2.10
  updated VERSION for 2.2.9
  update CONTRIBUTORS for 2.2.9
  updated CHANGELOG for 2.2.9
  [Security] limited the password length passed to encoders
  assets:install command should mirror .dotfiles (.htaccess)
  PoFileDumper - PO headers
  removed whitespaces

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
	src/Symfony/Component/Security/Core/Encoder/BCryptPasswordEncoder.php
2013-10-10 15:12:30 +02:00
Fabien Potencier
2996c6b4c6 bumped Symfony version to 2.2.10 2013-10-10 15:10:05 +02:00
Fabien Potencier
6a5c6c0d76 updated VERSION for 2.2.9 2013-10-10 14:15:43 +02:00
Fabien Potencier
67d4a8f8af [Security] limited the password length passed to encoders 2013-10-10 14:05:52 +02:00
Philipp Scheit
7b7a4c11a7 [Console] make InputArgument::setDefault() chainable 2013-10-10 13:29:02 +02:00
Jakub Zalas
e01461df62 [HttpKernel] Fixed a test (compiler pass class name has been changed). 2013-10-10 08:15:46 +02:00
Fabien Potencier
86f646fca6 fixed a test 2013-10-10 08:05:49 +02:00
Fabien Potencier
02791be0e6 Revert "fixed a test"
This reverts commit 8bee6883b6.
2013-10-10 08:05:16 +02:00
Fabien Potencier
94a9296341 bug #9234 [Debug] Fixed ClassNotFoundFatalErrorHandler (tPl0ch)
This PR was merged into the master branch.

Discussion
----------

[Debug] Fixed `ClassNotFoundFatalErrorHandler`

After running the test suite, this produced a Fatal Error. Having continue in a child method is not allowed.

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

Commits
-------

ecee5c2 [Debug] Fixed `ClassNotFoundFatalErrorHandler`
2013-10-10 07:59:07 +02:00
Fabien Potencier
71412d7998 minor #9260 [HttpKernel] Fixed a test (compiler pass class name has been changed) (jakzal)
This PR was merged into the master branch.

Discussion
----------

[HttpKernel] Fixed a test (compiler pass class name has been changed)

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes, if #9259 also gets merged
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

**I've sent it against wrong branch. It should be merged in 2.3. Sorry.**

Commits
-------

fae01c1 [HttpKernel] Fixed a test (compiler pass class name has been changed).
2013-10-10 07:54:06 +02:00
Fabien Potencier
744fd0d5f5 Merge branch '2.3'
* 2.3:
  [Process] Fix latest merge from 2.2 in 2.3
2013-10-10 07:53:18 +02:00
Thomas Ploch
ecee5c2e92 [Debug] Fixed ClassNotFoundFatalErrorHandler 2013-10-10 01:10:59 +02:00
Jakub Zalas
fae01c10d0 [HttpKernel] Fixed a test (compiler pass class name has been changed). 2013-10-09 22:38:23 +01:00
Romain Neutron
b5e3576ea0 [Process] Fix latest merge from 2.2 in 2.3 2013-10-09 23:17:57 +02:00
Adam Prager
a8bc8fff74 PoFileDumper - PO headers 2013-10-09 22:59:37 +02:00
Fabien Potencier
773932b64b removed whitespaces 2013-10-09 22:52:58 +02:00
Fabien Potencier
ad7ac02ee4 Merge branch '2.3'
* 2.3:
  [Process] Fix #9182 : random failure on pipes tests
  Fixed propel guessed relations
  [FramworkBundle][HttpKernel] Check event listener services are not abstract
  fixed CS
  Check for lock existence before unlinking
  remove MinCount and MaxCount contraints. It has been replaced by Count constraints.
  [FrameworkBundle] fixed path replacement on Windows

Conflicts:
	src/Symfony/Bridge/Propel1/Tests/Form/PropelTypeGuesserTest.php
2013-10-09 22:52:22 +02:00
Fabien Potencier
77a961d040 Merge branch '2.2' into 2.3
* 2.2:
  [Process] Fix #9182 : random failure on pipes tests
  Fixed propel guessed relations
  [FramworkBundle][HttpKernel] Check event listener services are not abstract
  fixed CS
  Check for lock existence before unlinking
  [FrameworkBundle] fixed path replacement on Windows

Conflicts:
	src/Symfony/Component/Process/Process.php
2013-10-09 22:51:36 +02:00
Romain Neutron
64a0b40e6f [Process] Fix #9182 : random failure on pipes tests 2013-10-09 18:53:02 +02:00
Fabien Potencier
8bee6883b6 fixed a test 2013-10-09 09:29:29 +02:00
Fabien Potencier
b00289a6d0 bug #9236 [Form] fix missing use statement for exception UnexpectedTypeException (jaugustin)
This PR was merged into the master branch.

Discussion
----------

[Form] fix missing use statement for exception UnexpectedTypeException

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

fix missing use statement for exception `Symfony\Component\Form\Exception\UnexpectedTypeException`

cc @bschussek

Commits
-------

ea91533 [form] fix missing use statement for exception UnexpectedTypeException
2013-10-08 10:34:28 +02:00
Fabien Potencier
f2b60e9c68 [Console] changed an exception class 2013-10-08 08:39:58 +02:00
Fabien Potencier
5bed1cd6d2 bumped Symfony version to 2.4.0 2013-10-08 08:33:45 +02:00
Jérémie Augustin
ea915334e1 [form] fix missing use statement for exception UnexpectedTypeException 2013-10-07 19:12:10 +02:00
Fabien Potencier
911b328dc1 bug #9216 [Security\Csrf] Split CsrfTokenGenerator into CsrfTokenManager and TokenGenerator (bschussek)
This PR was merged into the master branch.

Discussion
----------

[Security\Csrf] Split CsrfTokenGenerator into CsrfTokenManager and TokenGenerator

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

This is a follow-up PR of #6554 that splits the CsrfTokenGenerator into two separate classes for generating and managing CSRF tokens. As a consequence, it is now possible to explicitly remove or refresh CSRF tokens if they should be used only once. See #9210 for more information.

Commits
-------

d4bb5f4 [Security\Csrf] Split CsrfTokenGenerator into CsrfTokenManager and TokenGenerator
2013-10-07 15:08:26 +02:00
Bernhard Schussek
d4bb5f4e3c [Security\Csrf] Split CsrfTokenGenerator into CsrfTokenManager and TokenGenerator 2013-10-07 14:50:43 +02:00
Fabien Potencier
4f19105604 updated VERSION for 2.4.0-BETA1 2013-10-07 12:36:58 +02:00
Fabien Potencier
937d908c43 fixed test side effects 2013-10-07 12:30:10 +02:00
Grégoire Pineau
cabb1fa8bb [FrameworkBundle] Adds the possibility to register Commands via the DIC 2013-10-04 16:09:28 +02:00
Fabien Potencier
e18bd76dd8 [ExpressionLanguage] fixed typo 2013-10-04 11:41:51 +02:00
Fabien Potencier
86ef58c771 fixed some tests 2013-10-04 11:41:28 +02:00
Fabien Potencier
6fce9d8391 fixed CS 2013-10-04 10:27:42 +02:00
Ollie Harridge
8fc64439ca Check for lock existence before unlinking
My logs are filled with a bazillion errors stating "Warning: unlink(/var/www/mysite/app/cache/prod/http_cache/md/cf/47/c693da5dab3eccb65fa36a9b4b07ad0f7cc4.lck): No such file or directory in /var/www/mysite/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpCache/Store.php line 53"
2013-10-04 10:27:20 +02:00
Bernhard Schussek
5329ab5d5f [Form] Fixed memory leak in FormValidator 2013-10-04 09:21:40 +02:00
Eric GELOEN
a386c74153 [Form] Add a 'submitted' attribute to the form view 2013-10-04 00:18:53 +02:00
Fabien Potencier
2d983b5caf removed obsolete code 2013-10-03 09:18:41 +02:00
Fabien Potencier
4c2d2e287a [ExpressionLanguage] replaced the =~ operator by matches (removed the != operator) 2013-10-02 20:16:09 +02:00
Fabien Potencier
da9bee08e4 [Console] added a compact layout for the table helper 2013-10-02 09:34:37 +02:00
Fabien Potencier
e9ea73311f [Console] added an exception when the padding char is empty to avoid a PHP error in the table helper 2013-10-02 09:34:00 +02:00
Fabien Potencier
8840591b25 Merge branch '2.2' into 2.3
* 2.2:
  remove MinCount and MaxCount contraints. It has been replaced by Count constraints.
2013-10-01 19:10:09 +02:00
franek
58a3296e36 remove MinCount and MaxCount contraints. It has been replaced by Count constraints. 2013-10-01 16:29:34 +02:00
Fabien Potencier
f8f8816e4b Merge branch '2.3'
* 2.3:
  Fix: duplicate usage of Symfony\Component\HttpFoundation\Response
  [Form] add support for Length and Range constraint in order to replace MaxLength, MinLength, Max and Min constraints in next release (2.3)
  Revert "merged branch Tobion/flattenexception (PR #9111)"
  [Form] check the required output timezone against the actual timezone of the input datetime object, rather than the expected timezone supplied

Conflicts:
	src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php
2013-10-01 16:17:10 +02:00
Fabien Potencier
82f6a62bb3 Merge branch '2.2' into 2.3
* 2.2:
  Fix: duplicate usage of Symfony\Component\HttpFoundation\Response
2013-10-01 16:16:42 +02:00
simpson
70cbfc3180 Fix: duplicate usage of Symfony\Component\HttpFoundation\Response 2013-10-01 16:15:07 +02:00
Fabien Potencier
47d080dbd6 feature #8835 [Console] Fixed verbose option when passing verbosity level as option value (deguif)
This PR was squashed before being merged into the master branch (closes #8835).

Discussion
----------

[Console] Fixed verbose option when passing verbosity level as option value

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

Currently passing a verbosity level to verbose option on console doesn't work unless using the shotcuts _-v_, _-vv_, _-vvv_.

This also fix _accept_value_ in the xml generated by __console help --xml__ for people using the xml output ;)

Commits
-------

a28eb8b [Console] Fixed verbose option when passing verbosity level as option value
2013-10-01 15:40:57 +02:00
François-Xavier de Guillebon
a28eb8b561 [Console] Fixed verbose option when passing verbosity level as option value 2013-10-01 15:34:25 +02:00
Fabien Potencier
b0687c8d81 Merge branch '2.2' into 2.3
* 2.2:
  [Form] add support for Length and Range constraint in order to replace MaxLength, MinLength, Max and Min constraints in next release (2.3)
  [Form] check the required output timezone against the actual timezone of the input datetime object, rather than the expected timezone supplied
2013-10-01 14:47:27 +02:00
Fabien Potencier
abb765f135 minor #8927 [Templating] fix logic regarding template references and many phpdocs (Tobion)
This PR was squashed before being merged into the master branch (closes #8927).

Discussion
----------

[Templating] fix logic regarding template references and many phpdocs

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

this clarifies the expected types and exceptions by much. and it fixes some logic flaws.
- missing info/methods in interfaces
- respecting Twig_LoaderInterface only accepting strings, not objects

related to fabpot/Twig#1183 but does not depend on it

Commits
-------

f6c12bd [Templating] fix logic regarding template references and many phpdocs
2013-10-01 14:37:06 +02:00
Tobias Schultze
f6c12bd6de [Templating] fix logic regarding template references and many phpdocs 2013-10-01 14:37:05 +02:00
franek
89a040434e [Form] add support for Length and Range constraint in order to replace MaxLength, MinLength, Max and Min constraints in next release (2.3) 2013-10-01 14:21:02 +02:00
Grégoire Pineau
7e5c9011c9 [Console] Throw an exception if the command does not contain aliases
It can only happend if the constructor has been overridden
2013-10-01 12:29:09 +02:00
Fabien Potencier
554d57b399 bug#9146 [RC][Form] Let null values clear fields in PATCH requests (alex88)
This PR was merged into the master branch.

Discussion
----------

[RC][Form] Let null values clear fields in PATCH requests

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

I've changed the way form checks wherever or not to submit childs by checking submitted data with array_key_exists and not with just isset.

This way in PATCH requests values are not processed when they are not in array and not also when the value is null. Currently there is no way to null a value with a PATCH request, even passing it null.

This can lead to some BC breaks depending on how users used form in their code.

Commits
-------

f5812c5 [Form] Let null values to unset fields in PATCH requests
2013-10-01 10:38:18 +02:00
Fabien Potencier
112fa5eeed feature#8637 [DomCrawler] Allowed internal validation of ChoiceFormField to be disabled (pylebecq)
This PR was squashed before being merged into the master branch (closes #8637).

Discussion
----------

[DomCrawler] Allowed internal validation of ChoiceFormField to be disabled

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

Hi,

Here is a quite basic attempt to be able to disable the internal validation of the ChoiceFormField. It's pretty basic.
Feel free to tell me what you think guys. Maybe I should check the `validationDisabled` property at the beginning of the `containsOption()` method ?
I'll make the documentation PR as soon as the implementation will be validated.

Regards.

Commits
-------

739bf71 [DomCrawler] Allowed internal validation of ChoiceFormField to be disabled
2013-10-01 10:36:55 +02:00
Pierre-Yves LEBECQ
739bf715c7 [DomCrawler] Allowed internal validation of ChoiceFormField to be disabled 2013-10-01 10:36:54 +02:00
Alessandro Tagliapietra
f5812c5e40 [Form] Let null values to unset fields in PATCH requests 2013-10-01 10:31:32 +02:00
Bernhard Schussek
7c7d86e369 [Security] Fixed test cases of the Csrf sub-component 2013-10-01 10:18:52 +02:00
Fabien Potencier
2cd6e002c7 feature#8957 [HttpFoundation] added a way to override the Request class (fabpot)
This PR was merged into the master branch.

Discussion
----------

[HttpFoundation] added a way to override the Request class

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #7461, #7453
| License       | MIT
| Doc PR        | symfony/symfony-docs#3021

This is an alternative implementation for #7461.

I've also reverted #7381 and #7390 as these changes are not needed anymore.

Todo:

 - [ ] add some tests

Commits
-------

464439d [HttpFoundation] added a way to override the Request class
2013-10-01 07:05:57 +02:00
Fabien Potencier
464439d195 [HttpFoundation] added a way to override the Request class 2013-09-30 22:35:02 +02:00
Fabien Potencier
d80e840b7f [Console] added some tests for previous merge (refs #8626) 2013-09-30 21:59:36 +02:00
Christian Flothmann
81aead238b pass command name automatically if required by the application 2013-09-30 21:44:35 +02:00
Fabien Potencier
1893478dd5 feature#9119 [HttpFoundation] Add a way to avoid the session be written at each request (adrienbrault)
This PR was merged into the master branch.

Discussion
----------

[HttpFoundation] Add a way to avoid the session be written at each request

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no (maybe the DI config ?)
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/3017

Commits
-------

191418d [HttpFoundation] Add a way to avoid the session be written at each request
2013-09-30 19:51:08 +02:00
Adrien Brault
191418d24d [HttpFoundation] Add a way to avoid the session be written at each request 2013-09-30 10:45:51 -07:00
Fabien Potencier
c886612c99 fixed some unit tests 2013-09-30 19:16:09 +02:00
Fabien Potencier
1e1835ef59 [FrameworkBundle] made sure that the debug event dispatcher is used everywhere 2013-09-30 17:51:41 +02:00
Fabien Potencier
c741c5838d fixed typos 2013-09-30 17:49:53 +02:00
Fabien Potencier
bdcdc6eddb feature#9170 Decoupled TraceableEventDispatcher from the Profiler (fabpot)
This PR was merged into the master branch.

Discussion
----------

Decoupled TraceableEventDispatcher from the Profiler

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

This PR removes the Profiler dependency on the TraceableEventDispatcher. That makes things more decoupled and cleaner. This PR also cleans up how profiles are stored; a Profile is now always stored only once.

I've created a `LateDataCollectorInterface` that is implemented for data collector that needs to get information from data that are available very late in the request process (when the request and the response are not even available anymore). The `lateCollect()` method is called just before the profile is stored.

We have 3 data collectors that implement that interface:

 * Time: As the traceable event dipsatcher gets inject timing information via the stopwatch about all events (including the `terminate` one), we need to get events from the stopwatch as late as possible.
 * Event: The traceable event dispatcher gathers all called listeners to determine non-called ones. To be able to accurately do that for all events (including the `terminate` one), we need to get the data as late as possible.
 * Memory: We want to get the memory as late as possible to get the most accurate number as possible

I'm not very happy with the name and as always, better suggestions would be much appreciated.

This is an extract from #9168

Commits
-------

5cedea2 [HttpKernel] added LateDataCollectorInterface
9c4bc9a [HttpKernel] decoupled TraceableEventDispatcher and Profiler
2013-09-30 17:42:20 +02:00
Fabien Potencier
0f80916313 feature#6554 [Security] Added Security\Csrf sub-component with better token generation (bschussek)
This PR was merged into the master branch.

Discussion
----------

[Security] Added Security\Csrf sub-component with better token generation

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

**Update September 27, 2013**

This PR simplifies the CSRF mechanism to generate completely random tokens. A random token is generated once per ~~intention~~ token ID and then stored in the session. Tokens are valid until the session expires.

Since the CSRF token generator depends on `StringUtils` and `SecureRandom` from Security\Core, and since Security\Http currently depends on the Form component for token generation, I decided to add a new Security\Csrf sub-component that contains the improved CSRF token generator. Consequences:

* Security\Http now depends on Security\Csrf instead of Form
* Form now optionally depends on Security\Csrf
* The configuration for the "security.secure_random" service and the "security.csrf.*" services was moved to FrameworkBundle to guarantee BC

In the new Security\Csrf sub-component, I tried to improve the naming where I could do so without breaking BC:

* CSRF "providers" are now called "token generators"
* CSRF "intentions" are now called "token IDs", because that's really what they are

##### TODO

- [ ] The documentation needs to be checked for references to the configuration of the application secret. Remarks that the secret is used for CSRF protection need to be removed.
- [ ] Add aliases "csrf_token_generator" and "csrf_token_id" for "csrf_provider" and "intention" in the SecurityBundle configuration
- [x] Make sure `SecureRandom` never blocks for `CsrfTokenGenerator`

Commits
-------

7f02304 [Security] Added missing PHPDoc tag
2e04e32 Updated Composer dependencies to require the Security\Csrf component where necessary
bf85e83 [FrameworkBundle][SecurityBundle] Added service configuration for the new Security CSRF sub-component
2048cf6 [Form] Deprecated the CSRF implementation and added an optional dependency to the Security CSRF sub-component instead
85d4959 [Security] Changed Security HTTP sub-component to depend on CSRF sub-component instead of Form
1bf1640 [Security] Added CSRF sub-component
2013-09-30 17:35:08 +02:00
Fabien Potencier
164c1cbfec feature#9171 [Form] Rewrite boolean attributes to match HTML spec (bschussek)
This PR was merged into the master branch.

Discussion
----------

[Form] Rewrite boolean attributes to match HTML spec

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

Same as #7856

> 'The presence of a boolean attribute on an element represents the true value, and the absence of the attribute represents the false value.' - http://www.w3.org/html/wg/drafts/html/master/infrastructure.html#boolean-attribute

This commit modifies widget_container_attributes and widget_attributes so that:

* `true` values render as the attribute name with the attribute name repeated as the value
* `false` values are not rendered

The comparison is strict using sames() in twig.

Previously `false` values would have been rendered as `some-attribute=""` which according to the spec would actually make them a boolean attribute and therefore equal to true.

Commits
-------

b85577b [Form] Improved test coverage of widget_attributes and widget_container_attributes blocks
8e4c2a7 [Form] Rewrite boolean attributes to match HTML spec
2013-09-30 15:57:18 +02:00
Bernhard Schussek
7f02304654 [Security] Added missing PHPDoc tag 2013-09-30 15:41:48 +02:00
Bernhard Schussek
2e04e32c8f Updated Composer dependencies to require the Security\Csrf component where necessary 2013-09-30 14:39:06 +02:00
Bernhard Schussek
b85577bb96 [Form] Improved test coverage of widget_attributes and widget_container_attributes blocks 2013-09-30 14:32:22 +02:00
Fabien Potencier
e281d7748e bug#8809 [Form] enforce correct timezone (Burgov)
This PR was merged into the 2.2 branch.

Discussion
----------

[Form] enforce correct timezone

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | not sure if this is a BC break...
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

I'm using the Form component to handle JSON requests which come from AJAX requests. The JSON is formed by the Angular toJson method

A typical request would be:
```
{
  name: "Some name"
  start: "2013-08-21T05:00:00.000Z"
  end: "2013-08-21T15:00:00.000Z"
}
```

Note that in this case, what I entered in my input boxes are 7:00 for start and 17:00 for end times. As you can see, Angular (or Chrome, I'm not sure), converts this to the "Z" timezone. Since I cannot enforce the correct timezone client side, the timezone will differ from the one configured in the DateTimeType, however, instead of resulting in either an error or a conversion to the correct timezone, I get a datetime object in the wrong timezone, eventually resulting in wrong values in the database.

By checking the required output timezone against the actual timezone of the input datetime object, rather than the expected timezone supplied, this problem is solved.

Commits
-------

b0349a1 [Form] check the required output timezone against the actual timezone of the input datetime object, rather than the expected timezone supplied
2013-09-30 12:22:54 +02:00
Fabien Potencier
e0d3573454 Revert "merged branch Tobion/flattenexception (PR #9111)"
This reverts commit 53b2048c4c, reversing
changes made to c60a8e962b.
2013-09-30 11:54:26 +02:00
Fabien Potencier
5cedea2c07 [HttpKernel] added LateDataCollectorInterface 2013-09-30 10:54:48 +02:00
Fabien Potencier
9c4bc9a0ed [HttpKernel] decoupled TraceableEventDispatcher and Profiler 2013-09-30 10:52:26 +02:00
Fabien Potencier
59409b47c8 fixed wrong merge 2013-09-29 21:54:28 +02:00
Fabien Potencier
d10dec9bf3 Merge branch '2.3'
* 2.3:
  fixed Client when using the terminable event
  Fix problem with Windows file links (backslash in JavaScript string)
  [Security] fixed wrong phpdoc
  [DependencyInjection] Prevented inlining of lazy loaded private service definitions.
  [Routing] removed extra argument
  [HttpFoundation] Header `HTTP_X_FORWARDED_PROTO` can contain various values Some proxies use `ssl` instead of `https`, as well as Lighttpd mod_proxy allows value chaining (`https, http`, where `https` is always first when request is encrypted).
  Added doc comments

Conflicts:
	src/Symfony/Component/Routing/Router.php
	src/Symfony/Component/Security/Http/Firewall.php
2013-09-29 21:43:28 +02:00
Fabien Potencier
bc256f9da4 Merge branch '2.2' into 2.3
* 2.2:
  fixed Client when using the terminable event
  Fix problem with Windows file links (backslash in JavaScript string)
  [Security] fixed wrong phpdoc
  [Routing] removed extra argument
  [HttpFoundation] Header `HTTP_X_FORWARDED_PROTO` can contain various values Some proxies use `ssl` instead of `https`, as well as Lighttpd mod_proxy allows value chaining (`https, http`, where `https` is always first when request is encrypted).
  Added doc comments

Conflicts:
	src/Symfony/Component/HttpFoundation/Request.php
2013-09-29 21:41:41 +02:00
Fabien Potencier
8c8cf62038 fixed Client when using the terminable event 2013-09-29 21:31:28 +02:00
Fabien Potencier
44b890ee68 fixed a typo 2013-09-29 20:27:12 +02:00
Fabien Potencier
e26ae45a42 [HttpKernel] added missing argument to listener call 2013-09-29 16:28:25 +02:00
Fabien Potencier
a38318b218 bug#9153 [DependencyInjection] Prevented inlining of lazy loaded private service definitions (jakzal)
This PR was merged into the 2.3 branch.

Discussion
----------

[DependencyInjection] Prevented inlining of lazy loaded private service definitions

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

Commits
-------

bb0125b [DependencyInjection] Prevented inlining of lazy loaded private service definitions.
2013-09-27 21:46:26 +02:00
Fabien Potencier
27cc10c660 [Security] fixed wrong phpdoc 2013-09-27 18:31:48 +02:00
Fabien Potencier
331043f421 feature#9150 [Filesystem] introduced new Exception base classes (fabpot)
This PR was merged into the master branch.

Discussion
----------

[Filesystem] introduced new Exception base classes

The Filesystem class now throws a ```FileNotFoundException``` if a file could not be found, rather than an basic ```IOException```. The new exception is still a child of the ```IOException```, this way it doesn' t breack BC.
The ```IOException``` now also takes as the first argument an path to the file of interest, which can be used via the ```getPath()``` method.

The switch to the FilesystemInterface will allow you to have an implementation accessing S3 or Dropbox, etc. and still inject it into a classes, which are requiring the Filesystem.

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

Commits
-------

c2e43d0 [Filesystem] removed getPath() on Exceptions and cleaned up CS and error messages
785080a [Filesystem] introduced new Exception base classes
2013-09-27 18:26:45 +02:00
Fabien Potencier
a86b35fd7f feature#9151 [HttpKernel] made the cache key generation configurable for the default HttpCache store (fabpot)
This PR was merged into the master branch.

Discussion
----------

[HttpKernel] made the cache key generation configurable for the default HttpCache store

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

Commits
-------

780b77a [HttpKernel] made the cache key generation configurable for the default HttpCache store
2013-09-27 18:24:27 +02:00
Fabien Potencier
780b77af58 [HttpKernel] made the cache key generation configurable for the default HttpCache store 2013-09-27 17:49:58 +02:00
Fabien Potencier
757efb656e bug#9103 [HttpFoundation] Header HTTP_X_FORWARDED_PROTO can contain various values (stloyd)
This PR was merged into the 2.2 branch.

Discussion
----------

[HttpFoundation] Header `HTTP_X_FORWARDED_PROTO` can contain various values

Header `HTTP_X_FORWARDED_PROTO` can contain various values. Some proxies use `ssl` instead of `https`, as well as Lighttpd mod_proxy allows value chaining (`https, http`, where `https` is always first when request is encrypted).

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

Commits
-------

d997443 [HttpFoundation] Header `HTTP_X_FORWARDED_PROTO` can contain various values Some proxies use `ssl` instead of `https`, as well as Lighttpd mod_proxy allows value chaining (`https, http`, where `https` is always first when request is encrypted).
2013-09-27 17:05:15 +02:00
Fabien Potencier
279a686fcf minor#8823 [Security] [2.2] Added doc comments and missing use statement (piotrantosik)
This PR was merged into the 2.2 branch.

Discussion
----------

[Security] [2.2] Added doc comments and missing use statement

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

Commits
-------

7ee39a6 Added doc comments
2013-09-27 17:00:06 +02:00
Fabien Potencier
c2e43d0aa4 [Filesystem] removed getPath() on Exceptions and cleaned up CS and error messages 2013-09-27 16:57:51 +02:00
Christian Gartner
785080ab02 [Filesystem] introduced new Exception base classes 2013-09-27 16:40:55 +02:00
Fabien Potencier
c817539949 [Process] fixed tests 2013-09-27 16:31:42 +02:00
Fabien Potencier
500ddf3494 feature#8191 [Process] Added ProcessBuilder::setEnvironmentVariables (lyrixx)
This PR was merged into the master branch.

Discussion
----------

[Process] Added ProcessBuilder::setEnvironmentVariables

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

Commits
-------

b46ebf7 [Process] Added ProcessBuilder::addEnvironmentVariables
2013-09-27 16:30:49 +02:00
Stephane Escandell
e73742a25d [PropertyAccess] Throw exception on nonexistant "index" on read access 2013-09-27 16:14:57 +02:00
Fabien Potencier
9f35ca5ea1 Merge branch '2.3'
* 2.3:
  bumped Symfony version to 2.3.6
  updated VERSION for 2.3.5
  updated CHANGELOG for 2.3.5
  Set cost type to integer
  bumped Symfony version to 2.2.9
  updated VERSION for 2.2.8
  updated CHANGELOG for 2.2.8
  bumped the version
  fixed typo
  updated VERSION for 2.2.7
  update CONTRIBUTORS for 2.2.7
  updated CHANGELOG for 2.2.7
  bugix: CookieJar returns cookies with domain "domain.com" for domain "foodomain.com"
  fixed HTML5 form attribute handling XPath query
  Removed old way of building icu data.

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
2013-09-27 16:07:49 +02:00
Fabien Potencier
f396ec11f2 feature#8022 Make the getNode function public (DomCrawler) (wesleyh)
This PR was merged into the master branch.

Discussion
----------

Make the getNode function public (DomCrawler)

The getNode function should be public so that DomElement objects can be accessed directly if need be without having to loop manually.

Use case: Want to get to the tagname of a specific domelement.

Commits
-------

9868415 Make getNode function public
2013-09-27 15:59:33 +02:00
Fabien Potencier
eb6da72cf8 feature#8288 [Process] Added support for stdout and stderr flush (Issue #7884) (imobilis)
This PR was squashed before being merged into the master branch (closes #8288).

Discussion
----------

[Process] Added support for stdout and stderr flush (Issue #7884)

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

**To-do**
- [x] Submit changes to the documentation.
- [x] Fix a test broken on travis.
- [x] Fix mistakes on the documentation.
- [x] Removed flush + get methods.
- [x] Changed tests assert calls.

This PR introduces flushing methods for both stdout and stderr on Process class. The new methods are:
- flushOutput(): clears the output buffer.
- flushErrorOutput(): clears the error output buffer.

Tests for new methods are included on the PR.

Commits
-------

90daef7 [Process] Added support for stdout and stderr flush (Issue #7884)
2013-09-27 15:52:58 +02:00
Juan Traverso
90daef75c6 [Process] Added support for stdout and stderr flush (Issue #7884) 2013-09-27 15:52:56 +02:00
Fabien Potencier
c5a65780db [Translation] fixed CS 2013-09-27 15:28:11 +02:00
Fabien Potencier
9988475881 feature#8534 [Translation] Added support for JSON format (both loader and dumper). (singles)
This PR was merged into the master branch.

Discussion
----------

[Translation] Added support for JSON format (both loader and dumper).

Based on `IniFileLoader\Dumper`.

Q | A
--- | ---
Bug fix? |no
New feature?	| yes
BC breaks?|	no
Deprecations?	|no
Tests pass?	| yes
Fixed tickets	| -
License	| MIT
Doc | this component don't have docs

Commits
-------

fcef021 [Translation] Added support for JSON format (both loader and dumper).
2013-09-27 15:25:18 +02:00
Nicolas Talle
6cb4c7c70e added getLoaders() method 2013-09-27 14:04:15 +02:00
Fabien Potencier
dfd3e99dec bumped Symfony version to 2.3.6 2013-09-27 12:40:14 +02:00
Bernhard Schussek
2048cf6d35 [Form] Deprecated the CSRF implementation and added an optional dependency to the Security CSRF sub-component instead 2013-09-27 10:12:40 +02:00
Bernhard Schussek
85d49597a9 [Security] Changed Security HTTP sub-component to depend on CSRF sub-component instead of Form 2013-09-27 10:08:57 +02:00
Bernhard Schussek
1bf16400fb [Security] Added CSRF sub-component 2013-09-27 10:08:54 +02:00
Fabien Potencier
aa5626cd2a updated VERSION for 2.3.5 2013-09-27 09:31:40 +02:00
datibbaw
8753db942a Set cost type to integer
This seems to be a remnant of when the code dealt with crypt() directly. The password_hash() function expects the cost option to be an LVAL (it does a type conversion for strings).
2013-09-27 09:20:28 +02:00
Fabien Potencier
e24dbf7cba minor#9120 Update FormTypeCsrfExtension.php (tweini)
This PR was merged into the master branch.

Discussion
----------

Update FormTypeCsrfExtension.php

There is no need to store the FormFactory in an Attribute.
The FormFactory can be retrieved directly.

Commits
-------

90d59ea Update FormTypeCsrfExtension.php
2013-09-27 09:15:33 +02:00
Jakub Zalas
bb0125b2f9 [DependencyInjection] Prevented inlining of lazy loaded private service definitions. 2013-09-26 23:39:53 +01:00
Fabien Potencier
4330ae5a0a merged branch bschussek/issue2480 (PR #9133)
This PR was merged into the master branch.

Discussion
----------

[Validator] Simplified usage of the Callback constraint

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | fixes #2480, replaces #3939
| License       | MIT
| Doc PR        | symfony/symfony-docs#3012

Commits
-------

cccb1db [Validator] Simplified usage of the Callback constraint
2013-09-26 21:12:02 +02:00
Fabien Potencier
54e2abd2ce [Routing] removed extra argument 2013-09-26 21:07:06 +02:00
Fabien Potencier
9a65ce3886 Merge branch '2.2' into 2.3
* 2.2:
  bumped Symfony version to 2.2.9
  updated VERSION for 2.2.8
  updated CHANGELOG for 2.2.8
  bumped the version
  fixed typo
  updated VERSION for 2.2.7
  update CONTRIBUTORS for 2.2.7
  updated CHANGELOG for 2.2.7
  bugix: CookieJar returns cookies with domain "domain.com" for domain "foodomain.com"

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
2013-09-26 14:37:59 +02:00
Fabien Potencier
3ead941404 bumped Symfony version to 2.2.9 2013-09-26 14:19:27 +02:00
Bernhard Schussek
cccb1db2b2 [Validator] Simplified usage of the Callback constraint 2013-09-26 13:52:04 +02:00
Fabien Potencier
e80fc4aa25 updated VERSION for 2.2.8 2013-09-26 09:49:44 +02:00
Fabien Potencier
ee2de12900 bumped the version 2013-09-26 09:32:59 +02:00
Fabien Potencier
f681444810 fixed typo 2013-09-26 09:30:20 +02:00
Jakub Zalas
3292163fad [DomCrawler] Fixed an issue with namespace prefix matching being to greedy.
The regexp matching prefixes is naive and matches most of strings followed by a colon. It is also incomplete as it does not match all the supported characters (like the unicode ones). It is simple though and sufficient in most situations.
2013-09-25 23:07:33 +01:00
Fabien Potencier
498d8c0ba3 updated VERSION for 2.2.7 2013-09-25 21:27:10 +02:00
Bernhard Schussek
89509d9847 [Form] Improved form debugger 2013-09-25 17:47:13 +02:00
Bernhard Schussek
f56c5774a8 [HttpKernel] Extracted value exporting logic of DataCollector into a separate ValueExporter class 2013-09-25 17:47:12 +02:00
Bernhard Schussek
56d78eda56 [Form] Decoupled methods of ResolvedFormType so that they can be overridden individually by decorators 2013-09-25 15:59:51 +02:00
Robert Schönthal
a994a5d410 [Form] Merged subsriber/collector, also collect valid forms 2013-09-25 15:59:51 +02:00
Robert Schönthal
1972a91653 [Form] Added form debug collector 2013-09-25 15:59:51 +02:00
Povilas Skruibis
89809541b9 bugix: CookieJar returns cookies with domain "domain.com" for domain "foodomain.com" 2013-09-25 15:49:28 +02:00
Robert Kiss
bb59ac2879 fixed HTML5 form attribute handling XPath query 2013-09-25 11:22:53 +02:00
Fabien Potencier
98c0d38a44 merged branch jakzal/domcrawler-namespace-autodiscovery (PR #6650)
This PR was merged into the master branch.

Discussion
----------

[DomCrawler] Added auto-discovery and explicit registration of namespaces in filter() and filterByXPath()

| Q | A
| --- | ---
|Bug fix: | no
|Feature addition: |yes
|Backwards compatibility break: | yes, default namespace is no longer removed in the `addContent` method
|Symfony2 tests pass: | yes|
|Fixes the following tickets: | #4845
|Todo: | -
|License of the code:| MIT
|Documentation PR: | symfony/symfony-docs#2979

* added support for automatic discovery and explicit registration of document namespaces for `Crawler::filterXPath()` and `Crawler::filter()`
* improved content type guessing in `Crawler::addContent()`
* [BC BREAK] `Crawler::addXmlContent()` no longer removes the default document namespace

I mentioned in #4845 it would probably be possible to use [DOMNode::lookupNamespaceURI()](http://www.php.net/manual/en/domnode.lookupnamespaceuri.php) to find a namespace URI by given prefix. Unfortunately we cannot use it here since we'd have to call it on a node in the namespace we're looking for.

Current implementation makes the following query to find a namespace:
```php
$domxpath->query('(//namespace::*[name()="media"])[last()]')
```

Commits
-------

77e2fa5 [DomCrawler] Removed checks if CssSelector is present.
9110468 [DomCrawler] Enabled manual namespace registration.
be1e4e6 [DomCrawler] Enabled default namespace prefix overloading.
943d446 [DomCrawler] Updated the CHANGELOG with namespace auto-registration details.
c6fbb13 [DomCrawler] Added support for an automatic default namespace registration.
587e2dd [DomCrawler] Made that default namespace is no longer removed when loading documents with addXmlContent().
c905bba [DomCrawler] Added more tests for namespaced filtering.
6e717a3 [DomCrawler] Made sure only the default namespace is removed when loading an XML content.
e5b8abb [DomCrawler] Added auto-discovery of namespaces in Crawler::filter() and Crawler::filterByXPath().
2013-09-25 08:05:47 +02:00
Fabien Potencier
6a28718453 Merge branch '2.3'
* 2.3:
  Run all tests in parallel.
  Fixed an entity class name.
  [HttpKernel] fix usage of deprecated FlattenException

Conflicts:
	src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php
2013-09-25 08:04:58 +02:00
Fabien Potencier
453f0d25f7 Merge branch '2.2' into 2.3
* 2.2:
  Run all tests in parallel.
  Fixed an entity class name.

Conflicts:
	.travis.yml
	src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypePerformanceTest.php
2013-09-25 08:04:15 +02:00
Jakub Zalas
bcbe8d2d48 Run all tests in parallel. 2013-09-25 07:58:50 +02:00
tweini
90d59ea6cd Update FormTypeCsrfExtension.php
There is no need to store the FormFactory in an Attribute.
The FormFactory can be retrieved directly.
2013-09-25 07:26:45 +02:00
Adrien Brault
ea27961eaa [HttpFoundation] Remove useless reflection usage in MetadataBagTest 2013-09-24 14:45:54 -07:00
Jakub Zalas
77e2fa5c98 [DomCrawler] Removed checks if CssSelector is present. 2013-09-24 21:21:41 +01:00
Tobias Schultze
8bad61daf5 [HttpKernel] fix usage of deprecated FlattenException 2013-09-24 12:40:06 +02:00
Fabien Potencier
5ed1d01449 Merge branch '2.3'
* 2.3:
  Revert "merged branch fabpot/event-dispatcher-debug (PR #9068)"
2013-09-23 17:56:38 +02:00
Fabien Potencier
c60a8e962b Merge branch '2.2' into 2.3
* 2.2:
  Revert "merged branch fabpot/event-dispatcher-debug (PR #9068)"

Conflicts:
	src/Symfony/Component/HttpKernel/DependencyInjection/RegisterListenersPass.php
	src/Symfony/Component/HttpKernel/Tests/DependencyInjection/RegisterListenersPassTest.php
2013-09-23 17:56:30 +02:00
Fabien Potencier
c43c35cd17 [ExpressionLanguage] fixed CS 2013-09-23 12:22:40 +02:00
Fabien Potencier
db00c3f510 merged branch adrienbrault/expression-cache (PR #9095)
This PR was squashed before being merged into the master branch (closes #9095).

Discussion
----------

[ExpressionLanguage] Introduce a ParserCacheInterface with array/doctrine implementations

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

Commits
-------

c8e6799 [ExpressionLanguage] Introduce a ParserCacheInterface with array/doctrine implementations
2013-09-23 12:19:21 +02:00
Adrien Brault
c8e679970e [ExpressionLanguage] Introduce a ParserCacheInterface with array/doctrine implementations 2013-09-23 12:19:21 +02:00
Joseph Bielawski
d997443ab0 [HttpFoundation] Header HTTP_X_FORWARDED_PROTO can contain various values
Some proxies use `ssl` instead of `https`, as well as Lighttpd mod_proxy allows
value chaining (`https, http`, where `https` is always first when request is encrypted).
2013-09-23 10:18:01 +02:00
Fabien Potencier
f7d0ec6f4a [Security] limited the password length passed to encoders 2013-09-23 09:15:09 +02:00
Jakub Zalas
9110468e99 [DomCrawler] Enabled manual namespace registration. 2013-09-22 23:45:02 +01:00
Jakub Zalas
be1e4e6585 [DomCrawler] Enabled default namespace prefix overloading. 2013-09-22 23:05:57 +01:00
Jakub Zalas
943d446e61 [DomCrawler] Updated the CHANGELOG with namespace auto-registration details. 2013-09-22 23:05:57 +01:00
Jakub Zalas
c6fbb13938 [DomCrawler] Added support for an automatic default namespace registration. 2013-09-22 23:05:57 +01:00
Jakub Zalas
587e2dd44f [DomCrawler] Made that default namespace is no longer removed when loading documents with addXmlContent(). 2013-09-22 23:05:56 +01:00
Jakub Zalas
c905bba6a0 [DomCrawler] Added more tests for namespaced filtering. 2013-09-22 23:05:56 +01:00
Jakub Zalas
6e717a3092 [DomCrawler] Made sure only the default namespace is removed when loading an XML content. 2013-09-22 23:05:56 +01:00
Jakub Zalas
e5b8abb564 [DomCrawler] Added auto-discovery of namespaces in Crawler::filter() and Crawler::filterByXPath().
Improved content type guessing.
2013-09-22 23:05:56 +01:00
Fabien Potencier
b1542f0620 Merge branch '2.3'
* 2.3:
  [Locale] added support for the position argument to NumberFormatter::parse()
  [Locale] added some more stubs for the number formatter
  [Yaml] fixed typo
  [Yaml] fixed a test on PHP < 5.4
  [DomCrawler]Crawler guess charset from html
  fixed PHP 5.3 compatibility
  [Yaml] reverted previous merge partially (refs #8897)
  [Security] remove unused logger
  [Security] fix typo
  [Yaml] Fixed filename in the ParseException message
2013-09-22 20:04:51 +02:00
Fabien Potencier
775a39c5c3 Merge branch '2.2' into 2.3
* 2.2:
  [Locale] added support for the position argument to NumberFormatter::parse()
  [Locale] added some more stubs for the number formatter
  [Yaml] fixed typo
  [Yaml] fixed a test on PHP < 5.4
  [DomCrawler]Crawler guess charset from html
  fixed PHP 5.3 compatibility
  [Yaml] reverted previous merge partially (refs #8897)
  [Security] remove unused logger
  [Security] fix typo
  [Yaml] Fixed filename in the ParseException message

Conflicts:
	src/Symfony/Component/Console/Input/InputDefinition.php
	src/Symfony/Component/Locale/Stub/StubNumberFormatter.php
	src/Symfony/Component/Locale/Tests/Stub/StubNumberFormatterTest.php
2013-09-22 20:04:39 +02:00
Fabien Potencier
3108c715db [Locale] added support for the position argument to NumberFormatter::parse() 2013-09-22 19:34:01 +02:00
Fabien Potencier
0774c79678 [Locale] added some more stubs for the number formatter 2013-09-22 19:34:01 +02:00
Fabien Potencier
2e87d1d3f9 [Yaml] fixed typo 2013-09-22 19:30:19 +02:00
Fabien Potencier
213b888ea4 [Yaml] fixed a test on PHP < 5.4 2013-09-22 19:26:55 +02:00
Fabien Potencier
e8691366ce [ExpressionLanguage] renamed addFunction() to register() 2013-09-21 20:20:49 +02:00
Adrien Brault
5076ec7e90 [ExpressionLanguage] optimized serialization of nodes and expressions 2013-09-21 20:20:49 +02:00
Fabien Potencier
60b9f856fd [ExpressionLanguage] made ExpressionLanguage::parse return an ParsedExpression instance 2013-09-21 20:20:49 +02:00
Piotr Antosik
7ee39a630d Added doc comments 2013-09-19 18:46:04 +02:00
Fabien Potencier
f73aa37064 merged branch bronze1man/pr-2.2-crawler (PR #9074)
This PR was squashed before being merged into the 2.2 branch (closes #9074).

Discussion
----------

[DomCrawler]Crawler guess charset from html

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

Commits
-------

e5282e8 [DomCrawler]Crawler guess charset from html
2013-09-19 18:37:12 +02:00
bronze1man
e5282e8ec0 [DomCrawler]Crawler guess charset from html 2013-09-19 18:37:12 +02:00
Fabien Potencier
8552aa4834 fixed PHP 5.3 compatibility 2013-09-19 18:27:31 +02:00
Fabien Potencier
38f7ef0539 [Yaml] reverted previous merge partially (refs #8897) 2013-09-19 18:24:31 +02:00
Fabien Potencier
1b789d2d16 merged branch unkind/bugfix-yaml-parse-exception (PR #8897)
This PR was merged into the 2.2 branch.

Discussion
----------

[Yaml] Fixed filename in the ParseException message

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

Yaml component throws an exception with corrupt filename because of `json_encode`:

```
[Symfony\Component\Yaml\Exception\ParseException]
A YAML file cannot contain tabs as indentation in "\/var\/www\/app\/config.yml" at line 42 (near "	foo: bar").
```

Commits
-------

da44651 [Yaml] Fixed filename in the ParseException message
2013-09-19 18:22:28 +02:00
Fabien Potencier
77d3a857da merged branch liuggio/master (PR #9077)
This PR was merged into the master branch.

Discussion
----------

[HttpKernel] [Fragment] Fixed CS

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

Only two simple CS fixes.

Commits
-------

7d53314 [HttpKernel] Fragment Fixed CS
2013-09-19 18:16:36 +02:00
Fabien Potencier
ca62f65887 merged branch fabpot/expression-engine (PR #8913)
This PR was merged into the master branch.

Discussion
----------

New Component: Expression Language

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

TODO:

 - [ ] write documentation
 - [x] add tests for the new component
 - [x] implement expression support for access rules in the security component
 - [x] find a better character/convention for expressions in the YAML format
 - [x] check the performance of the evaluation mode
 - [x] better error messages in the evaluation mode
 - [x] add support in the Routing
 - [x] add support in the Validator

The ExpressionLanguage component provides an engine that can compile and
evaluate expressions.

An expression is a one-liner that returns a value (mostly, but not limited to, Booleans).

It is a strip-down version of Twig (only the expression part of it is
implemented.) Like Twig, the expression is lexed, parsed, and
compiled/evaluated. So, it is immune to external injections by design.

If we compare it to Twig, here are the main big differences:

 * only support for Twig expressions
 * no ambiguity for calls (foo.bar is only valid for properties, foo['bar'] is only valid for array calls, and foo.bar() is required for method calls)
 * no support for naming conventions in method calls (if the method is named getFoo(), you must use getFoo() and not foo())
 * no notion of a line for errors, but a cursor (we are mostly talking about one-liners here)
 * removed everything specific to the templating engine (like output escaping or filters)
 * no support for named arguments in method calls
 * only one extension point with functions (no possibility to define new operators, ...)
 * and probably even more I don't remember right now
 * there is no need for a runtime environment, the compiled PHP string is self-sufficient

An open question is whether we keep the difference betweens arrays and hashes.

The other big difference with Twig is that it can work in two modes (possible
because of the restrictions described above):

 * compilation: the expression is compiled to PHP and is self-sufficient
 * evaluation: the expression is evaluated without being compiled to PHP (the node tree produced by the parser can be serialized and evaluated afterwards -- so it can be saved on disk or in a database to speed up things when needed)

Let's see a simple example:

```php
$language = new ExpressionLanguage();

echo $language->evaluate('1 + 1');
// will echo 2

echo $language->compile('1 + 2');
// will echo "(1 + 2)"
```

The language supports:

 * all basic math operators (with precedence rules):
    * unary: not, !, -, +
    * binary: or, ||, and, &&, b-or, b-xor, b-and, ==, ===, !=, !==, <, >, >=, <=, not in, in, .., +, -, ~, *, /, %, **

 * all literals supported by Twig: strings, numbers, arrays (`[1, 2]`), hashes
   (`{a: "b"}`), Booleans, and null.

 * simple variables (`foo`), array accesses (`foo[1]`), property accesses
   (`foo.bar`), and method calls (`foo.bar(1, 2)`).

 * the ternary operator: `true ? true : false` (and all the shortcuts
   implemented in Twig).

 * function calls (`constant('FOO')` -- `constant` is the only built-in
   functions).

 * and of course, any combination of the above.

The compilation is better for performances as the end result is just a plain PHP string without any runtime. For the evaluation, we need to tokenize, parse, and evaluate the nodes on the fly. This can be optimized by using a `ParsedExpression` or a `SerializedParsedExpression` instead:

```php
$nodes = $language->parse($expr, $names);
$expression = new SerializedParsedExpression($expr, serialize($nodes));

// You can now store the expression in a DB for later reuse

// a SerializedParsedExpression can be evaluated like any other expressions,
// but under the hood, the lexer and the parser won't be used at all, so it''s much faster.
$language->evaluate($expression);
```
That's all folks!

I can see many use cases for this new component, and we have two use cases in
Symfony that we can implement right away.

## Using Expressions in the Service Container

The first one is expression support in the service container (it would replace
#8850) -- anywhere you can pass an argument in the service container, you can
use an expression:

```php
$c->register('foo', 'Foo')->addArgument(new Expression('bar.getvalue()'));
```

You have access to the service container via `this`:

    container.get("bar").getvalue(container.getParameter("value"))

The implementation comes with two functions that simplifies expressions
(`service()` to get a service, and `parameter` to get a parameter value). The
previous example can be simplified to:

    service("bar").getvalue(parameter("value"))

Here is how to use it in XML:

```xml
<parameters>
    <parameter key="value">foobar</parameter>
</parameters>
<services>
    <service id="foo" class="Foo">
        <argument type="expression">service('bar').getvalue(parameter('value'))</argument>
    </service>
    <service id="bar" class="Bar" />
</services>
```

and in YAML (I chose the syntax randomly ;)):

```yaml
parameters:
    value: foobar

services:
    bar:
        class: Bar

    foo:
        class: Foo
        arguments: [@=service("bar").getvalue(parameter("value"))]
```

When using the container builder, Symfony uses the evaluator, but with the PHP
dumper, the compiler is used, and there is no overhead as the expression
engine is not needed at runtime. The expression above would be compiled to:

```php
$this->get("bar")->getvalue($this->getParameter("value"))
```

## Using Expression for Security Access Control Rules

The second use case in Symfony is for access rules.

As we all know, the way to configure the security access control rules is confusing, which might lead to insecure applications (see http://symfony.com/blog/security-access-control-documentation-issue for more information).

Here is how the new `allow_if` works:

```yaml
access_control:
    - { path: ^/_internal/secure, allow_if: "'127.0.0.1' == request.getClientIp() or has_role('ROLE_ADMIN')" }
```

This one restricts the URLs starting with `/_internal/secure` to people browsing from the localhost. Here, `request` is the current Request instance. In the expression, there is access to the following variables:

 * `request`
 * `token`
 * `user`

And to the following functions:

 * `is_anonymous`
 * `is_authenticated`
 * `is_fully_authenticated`
 * `is_rememberme`
 * `has_role`

You can also use expressions in Twig, which works well with the `is_granted` function:

```jinja
{% if is_granted(expression('has_role("FOO")')) %}
   ...
{% endif %}
```

## Using Expressions in the Routing

Out of the box, Symfony can only match an incoming request based on some pre-determined variables (like the path info, the method, the scheme, ...). But some people want to be able to match on more complex logic, based on other information of the Request object. That's why we introduced `RequestMatcherInterface` recently (but we no default implementation in Symfony itself).

The first change I've made (not related to expression support) is implement this interface for the default `UrlMatcher`. It was simple enough.

Then, I've added a new `condition` configuration for Route objects, which allow you to add any valid expression. An expression has access to the `request` and to the routing `context`.

Here is how one would configure it in a YAML file:

```yaml
hello:
    path: /hello/{name}
    condition: "context.getMethod() in ['GET', 'HEAD'] and request.headers.get('User-Agent') =~ '/firefox/i'"
```

Why do I keep the context as all the data are also available in the request? Because you can also use the condition without using the RequestMatcherInterface, in which case, you don't have access to the request. So, the previous example is equivalent to:

```yaml
hello:
    path: /hello/{name}
    condition: "request.getMethod() in ['GET', 'HEAD'] and request.headers.get('User-Agent') =~ '/firefox/i'"
```

When using the PHP dumper, there is no overhead as the condition is compiled. Here is how it looks like:

```php
// hello
if (0 === strpos($pathinfo, '/hello') && preg_match('#^/hello/(?P<name>[^/]++)$#s', $pathinfo, $matches) && (in_array($context->getMethod(), array(0 => "GET", 1 => "HEAD")) && preg_match("/firefox/i", $request->headers->get("User-Agent")))) {
    return $this->mergeDefaults(array_replace($matches, array('_route' => 'hello')), array ());
}
```

Be warned that conditions are not taken into account when generating a URL.

## Using Expressions in the Validator

There is a new Expression constraint that you can put on a class. The expression is then evaluated for validation:

```php
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @Assert\Condition(condition="this.getFoo() == 'fo'", message="Not good!")
 */
class Obj
{
    public function getFoo()
    {
        return 'foo';
    }
}
```

In the expression, you get access to the current object via the `this` variable.

## Dynamic annotations

The expression language component is also very useful in annotations. the SensoLabs FrameworkExtraBundle leverages this possibility to implement HTTP validation caching in the `@Cache` annotation and to add a new `@Security` annotation (see sensiolabs/SensioFrameworkExtraBundle#238.)

Commits
-------

d4ebbfd [Validator] Renamed Condition to Expression and added possibility to set it onto properties
a3b3a78 [Validator] added a constraint that runs an expression
1bcfb40 added optimized versions of expressions
984bd38 mades things more consistent for the end user
d477f15 [Routing] added support for expression conditions in routes
86ac8d7 [ExpressionLanguage] improved performance
e369d14 added a Twig extension to create Expression instances
38b7fde added support for expression in control access rules
2777ac7 [HttpFoundation] added ExpressionRequestMatcher
c25abd9 [DependencyInjection] added support for expressions in the service container
3a41781 [ExpressionLanguage] added support for regexes
9d98fa2 [ExpressionLanguage] added the component
2013-09-19 13:00:34 +02:00
Bernhard Schussek
d4ebbfd02d [Validator] Renamed Condition to Expression and added possibility to set it onto properties 2013-09-19 12:59:33 +02:00
Fabien Potencier
a3b3a78237 [Validator] added a constraint that runs an expression 2013-09-19 12:59:12 +02:00
Fabien Potencier
1bcfb40eb5 added optimized versions of expressions 2013-09-19 12:59:12 +02:00
Fabien Potencier
984bd38568 mades things more consistent for the end user 2013-09-19 12:59:11 +02:00
Fabien Potencier
d477f157ce [Routing] added support for expression conditions in routes 2013-09-19 12:59:11 +02:00
Fabien Potencier
86ac8d7547 [ExpressionLanguage] improved performance 2013-09-19 12:59:11 +02:00
Fabien Potencier
38b7fde8ed added support for expression in control access rules 2013-09-19 12:59:11 +02:00
Fabien Potencier
2777ac7854 [HttpFoundation] added ExpressionRequestMatcher 2013-09-19 12:59:11 +02:00
Fabien Potencier
c25abd9c72 [DependencyInjection] added support for expressions in the service container 2013-09-19 12:59:10 +02:00
Fabien Potencier
3a41781640 [ExpressionLanguage] added support for regexes 2013-09-19 12:59:10 +02:00