Commit Graph

12938 Commits

Author SHA1 Message Date
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
Thomas Adam
9e38819cef use "translator" alias not "translator.default" 2013-09-20 15:35:24 +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
e369d14a2c added a Twig extension to create Expression instances 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
Fabien Potencier
9d98fa25ec [ExpressionLanguage] added the component 2013-09-19 12:59:10 +02:00
Fabien Potencier
ed60d39767 Merge brant pushch '2.3'
* 2.3:
  Fix `use` statements in HttpKernel\Client
2013-09-19 12:55:38 +02:00
Fabien Potencier
714d719383 merged branch stloyd/bugfix/use_statement (PR #9079)
This PR was merged into the 2.3 branch.

Discussion
----------

Fix `use` statements in HttpKernel\Client

Commits
-------

5d5ea9a Fix `use` statements in HttpKernel\Client
2013-09-19 12:55:30 +02:00
Joseph Bielawski
5d5ea9a992 Fix use statements in HttpKernel\Client 2013-09-19 12:49:28 +02:00
Fabien Potencier
8d6131f7f4 Merge branch '2.3'
* 2.3:
  fixed Git conflict
2013-09-19 12:37:07 +02:00
Fabien Potencier
d502e32cb5 fixed Git conflict 2013-09-19 12:35:49 +02:00
Giulio De Donato
7d53314b36 [HttpKernel] Fragment Fixed CS 2013-09-19 12:32:30 +02:00
Fabien Potencier
6a36fb6311 merged branch Tobion/security-fix-typo (PR #9069)
This PR was merged into the 2.2 branch.

Discussion
----------

[Security] fix typo and remove unused logger

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

Commits
-------

a33cc51 [Security] remove unused logger
62de9c1 [Security] fix typo
2013-09-19 11:48:50 +02:00
Fabien Potencier
12c0b74eac merged branch nicolas-bastien/remove_unsued_statement (PR #9075)
This PR was merged into the master branch.

Discussion
----------

[Security] Remove unused use statement

Commits
-------

6981669 Remove unused use statement
2013-09-19 11:48:08 +02:00
Fabien Potencier
51c6d7696c Merge branch '2.3'
* 2.3:
  fixed phpdoc
  Fix some annotates
  [FrameworkBundle] made sure that the debug event dispatcher is used everywhere
  [HttpKernel] remove unneeded strtoupper
  updated the composer install command to reflect changes in Composer

Conflicts:
	src/Symfony/Component/Serializer/Encoder/XmlEncoder.php
2013-09-19 11:47:34 +02:00
Fabien Potencier
a1cfdb421a fixed phpdoc 2013-09-19 11:47:13 +02:00
Fabien Potencier
88cef41560 Merge branch '2.2' into 2.3
* 2.2:
  Fix some annotates
  [FrameworkBundle] made sure that the debug event dispatcher is used everywhere
  [HttpKernel] remove unneeded strtoupper
  updated the composer install command to reflect changes in Composer

Conflicts:
	src/Symfony/Component/Console/Application.php
	src/Symfony/Component/Console/Command/Command.php
	src/Symfony/Component/Console/Input/InputDefinition.php
	src/Symfony/Component/CssSelector/Node/CombinedSelectorNode.php
	src/Symfony/Component/Form/Form.php
	src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php
	src/Symfony/Component/HttpKernel/DependencyInjection/RegisterListenersPass.php
	src/Symfony/Component/HttpKernel/Tests/DependencyInjection/RegisterListenersPassTest.php
	src/Symfony/Component/Locale/Locale.php
	src/Symfony/Component/Locale/README.md
	src/Symfony/Component/Locale/Stub/DateFormat/FullTransformer.php
2013-09-19 11:45:20 +02:00
Fabien Potencier
7597f7ea55 merged branch bronze1man/pr-2.2-annotate (PR #9067)
This PR was squashed before being merged into the 2.2 branch (closes #9067).

Discussion
----------

Fix some annotates

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

send those fixes in branch 2.2
This pr includes #9065

Commits
-------

de39bd5 Fix some annotates
2013-09-19 11:36:06 +02:00
bronze1man
de39bd5433 Fix some annotates 2013-09-19 11:36:05 +02:00
Fabien Potencier
1843b82015 merged branch fabpot/event-dispatcher-debug (PR #9068)
This PR was merged into the 2.2 branch.

Discussion
----------

[FrameworkBundle] made sure that the debug event dispatcher is used everywhere

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

Commits
-------

f65a526 [FrameworkBundle] made sure that the debug event dispatcher is used everywhere
2013-09-19 11:03:30 +02:00
Nicolas Bastien
6981669e08 Remove unused use statement 2013-09-19 10:36:42 +02:00
Tobias Schultze
a33cc51648 [Security] remove unused logger 2013-09-18 18:54:35 +02:00
Fabien Potencier
f65a526e7d [FrameworkBundle] made sure that the debug event dispatcher is used everywhere 2013-09-18 17:45:40 +02:00
Tobias Schultze
62de9c1f19 [Security] fix typo 2013-09-18 17:42:47 +02:00
Tobias Schultze
0b6519fc0e [HttpKernel] remove unneeded strtoupper 2013-09-18 17:29:46 +02:00
Fabien Potencier
9783decb13 merged branch alexpods/patch-4 (PR #9066)
This PR was merged into the master branch.

Discussion
----------

[Security] Delete unnecessary "use" statements

 Delete unnecessary "use" statements in SimpleAuthenticationProvider

Commits
-------

82de3ba [Security] [SimpleAuthenticationProvider] Delete unnecessary "use" statements
2013-09-18 16:35:01 +02:00
Fabien Potencier
b44bc0e2c2 merged branch fabpot/security-split (PR #9064)
This PR was merged into the master branch.

Discussion
----------

[Security] Split the component into 3 sub-components Core, ACL, HTTP

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

The rationale behind this PR is to be able to use any of the sub components without requiring all the dependencies of the other sub components. Specifically, I'd like to use the core utils for an improved CSRF protection mechanism (#6554).

Commits
-------

14e9f46 [Security] removed unneeded hard dependencies in Core
5dbec8a [Security] fixed README files
62bda79 [Security] copied the Resources/ directory to Core/Resources/
7826781 [Security] Split the component into 3 sub-components Core, ACL, HTTP
2013-09-18 15:11:39 +02:00
Fabien Potencier
14e9f46085 [Security] removed unneeded hard dependencies in Core 2013-09-18 14:24:03 +02:00
Fabien Potencier
4705e6f7cc fixed previous merge (refs #8635) 2013-09-18 14:22:34 +02:00
Fabien Potencier
7005cf5e71 merged branch WouterJ/dump_xml (PR #8635)
This PR was squashed before being merged into the master branch (closes #8635).

Discussion
----------

[Config] Create XML Reference Dumper

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

Only Yaml was supported. This PR adds support for XML. This makes it easier to test XML schema's (see symfony-cmf/MenuBundle#114 ), helps us at the docs with our configuration reference and helps others using XML with symfony.

## Todo

 - [x] Prototyped arrays don't work properly
 - [x] Add comments (see Yaml dumper)
 - [x] Add namespaces support

## Side effects

I've moved the reference dumpers to their own namespace and renamed the original reference dumper to `YamlReferenceDumper`. The old one is kept for BC, but deprecated.

/cc @dantleech

Commits
-------

05e9ca7 [Config] Create XML Reference Dumper
2013-09-18 13:36:39 +02:00
WouterJ
05e9ca7509 [Config] Create XML Reference Dumper 2013-09-18 13:36:38 +02:00
Fabien Potencier
5dbec8a060 [Security] fixed README files 2013-09-18 13:11:09 +02:00
Fabien Potencier
62bda7906b [Security] copied the Resources/ directory to Core/Resources/ 2013-09-18 13:11:09 +02:00
Aleksey Podskrebyshev
82de3ba420 [Security] [SimpleAuthenticationProvider] Delete unnecessary "use" statements 2013-09-18 12:27:27 +04:00
Fabien Potencier
c2144df888 updated the composer install command to reflect changes in Composer 2013-09-18 09:27:26 +02:00
Bernhard Schussek
7826781235 [Security] Split the component into 3 sub-components Core, ACL, HTTP 2013-09-18 09:16:41 +02:00
Fabien Potencier
c3728d21cd Merge branch '2.3'
* 2.3:
  fixes RequestDataCollector bug, visible when used on Drupal8
  [Console] fixed exception rendering when nested styles
  [Console] added some more information about OutputFormatter::replaceStyle()
  [Console] fixed the formatter for single-char tags
  [Console] Escape exception message during the rendering of an exception
  [DomCrawler] fixed HTML5 form attribute handling
  Making tests pass on mac os x without this change tests would fail under mac os x at least in 10.8.2
  [BrowserKit] Fixed the handling of parameters when redirecting
  [Process] Properly close pipes after a Process::stop call
  fixed bytes conversion when used on 32-bits systems
  Typo fix
  HttpFoundation RequestTest - Fixed indentation and removed comments
  HttpFoundation Request test for #8619
  LICENSE files moved to meta folders
  added missing method in the UPGRADE file for 2.2 (closes #8941)
  [Form] Fixed: "required" attribute is not added to <select> tag if no empty value
  [Translation] Removed an unneeded return annotation.
  [DomCrawler] Added missing docblocks and removed unneeded return annotation.

Conflicts:
	src/Symfony/Component/Process/Tests/AbstractProcessTest.php
2013-09-18 09:05:46 +02:00
Fabien Potencier
d1825030b4 Merge branch '2.2' into 2.3
* 2.2:
  fixes RequestDataCollector bug, visible when used on Drupal8
  [Console] fixed exception rendering when nested styles
  [Console] added some more information about OutputFormatter::replaceStyle()
  [Console] fixed the formatter for single-char tags
  [Console] Escape exception message during the rendering of an exception
  [BrowserKit] Fixed the handling of parameters when redirecting
  Typo fix
  HttpFoundation RequestTest - Fixed indentation and removed comments
  HttpFoundation Request test for #8619
  LICENSE files moved to meta folders
  added missing method in the UPGRADE file for 2.2 (closes #8941)
  [Translation] Removed an unneeded return annotation.
  [DomCrawler] Added missing docblocks and removed unneeded return annotation.

Conflicts:
	src/Symfony/Component/BrowserKit/Client.php
	src/Symfony/Component/DomCrawler/Crawler.php
2013-09-18 09:03:56 +02:00
Fabien Potencier
77d79066d3 merged branch Tobion/request-stack-bc (PR #9059)
This PR was merged into the master branch.

Discussion
----------

[HttpKernel] made request stack feature BC

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

Commits
-------

08a42e7 [HttpKernel] made request stack feature BC
2013-09-18 09:00:03 +02:00
Fabrice Bernhard
0e80d88015 fixes RequestDataCollector bug, visible when used on Drupal8
In Drupal8 ```$request->attributes->all()``` returns an array with a 0 key whose value is the ```Drupal\user\Entity\User```

```php
array(
 0 => Drupal\user\Entity\User,
 ...
)
```

```('_route' == $key && is_object($value))``` is therefore true which provokes an exception:

```php
FatalErrorException: Error: Call to undefined method Drupal\user\Entity\User::getPath() in [...]/RequestDataCollector.php line 54
```

This patch corrects this with a simple replacement of == by ===
2013-09-17 21:54:49 +02:00
Tobias Schultze
08a42e7e79 [HttpKernel] made request stack feature BC 2013-09-17 18:23:22 +02:00
Tobias Schultze
f6a16064ef [TwigBridge] remove empty testcase class 2013-09-17 16:25:42 +02:00
Fabien Potencier
6f5de6315b merged branch fabpot/console-render-exception (PR #9055)
This PR was merged into the 2.2 branch.

Discussion
----------

[Console] Fixed exception rendering

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

When an exception message contains styles, the output is not the expected one. This PR addresses this issue.

Commits
-------

c8d0342 [Console] fixed exception rendering when nested styles
1f88a28 [Console] added some more information about OutputFormatter::replaceStyle()
a47d663 [Console] fixed the formatter for single-char tags
c6c35b3 [Console] Escape exception message during the rendering of an exception
2013-09-17 15:57:05 +02:00
Fabien Potencier
c8d0342887 [Console] fixed exception rendering when nested styles 2013-09-17 14:55:19 +02:00
Fabien Potencier
1f88a28d54 [Console] added some more information about OutputFormatter::replaceStyle() 2013-09-17 14:55:19 +02:00
Fabien Potencier
a47d663f25 [Console] fixed the formatter for single-char tags 2013-09-17 14:55:19 +02:00
Grégoire Pineau
c6c35b3db9 [Console] Escape exception message during the rendering of an exception 2013-09-17 14:55:19 +02:00
Fabien Potencier
0ebb8bc8a2 merged branch kepten/ticket_6239 (PR #8197)
This PR was squashed before being merged into the 2.3 branch (closes #8197).

Discussion
----------

[DomCrawler] fixed HTML5 form attribute handling

Fixed HTML5 form attribute handling and improved a test case to test more thoroughly

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

Commits
-------

04e730e [DomCrawler] fixed HTML5 form attribute handling
2013-09-17 11:47:59 +02:00
Robert Kiss
04e730ec2e [DomCrawler] fixed HTML5 form attribute handling 2013-09-17 11:47:58 +02:00
Christian Gärtner
f568e9919b Making tests pass on mac os x without this change tests would fail under mac os x at least in 10.8.2 2013-09-16 21:56:34 +02:00
Christophe Coevoet
0e437c5978 [BrowserKit] Fixed the handling of parameters when redirecting
POST parameters should not be transmitted as GET parameters after the
redirection when changing the method.
2013-09-16 19:28:51 +02:00
Fabien Potencier
8efd5cadc8 merged branch romainneutron/timeout-restart (PR #9050)
This PR was merged into the 2.3 branch.

Discussion
----------

[Process][2.3] Properly close pipes after a Process::stop call

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

When calling `Process::stop`, if the process does not stop before the end of the method, pipes are not close, `proc_close` is not called.
I added a test that randomly fails without the patch :

```
phpunit --filter=testStartAfterATimeout --repeat 100 Tests/SimpleProcessTest.php
PHPUnit 3.8-g55a6dd0 by Sebastian Bergmann.

Configuration read from /Users/romain/Documents/workspace/symfony/src/Symfony/Component/Process/phpunit.xml.dist

....E.E......E.....E..........EE..............EEE..EE.......E..  63 / 100 ( 63%)
E.E................E....EE.......E...

Time: 29.55 seconds, Memory: 6.75Mb

There were 18 errors:

1) Symfony\Component\Process\Tests\SimpleProcessTest::testStartAfterATimeout
fclose(): 89 is not a valid stream resource

/Users/romain/Documents/workspace/symfony/src/Symfony/Component/Process/ProcessPipes.php:95
/Users/romain/Documents/workspace/symfony/src/Symfony/Component/Process/ProcessPipes.php:80
/Users/romain/Documents/workspace/symfony/src/Symfony/Component/Process/ProcessPipes.php:62
/Users/romain/Documents/workspace/symfony/src/Symfony/Component/Process/Process.php:938
/Users/romain/Documents/workspace/symfony/src/Symfony/Component/Process/Process.php:229
/Users/romain/Documents/workspace/symfony/src/Symfony/Component/Process/Tests/AbstractProcessTest.php:490
```

And of course, I solved the issue, tests are now OK.

Commits
-------

d84df4c [Process] Properly close pipes after a Process::stop call
2013-09-16 13:54:08 +02:00
Romain Neutron
d84df4c2c5 [Process] Properly close pipes after a Process::stop call 2013-09-16 13:47:05 +02:00
Fabien Potencier
bb97f64cd1 merged branch fabpot/bytes-conversion-epic-fail (PR #9048)
This PR was merged into the 2.3 branch.

Discussion
----------

fixed bytes conversion when used on 32-bits systems

| Q             | A
| ------------- | ---
| Bug fix?      | yes (on 32-bits systems)
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #8977
| License       | MIT
| Doc PR        | n/a

This PR reverts #7413 and #742, which does not work well when a number is big (3Go for instance) and the machine is 32bits.

Commits
-------

b3ae29d fixed bytes conversion when used on 32-bits systems
2013-09-16 13:23:31 +02:00
Fabien Potencier
b3ae29d4f8 fixed bytes conversion when used on 32-bits systems 2013-09-16 12:23:00 +02:00
Besnik Br
6cf5e0812e convert object to string if possible instead of using var_export directly 2013-09-16 10:05:18 +02:00
Cas
568113f64a Typo fix
Small typo/grammar fix in class' comment
2013-09-16 10:02:49 +02:00
Lukas Kahwe Smith
639b0fa967 Allow null values as tag attributes 2013-09-16 10:01:04 +02:00
fturmel
32fc4d8758 HttpFoundation RequestTest - Fixed indentation and removed comments 2013-09-16 10:00:14 +02:00
fturmel
48582402c0 HttpFoundation Request test for #8619 2013-09-16 10:00:13 +02:00
Peter Kokot
b1242ef143 LICENSE files moved to meta folders 2013-09-16 09:53:14 +02:00
Fabien Potencier
42f4b6db7b [EventDispatcher] fixed some phpdoc 2013-09-13 17:15:57 +02:00
Fabien Potencier
6920a37a00 merged branch drak/edaware2 (PR #7852)
This PR was squashed before being merged into the master branch (closes #7852).

Discussion
----------

[2.3][EventDispatcher] Make events lighter

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

I've taken the previous discussions and taking into consideration @fabpot does not want to break BC. This PR now provides the `EventDispatcher` as an argument to listeners. I've made a second separate commit which also passes the event name.

This PR is alternative to #7582

Commits
-------

e2bff32 [2.3][EventDispatcher] Make events lighter
2013-09-13 17:13:26 +02:00
Drak
e2bff32de7 [2.3][EventDispatcher] Make events lighter 2013-09-13 17:13:25 +02:00
Bernhard Schussek
a273e79898 [Form] Fixed: "required" attribute is not added to <select> tag if no empty value 2013-09-13 16:56:26 +02:00
Fabien Potencier
454fbff3bd merged branch jakzal/domcrawler-missing-docblocks (PR #9025)
This PR was merged into the 2.2 branch.

Discussion
----------

[DomCrawler] Added missing docblocks and removed redundant type in a return annotation

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

Commits
-------

d414213 [DomCrawler] Added missing docblocks and removed unneeded return annotation.
2013-09-13 15:28:25 +02:00
Fabien Potencier
e6c1eefbe3 merged branch jakzal/docblock-cleanup (PR #9028)
This PR was merged into the 2.2 branch.

Discussion
----------

[Translation] Removed a @return annotation

This is the only `@return null` left...

Commits
-------

d6f4def [Translation] Removed an unneeded return annotation.
2013-09-13 14:22:12 +02:00
Fabien Potencier
fc437cf6fb Merge branch '2.3'
* 2.3:
  [FrameworkBundle][Security] Replaced void return type with null for consistency
  fixed CS
  NativeSessionStorage regenerate
  removed unneeded comment
  Use setTimeZone if this method exists.
  Fix FileResource test
  fixed wrong usage of unset()
  [HttpFoundation] Fixed the way path to directory is trimmed.
  [Console] Fixed argument parsing when a single dash is passed.
2013-09-13 14:20:47 +02:00
Fabien Potencier
33e9571886 Merge branch '2.2' into 2.3
* 2.2:
  [FrameworkBundle][Security] Replaced void return type with null for consistency
  fixed CS
  NativeSessionStorage regenerate
  removed unneeded comment
  Use setTimeZone if this method exists.
  Fix FileResource test
  fixed wrong usage of unset()
  [HttpFoundation] Fixed the way path to directory is trimmed.
  [Console] Fixed argument parsing when a single dash is passed.

Conflicts:
	src/Symfony/Component/HttpKernel/Debug/ErrorHandler.php
2013-09-13 14:20:37 +02:00
Jakub Zalas
d6f4def1a3 [Translation] Removed an unneeded return annotation. 2013-09-13 13:15:01 +01:00
Jakub Zalas
d414213740 [DomCrawler] Added missing docblocks and removed unneeded return annotation. 2013-09-13 13:11:47 +01:00
Fabien Potencier
96165bc404 merged branch jakzal/dockblock-void-null-fix (PR #9026)
This PR was squashed before being merged into the 2.2 branch (closes #9026).

Discussion
----------

[FrameworkBundle][Security] Replaced void return type with null for consistency

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

We're using `null` everywhere else.

Commits
-------

e4100ac [FrameworkBundle][Security] Replaced void return type with null for consistency
2013-09-13 14:06:45 +02:00
Jakub Zalas
e4100ac2fa [FrameworkBundle][Security] Replaced void return type with null for consistency 2013-09-13 14:06:44 +02:00
Fabien Potencier
b96c40e570 fixed CS 2013-09-13 12:12:19 +02:00
lancergr
958ec09285 NativeSessionStorage regenerate 2013-09-13 12:11:17 +02:00
Fabien Potencier
68c9c86652 removed unneeded comment 2013-09-13 10:55:12 +02:00
dropfen
0d6af5cd90 Use setTimeZone if this method exists.
The php version is not a critical factor to choose the method, but we have to use setTimeZone, if it exists.
2013-09-13 10:52:42 +02:00
Fabien Potencier
7d7b583851 merged branch jakzal/console-single-dash-argument (PR #9014)
This PR was merged into the 2.2 branch.

Discussion
----------

[Console] Fixed argument parsing when a single dash is passed.

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

Commits
-------

42019f6 [Console] Fixed argument parsing when a single dash is passed.
2013-09-13 07:13:53 +02:00
Adrien Brault
124cb17625 Fix FileResource test
I had the following test failing on OS X before:

There was 1 failure:

1) Symfony\Component\Config\Tests\Resource\FileResourceTest::testSerializeUnserialize
Failed asserting that two strings are identical.
2013-09-13 07:11:26 +02:00
Fabien Potencier
56250d3bdc merged branch jakzal/file-bugfix (PR #9019)
This PR was merged into the 2.2 branch.

Discussion
----------

[HttpFoundation] Fixed the way path to directory is trimmed

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

Commits
-------

773e716 [HttpFoundation] Fixed the way path to directory is trimmed.
2013-09-13 07:10:30 +02:00
Fabien Potencier
4135f6803b fixed wrong usage of unset() 2013-09-13 07:05:55 +02:00
Jakub Zalas
773e7161bf [HttpFoundation] Fixed the way path to directory is trimmed. 2013-09-12 23:34:38 +01:00
Adrien Brault
8718d19438 TwigBridge: fix tests when run standalone 2013-09-12 15:07:35 -07:00
Jakub Zalas
42019f6774 [Console] Fixed argument parsing when a single dash is passed. 2013-09-12 21:51:59 +01:00
Fabien Potencier
860151ee8e Merge branch '2.3'
* 2.3:
  [WebProfilerBundle] fixed toolbar for IE8 (refs #8380)
  [HttpFoundation] removed double-slashes (closes #8388)
  [HttpFoundation] tried to keep the original Request URI as much as possible to avoid different behavior between ::createFromGlobals() and ::create()
  [TwigBridge] fixed form rendering when used in a template with dynamic inheritance
2013-09-12 22:07:33 +02:00
Fabien Potencier
8899e31a88 Merge branch '2.2' into 2.3
* 2.2:
  [HttpFoundation] removed double-slashes (closes #8388)
  [HttpFoundation] tried to keep the original Request URI as much as possible to avoid different behavior between ::createFromGlobals() and ::create()
  [TwigBridge] fixed form rendering when used in a template with dynamic inheritance
2013-09-12 22:07:23 +02:00
Fabien Potencier
097b376309 [WebProfilerBundle] fixed toolbar for IE8 (refs #8380) 2013-09-12 22:07:01 +02:00
Kevin Bond
52d2bdd3f4 Added comment about http_method_override and HttpCache 2013-09-12 15:54:09 -04:00
Fabien Potencier
b591419631 [HttpFoundation] removed double-slashes (closes #8388) 2013-09-12 20:46:44 +02:00
Fabien Potencier
7b93e20e37 merged branch fabpot/request-uri-unification (PR #9012)
This PR was merged into the 2.2 branch.

Discussion
----------

[HttpFoundation] tried to keep the original Request URI as much as possible to avoid different behavior between ::createFromGlobals() and ::create()

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

Commits
-------

4f5b8f0 [HttpFoundation] tried to keep the original Request URI as much as possible to avoid different behavior between ::createFromGlobals() and ::create()
2013-09-12 20:21:33 +02:00
Fabien Potencier
4f5b8f04f1 [HttpFoundation] tried to keep the original Request URI as much as possible to avoid different behavior between ::createFromGlobals() and ::create() 2013-09-12 20:10:57 +02:00
Fabien Potencier
8e5a9b056c merged branch fabpot/twig-form-renderer-fix (PR #9010)
This PR was merged into the 2.2 branch.

Discussion
----------

[TwigBridge] fixed form rendering when used in a template with dynamic inheritance

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

Commits
-------

4c1dbc7 [TwigBridge] fixed form rendering when used in a template with dynamic inheritance
2013-09-12 18:11:03 +02:00
Fabien Potencier
4c1dbc75d5 [TwigBridge] fixed form rendering when used in a template with dynamic inheritance 2013-09-12 17:53:10 +02:00
Fabien Potencier
5b71e61d15 Merge branch '2.3'
* 2.3:
  [HttpKernel] added a check for private event listeners/subscribers
  [FrameworkBundle] fixed registration of the register listener pass
  [Form] Fixed regression causing invalid "WHERE id IN ()" statements
  [DependencyInjection] fixed a non-detected circular reference in PhpDumper (closes #8425)
  [Form] Fixed regression in BooleanToStringTransformer from ed83752
  [FrameworkBundle] removed obsolete code
  [Process] Close unix pipes before calling `proc_close` to avoid a deadlock
  [Process] Fix process merge in 2.3
  [Intl] made RegionBundle and LanguageBundle merge fallback data when using a country-specific locale
2013-09-12 14:59:51 +02:00
Fabien Potencier
0f78175dcd Merge branch '2.2' into 2.3
* 2.2:
  [HttpKernel] added a check for private event listeners/subscribers
  [FrameworkBundle] fixed registration of the register listener pass
  [Form] Fixed regression causing invalid "WHERE id IN ()" statements
  [DependencyInjection] fixed a non-detected circular reference in PhpDumper (closes #8425)
  [Form] Fixed regression in BooleanToStringTransformer from ed83752
  [FrameworkBundle] removed obsolete code
  [Process] Close unix pipes before calling `proc_close` to avoid a deadlock

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
	src/Symfony/Component/HttpKernel/DependencyInjection/RegisterListenersPass.php
	src/Symfony/Component/Process/Process.php
2013-09-12 14:57:47 +02:00
Fabien Potencier
6c10b6966d merged branch fabpot/event-services-check (PR #9006)
This PR was merged into the 2.2 branch.

Discussion
----------

Fixed registration of private event listeners/subscribers

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

When registering a private event subscriber/listener, the listener was just ignored.

This PR does two things to fix the problem:

 * the event listener pass is done earlier to get access to the private services
 * when a private service is identified, a proper exception is thrown

Commits
-------

8444339 [HttpKernel] added a check for private event listeners/subscribers
427ee19 [FrameworkBundle] fixed registration of the register listener pass
2013-09-12 14:49:21 +02:00
Fabien Potencier
84443392df [HttpKernel] added a check for private event listeners/subscribers 2013-09-12 14:41:57 +02:00
Fabien Potencier
427ee19195 [FrameworkBundle] fixed registration of the register listener pass 2013-09-12 14:30:12 +02:00
Fabien Potencier
035a6e40c9 merged branch fabpot/sc-tags-check (PR #9004)
This PR was merged into the master branch.

Discussion
----------

[DependencyInjection] added tags validation when compiling a container

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

When using YAML or XML, the tags validadity are checked during loading, but when using PHP, that's not possible.
So, the added step in the compilation phase does that nicely.

Commits
-------

5cad478 [DependencyInjection] added tags validation when compiling a container
2013-09-12 14:27:48 +02:00
Fabien Potencier
8aec247dc3 merged branch fabpot/circular-refs-php-dumper (PR #8999)
This PR was merged into the 2.2 branch.

Discussion
----------

[DependencyInjection] fixed a non-detected circular reference in PhpDumper (closes #8425)

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

Commits
-------

ce7de37 [DependencyInjection] fixed a non-detected circular reference in PhpDumper (closes #8425)
2013-09-12 14:24:44 +02:00
Fabien Potencier
e0ef289363 fixed typoss 2013-09-12 12:56:56 +02:00
Fabien Potencier
5cad478c64 [DependencyInjection] added tags validation when compiling a container 2013-09-12 12:52:36 +02:00
Bernhard Schussek
867b81af5a [Form] Fixed regression causing invalid "WHERE id IN ()" statements 2013-09-12 10:17:07 +02:00
Fabien Potencier
ce7de37f16 [DependencyInjection] fixed a non-detected circular reference in PhpDumper (closes #8425)
This circular reference cannot be detected by the compiler pass as we
don't check for method arguments there.

The Container itself already detects such circular references at runtime.

So this fix is about circular references that are not detected at
compile time, and are not even detected at runtime because the code that
would cause the detection is never run (generated after a return
statement.)
2013-09-12 09:51:05 +02:00
Bernhard Schussek
2747bdca76 [Form] Fixed regression in BooleanToStringTransformer from ed83752 2013-09-12 09:25:54 +02:00
Fabien Potencier
610301d5e0 [FrameworkBundle] removed obsolete code 2013-09-12 06:41:55 +02:00
Fabien Potencier
3e370f66a5 merged branch WouterJ/stopwatch_php (PR #8968)
This PR was merged into the master branch.

Discussion
----------

Added Stopwatch helper for PHP templates

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

Commits
-------

3ee2989 Added Stopwatch Helper
2013-09-12 06:30:13 +02:00
Fabien Potencier
7be1870fea merged branch fabpot/DebugClassLoader (PR #8993)
This PR was merged into the master branch.

Discussion
----------

[Debug] removed usage of a deprecated class (closes #8992)

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

Commits
-------

c673c0e [Debug] removed usage of a deprecated class (closes #8992)
2013-09-12 06:25:31 +02:00
Fabien Potencier
c6a963ddf3 merged branch K-Phoen/propel-type-guesser (PR #8883)
This PR was merged into the master branch.

Discussion
----------

[PropelBridge] PropelTypeGuesser can now recognize columns by their phpName

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

Until now, the `PropelTypeGuesser` could only find columns by their name.
Example: `created_at` was recognized but `createdAt` wasn't.

This PR adds the ability to match column's phpNames (in a case-insensitive way).

Commits
-------

764e915 [PropelBridge] PropelTypeGuesser can now recognize columns by their phpName
2013-09-12 06:15:56 +02:00
WouterJ
3ee2989287 Added Stopwatch Helper 2013-09-11 22:40:31 +02:00
Romain Neutron
37102dcc7c [Process] Close unix pipes before calling proc_close to avoid a deadlock
see http://php.net/manual/en/function.proc-close.php
2013-09-11 21:13:38 +02:00
Fabien Potencier
c673c0e0c8 [Debug] removed usage of a deprecated class (closes #8992) 2013-09-11 17:10:20 +02:00
Romain Neutron
19fef77d0d [Process] Fix process merge in 2.3
Handles should be read and closed after `proc_close` is called.
2013-09-11 14:20:08 +02:00
Fabien Potencier
7b2785bc61 merged branch shieldo/country_fallback_locale (PR #8564)
This PR was merged into the 2.3 branch.

Discussion
----------

[Intl] made RegionBundle merge fallback data if using a country-specific locale

See #8442 and symfony/Icu#2.

Essentially, country data fetches from the Intl component do not currently work when using a locale with a country specifier, e.g. `fr_FR`.  This change forces a merge on the data against the root language locale, thus making country data available for such locales.

Commits
-------

52d8676 [Intl] made RegionBundle and LanguageBundle merge fallback data when using a country-specific locale
2013-09-11 08:28:08 +02:00
Fabien Potencier
e76cfe27ea Merge branch '2.3'
* 2.3:
  [HttpFoundation] fixed some unit tests
2013-09-10 23:21:06 +02:00
Fabien Potencier
5ca19ee433 Merge branch '2.2' into 2.3
* 2.2:
  [HttpFoundation] fixed some unit tests
2013-09-10 23:20:57 +02:00
Fabien Potencier
6ec2cbaa6c [HttpFoundation] fixed some unit tests 2013-09-10 23:20:45 +02:00
Fabien Potencier
ddee0db00f Merge branch '2.3'
* 2.3:
  [HttpFoundation] fixed format duplication in Request
  [Form] Fixed FormValidator::findClickedButton() not to be called exponentially
2013-09-10 22:45:14 +02:00
Fabien Potencier
7f0caff162 Merge branch '2.2' into 2.3
* 2.2:
  [HttpFoundation] fixed format duplication in Request
2013-09-10 22:45:04 +02:00
Fabien Potencier
ff64313f12 merged branch bschussek/issue8317 (PR #8978)
This PR was merged into the 2.3 branch.

Discussion
----------

[Form] Fixed FormValidator::findClickedButton() not to be called exponentially

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

Commits
-------

b65a515 [Form] Fixed FormValidator::findClickedButton() not to be called exponentially
2013-09-10 22:42:10 +02:00
Fabien Potencier
e7386a85d8 merged branch fabpot/request-hotfix (PR #8985)
This PR was merged into the 2.2 branch.

Discussion
----------

[HttpFoundation] fixed format duplication in Request

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

Commits
-------

8c2a733 [HttpFoundation] fixed format duplication in Request
2013-09-10 22:39:59 +02:00
Fabien Potencier
8c2a733528 [HttpFoundation] fixed format duplication in Request 2013-09-10 22:37:04 +02:00
Fabien Potencier
b37409dda1 merged branch bschussek/issue5113 (PR #7940)
This PR was merged into the master branch.

Discussion
----------

[Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted

#7939 must be merged before this PR is merged.

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

TODO:

- [x] test EntityChoiceList for stricter rules
- [ ] test ModelChoiceList for stricter rules
- [x] remove/deprecate the ChoiceList::getIndicesFor*() methods

Commits
-------

9efdb8e [Form] Deprecated ChoiceList::getIndicesFor*() methods
67ba131 [DoctrineBridge] Improved test coverage of EntityChoiceList
31e5ce5 [Form] Improved test coverage of ChoiceList classes
6283b0e [Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted
79a214f [Form] Fixed ChoiceList::get*By*() methods to preserve order and array keys
62fbed6 [Form] Removed usage of the ChoiceList::getIndicesFor*() methods where they don't offer any performance benefit
2013-09-10 22:31:05 +02:00
Fabien Potencier
95483e518d Merge branch '2.3'
* 2.3:
  Fixed docblock in UserInterface::getSalt()
  [Process] Fix #8970 : read output once the process is finished, enable pipe tests on Windows
  [DoctrineBridge] Improved test coverage of EntityChoiceList
  [DoctrineBridge] Improved test coverage of EntityChoiceList
  [Form] Improved test coverage of ChoiceList classes
  [Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted
  [Form] Fixed ChoiceList::get*By*() methods to preserve order and array keys
  [Form] Removed usage of the ChoiceList::getIndicesFor*() methods where they don't offer any performance benefit
  [Form] Improved test coverage of ChoiceList classes
  [Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted
  [Form] Fixed ChoiceList::get*By*() methods to preserve order and array keys
  [Form] Removed usage of the ChoiceList::getIndicesFor*() methods where they don't offer any performance benefit
  Removed duplicate annotation
  [HttpKernel] made code more reliable
  [HttpFoundation] fixed regression in the way the request format is handled for duplicated requests (closes #8917)
  [HttpKernel] fixer HInclude src (closes #8951)
  Fixed escaping of service identifiers in configuration

Conflicts:
	src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/GenericEntityChoiceListTest.php
	src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypeTest.php
	src/Symfony/Component/HttpKernel/Tests/Fragment/HIncludeFragmentRendererTest.php
2013-09-10 22:30:47 +02:00
Fabien Potencier
51413e1cbe merged branch bschussek/issue5113-2.3 (PR #8981)
This PR was merged into the 2.3 branch.

Discussion
----------

[2.3][Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted

Same as #7940, rebased onto 2.3.

Commits
-------

7879f07 [DoctrineBridge] Improved test coverage of EntityChoiceList
58e7c10 [Form] Improved test coverage of ChoiceList classes
9542d72 [Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted
72b8807 [Form] Fixed ChoiceList::get*By*() methods to preserve order and array keys
e1bf07f [Form] Removed usage of the ChoiceList::getIndicesFor*() methods where they don't offer any performance benefit
2013-09-10 22:26:31 +02:00
Fabien Potencier
eb9f76d5ba Merge branch '2.2' into 2.3
* 2.2:
  Fixed docblock in UserInterface::getSalt()
  [Process] Fix #8970 : read output once the process is finished, enable pipe tests on Windows
  [DoctrineBridge] Improved test coverage of EntityChoiceList
  [Form] Improved test coverage of ChoiceList classes
  [Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted
  [Form] Fixed ChoiceList::get*By*() methods to preserve order and array keys
  [Form] Removed usage of the ChoiceList::getIndicesFor*() methods where they don't offer any performance benefit
  [HttpKernel] made code more reliable

Conflicts:
	src/Symfony/Bridge/Doctrine/Tests/Form/ChoiceList/EntityChoiceListTest.php
	src/Symfony/Component/Form/Extension/Core/ChoiceList/ChoiceListInterface.php
	src/Symfony/Component/Form/Extension/Core/EventListener/FixRadioInputListener.php
	src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php
	src/Symfony/Component/Form/Form.php
	src/Symfony/Component/Form/Tests/Extension/Core/Type/ChoiceTypeTest.php
	src/Symfony/Component/Process/Process.php
	src/Symfony/Component/Process/Tests/AbstractProcessTest.php
2013-09-10 22:24:28 +02:00
Fabien Potencier
2a304e09bf merged branch bschussek/issue5113-2.2 (PR #8980)
This PR was merged into the 2.2 branch.

Discussion
----------

[2.2][Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted

Same as #7940, rebased onto 2.2.

Commits
-------

4d2dc55 [DoctrineBridge] Improved test coverage of EntityChoiceList
9d3628c [Form] Improved test coverage of ChoiceList classes
ed83752 [Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted
30aa1de [Form] Fixed ChoiceList::get*By*() methods to preserve order and array keys
53f292a [Form] Removed usage of the ChoiceList::getIndicesFor*() methods where they don't offer any performance benefit
2013-09-10 19:44:51 +02:00
Fabien Potencier
ea8359a870 merged branch bschussek/constraint-annotation-improvement (PR #8979)
This PR was merged into the master branch.

Discussion
----------

[Validator] The default option name can now be omitted when defining constraints as annotations

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

When a constraint has a default option, but other options should be set as well, the name of the default option had to be set explicitly when defining the constraint as annotation:

```php
/** @GreaterThan(value=2, message="Should be greater than 2") */
private $value;
```

After this PR, it is possible to omit the name of the default option:

```php
/** @GreaterThan(2, message="Should be greater than 2") */
private $value;
```

Commits
-------

5499a29 [Validator] The default option name can now be omitted when defining constraints as annotations
2013-09-10 19:41:59 +02:00
Fabien Potencier
fbbbd644be merged branch romainneutron/process-8970 (PR #8983)
This PR was merged into the 2.2 branch.

Discussion
----------

[Process][2.2] Fix #8970 : read output once the process is finished, enable pipe tests on Windows

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

This fix the read of file handles after `proc_close` as described in the issue. I enable some stdin=>stdout pipes tests on windows with some dedicated buffer size. Solving the issue, I finally reproduced this [PHP bug](https://bugs.php.net/bug.php?id=65650) that I first described in my PR note in #8924

Most of Windows usage should be okay, but in case of a program throws lots of output and fills the buffer, some data might be lost/corrupted. Should it be documented ? This is a Windows only known issue.

Commits
-------

1e75cf9 [Process] Fix #8970 : read output once the process is finished, enable pipe tests on Windows
2013-09-10 19:38:55 +02:00
Jannik Zschiesche
1c623c6d46 Fixed docblock in UserInterface::getSalt()
This method can return null, too.
See the line above:

> "This can return null if the password was not encoded using a salt."
2013-09-10 19:35:57 +02:00
Romain Neutron
1e75cf9da1 [Process] Fix #8970 : read output once the process is finished, enable pipe tests on Windows 2013-09-10 19:14:06 +02:00
Bernhard Schussek
9efdb8e5d0 [Form] Deprecated ChoiceList::getIndicesFor*() methods 2013-09-10 18:24:36 +02:00