Commit Graph

419 Commits

Author SHA1 Message Date
Colin O'Dell
19931c984c Added new validator for UUIDs 2014-03-26 18:50:25 +01:00
Diego Agulló
7a2f154533 Fixed ACE domain checks on UrlValidator (#10031) 2014-03-26 18:48:23 +01:00
Fabien Potencier
3baa43b44e Merge branch '2.4'
* 2.4: (52 commits)
  Fix #8205 : Deprecate file mode update when calling dumpFile
  Fix #10437: Catch exceptions when reloading a no-cache request
  Fix libxml_use_internal_errors and libxml_disable_entity_loader usage
  removed ini check to make uploadedfile work on gae
  Update OptionsResolver.php
  fixed comment in forms.xml file
  Clean KernelInterface docblocks
  Cast the group name as a string
  Fixed doc of InitAclCommand
  [Form] Fix "Array was modified outside object" in ResizeFormListener.
  Fix IBAN validator
  [Process] Remove unreachable code + avoid skipping tests in sigchild environment
  Fixed bug that incorrectly causes the "required" attribute to be omitted from select even though it contains the "multiple" attribute
  Added travis_retry to .travis.yml
  [Process] fix some typos and refactor some code
  [Process] Fix unit tests in sigchild disabled environment
  [Process] Trow exceptions in case a Process method is supposed to be called after termination
  fixed typo
  [Process] fixed fatal errors in getOutput and getErrorOutput when process was not started
  [Process] Fix escaping on Windows
  ...

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Command/ServerRunCommand.php
	src/Symfony/Component/Form/Extension/Core/EventListener/ResizeFormListener.php
	src/Symfony/Component/Process/Process.php
	src/Symfony/Component/Process/ProcessPipes.php
	src/Symfony/Component/Process/Tests/AbstractProcessTest.php
2014-03-26 12:51:10 +01:00
Fabien Potencier
ab42e9cbc4 Merge branch '2.3' into 2.4
* 2.3: (34 commits)
  Fix #8205 : Deprecate file mode update when calling dumpFile
  Fix #10437: Catch exceptions when reloading a no-cache request
  Fix libxml_use_internal_errors and libxml_disable_entity_loader usage
  removed ini check to make uploadedfile work on gae
  Update OptionsResolver.php
  fixed comment in forms.xml file
  Clean KernelInterface docblocks
  Cast the group name as a string
  Fixed doc of InitAclCommand
  [Form] Fix "Array was modified outside object" in ResizeFormListener.
  Fix IBAN validator
  [Process] Remove unreachable code + avoid skipping tests in sigchild environment
  Fixed bug that incorrectly causes the "required" attribute to be omitted from select even though it contains the "multiple" attribute
  Added travis_retry to .travis.yml
  [Process] fix some typos and refactor some code
  [Process] Fix unit tests in sigchild disabled environment
  [Process] Trow exceptions in case a Process method is supposed to be called after termination
  fixed typo
  [Process] fixed fatal errors in getOutput and getErrorOutput when process was not started
  [Process] Fix escaping on Windows
  ...

Conflicts:
	src/Symfony/Component/DomCrawler/Crawler.php
	src/Symfony/Component/Filesystem/Filesystem.php
	src/Symfony/Component/Process/Process.php
2014-03-26 12:35:33 +01:00
Manuel Reinhard
3eeb3067e3 Fix IBAN validator 2014-03-19 17:04:05 +01:00
Bernhard Schussek
df56c23d8f [Validator] Checked the constraint class in constraint validators 2014-03-10 12:58:20 +00:00
Pierre-Yves LEBECQ
f10c9748e3 [Validator] Removed PHP <5.3.3 specific code which is not officially supported. 2014-02-18 17:30:53 +01:00
Fabien Potencier
e2ac5dfc78 Merge branch '2.3' into 2.4
* 2.3:
  fixed various inconsistencies
  reduced recursion when building DumperPrefixCollection
  renamed variables - making next change more readable
  removing dead code.
  [DomCrawler] Fixed filterXPath() chaining
  [DomCrawler] Fixed incorrect handling of image inputs

Conflicts:
	src/Symfony/Component/DomCrawler/Crawler.php
	src/Symfony/Component/EventDispatcher/Tests/EventDispatcherTest.php
	src/Symfony/Component/Form/Extension/DependencyInjection/DependencyInjectionExtension.php
	src/Symfony/Component/Serializer/Tests/Normalizer/CustomNormalizerTest.php
	src/Symfony/Component/Templating/Tests/Loader/CacheLoaderTest.php
	src/Symfony/Component/Templating/Tests/Loader/LoaderTest.php
2014-02-11 14:52:09 +01:00
Fabien Potencier
eb3f6c6efb fixed various inconsistencies 2014-02-11 11:29:24 +01:00
Fabien Potencier
30e66fa773 Merge branch '2.3' into 2.4
* 2.3:
  update year on licenses
  rundown and typo fix
  [Process] Fix #9861 : Revert TTY mode
  [Form] Update minimal requirement in composer.json
  Fix Empty translations with Qt files
  Update UPGRADE-2.3.md to account for #9388

Conflicts:
	src/Symfony/Component/Validator/Tests/Constraints/LessThanValidatorTest.php
2014-01-07 14:28:54 +01:00
Luis Cordova
dcd23df424 rundown and typo fix 2014-01-07 07:58:55 -05:00
Fabien Potencier
e0402bae65 Merge branch '2.3' into 2.4
* 2.3:
  removed unneeded use statements
  Prepend Child Bundle paths before the parent
  [Routing] add unit tests for Symfony\Component\Routing\RequestContext class

Conflicts:
	src/Symfony/Component/Form/Extension/Csrf/CsrfExtension.php
	src/Symfony/Component/HttpKernel/DataCollector/TimeDataCollector.php
	src/Symfony/Component/Validator/ConstraintValidatorFactory.php
2014-01-01 09:14:50 +01:00
Fabien Potencier
7f9a366529 removed unneeded use statements 2014-01-01 08:52:14 +01:00
Fabien Potencier
3a1d2200b0 Merge branch '2.3' into 2.4
* 2.3:
  fixed typos
  Fixed deprecated method calls
  Add testing against HHVM at Travis-CI
  Fixed typo
  Fixed typo
  fixed acronyms
  [Validator] Fixed IBAN validator with 0750447346 value

Conflicts:
	src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php
2013-12-28 22:39:51 +01:00
Fabien Potencier
c33341df09 bug #9850 [Validator] Fixed IBAN validator with 0750447346 value (stewe)
This PR was merged into the 2.3 branch.

Discussion
----------

[Validator] Fixed IBAN validator with 0750447346 value

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

Commits
-------

cf88ba5 [Validator] Fixed IBAN validator with 0750447346 value
2013-12-28 14:42:37 +01:00
Fabien Potencier
d87d8daa36 Merge branch '2.3' into 2.4
* 2.3:
  fixed a typo
  fixed CS for lambdas
  [Yaml] fixed some license headers
  Fixes message value for objects
  Check for hour, minute & second validity
  fixed various typos
  [Filesystem] Fixed mirror for symlinks
  [Validator] Removed duplicated test for IBAN in data provider

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php
	src/Symfony/Component/Console/Application.php
	src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php
	src/Symfony/Component/Filesystem/Tests/FilesystemTest.php
	src/Symfony/Component/HttpKernel/Tests/DependencyInjection/ContainerAwareHttpKernelTest.php
2013-12-28 09:12:03 +01:00
Jon Gotlin
78eeba8f01 Fixes message value for objects 2013-12-27 22:53:58 +01:00
Stefano Sala
cf88ba58a6 [Validator] Fixed IBAN validator with 0750447346 value 2013-12-23 19:04:13 +01:00
Fabien Potencier
b74a887cd9 minor #9487 unify constructor initialization style throughout symfony (Tobion)
This PR was merged into the master branch.

Discussion
----------

unify constructor initialization style throughout symfony

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

In almost all classes symfony uses property initialization when the value is static. Constructor initialization is only used for things that actually have logic, like passed parameters or dynamic values. IMHO it makes the code much more readable because property definition, phpdoc and default value is in one place. Also one can easily see what the constructor implements for logic like overridden default value of a parent class. Otherwise the real deal is just hidden behind 10 property initializations. One more advantage is that it requires less code. As you can see, the code was almost cut in half (210 additions and 395 deletions).
I unified it accordingly across symfony. Sometimes it was [not even consistent within one class](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Config/Definition/BaseNode.php#L32). At the same time I recognized some errors like missing parent constructor call, or undefined properties or private properties that are not even used.

I then realized that a few Kernel tests were not passing because they were deeply implementation specific like modifying booted flag with a custom `KernelForTest->setIsBooted();`. I improved and refactored the kernel tests in the __second commit__.

__Third commit__ unifies short ternary operator, e.g. `$foo ?: new Foo()`. __Forth commit__ unifies missing parentheses, e.g. `new Foo()`.

Commits
-------

077a089 unify missing parentheses
2888594 unify short ternary operator
2a9daff [HttpKernel] better written kernel tests
111ac18 unify constructor initialization style throughout symfony
2013-11-22 18:42:00 +01:00
Fabien Potencier
587f355137 Merge branch '2.3'
* 2.3: (25 commits)
  bumped Symfony version to 2.2.11
  updated VERSION for 2.2.10
  update CONTRIBUTORS for 2.2.10
  updated CHANGELOG for 2.2.10
  fixed version
  Request::overrideGlobals() may call invalid ini value
  Force Luhn Validator to only work with strings
  Fixed bug with lazy services
  [Translation] fixed the error in the dumper test as described in #9475
  deleted mixing string concatenation inside a sprintf
  "__call()" should be displayed only if $this->magicCall is true
  [Console] fix phpdoc and constructor default value
  Add media-query for printing: Do not print the toolbar.
  Fix ProgressHelper redraw when redrawFreq is greater than 1
  Update toolbar.css.twig
  slovenian translations fixed
  slovenian translations fixed
  [DependencyInjection] fixed YamlDumper did not make services private.
  [FrameworkBundle] fix routing container parameter exception message
  [Form] fix and unify phpdoc
  ...

Conflicts:
	src/Symfony/Component/Console/Helper/ProgressHelper.php
	src/Symfony/Component/DependencyInjection/ContainerBuilder.php
	src/Symfony/Component/HttpKernel/Kernel.php
2013-11-13 22:30:16 +01:00
Fabien Potencier
59a4313a52 Merge branch '2.2' into 2.3
* 2.2:
  bumped Symfony version to 2.2.11
  updated VERSION for 2.2.10
  update CONTRIBUTORS for 2.2.10
  updated CHANGELOG for 2.2.10
  fixed version
  Request::overrideGlobals() may call invalid ini value
  Force Luhn Validator to only work with strings
  [Translation] fixed the error in the dumper test as described in #9475
  [Console] fix phpdoc and constructor default value

Conflicts:
	src/Symfony/Component/Console/Helper/ProgressHelper.php
	src/Symfony/Component/HttpKernel/Kernel.php
2013-11-13 22:27:40 +01:00
Tobias Schultze
111ac18232 unify constructor initialization style throughout symfony 2013-11-11 19:40:07 +01:00
Daniel Richter
1e410c7bcb Force Luhn Validator to only work with strings
The Luhn Validator fails to work with float or large integers (internally turned into float by php, depending on precision setting).
This is problematic because developers might use number or integer form fields to capture credit card data, which will lead to a validation error even though the form input itself was valid. This commit makes validator throw UnexpectedTypeException on non-string input to avoid this confusion.
2013-11-09 16:57:10 +01:00
Bernhard Schussek
cccb1db2b2 [Validator] Simplified usage of the Callback constraint 2013-09-26 13:52:04 +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
Besnik Br
6cf5e0812e convert object to string if possible instead of using var_export directly 2013-09-16 10:05:18 +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
Jáchym Toušek
5874dbaebf Removed duplicate annotation 2013-09-09 13:18:54 +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
Grégoire Pineau
cf31dfb080 [Validator] Removed unnecessary check as symfony require php >= 5.3.3. 2013-08-10 10:41:36 +02:00
Fabien Potencier
2cc36f10ce merged branch lmammino/improved-image-validator (PR #8490)
This PR was squashed before being merged into the master branch (closes #8490).

Discussion
----------

[Validator] improved image validator

| 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#2840

CHANGELOG
* Added options to validate image aspect ratio (`minRatio` and `maxRatio`)
* Added options to validate if the image ratio is square, landscape or portrait (`allowSquare`, `allowLandscape`, and `allowPortrait`)

Commits
-------

b030624 [Validator] improved image validator
2013-08-02 15:39:24 +02:00
Luciano Mammino
b0306242cc [Validator] improved image validator 2013-08-02 15:39:24 +02:00
Emmanuel Vella
48338fcf10 Ignore null value in comparison validators 2013-07-25 14:05:03 +02:00
Fabien Potencier
b45f18b81d Merge branch '2.2' into 2.3
* 2.2:
  [Validator] fixed ConstraintViolation:: incorrect when nested
  handle Optional and Required constraints from XML or YAML sources correctly
  added missing comments to WebTestCase
  Fixed #8455: PhpExecutableFinder::find() does not always return the correct binary
  [DependencyInjection] Fix Container::camelize to convert beginning and ending chars
  [Validator] Fixed groups argument misplace for validateValue method from validator class

Conflicts:
	src/Symfony/Component/Validator/Tests/Constraints/CollectionTest.php
	src/Symfony/Component/Validator/Tests/GraphWalkerTest.php
2013-07-21 22:18:49 +02:00
Christian Flothmann
890934d33d handle Optional and Required constraints from XML or YAML sources correctly 2013-07-21 21:45:37 +02:00
Fabien Potencier
4c0bfd3313 fixed CS 2013-07-01 14:24:43 +02:00
Joseph Bielawski
90a7e86349 [Validator] Add missing translation for new validators from #790 2013-05-02 22:58:07 +02:00
Fabien Potencier
f7d8c98851 merged branch danielholmes/comparison_validators (PR #790)
This PR was merged into the master branch.

Discussion
----------

[2.3] [Validator] added comparison constraints and validators

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

They work on a class level and you specify a list of properties. Included are the standard GreaterThan, GreaterThanOrEqual, LessThan, LessThanOrEqual and Equal. e.g.:

```php
<?php
/**
 * @assert:GreaterThan({"diedDate", "bornDate"})
 * @assert:LessThanOrEqual({"bornDate", "firstSchoolDayDate", "diedDate"})
 */
class Person
{
    private $bornDate;
    private $firstSchoolDayDate;
    private $diedDate;
}
```

I think it would also be useful if they worked on a property level rather than just class. I'm not sure what the default option should be though. e.g. is there a reliable way to determine what's a raw value and what's a property name:

```php
<?php
/** @assert:GreaterThan(80) */
private $iq;
/** @assert:LessThan('dateDied') */
private $bornDate;
/** @assert:LessThanOrEqual('C') */
private $grade;
/** @assert:GreaterThanOrEqual({50, 'ageStartedSchool'}) */
private $age;
```

Commits
-------

0bffdff [Validator] Added comparison validators.
2013-04-30 18:44:58 +02:00
=
0bffdff56f [Validator] Added comparison validators. 2013-04-29 22:43:20 +10:00
Antonio J. García Lagar
57c724a37f [Validator] Rename issn constraint message option to be consistent with all constraints having a single message option 2013-04-28 18:50:39 +02:00
Miha Vrhovnik
5609aae856 Added currency form type and validator 2013-04-23 06:57:28 +02:00
Antonio J. García Lagar
94173ec58e Rename requireHyphens to requireHyphen for Issn constraint 2013-04-22 20:32:17 +02:00
Fabien Potencier
39dfbf682c merged branch pborreli/typos-isbn (PR #7761)
This PR was merged into the master branch.

Discussion
----------

Fixed typos

Sorry for the multiple PRs

Commits
-------

6ef7f10 Fixed typos
2013-04-21 13:21:42 +02:00
Fabien Potencier
a4abfb9550 [Validator] tweaked ISSN validator (refs #7756) 2013-04-21 13:20:34 +02:00
Pascal Borreli
6ef7f10628 Fixed typos 2013-04-21 11:14:35 +00:00
Pascal Borreli
b5c87396b7 Fixed typo 2013-04-21 10:57:29 +00:00
Fabien Potencier
909b810302 [Validator] fixed CS, updated CHANGELOG 2013-04-21 12:48:25 +02:00
Antonio J. García Lagar
77f62ec740 [Validator] Added ISSN Validator 2013-04-21 12:42:55 +02:00
Fabien Potencier
8482ad2e80 [Validator] fixed CS 2013-04-20 15:37:39 +02:00
Fabien Potencier
cf526ff846 merged branch thewholelifetolearn/master (PR #6718)
This PR was squashed before being merged into the master branch (closes #6718).

Discussion
----------

[Validator] Added ISBN validator

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
License of the code: MIT

For information about ISBN-10 and ISBN13: https://en.wikipedia.org/wiki/Isbn

This constraint permits to valid a ISBN-10 code, a ISBN-13 code or both on a value

Commits
-------

4582261 [Validator] Added ISBN validator
2013-04-20 15:32:05 +02:00
The Whole Life to Learn
4582261cdf [Validator] Added ISBN validator 2013-04-20 15:30:26 +02:00
Fabien Potencier
44be949045 [Validator] fixed CS 2013-04-20 15:26:53 +02:00
Fabien Potencier
3a507e0d86 merged branch sprain/validator-iban (PR #6677)
This PR was merged into the master branch.

Discussion
----------

[Form] [Validator] Added IBAN validator

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
License of the code: MIT

Validation for International Bank Account Numbers
http://en.wikipedia.org/wiki/International_Bank_Account_Number

I don't know if the community likes new validators. I have been using this in many projects and would love to see it integrated directly with Symfony.

Commits
-------

c8906f4 [Validator] Added IBAN validator
2013-04-20 15:22:53 +02:00
Fabien Potencier
f73bced2b6 merged branch bschussek/move-existence-constraints (PR #7701)
This PR was merged into the master branch.

Discussion
----------

[Validator] Moved constraints Optional and Required to the Constraints\ namespace

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

Commits
-------

a868048 [Validator] Moved constraints Optional and Required to the Constraints\ namespace
2013-04-19 16:32:43 +02:00
Fabien Potencier
47061d7020 merged branch bschussek/intl (PR #7386)
This PR was merged into the master branch.

Discussion
----------

[Intl] Refactored Locale component into two new components Icu and Intl

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

The Intl component is now a simple drop-in replacement layer for the C intl extension. Install it via Composer and have it available automatically if the intl extension is not available.

Additionally, the component ships data from the ICU library which can be accessed through the methods:

```php
use Symfony\Component\Intl\Intl;

Intl::getCurrencyBundle()->...
Intl::getLanguageBundle()->...
Intl::getLocaleBundle()->...
Intl::getRegionBundle()->...
```

If the intl extension is installed, Composer will install the ICU data for the ICU version in the intl extension. If the intl extension is not installed, Composer will use stub ICU data for the latest ICU version (see `Intl::getStubIcuVersion()`).

See the [README](/bschussek/symfony/blob/intl/src/Symfony/Component/Intl/README.md) for more information.

Todo:

- [x] finish the Intl README file
- [x] update the Icu README file
- [x] update the documentation
- [x] make parameter `$locale` optional (default to `\Locale::getDefault()`) in resource bundle methods
- [x] remove `(Icu)?Version::compare` calls in the tests
- [x] solve deployment problem when trying to install incompatible symfony/icu version listed in composer.lock

Create the following branches in the [Icu component](https://github.com/symfony/Icu):

- [x] 1.0.x
- [x] 1.1.x
- [x] 1.2.x

Commits
-------

9118b4a [Locale] Removed "Stub" prefixes in Intl component
b4cccfd [Intl] Removed "Stub" prefix from stub classes
60f31d1 [Intl] Improved inline documentation
c2d37e6 [Intl] Improved error messages in the build scripts
1249f01 [Intl] Added scripts to test the compatibility of various versions of symfony/icu with the ICU version installed on the system
9dbafd7 [Intl] Split update-stubs.php script into two scripts to function with the changed Icu component versioning
e2c11cb [Intl] Added a check for the ICU data version to IntlTestHelper to prevent the stub class tests from failing
427d24a [Intl] Outsourced bundle reader creation to Icu component
0160fd5 [Intl] Moved stub data to Icu component 1.0.x
dbca3b7 [Intl] Added empty directory needed for the tests
a717ce9 [Intl] Removed ICU version comparisons from the tests
5d17de5 [Intl] Fixed version comparisons in the transformation rules
470927d [Intl] Improved build scripts
aceb20d [Form] Improved tests to use the IntlTestHelper class
3dd75ff [Locale] Improved tests to use the IntlTestHelper class
03b78b0 [Validator] Improved tests to use the IntlTestHelper class
9d9c389 [Intl] Simplified tests
c55c4a2 [Intl] Only the StubNumberFormatterTest requires stub data
17a480b [Intl] Added IntlTestHelper class for convenience
1dcdcd3 [Locale] Fixed failing tests
f6b75b9 [Intl] Changed composer.json to disallow future versions of the Icu component
080c880 [Intl] Bumped the stub version to 50.1.2
dd2d013 [Intl] Improved the bundle compilation process
f47e60a [Intl] Fixed small bugs in the resource bundle transformation
467cc93 [Intl] Fixed various problems in the resource compilation process
4a5c453 [Intl] Moved the content of the README file to symfony/symfony-docs
9899de7 [Intl] Updated the README
bfec58a [Intl] Fixed flawed PHPDoc
21323ba [Intl] Updated the README file
209a9cb [Validator] Adapted to latest Intl changes
f2a0aec [Form] Adapted to latest Intl changes
0f6277f [Locale] Adapted to latest Intl changes
2cd1be8 [Intl] Made the $locale parameter optional in the bundle interfaces
b9e9cb2 [Intl] Added autoload.php which was ignored by .gitignore
838798f [Intl] Removed method IntlTestCase::skipIfInsufficientIcuVersion()
dde1d34 [Intl] Changed Intl::getIcuVersion() to return the stub version if the intl extension is not loaded
99f6f8a [Form] Fixed failing tests
5d0b849 Fixed PHPDoc
b60866c [Intl] Changed Intl::getStubIcuVersion() to Intl::getIcuStubVersion()
b902b6b [Locale] Added default locale
01d0ee8 [Validator] Changed component to use the Intl component
0c1fe39 [Form] Changed component to use the Intl component
5917a2e [Intl] Refactored Locale component into two new components Icu and Intl
2013-04-18 09:30:57 +02:00
Manuel Reinhard
c8906f4be8 [Validator] Added IBAN validator
Validation for International Bank Account Numbers
2013-04-18 09:21:11 +02:00
Bernhard Schussek
a868048a82 [Validator] Moved constraints Optional and Required to the Constraints\ namespace 2013-04-17 18:02:12 +02:00
dantleech
e655120f05 Enforce sprintf for exceptions 2013-04-11 08:50:46 +02:00
Bernhard Schussek
209a9cb722 [Validator] Adapted to latest Intl changes 2013-04-05 10:11:15 +02:00
Bernhard Schussek
01d0ee8b78 [Validator] Changed component to use the Intl component 2013-04-05 10:11:14 +02:00
Dariusz Górecki
7c47e34928 [CS Fix] Consistent coding-style of concatenation operator usage 2013-04-02 10:39:57 +01:00
Fabien Potencier
65e3b1684b [Validator] removed deprecated constraints 2013-03-23 11:48:18 +01:00
Fabien Potencier
0d7593c636 Merge branch '2.1' into 2.2
* 2.1:
  sub-requests are now created with the same class as their parent
  [FrameworkBundle] removed BC break
  [FrameworkBundle] changed temp kernel name in cache:clear
  [DoctrineBridge] Avoids blob values to be logged by doctrine
  [Security] use current request attributes to generate redirect url?
  [Validator] fix showing wrong max file size for upload errors
  [TwigBridge] removed double var initialization (refs #7344)
  [2.1][TwigBridge] Fixes Issue #7342 in TwigBridge
  [FrameworkBundle] fixed cahe:clear command's warmup
  [TwigBridge] now enter/leave scope on Twig_Node_Module
  [TwigBridge] fixed fixed scope & trans_default_domain node visitor
  [TwigBridge] fixed non probant tests & added new one
  [BrowserKit] added ability to ignored malformed set-cookie header
  [Translation] removed wriong 'use'
  [Translation] added xliff loader/dumper with resname support
  [TwigBridge] fixes

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/HttpKernel.php
	src/Symfony/Component/Security/Http/HttpUtils.php
	src/Symfony/Component/Translation/Loader/XliffFileLoader.php
	src/Symfony/Component/Translation/Tests/Loader/XliffFileLoaderTest.php
2013-03-15 11:14:31 +01:00
Tobias Schultze
7216cb0407 [Validator] fix showing wrong max file size for upload errors
this was because the maxSize option wasn't parsed correctly and simply string comparision could lead to wrong results, e.g. 200 > 1000M
2013-03-13 15:34:16 +01:00
Florin Patan
d0341e84ab Replaced call that triggers deprecated error 2013-01-31 14:13:11 +02:00
Fabien Potencier
a1616efe1f merged branch franmomu/update_deprecated_calls_all_validator (PR #6743)
This PR was merged into the master branch.

Commits
-------

8bfd7a7 Remove custom error handler for deprecations
efbff0c Change deprecated Min and Max constraint
c47f027 [Validator][Constraints] Update AllValidator using new Validator API

Discussion
----------

[Validator][Constraints] Update AllValidator using new Validator API

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets:
License of the code: MIT
2013-01-24 10:29:59 +01:00
Fabien Potencier
70686ac7b3 merged branch franmomu/update_deprecated_calls_collection_validator (PR #6741)
This PR was merged into the master branch.

Commits
-------

9264431 Remove custom error handler for deprecations
c80c17e Change deprecated Min constraint to Range constraint
a39fdd8 Remove getPropertyPath in the tests
ffa4c6f [Validator][Constraints] CollectionValidator

Discussion
----------

[Validator][Constraints] Update CollectionValidator using new Validator API

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #6648
License of the code: MIT

In the tests `$i = 1` is because in `validate` the first call to `$this->context` is `$this->context->getGroup();`, should I write this in a comment before each declaration?

---------------------------------------------------------------------------

by stof at 2013-01-15T21:50:41Z

You should also modify the CollectionValidator tests to use a different constraint than ``Min`` which is deprecated. Once it is done, these tests should not need to register a custom error handler catching deprecations anymore

---------------------------------------------------------------------------

by franmomu at 2013-01-15T22:33:43Z

Perfect, I'm going to do the same in #6743
2013-01-24 10:29:51 +01:00
Fabien Potencier
001734aa2e [Validator] fixed phpdoc 2013-01-21 17:57:12 +01:00
Fran Moreno
c47f02735a [Validator][Constraints] Update AllValidator using new Validator API 2013-01-15 01:52:28 +01:00
Fran Moreno
ffa4c6f25b [Validator][Constraints] CollectionValidator 2013-01-15 00:03:31 +01:00
Christophe Coevoet
68257d372f Enhanced the triggering of E_USER_DEPRECATED errors
- Removed useless error handlers around FormEvent as the triggering has
  been fixed in it.
- Enhanced the triggering of deprecation errors for places where the BC
  method provide some user logic needing to be converted to a new way.
- Enhanced the deprecation messages to mention the replacement whenever
  possible.
2013-01-10 09:22:55 +01:00
Bernhard Schussek
cc0df0a5af [Validator] Changed validator to support pluralized messages by default
This was implemented in order to satisfy Drupal's requirements for a
singular and a plural message whenever a message is passed to their
implementation of transChoice().
2013-01-08 14:59:49 +01:00
Ricard Clau
5be0042be0 better regexp, more test cases, added comments about each credit card 2013-01-07 22:57:38 +01:00
Sebastian Goettschkes
cc278aff69 [Validator] Fix CardSchemeValidator double violation when value is non-numeric.
Making scheme option accept strings in addition to arrays.
2013-01-07 22:54:50 +01:00
Ricard Clau
b1f190fd6c covers edge case for Luhn 2013-01-06 22:18:36 +01:00
Fabien Potencier
79148f3c86 Revert "merged branch ricardclau/rename_choice_to_oneof (PR #6360)"
This reverts commit 1de60c902c, reversing
changes made to e3cc337b00.

Conflicts:
	UPGRADE-2.2.md
2012-12-29 10:43:12 +01:00
Fabien Potencier
1de60c902c merged branch ricardclau/rename_choice_to_oneof (PR #6360)
This PR was merged into the master branch.

Commits
-------

9071676 create oneof constraint and add deprecation messages in choice, also make choice extend new oneOf constraint to avoid duplicate code

Discussion
----------

[Validator] Rename "Choice" to "OneOf"

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #6324
Todo:
License of the code: MIT
Documentation PR: https://github.com/symfony/symfony-docs/issues/2025

---------------------------------------------------------------------------

by bschussek at 2012-12-14T18:20:56Z

Can you let `Choice` and `ChoiceValidator` extend the renamed classes? Then we avoid the code duplication. You can also remove `ChoiceValidatorTest` then.

---------------------------------------------------------------------------

by ricardclau at 2012-12-14T18:26:58Z

For sure! BTW there seems to be a problem with SF2 build when testing BR currency :S maybe it is the new ICU version supported, I guess you are aware of this but just in case!

---------------------------------------------------------------------------

by stof at 2012-12-14T21:14:04Z

the ``Choice`` constraint should trigger a ``E_USER_DEPRECATED`` in its constructor (and calling the parent constructor) as we agreed on this. The PR adding these calls everywhere is not merged yet, but it would avoid missing it when merging the PRs separately

---------------------------------------------------------------------------

by bschussek at 2012-12-14T21:19:45Z

Things missing:

* add a deprecation note to the Validator's CHANGELOG
* add a block in UPGRADE-2.2 under the Validator's "Deprecations" section that explains how to upgrade with a before/after sample
* add `trigger_error()` calls to the constructors of `Choice` and `ChoiceValidator`

See #6180 for more information about how to call `trigger_error()`.

---------------------------------------------------------------------------

by ricardclau at 2012-12-14T22:45:55Z

Sorry I was not aware of the trigger_error() agreement, absolutely +1 on it.

I hope I understood everything properly, if there is something else or some other errors please tell me!

---------------------------------------------------------------------------

by bschussek at 2012-12-15T08:46:51Z

The entry in the CHANGELOG is still missing.

---------------------------------------------------------------------------

by ricardclau at 2012-12-15T09:36:28Z

By the CHANGELOG you mean what I just added right? Hope now it is ok!

---------------------------------------------------------------------------

by bschussek at 2012-12-15T09:45:16Z

Awesome! 👍
2012-12-15 13:25:28 +01:00
Ricard Clau
9071676f0b create oneof constraint and add deprecation messages in choice, also make choice extend new oneOf constraint to avoid duplicate code 2012-12-15 10:29:01 +01:00
Colin Frei
6b105504f4 Merge branch 'master' of github.com:symfony/symfony into deprecationErrors 2012-12-14 23:30:36 +01:00
umpirsky
d789e5ab44 Serbian translation for card scheme constraint message. 2012-12-12 13:18:02 +01:00
umpirsky
76d653f448 Serbian translation for Luhn constraint message. 2012-12-12 13:11:42 +01:00
Fabien Potencier
3c010db2cb Merge branch '2.1'
* 2.1:
  fixed CS
  fixed CS
  [Security] fixed path info encoding (closes #6040, closes #5695)
  [HttpFoundation] added some tests for the previous merge and removed dead code (closes #6037)
  Improved Cache-Control header when no-cache is sent
  removed unneeded comment
  Fix to allow null values in labels array
  fix date in changelog
  removed the Travis icon (as this is not stable enough -- many false positive, closes #6186)
  Revert "merged branch gajdaw/finder_splfileinfo_fpassthu (PR #4751)" (closes #6224)
  Fixed a typo
  Fixed: HeaderBag::parseCacheControl() not parsing quoted zero correctly
  [Form] Fix const inside an anonymous function
  [Config] Loader::import must return imported data
  [DoctrineBridge] Fixed caching in DoctrineType when "choices" or "preferred_choices" is passed
  [Form] Fixed the default value of "format" in DateType to DateType::DEFAULT_FORMAT if "widget" is not "single_text"
  [HttpFoundation] fixed a small regression

Conflicts:
	src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php
2012-12-11 11:41:51 +01:00
Fabien Potencier
7f3be5c49d fixed CS 2012-12-11 11:40:22 +01:00
Colin Frei
3241157114 [Validator] Trigger errors for deprecations 2012-12-06 21:23:28 +01:00
Fabien Potencier
e44141162e merged branch merk/card-scheme-validator (PR #5072)
This PR was merged into the master branch.

Commits
-------

e2aa79b Added CardScheme validator

Discussion
----------

[2.2] [Validator] Added CardScheme validator

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets:
Todo: Adding documentation
License of the code: MIT

CardScheme separated into its own PR from #4734 as requested by @fabpot

---------------------------------------------------------------------------

by fabpot at 2012-10-05T17:08:24Z

As far I understand the discussion on #4734, a few people seemed to be concerned about the usefulness of adding such a validator in Symfony core. Anyone wanting to give his point of view? Personally, I'm -0 on merging this.

---------------------------------------------------------------------------

by merk at 2012-10-05T22:27:05Z

There are circumstances where such logic is required, and it could be desired by the programmer to filter out valid cards for a payment gateway before sending a request.

However, this is already included in JMSPaymentBundle if people don't think it should be in core.
2012-10-27 18:56:40 +02:00
Fabien Potencier
67d9253127 Merge branch '2.1'
* 2.1:
  added missing use statment (closes #5825)
  Code cleanup
  [WebProfilerBundle] Fixed the use of nested macros
  Removed unused use statements.
  Nsdocblocks
  [ConfigDumpReference] avoid notice for variable nodes
  fixed fallback locale
  UniqueValidatorTest, Change message on assertions
  Documented removed _form_is_choice_group function

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Command/ConfigDumpReferenceCommand.php
	src/Symfony/Bundle/WebProfilerBundle/Profiler/TemplateManager.php
2012-10-24 17:41:27 +02:00
Mario A. Alvarez Garcia
f06432bc73 Code cleanup 2012-10-22 10:37:12 -04:00
Fabien Potencier
d6b5feb769 merged branch merk/financial-validators (PR #4734)
Commits
-------

6ff9b04 Add Luhn validator

Discussion
----------

[2.2] [Validator] Add Luhn validator

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets:
Todo: Adding documentation if this PR is blessed.
License of the code: MIT

I submitted these validators to JMSPaymentCoreBundle, because they're payment related, but @schmittjoh feels that they're a better choice for adding to Symfony2.

See schmittjoh/JMSPaymentCoreBundle#52 for the original submission.

---------------------------------------------------------------------------

by fabpot at 2012-07-04T05:19:42Z

I'm +1. @bschussek?

---------------------------------------------------------------------------

by shieldo at 2012-07-04T15:46:05Z

+1 in principle (certainly the Luhn check).  I did wonder whether Visa Electron should also be in there (although, that uses a subset of the Visa range, and the chance that you would be checking for a Visa Electron but *not* Visa at the same time is vanishingly small, so maybe this is unnecessary).

---------------------------------------------------------------------------

by merk at 2012-07-04T21:25:30Z

@shieldo I did have a concern about the Electron as well, but in the case of an online system doing payment processing, I'm not sure anyone would ever need to check if it was an Electron card or not.

---------------------------------------------------------------------------

by merk at 2012-07-04T21:28:25Z

We could expand the CardScheme stuff further with this list: http://en.wikipedia.org/wiki/List_of_Issuer_Identification_Numbers

Is there any point expanding the validator beyond financial services and into the other sevices listed?

---------------------------------------------------------------------------

by shieldo at 2012-07-04T21:37:41Z

@merk Yes, in actuality there are always going to be cases you can't trap with a regex - I'd say validation like this is working if it catches a majority of cases of invalid numbers, because in reality ones that get through will just fail downstream anyway. The purpose of the validator isn't to identify individual schemes for numbers, it's to do a sanity check across collections of schemes.

I don't really see any point expanding beyond financial services for a core validator (imho) - I'm not sure how stable some of this information is.

---------------------------------------------------------------------------

by Gator92 at 2012-07-11T00:45:50Z

+1 on the Luhn check (without the authorship, just give credit to Greg Knapp), the CardScheme, however, is not really required by most gateways these days, it's a better candidate for a custom constraint.

---------------------------------------------------------------------------

by merk at 2012-07-11T00:47:20Z

I dont object, but Greg's algorithm has a flaw for odd length creditcard numbers. The unit testing written by Infinite caught this.

---------------------------------------------------------------------------

by Gator92 at 2012-07-11T01:35:46Z

You're right, the Knapp algo is flawed and does not appear to work on odd-numbered length cards.

---------------------------------------------------------------------------

by fabpot at 2012-07-11T05:49:22Z

@merk: Can you open two new pull requests? One for each validator?

---------------------------------------------------------------------------

by merk at 2012-07-26T23:42:24Z

PR updated to remove CardScheme into its own PR.

Documentation PR added to symfony-docs
2012-09-18 15:45:05 +02:00
Andrey Chernykh
580d5a7c54 Typo fix 2012-09-17 11:30:49 +04:00
Rafael Dohms
7503ec954f Issue #5307: HTML regexp when match is false
When match is false the html5 validation regexp should be either inverted or not added.
Since we are in RC added a fix where this is not added, but marked a @todo so that this
can be revisited and we try to inverse the regexp instead.
2012-08-30 11:53:07 +02:00
Tim Nagel
6ff9b045c2 Add Luhn validator 2012-07-27 09:26:41 +10:00
Tim Nagel
e2aa79b885 Added CardScheme validator 2012-07-27 09:25:56 +10:00
Bernhard Schussek
9622703302 [Validator] Removed the Size constraint which did not exist in 2.0 2012-07-25 20:30:38 +02:00
Tobias Schultze
d85650d29f [Validator] remove return value in TrueValidator 2012-07-19 23:47:59 +03:00
Daniel Holmes
07992d352c [Validator] Added inheritDoc phpdoc for validate methods 2012-07-14 17:42:20 -07:00
Fabien Potencier
b3d1958209 merged branch bschussek/range_count_length (PR #4863)
Commits
-------

a92f80b [Validator] Added Length constraint and deprecated MinLength and MaxLength
83a3f75 [Validator] Deprecated the constraints Min and Max in favor of Range
0cdacee [Validator] Removed MinCount and MaxCount and replaced them by the constraint Count
741c147 [Validator] Renamed deprecated Size constraint to Range

Discussion
----------

[Validator] Reintroduced Range constraint and created Count and Length constraints

Bug fix: no
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -

After @Tobion's comment to #4851, this is the next try to streamline the constraints and reduce duplication of logic. The downside of the current MinLength/MaxLength and MinCount/MaxCount pairs is that they cannot output a fitting error message if a value should have an *exact* length/count. So this PR introduces

* Range (formerly Size) to replace Min/Max
* Count to replace MinCount/MaxCount
* Length to replace MinLength/MaxLength

Feedback is appreciated.

---------------------------------------------------------------------------

by Tobion at 2012-07-11T20:40:08Z

The `choice` constraint also cannot handle `min = max`. Or maybe we don't need these options on choice anymore as we can achieve the same with the new `count` constraint?!

---------------------------------------------------------------------------

by beberlei at 2012-07-12T08:59:44Z

Dude, nobody has time to fix the BC breaks you introduce :-)

---------------------------------------------------------------------------

by TomAdam at 2012-07-12T12:38:49Z

The changes to the `Size` validator yesterday broke my project, and I started rewriting to use `MaxLength / MinLength` validators today, until I spotted this. It would be good if this PR could have a reasonably high priority (whether or not it is accepted) as it will change how I fix my issues. I suspect a lot of people using the master branch will be in the same situation.
2012-07-12 17:54:51 +02:00
Bernhard Schussek
a92f80b815 [Validator] Added Length constraint and deprecated MinLength and MaxLength 2012-07-11 19:48:02 +02:00
Bernhard Schussek
83a3f75b2d [Validator] Deprecated the constraints Min and Max in favor of Range 2012-07-11 19:48:02 +02:00
Bernhard Schussek
0cdacee5be [Validator] Removed MinCount and MaxCount and replaced them by the constraint Count 2012-07-11 19:47:53 +02:00
Bernhard Schussek
741c147ce5 [Validator] Renamed deprecated Size constraint to Range 2012-07-11 18:38:44 +02:00
Bernhard Schussek
1fe39962fd [Validator] Improved error messages displayed when the Valid constraint is misused 2012-07-11 18:23:09 +02:00
Bernhard Schussek
0be602deef [Validator] Deprecated the Size constraint 2012-07-11 15:48:36 +02:00
Bernhard Schussek
d661837ec0 [Validator] Reverted the changes done to the Size constraint in 3a5e84f4a7 2012-07-11 11:43:13 +02:00
Bernhard Schussek
d84b689529 [Validator] Added the constraints MinCount and MaxCount 2012-07-11 11:43:13 +02:00
Bernhard Schussek
1a732e4983 [Validator] Removed the Range constraint as it duplicates functionality given in Min and Max 2012-07-11 11:43:13 +02:00
Fabien Potencier
a640a33a24 merged branch mythmakr/3686-min-max-validators-to-ignore-empty-string (PR #4188)
Commits
-------

f30bf36 Min/Max Validators ignore empty string
e9f5f13 Added test Min/Max validators should ignore empty string

Discussion
----------

[Validator] Min/Max validators should ignore empty string

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes ![Build status](https://secure.travis-ci.org/mythmakr/symfony.png?branch=3686-min-max-validators-to-ignore-empty-string)
Fixes the following tickets: #3686
Closed related PR #3687
Todo:
2012-07-10 10:21:58 +02:00
Bernhard Schussek
f093caa6ac [Form] Fixed invalid value passed to the constraint violation by the MinLength and MaxLength validators 2012-07-09 18:53:54 +02:00
Fabien Potencier
d100ffaf76 fixed CS 2012-07-09 14:54:20 +02:00
Sébastien Lavoie
6f9eda9582 [Form][Validator] Fixed generation of HTML5 pattern attribute based on Assert\Regex to remove delimiters.
[Validator] Added delimiter escaping to Validator\Constraints\Regex::getNonDelimitedPattern

[Form][Validator] Added htmlPattern option for Regex Validation.

[Validator] Fixed Validator\Constraints\Regex::getNonDelimitedPattern variable declarations

[Validator] Fixed tests for Regex htmlPattern option (instead of html_pattern)

[Validation] tweaked generation of pattern to include .* when not anchors are present. Also removed the exception and made getNonDelimitedPattern private
2012-07-04 13:23:21 -04:00
Bernhard Schussek
90516223ab Fixing email 2012-05-26 09:48:33 +02:00
Fabien Potencier
fc34ed1f86 merged branch craue/patch-20 (PR #4230)
Commits
-------

64101ab separate numeric value from suffix in File constraint's error message `$uploadIniSizeErrorMessage`
ff122d3 fixed tests
868d649 separate numeric values from suffixes in File constraint's error message `$maxSizeMessage`

Discussion
----------

[Validator] separate numeric values from suffixes in File validation error messages

This change allows me to locale-aware format the numbers in a form theme, i.e., to use a comma instead of a dot. If there's a better way without re-implementing the entire validator, let me know.

Such changes also allow for using a different separator than the usual space in translations.

---------------------------------------------------------------------------

by travisbot at 2012-05-08T19:14:16Z

This pull request [fails](http://travis-ci.org/symfony/symfony/builds/1278845) (merged f7c50098 into e54f4e46).

---------------------------------------------------------------------------

by travisbot at 2012-05-08T19:23:31Z

This pull request [passes](http://travis-ci.org/symfony/symfony/builds/1278940) (merged ce1cdafc into e54f4e46).

---------------------------------------------------------------------------

by r1pp3rj4ck at 2012-05-10T11:05:18Z

I don't know if there is a better way to do this, but I like the idea anyway.

---------------------------------------------------------------------------

by craue at 2012-05-11T14:18:52Z

Separated numeric values and suffixes for `$maxSizeMessage` and `$uploadIniSizeErrorMessage` now. Can't find any other relevant places (in other validators). Might be merged if accepted.

---------------------------------------------------------------------------

by travisbot at 2012-05-11T14:19:10Z

This pull request [passes](http://travis-ci.org/symfony/symfony/builds/1305246) (merged 438da7dd into e54f4e46).

---------------------------------------------------------------------------

by travisbot at 2012-05-11T21:22:25Z

This pull request [passes](http://travis-ci.org/symfony/symfony/builds/1309277) (merged 64101aba into dd0da03c).

---------------------------------------------------------------------------

by sstok at 2012-05-13T13:29:07Z

Using the NumberFormatter class would be an option, but that would also add a dependency when using Validation as stand-alone so using the {{ suffix }} is a good idea.

---------------------------------------------------------------------------

by craue at 2012-05-13T14:15:54Z

Using a NumberFormatter (if available) directly in the validator might indeed be a good option. In either case, having the numeric value separated from its suffix looks cleaner.

---------------------------------------------------------------------------

by craue at 2012-05-19T13:36:00Z

@fabpot: Would you merge this?
2012-05-22 12:14:01 +02:00
Bernhard Schussek
8f7e2f602c [Validator] Fixed: @Valid does not recurse the traversal of collections anymore by default 2012-05-22 09:29:53 +02:00
Antoine Hérault
3a5e84f4a7 [Validator] Add CollectionSize constraint
[Validator] Rename constraint Size to Range

[Validator] Rename constraint CollectionSize to Size

[Validator] Merge the SizeLength into the Size constraint

[Validator] Update messages in Size constraint for consistancy

[Validator] Add english and french translation for Size messages

[Validator] Tweak expected types for exceptions in SizeValidator

[Validator] Fix CS in SizeValidator

[Validator] Update the ValidatorTypeGuesser

[Validator] Tweak SizeValidator

[Validator] Update CHANGELOG

[Validator] Complete previous CHANGELOG updates

[Form] Update validator type guesser

[Validator] Pluralize collection size english messages

[Validator] Pluralize Size french messages
2012-05-16 13:15:05 +02:00
Christian Raue
64101aba0a separate numeric value from suffix in File constraint's error message $uploadIniSizeErrorMessage 2012-05-11 23:15:32 +02:00
Christian Raue
868d649d5c separate numeric values from suffixes in File constraint's error message $maxSizeMessage 2012-05-11 23:15:29 +02:00
Christopher Hall
f30bf36d85 Min/Max Validators ignore empty string
Fixes #3686
2012-05-02 16:28:47 -07:00
Fabien Potencier
26f933e7bd fixed CS 2012-05-01 15:23:48 +02:00
Fabien Potencier
a47a5aa52c merged branch umpirsky/issue-3379 (PR #3922)
Commits
-------

24bd8f4 Added missing dot to translation messages.
4bff221 Added missing dot to translation messages.
7454894 Added missing dot to translation messages.
6e90c50 Updated upgrade instructions.
7e21dd1 Added missing dot to translation messages.

Discussion
----------

Issue 3379

This should fix [issues 3379](https://github.com/symfony/symfony/issues/3379)

---------------------------------------------------------------------------

by stof at 2012-04-13T15:06:32Z

Your branch conflicts with master. Please rebase it

---------------------------------------------------------------------------

by umpirsky at 2012-04-13T19:11:54Z

@stof I tried to rebase, I'm not sure if I did everything right. Is it ok now?

---------------------------------------------------------------------------

by umpirsky at 2012-04-13T19:12:06Z

@stof I tried to rebase, I'm not sure if I did everything right. Is it ok now?

---------------------------------------------------------------------------

by mvrhov at 2012-04-13T19:19:34Z

IMHO no, because there are commits from other people. Did you follow the [instructions](http://symfony.com/doc/current/contributing/code/patches.html#id1)?

---------------------------------------------------------------------------

by stof at 2012-04-13T19:36:53Z

@mvrhov commits from others ?

---------------------------------------------------------------------------

by umpirsky at 2012-04-13T19:41:53Z

@stof There were some, so I reverted. Now I'm trying again following instructions from Symfony doc.

I come to this:

```
$ git push origin issue-3379
To git@github.com:umpirsky/symfony.git
 ! [rejected]        issue-3379 -> issue-3379 (non-fast-forward)
error: failed to push some refs to 'git@github.com:umpirsky/symfony.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.
```

And I don't know how to fix this. Any idea?

---------------------------------------------------------------------------

by stof at 2012-04-13T19:43:45Z

@umpirsky when you rebase, it is logical to need to force the push

---------------------------------------------------------------------------

by umpirsky at 2012-04-13T19:44:38Z

@stof I did `git push -f origin issue-3379`. I hope it's fixed now.

---------------------------------------------------------------------------

by maoueh at 2012-04-13T20:39:34Z

@umpirsky seems better than last time I checked :)

---------------------------------------------------------------------------

by umpirsky at 2012-04-13T20:43:04Z

@maoueh Is it good enough? :)

---------------------------------------------------------------------------

by maoueh at 2012-04-13T20:51:27Z

@umpirsky At least, the rebase seems good enough :D As for the subject of the PR, I don't pronounce myself ;)

---------------------------------------------------------------------------

by vicb at 2012-04-13T20:53:23Z

you should probably squash the commits
2012-04-18 11:57:20 +02:00
Bernhard Schussek
6336d9314e [Validator] Renamed ConstraintValidatorInterface::isValid() to validate() because of the lack of a return value 2012-04-17 16:46:43 +02:00
Bernhard Schussek
46f0393f70 [Validator] Removed return value from ConstraintValidatorInterface::isValid() 2012-04-17 16:46:43 +02:00
Sasa Stamenkovic
4bff221e7b Added missing dot to translation messages. 2012-04-13 21:43:24 +02:00
Fabien Potencier
cc833b13b6 merged branch hason/validator (PR #552)
Commits
-------

f9a486e [Validator] Added support for pluralization of the SizeLengthValidator
c0715f1 [FrameworkBundle], [TwigBundle] added support for form error message pluralization
7a6376e [Form] added support for error message pluralization
345981f [Validator] added support for plural messages

Discussion
----------

[Validator] Added support for plural error messages

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Todo: create translations for en and update others (FrameworkBundle)

[![Build Status](https://secure.travis-ci.org/hason/symfony.png?branch=validator)](http://travis-ci.org/hason/symfony)

---------------------------------------------------------------------------

by fabpot at 2011-05-14T20:41:01Z

@bschussek: What's your opinion?

---------------------------------------------------------------------------

by stof at 2011-09-04T13:14:29Z

@hason could you rebase your branch on top of master and update the PR ?

You also need to change the messages in the constraint that uses the pluralization to a pluralized format.

---------------------------------------------------------------------------

by stof at 2011-10-16T18:06:22Z

@hason ping

---------------------------------------------------------------------------

by stof at 2011-11-11T14:58:19Z

@hason ping again

---------------------------------------------------------------------------

by stof at 2011-12-12T20:39:10Z

@hason ping again. Can you update your PR ?

---------------------------------------------------------------------------

by hason at 2011-12-12T21:29:14Z

@stof I hope that I will update PR this week.

---------------------------------------------------------------------------

by bschussek at 2012-01-15T19:07:32Z

Looks good to me.

---------------------------------------------------------------------------

by canni at 2012-02-02T17:28:54Z

@hason can you update this PR and squash commits, it conflicts with current master

---------------------------------------------------------------------------

by hason at 2012-02-09T07:21:41Z

@stof, @canni Rebased.

What is the best solution for the translation of messages?

1. Change messages in the classes and all xliff files?
2. Keep messages in the classes and change all xliff files?

---------------------------------------------------------------------------

by stof at 2012-02-09T08:19:41Z

The constraints contain the en message so you will need to modify them to update the message

---------------------------------------------------------------------------

by hason at 2012-02-09T08:55:55Z

I prefer second option. The Validator component should be decoupled from the Translation component. The constraints contain the en message which is also the key for Translation component. We should create validators.en.xlf in the FrameworkBundle for en message. I think that this is better solution. What do you think?

---------------------------------------------------------------------------

by stof at 2012-04-04T02:22:02Z

@hason Please rebase your branch. It conflicts with master because of the move of the tests

@fabpot ping
2012-04-11 16:12:39 +02:00
Konrad Mohrfeldt
f617e02a96 [Validator] added less-strict email host verification
New checkHost attribute in email constraint will
make the validator check for only one of MX, A or AAAA
DNS resource records to verify it as a valid
email address.
2012-04-06 02:33:41 +02:00
Rafael Dohms
836d12b660 Fixing typo. 2012-03-19 23:29:43 +01:00
Rafael Dohms
ac2a187b4d Improved feedback for Upload Validator to cover all PHP error states.
This way we don't get a unclear "upload error" message unless its something completely unexpected.
2012-03-19 14:37:25 +01:00
Martin Hasoň
f9a486edde [Validator] Added support for pluralization of the SizeLengthValidator 2012-02-09 07:57:22 +01:00
Martin Hason
345981f6b6 [Validator] added support for plural messages 2012-02-09 07:57:17 +01:00
Sebastian Hörl
e0d28284fc [Validator] GroupSequenceProvider tests improved, configuration changed 2012-02-02 20:27:50 +01:00
Sebastian Hörl
c3b04a3336 [Validator] Changed GroupSequenceProvider implementation 2012-02-02 20:27:50 +01:00
Sebastian Hörl
6c4455fef7 [Validator] Added GroupSequenceProvider 2012-02-02 20:27:49 +01:00
Bernhard Schussek
2e4ebe444f [Validator] Renamed methods addViolationAtRelativePath() and getAbsolutePropertyPath() in ExecutionContext 2012-02-02 10:13:41 +01:00
Bernhard Schussek
9153f0e569 [Validator] Deprecated ConstraintValidator methods setMessage(), getMessageTemplate() and getMessageParameters()
Had to refactor the validation tests at the same time and fixed various small bugs while doing so.
2012-02-01 14:03:13 +01:00
Bernhard Schussek
a30a679135 [Validator] Made ExecutionContext immutable and introduced new class GlobalExecutionContext
A new ExecutionContext is now created everytime that GraphWalker::walkConstraint() is
launched. Because of this, a validator B launched from within a validator A can't break
A anymore by changing the context.

Because we have a new ExecutionContext for every constraint validation, there is no point
in modifying its state anymore. Because of this it is now immutable.
2012-01-31 21:35:48 +01:00
Bernhard Schussek
fe85bbdb06 [Validator] Simplified ExecutionContext::addViolation(), added ExecutionContext::addViolationAt() 2012-01-31 18:42:14 +01:00
Bernhard Schussek
a103c28b08 [Validator] The Collection constraint adds "missing" and "extra" errors to the individual fields now 2012-01-30 20:57:20 +01:00
Fabien Potencier
e8f9a55012 fixed CS 2012-01-17 11:23:46 +01:00
Bernhard Schussek
509c7bfb5b [Validator] Moved Optional and Required constraints to dedicated sub namespace. 2012-01-16 11:30:56 +01:00
Bernhard Schussek
bf5901850a [Validator] Removed @api-tag from Optional and Required constraint, since these two are new. 2012-01-16 11:30:56 +01:00
Bernhard Schussek
6641f3e231 [Validator] Added constraints Optional and Required for the CollectionValidator 2012-01-16 11:30:56 +01:00
Fabien Potencier
5fa0f2d92b merged 2.0 2012-01-16 07:44:08 +01:00
Dariusz Górecki
253eebad88 [BugFix][Validator] Fix for PHP incosistent behaviour of ArrayAccess
Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #2779
Todo: -

Because PHP function `array_key_exists` is buggy, it works great with native
PHP `ArrayObject` instances, but hand written implementations of `ArrayAccess`
and `Traversable` objects will fail to work with `CollectionValidator`
2012-01-10 11:06:00 +01:00
Fabien Potencier
5d6a7d35b0 merged 2.0 2011-12-18 14:48:17 +01:00
Fabien Potencier
4316595dbb fixed CS 2011-12-18 14:42:59 +01:00
Fabien Potencier
142cef21bb merged 2.0 2011-12-13 16:12:53 +01:00
Fabien Potencier
e3421a0b1d [DoctrineBridge] fixed some CS 2011-12-13 10:22:12 +01:00
Fabien Potencier
b8e0f411d7 merged 2.0 2011-11-11 23:22:38 +01:00
Fabien Potencier
fb0fffe6db [Validator] fixed a unit test for PHP 5.4 (closes #2585) 2011-11-11 23:22:12 +01:00
Joseph Rouff
fb0379d3b7 Fix some CheckStyle violations on Components.
On casts, Control signature etc.
2011-11-11 20:46:32 +01:00
Fabien Potencier
04a1deace0 updated CHANGELOG for 2.1 2011-11-01 15:30:43 +01:00
Benjamin Dulau
05a4e9d386 [Validators][Type] Added support for ctype_* functions + tests 2011-11-01 13:01:54 +01:00
Fabien Potencier
d34d50f0b0 fixed CS 2011-10-29 12:05:45 +02:00
Fabien Potencier
dec43f5539 merged 2.0 2011-10-29 12:01:39 +02:00
Fabien Potencier
851eb73778 removed unused use statements 2011-10-29 11:56:30 +02:00
Hugo Hamon
73312ab5e9 [Validator] The Type constraint now accepts the "Boolean" type instead of "boolean".
Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
2011-10-11 12:27:45 +02:00
Fabien Potencier
41a55ba8d7 Merge branch '2.0'
* 2.0:
  [Validator] added support for grapheme_strlen when mbstring is not installed but intl is installed
  removed separator of choice widget when the separator is null
2011-09-29 16:17:23 +02:00
Fabien Potencier
1cf3e91365 [Validator] added support for grapheme_strlen when mbstring is not installed but intl is installed 2011-09-29 16:17:19 +02:00
Fabien Potencier
600b8ef5af [Validator] added support for grapheme_strlen when mbstring is not installed but intl is installed 2011-09-29 16:15:57 +02:00
Fabien Potencier
d6c4bfb001 added a Size validator 2011-09-29 15:56:37 +02:00
Fabien Potencier
b9ba117208 [Validator] added a SizeLength validator 2011-09-29 15:45:52 +02:00
jdreesen
1134c1a1d8 [Validator] Fixed typo in Image constraint 2011-09-06 16:59:08 +02:00
Arnout Boks
522addebe5 [Validator] Fixed typo in Image constraint 2011-09-06 14:34:25 +02:00
Benjamin Dulau
89f4791704 Fixed CS 2011-09-04 19:10:51 +02:00
Benjamin Dulau
a348efec19 Removed trailing whitespaces 2011-09-04 18:12:05 +02:00
Benjamin Dulau
6ad83e7970 Updated according to PR review 2011-09-04 17:45:25 +02:00
Benjamin Dulau
a5a2dfaaa6 [ImageValidator] Added dedicated ImageValidator class with min width, max width, min height and max height validations 2011-09-04 17:28:46 +02:00
Fabien Potencier
e7b2d2d659 merged 2.0 branch 2011-09-04 09:28:37 +02:00
Fabien Potencier
adb7291b67 Merge branch 'EvanK-patch-1' into 2.0
* EvanK-patch-1:
  Per the [documentation][1], the `NotBlank` constraint should be using the `empty` language construct, otherwise it will not trigger on, for example, a boolean false from an unchecked checkbox field.
2011-09-02 09:39:11 +02:00
Evan Kaufman
639513a67a Per the [documentation][1], the NotBlank constraint should be using the empty language construct, otherwise it will not trigger on, for example, a boolean false from an unchecked checkbox field.
[1]: http://symfony.com/doc/2.0/reference/constraints/NotBlank.html
2011-09-02 09:37:48 +02:00
Fabien Potencier
74a77af694 merged branch stealth35/mime_wildcard (PR #2075)
Commits
-------

5a47010 [Validator] FileValidator allow MIME with wildcard

Discussion
----------

[Validator] FileValidator allow MIME with wildcard

 - Allow MIME with wildcard like `image/*`
 - Image constraint use wildcard mime

(squash failed sorry #2068)
2011-09-01 16:19:23 +02:00
stealth35
5a470103f0 [Validator] FileValidator allow MIME with wildcard 2011-09-01 16:10:16 +02:00
Fabien Potencier
0eae562cb2 converted file_exists calls to either is_file or is_dir where it makes sense 2011-08-29 15:28:26 +02:00
Fabien Potencier
ea800c2e51 merged branch hidenorigoto/validator_pattern_late_static_bind (PR #1914)
Commits
-------

275da0d [Validator] changed 'self' to 'static' for child class to override pattern constant

Discussion
----------

[Validator] change 'self::' to 'static::' for PATTERN constant overridable in child classes

In TimeValidator and UrlValidator, PATTERN constant is not used with late static bind(static::) while DateValidator supports it.
2011-08-19 14:11:41 +02:00
Hugo Hamon
d7c93cacd0 [Validator] fixed phpdoc. 2011-08-10 16:11:31 +02:00
hidenorigoto
275da0d478 [Validator] changed 'self' to 'static' for child class to override pattern constant 2011-08-07 15:48:14 +09:00
Fabien Potencier
b36c002fa4 [Validator] tagged the public @api 2011-07-20 10:37:57 +02:00
Deni
0f328d228b [Validator] Fixed using the strict option in the choice validator. 2011-07-16 21:16:21 +04:00
Fabien Potencier
fe6f23163e removed unused use statements 2011-07-12 17:58:39 +02:00
Fabien Potencier
88d915d175 [Validator] fixed Min and Max validator when the input value is not a number (now return an error message instead of an exception which does not make sense in this context) 2011-07-12 17:40:02 +02:00
Fabien Potencier
4a7b7597d8 merged branch marcw/validator-choice (PR #1577)
Commits
-------

df57e0f [Validator] Added strict option to ChoiceConstraint.

Discussion
----------

[Validator] Added strict option to ChoiceConstraint.

By default, ChoiceValidator was ensuring strict type when checking if value is present in choices. This behavior is a problem when you want to validate against integer values. As all data you will receive from a request will be typed as a string, you won't be able to validate these numeric values.
This patch solves this.

In order for being nice to developers, I've set "strict" to false by default.
2011-07-09 09:19:08 +02:00
marc.weistroff
df57e0fe9a [Validator] Added strict option to ChoiceConstraint. 2011-07-07 15:11:36 +02:00
Victor Berchet
6786e81f61 [HttpFoundation] code factorization in UploadedFile 2011-07-07 10:47:10 +02:00
Fabien Potencier
b9adab9796 merged branch vicb/form/ini-max-size (PR #1542)
Commits
-------

d58ba34 [Validator] Consider the ini directive 'upload_max_filesize' while validating an uploaded file (fixes GH-1441)

Discussion
----------

[Validator] FileValidator support for uploaded files

[Validator] Consider the ini directive 'upload_max_filesize' while validating an uploaded file (fixes GH-1441)

Added validator messages should get translated in all the available languages.
2011-07-06 14:22:15 +02:00
Victor Berchet
d58ba34246 [Validator] Consider the ini directive 'upload_max_filesize' while validating an uploaded file (fixes GH-1441) 2011-07-05 20:05:50 +02:00
Fabien Potencier
cf1714c9db [Validator] fixed non-anchored regex 2011-07-05 19:49:32 +02:00
Johannes Schmitt
efcb435268 updated to doctrine changes 2011-06-30 12:03:19 +02:00
Fabien Potencier
f57e1d3e10 fixed CS 2011-06-23 14:07:53 +02:00
Fabien Potencier
482492625d [Validator] restricted the True and False validator accepted values (the notion of True/False in PHP alone is too large) 2011-06-23 08:49:04 +02:00
Jordi Boggiano
159fc0edf0 [Validator] Added symbols to IDNs validation 2011-06-20 13:52:36 +02:00
Jordi Boggiano
c827faf694 [Validator] Add support for IDNs and custom TLDs 2011-06-20 12:57:46 +02:00
Fabien Potencier
c5223bbcd1 merged branch vicb/file (PR #1317)
Commits
-------

9d6357c [HttpFoundation] Document the changes to the File classes
136b80a [HttFoundation] Add File::getExtension() as \SplFileInfo::getExtension() was introduced in PHP 5.3.6
38b3b74 [HttpKernel] Fix and test previous commit
ac0c00c [HttpFoundation] Make File extends \SplFileInfo

Discussion
----------

[HttpFoundation] Make File extends \SplFileInfo

This is a rebased version of [PR 674](https://github.com/symfony/symfony/pull/674).

  * File: The API has changed (now extends \SplFileInfo),
  * File: move() creates the target directory when it does not exist
  * UploadedFile: introduction of getClientXXX() methods (for Size, OriginalName, MimeType)

If this PR does not get merged UploadedFile should at least be fixed: [Client.php](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpKernel/Client.php#L124) relies on a last parameter which is no more defined and which is used to bypass [move_uploaded_file()](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/File/UploadedFile.php#L155) in test mode.

If this could be merged, I'll detail the changes in UPDATE.md

---------------------------------------------------------------------------

by fabpot at 2011/06/14 08:20:59 -0700

I'll merge it. Can you update the UPDATE file?

---------------------------------------------------------------------------

by vicb at 2011/06/14 09:24:01 -0700

done
2011-06-15 08:57:16 +02:00
Fabien Potencier
a7c1ff8558 merged branch ajessu/time_validator (PR #1254)
# Commits

ca52a04 [Validator] Allow DateTime objects as valid Times

# Discussion

## [Validator] Allow DateTime objects as valid Times

Also added tests for `DateTime` objects as valid on `Date` and `Time` constraints.

I didn't include the test for the `DateTime` constraint, as it's already included in this PR:

https://github.com/symfony/symfony/pull/1085

---------------------------------------------------------------------------

## fabpot @ 2011/06/09 09:07:21 -0700

I don't think it makes sense to use a \DateTime instance to represent a Time.

---------------------------------------------------------------------------

## ajessu @ 2011/06/09 09:33:20 -0700

If I have an entity with a doctrine type `Time`:

    Time (DateTime instance where only H:i:s get persisted)

```php
<?php
    /**
     * @ORM\Column(type="time")
     * @Assert\Time()
     */
    protected $startTime;
```

and I create a form out of this Entity, a `DateTime` object is passed when the form is submitted.

This generates an `UnexpectedTypeException`.

I just made this change to match the `Date` validator with the doctrine type `Date`, which also shares this behavior:
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Validator/Constraints/DateValidator.php#L28

    Date (DateTime instance where only Y-m-d get persisted)
2011-06-14 12:08:41 +02:00
Victor Berchet
ac0c00c6e8 [HttpFoundation] Make File extends \SplFileInfo 2011-06-14 10:47:04 +02:00
Victor Berchet
87ca9f3a52 [Validation] some tweaks and phpDoc 2011-06-14 09:40:26 +02:00
Joseph Bielawski
6bb9075b35 Remove unused code from DateTime constraint 2011-06-11 01:18:16 -07:00
Albert Jessurum
ca52a04f5e [Validator] Allow DateTime objects as valid Times 2011-06-09 15:47:51 +02:00
Fabien Potencier
1aabc5da64 fixed CS 2011-06-08 12:16:48 +02:00
Fabien Potencier
699ecfcf90 Merge remote branch 'stloyd/validators_refactoring'
* stloyd/validators_refactoring:
  Refactor validators constraints: - remove need for defining "getTargets()" method as 95% of validators use same one - replace abstract "Constraint::getTargets()" with one that use 95% of validators - add additional tests for "Constraint::getTargets()" method - remove unused "use" statement in Constraint\Valid
2011-05-26 14:58:24 +02:00
Fabien Potencier
66064cc8fc fixed CS 2011-05-25 11:35:29 +02:00