Commit Graph

4594 Commits

Author SHA1 Message Date
Fabien Potencier
8c8cf62038 fixed Client when using the terminable event 2013-09-29 21:31:28 +02:00
Thomas Schulz
5e2ac93f98 Fix problem with Windows file links (backslash in JavaScript string) 2013-09-27 23:42:26 +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
Bernhard Schussek
bf85e8365a [FrameworkBundle][SecurityBundle] Added service configuration for the new Security CSRF sub-component 2013-09-27 10:16:29 +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
Timothée Barray
b668e24fa7 form_debug.xml should be loaded only if form config is enabled 2013-09-26 15:56:56 +02:00
Bernhard Schussek
89509d9847 [Form] Improved form debugger 2013-09-25 17:47:13 +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
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
Tobias Schultze
8bad61daf5 [HttpKernel] fix usage of deprecated FlattenException 2013-09-24 12:40:06 +02:00
Fabien Potencier
5ebaad33e6 added a note about why the debug dispatcher cannot be used everywhere 2013-09-23 18:04:04 +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
c2f935593d Revert "merged branch fabpot/event-dispatcher-debug (PR #9068)"
This reverts commit 1843b82015, reversing
changes made to 510960ed31.
2013-09-23 17:54:49 +02: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
8aa685bbe9 merged branch fabpot/expression-language-tweaks (PR #9091)
This PR was merged into the master branch.

Discussion
----------

[ExpressionLanguage] made minor tweaks

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

 * made ExpressionLanguage::parse return an ParsedExpression instance
 * optimized the size of the serialization of expressions

Commits
-------

e869136 [ExpressionLanguage] renamed addFunction() to register()
5076ec7 [ExpressionLanguage] optimized serialization of nodes and expressions
60b9f85 [ExpressionLanguage] made ExpressionLanguage::parse return an ParsedExpression instance
2013-09-21 20:31:30 +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
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
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
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
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
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
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
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
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
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
62bda7906b [Security] copied the Resources/ directory to Core/Resources/ 2013-09-18 13:11:09 +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
Peter Kokot
b1242ef143 LICENSE files moved to meta folders 2013-09-16 09:53:14 +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
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
e4100ac2fa [FrameworkBundle][Security] Replaced void return type with null for consistency 2013-09-13 14:06:44 +02: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
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
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
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
WouterJ
3ee2989287 Added Stopwatch Helper 2013-09-11 22:40:31 +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
b0b109b422 merged branch peterrehm/router-command (PR #8657)
This PR was squashed before being merged into the master branch (closes #8657).

Discussion
----------

Added option to show controllers optionally in the router:debug command

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

Added option to show controllers in the router debug command as a convenience function.

    app/console router:debug --show-controllers

Commits
-------

6fd32f3 Added option to show controllers optionally in the router:debug command
2013-09-09 14:59:52 +02:00
Peter Rehm
6fd32f3da4 Added option to show controllers optionally in the router:debug command 2013-09-09 14:59:51 +02:00
Fabien Potencier
a010ed4721 Merge branch '2.2' into 2.3
* 2.2:
  [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
2013-09-08 18:12:21 +02:00
Jaik Dean
c567262b7e Fixed escaping of service identifiers in configuration 2013-09-08 08:36:15 +02:00
Fabien Potencier
b1a062d232 moved RequestStack to HttpFoundation and removed RequestContext 2013-09-08 07:38:03 +02:00
Fabien Potencier
93e60eaeab [HttpKernel] modified listeners to be BC with Symfony <2.4 2013-09-07 21:48:44 +02:00
Fabien Potencier
a58a8a69fd [HttpKernel] changed request_stack to a private service 2013-09-07 21:43:49 +02:00
Benjamin Eberlei
c55f1ea8af added a RequestStack class 2013-09-07 21:43:49 +02:00
Fabien Potencier
08ec911c8e merged branch Tobion/deprecate-debuggerinterface (PR #8929)
This PR was merged into the master branch.

Discussion
----------

[Templating] deprecate DebuggerInterface

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes: deprecated DebuggerInterface and Debugger
| Tests pass?   | yes
| Fixed tickets | #8926
| License       | MIT

- [x] add suggested optional dependency in templating component to Psr log
- [x] remove ProjectTemplateDebugger from tests

Commits
-------

b853438 [Templating] deprecate DebuggerInterface
2013-09-07 19:45:30 +02:00
Fabien Potencier
091a96ca3d Merge branch '2.3'
* 2.3:
  Fixing singular form for kisses, accesses and addresses.
  fixed some circular references
  [Security] fixed a leak in ExceptionListener
  [Security] fixed a leak in the ContextListener
  Ignore posix_istatty warnings
  removed unused variable
  [Form] fix iterator typehint
  typos
  Button missing getErrorsAsString() fixes #8084 Debug: Not calling undefined method anymore. If the form contained a submit button the call would fail and the debug of the form wasn't possible. Now it will work in all cases. This fixes #8084
  Use isset() instead of array_key_exists() in DIC
  Fixed annotation
  [BrowserKit] fixed method/files/content when redirecting a request
  [BrowserKit] removed some headers when redirecting a request
  [BrowserKit] fixed headers when redirecting if history is set to false (refs #8697)
  [HttpKernel] fixed route parameters storage in the Request data collector (closes #8867)
  [BrowserKit] Pass headers when `followRedirect()` is called
  Return BC compatibility for `@Route` parameters and default values

Conflicts:
	src/Symfony/Component/Security/Http/Firewall/ContextListener.php
2013-09-06 20:21:06 +02:00
Fabien Potencier
702e652002 Merge branch '2.2' into 2.3
* 2.2:
  Fixing singular form for kisses, accesses and addresses.
  fixed some circular references
  [Security] fixed a leak in ExceptionListener
  [Security] fixed a leak in the ContextListener
  Ignore posix_istatty warnings
  typos
  [HttpKernel] fixed route parameters storage in the Request data collector (closes #8867)
  Return BC compatibility for `@Route` parameters and default values

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Templating/Helper/FormHelper.php
	src/Symfony/Component/Console/Application.php
2013-09-06 20:20:34 +02:00
Tobias Schultze
b853438088 [Templating] deprecate DebuggerInterface
set logger in extension , so its only done in debug mode
add psr/log to suggest of templating
add test for setLogger and refactor tests to not depend that much an
deprecated functionality
2013-09-04 21:57:45 +02:00
Radosław Benkel
fcef02151a [Translation] Added support for JSON format (both loader and dumper). 2013-09-03 22:32:09 +02:00
Jáchym Toušek
4e363a145e typos 2013-09-03 19:10:25 +02:00
Peter Kruithof
94d648b75c Added 'host' option to firewall configuration 2013-09-01 11:49:21 +02:00
Jean-François Simon
dd8014a0f4 Replace sha1 and md5 hashing with sha256 algorithm 2013-08-31 13:25:41 +02:00
Fabien Potencier
feff411dfc Merge branch '2.3'
* 2.3:
  Clear lazy loading initializer after the service is successfully initialized
  [FrameworkBundle] added support for double-quoted strings in the extractor (closes #8797)
  [SecurityBundle] Move format-dependent tests from SecurityExtensionTest
  bumped Symfony version to 2.3.5-DEV
  updated VERSION for 2.3.4
  updated CHANGELOG for 2.3.4
  bumped Symfony version to 2.2.7
  updated VERSION for 2.2.6
  update CONTRIBUTORS for 2.2.6
  updated CHANGELOG for 2.2.6
  clearToken exception is thrown at wrong place.
  fix typo in test skipped message
  [Form] Fixed Form::all() signature for PHP 5.3.3
  [Form] Fixed Form::all() signature for PHP 5.3.3
  [Locale] Fixed: Locale::setDefault() throws no exception when "en" is passed
  [Locale] Fixed: StubLocale::setDefault() throws no exception when "en" is passed
  [Translation] Grammar fix
  [Yaml] fixed embedded folded string parsing
  [Validator] fixed Boolean handling in XML constraint mappings (closes #5603)
  [Translation] Fixed regression: When only one rule is passed to transChoice(), this rule should be used

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
2013-08-29 08:54:01 +02:00
Fabien Potencier
c0a256d966 Merge branch '2.2' into 2.3
* 2.2:
  [FrameworkBundle] added support for double-quoted strings in the extractor (closes #8797)
  [SecurityBundle] Move format-dependent tests from SecurityExtensionTest

Conflicts:
	src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php
2013-08-29 08:53:29 +02:00
Fabien Potencier
4922a80ee5 [FrameworkBundle] added support for double-quoted strings in the extractor (closes #8797) 2013-08-28 11:44:32 +02:00
Nikita Konstantinov
d463e25a75 [SecurityBundle] Move format-dependent tests from SecurityExtensionTest 2013-08-28 10:11:26 +02:00
Fabien Potencier
c3abd0c988 Merge branch '2.3'
* 2.3:
  fixed request format when forwarding a request
  [HttpKernel] added a comment to warn about possible inconsistencies
  added a functional test for locale handling in sub-requests
  Fixed issue #6932 - Inconsistent locale handling in subrequests
  fixed locale of sub-requests when explicitely set by the developer (refs #8821)

Conflicts:
	src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php
	src/Symfony/Component/HttpKernel/Fragment/RoutableFragmentRenderer.php
	src/Symfony/Component/HttpKernel/Tests/Fragment/RoutableFragmentRendererTest.php
2013-08-23 17:34:04 +02:00
Fabien Potencier
6610a7c80e Merge branch '2.2' into 2.3
* 2.2:
  fixed request format when forwarding a request
  [HttpKernel] added a comment to warn about possible inconsistencies
  added a functional test for locale handling in sub-requests
  Fixed issue #6932 - Inconsistent locale handling in subrequests
  fixed locale of sub-requests when explicitely set by the developer (refs #8821)

Conflicts:
	src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php
2013-08-23 17:31:47 +02:00
Fabien Potencier
2165d5dffb merged branch fabpot/format-forward (PR #8829)
This PR was merged into the 2.2 branch.

Discussion
----------

fixed request format when forwarding a request

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

When calling forward() in a controller, the format is not the same as for the master request.

Commits
-------

7e87eb1 fixed request format when forwarding a request
2013-08-23 17:30:05 +02:00
Fabien Potencier
1602746548 merged branch fabpot/tests-simplification (PR #8796)
This PR was merged into the master branch.

Discussion
----------

removed deps checks in unit tests

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

As Composer is now widely used in the PHP world, having to run composer install before running the test suite is expected. This also has the nice benefit of removing a bunch of code, making things easier to maintain (there is only one place to declare a dev dependency), and probably more.

see fabpot/Silex#626 where we did the same a while ago for Silex.

Commits
-------

de50621 removed deps checks in unit tests
2013-08-23 17:27:50 +02:00
Fabien Potencier
7e87eb1fdf fixed request format when forwarding a request 2013-08-22 14:43:23 +02:00
Fabien Potencier
c4636e1252 added a functional test for locale handling in sub-requests 2013-08-22 08:57:44 +02:00
Fabien Potencier
b3c31593c7 fixed locale of sub-requests when explicitely set by the developer (refs #8821) 2013-08-22 08:48:41 +02:00
Fabien Potencier
167245c9c7 Merge branch '2.3'
* 2.3:
  [Locale] fixed build-data exit code in case of an error
  fixed request format of sub-requests when explicitely set by the developer (closes #8787)
  Sets _format attribute only if it wasn't set previously by the user.
  Exclude little words of 'ee' to 'oo' plural transformation
  fixed the format of the request used to render an exception
  Fix typo in the check_path validator
  added a missing use statement (closes #8808)
  fix for Process:isSuccessful()
  Include untrusted host in the exception message

Conflicts:
	src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php
	src/Symfony/Component/HttpKernel/Fragment/InlineFragmentRenderer.php
2013-08-22 08:44:20 +02:00
Fabien Potencier
8e1cb3e3ca Merge branch '2.2' into 2.3
* 2.2:
  [Locale] fixed build-data exit code in case of an error
  fixed request format of sub-requests when explicitely set by the developer (closes #8787)
  Sets _format attribute only if it wasn't set previously by the user.
  Exclude little words of 'ee' to 'oo' plural transformation
  fixed the format of the request used to render an exception
  Fix typo in the check_path validator
  added a missing use statement (closes #8808)
  fix for Process:isSuccessful()

Conflicts:
	UPGRADE-3.0.md
	src/Symfony/Component/Locale/Resources/data/build-data.php
2013-08-22 08:42:25 +02:00
Fabien Potencier
1ad64ee7a3 merged branch fabpot/inline-fragment-format (PR #8821)
This PR was merged into the 2.2 branch.

Discussion
----------

Sets _format attribute only if it wasn't set previously by the user

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

Commits
-------

9bb7a3d fixed request format of sub-requests when explicitely set by the developer (closes #8787)
fa35597 Sets _format attribute only if it wasn't set previously by the user.
2013-08-22 08:30:26 +02:00
Fabien Potencier
9bb7a3ddcb fixed request format of sub-requests when explicitely set by the developer (closes #8787) 2013-08-22 07:46:12 +02:00
Fabien Potencier
f946108d65 fixed the format of the request used to render an exception 2013-08-22 05:11:17 +02:00
Nikita Konstantinov
51022c30ae Fix typo in the check_path validator 2013-08-22 04:12:50 +02:00
Fabien Potencier
de50621e8a removed deps checks in unit tests
As Composer is now widely used in the PHP world, having to run composer
install before running the test suite is expected. This also has the
nice benefit of removing a bunch of code, making things easier to
maintain (there is only one place to declare a dev dependency), and
probably more.
2013-08-19 22:44:22 +02:00
Fabien Potencier
d15bb7351e Merge branch '2.3'
* 2.3:
  Added sleep() workaround for windows php rename bug
  [HttpKernel] removed unused variable
  [Form] Fixed: Added "validation_groups" option to submit button
  [Process] Fix for #8754 (Timed-out processes are successful)

Conflicts:
	src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php
2013-08-15 19:09:02 +02:00
Fabien Potencier
91e5b10d05 Merge branch '2.2' into 2.3
* 2.2:
  Added sleep() workaround for windows php rename bug
  [HttpKernel] removed unused variable

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
2013-08-15 19:08:02 +02:00
Christian Morgan
dbd08551f8 Added sleep() workaround for windows php rename bug 2013-08-15 15:44:11 +02:00
Fabien Potencier
a67f5d03d1 Merge branch '2.3'
* 2.3:
  [Process] Revert change
  [Process] Fix #8746 : slowness added in unit tests since #8741
  [Process] Fix #8742 : Signal-terminated processes are not successful
  corrected English grammar (s/does not exists/does not exist)
  [Process] Add more precision to Process::stop timeout
  [Process] Avoid zombie process in case of unit tests failure
  [Process] Fix #8739
  [Process] Add failing test for #8739
  [Process] Fix CS
  [TwigBridge] removed superflous ; when rendering form_enctype() (closes #8660)
  Fixed documentation grammar for AuthenticationManagerInterface::authenticate()
  [Validator] fixed the wrong isAbstract() check against the class (fixed #8589)
  [TwigBridge] Prevent code extension to display warning
  Fix internal sub-request creation
  [FrameworkBundle] made code more generic
  [Form] Moved auto_initialize option to the BaseType
  Use strstr instead of strpos
  Make sure ContextErrorException is loaded during compile time errors
  Fix empty process argument escaping on Windows
  Ignore null value in comparison validators

Conflicts:
	src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php
	src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php
	src/Symfony/Component/Process/Process.php
2013-08-14 15:08:25 +02:00
Fabien Potencier
11018011dd Merge branch '2.2' into 2.3
* 2.2:
  corrected English grammar (s/does not exists/does not exist)
  [Process] Add more precision to Process::stop timeout
  [Process] Avoid zombie process in case of unit tests failure
  [Process] Fix #8739
  [Process] Add failing test for #8739
  [Process] Fix CS
  Fixed documentation grammar for AuthenticationManagerInterface::authenticate()
  [Validator] fixed the wrong isAbstract() check against the class (fixed #8589)
  [TwigBridge] Prevent code extension to display warning
  Use strstr instead of strpos

Conflicts:
	src/Symfony/Component/Finder/Shell/Command.php
	src/Symfony/Component/Process/Process.php
2013-08-13 22:18:00 +02:00
Fabien Potencier
5ca93a5454 merged branch fabpot/esi-fragment-handler (PR #8730)
This PR was merged into the master branch.

Discussion
----------

changed the ESI fragment renderer to be always registered

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

This is an alternative implementation for #8427

Commits
-------

09f727b changed the ESI fragment renderer to be always registered
2013-08-13 16:08:33 +02:00
Fabien Potencier
09f727b1f1 changed the ESI fragment renderer to be always registered 2013-08-13 11:17:13 +02:00
Grégoire Pineau
e8e76ece5a [TwigBridge] Prevent code extension to display warning 2013-08-12 10:19:38 +02:00