bug #13338 Validator deprecation fixes (fabpot)
This PR was merged into the 2.7 branch. Discussion ---------- Validator deprecation fixes | Q | A | ------------- | --- | Bug fix? | no | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | n/a | License | MIT | Doc PR | n/a Commits -------a34220e
[Validator] always use the lazy loading metadata factory818ca58
[Validator] removed usage of deprecated getMessageParameters() and getMessagePluralization() in unit testsc6f1f69
[Validator] fixed deprecation notices for BuildViolation() calls in constraintsfb3f9d2
[Validator] fixed usage of deprecate Validator features91606b5
[Validator] removed obsolete code5aa44ee
removed the Validator BC layer for PHP < 5.3.9a4139c0
removed code for PHP < 5.3.96dc8979
bumped min PHP version to 5.3.9
This commit is contained in:
commit
43c05650c6
@ -2,12 +2,11 @@ language: php
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- php: 5.3.3
|
||||
- php: 5.3
|
||||
- php: 5.4
|
||||
- php: 5.5
|
||||
- php: 5.6
|
||||
- php: 5.3.3
|
||||
- php: 5.3
|
||||
env: components=low
|
||||
- php: 5.6
|
||||
env: components=high
|
||||
|
@ -44,7 +44,11 @@ class DeprecationErrorHandler
|
||||
$class = isset($trace[$i]['object']) ? get_class($trace[$i]['object']) : $trace[$i]['class'];
|
||||
$method = $trace[$i]['function'];
|
||||
|
||||
$type = 0 === strpos($method, 'testLegacy') || 0 === strpos($method, 'provideLegacy') || strpos($class, '\Legacy') ? 'legacy' : 'remaining';
|
||||
$type =
|
||||
0 === strpos($method, 'testLegacy')
|
||||
|| 0 === strpos($method, 'provideLegacy')
|
||||
|| strpos($class, '\Legacy')
|
||||
? 'legacy' : 'remaining';
|
||||
|
||||
if ('legacy' === $type && 0 === (error_reporting() & E_USER_DEPRECATED)) {
|
||||
@++$deprecations[$type]['Silenced']['count'];
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"doctrine/common": "~2.3",
|
||||
"twig/twig": "~1.12,>=1.12.3",
|
||||
"psr/log": "~1.0"
|
||||
|
@ -1,26 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Bridge\Doctrine\Tests\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Validation;
|
||||
|
||||
/**
|
||||
* @since 2.5.4
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class LegacyUniqueEntityValidator2Dot4ApiTest extends UniqueEntityValidatorTest
|
||||
{
|
||||
protected function getApiVersion()
|
||||
{
|
||||
return Validation::API_VERSION_2_4;
|
||||
}
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
namespace Symfony\Bridge\Doctrine\Validator\Constraints;
|
||||
|
||||
use Doctrine\Common\Persistence\ManagerRegistry;
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
@ -133,9 +134,16 @@ class UniqueEntityValidator extends ConstraintValidator
|
||||
|
||||
$errorPath = null !== $constraint->errorPath ? $constraint->errorPath : $fields[0];
|
||||
|
||||
$this->buildViolation($constraint->message)
|
||||
->atPath($errorPath)
|
||||
->setInvalidValue($criteria[$fields[0]])
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->atPath($errorPath)
|
||||
->setInvalidValue($criteria[$fields[0]])
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->atPath($errorPath)
|
||||
->setInvalidValue($criteria[$fields[0]])
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"doctrine/common": "~2.3"
|
||||
},
|
||||
"require-dev": {
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"monolog/monolog": "~1.11"
|
||||
},
|
||||
"require-dev": {
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/http-foundation": "~2.0,>=2.0.5|~3.0.0",
|
||||
"symfony/http-kernel": "~2.0,>=2.0.5|~3.0.0",
|
||||
"symfony/form": "~2.3,>=2.3.8|~3.0.0",
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/dependency-injection": "~2.3|~3.0.0",
|
||||
"ocramius/proxy-manager": "~0.4|~1.0"
|
||||
},
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"swiftmailer/swiftmailer": ">=4.2.0,<6.0-dev"
|
||||
},
|
||||
"suggest": {
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/security-csrf": "~2.6|~3.0.0",
|
||||
"twig/twig": "~1.13,>=1.13.1"
|
||||
},
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/http-kernel": "~2.6|~3.0.0",
|
||||
"symfony/twig-bridge": "~2.6|~3.0.0",
|
||||
"symfony/var-dumper": "~2.6|~3.0.0"
|
||||
|
@ -503,9 +503,7 @@ class Configuration implements ConfigurationInterface
|
||||
// API version already during container configuration
|
||||
// (to adjust service classes etc.)
|
||||
// See https://github.com/symfony/symfony/issues/11580
|
||||
$v['validation']['api'] = PHP_VERSION_ID < 50309
|
||||
? '2.4'
|
||||
: '2.5-bc';
|
||||
$v['validation']['api'] = '2.5-bc';
|
||||
|
||||
return $v;
|
||||
})
|
||||
|
@ -744,19 +744,13 @@ class FrameworkExtension extends Extension
|
||||
$validatorBuilder->addMethodCall('setMetadataCache', array(new Reference($config['cache'])));
|
||||
}
|
||||
|
||||
switch ($config['api']) {
|
||||
case '2.4':
|
||||
$api = Validation::API_VERSION_2_4;
|
||||
break;
|
||||
case '2.5':
|
||||
$api = Validation::API_VERSION_2_5;
|
||||
// the validation class needs to be changed only for the 2.5 api since the deprecated interface is
|
||||
// set as the default interface
|
||||
$container->setParameter('validator.class', 'Symfony\Component\Validator\Validator\ValidatorInterface');
|
||||
break;
|
||||
default:
|
||||
$api = Validation::API_VERSION_2_5_BC;
|
||||
break;
|
||||
if ('2.5' === $config['api']) {
|
||||
$api = Validation::API_VERSION_2_5;
|
||||
} else {
|
||||
// 2.4 is now the same as 2.5 BC
|
||||
$api = Validation::API_VERSION_2_5_BC;
|
||||
// the validation class needs to be changed for BC
|
||||
$container->setParameter('validator.class', 'Symfony\Component\Validator\ValidatorInterface');
|
||||
}
|
||||
|
||||
$validatorBuilder->addMethodCall('setApiVersion', array($api));
|
||||
|
@ -5,7 +5,7 @@
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
|
||||
|
||||
<parameters>
|
||||
<parameter key="validator.class">Symfony\Component\Validator\ValidatorInterface</parameter>
|
||||
<parameter key="validator.class">Symfony\Component\Validator\Validator\ValidatorInterface</parameter>
|
||||
<parameter key="validator.builder.class">Symfony\Component\Validator\ValidatorBuilderInterface</parameter>
|
||||
<parameter key="validator.builder.factory.class">Symfony\Component\Validator\Validation</parameter>
|
||||
<parameter key="validator.mapping.cache.apc.class">Symfony\Component\Validator\Mapping\Cache\ApcCache</parameter>
|
||||
|
@ -131,7 +131,7 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
|
||||
'static_method' => array('loadValidatorMetadata'),
|
||||
'translation_domain' => 'validators',
|
||||
'strict_email' => false,
|
||||
'api' => PHP_VERSION_ID < 50309 ? '2.4' : '2.5-bc',
|
||||
'api' => '2.5-bc',
|
||||
),
|
||||
'annotations' => array(
|
||||
'cache' => 'file',
|
||||
|
@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
$container->loadFromExtension('framework', array(
|
||||
'secret' => 's3cr3t',
|
||||
'validation' => array(
|
||||
'enabled' => true,
|
||||
'api' => '2.4',
|
||||
),
|
||||
));
|
@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" ?>
|
||||
|
||||
<container xmlns="http://symfony.com/schema/dic/services"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:framework="http://symfony.com/schema/dic/symfony"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
|
||||
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
|
||||
|
||||
<framework:config secret="s3cr3t">
|
||||
<framework:validation enabled="true" api="2.4" />
|
||||
</framework:config>
|
||||
</container>
|
@ -1,5 +0,0 @@
|
||||
framework:
|
||||
secret: s3cr3t
|
||||
validation:
|
||||
enabled: true
|
||||
api: 2.4
|
@ -294,12 +294,7 @@ abstract class FrameworkExtensionTest extends TestCase
|
||||
$this->assertSame('setMetadataCache', $calls[5][0]);
|
||||
$this->assertEquals(array(new Reference('validator.mapping.cache.apc')), $calls[5][1]);
|
||||
$this->assertSame('setApiVersion', $calls[6][0]);
|
||||
|
||||
if (PHP_VERSION_ID < 50309) {
|
||||
$this->assertEquals(array(Validation::API_VERSION_2_4), $calls[6][1]);
|
||||
} else {
|
||||
$this->assertEquals(array(Validation::API_VERSION_2_5_BC), $calls[6][1]);
|
||||
}
|
||||
$this->assertEquals(array(Validation::API_VERSION_2_5_BC), $calls[6][1]);
|
||||
}
|
||||
|
||||
public function testFullyConfiguredValidationService()
|
||||
@ -387,22 +382,6 @@ abstract class FrameworkExtensionTest extends TestCase
|
||||
// no cache, no annotations, no static methods
|
||||
}
|
||||
|
||||
public function testValidation2Dot4Api()
|
||||
{
|
||||
$container = $this->createContainerFromFile('validation_2_4_api');
|
||||
|
||||
$calls = $container->getDefinition('validator.builder')->getMethodCalls();
|
||||
|
||||
$this->assertCount(6, $calls);
|
||||
$this->assertSame('addXmlMappings', $calls[3][0]);
|
||||
$this->assertSame('addMethodMapping', $calls[4][0]);
|
||||
$this->assertSame(array('loadValidatorMetadata'), $calls[4][1]);
|
||||
$this->assertSame('setApiVersion', $calls[5][0]);
|
||||
$this->assertSame(array(Validation::API_VERSION_2_4), $calls[5][1]);
|
||||
$this->assertSame('Symfony\Component\Validator\ValidatorInterface', $container->getParameter('validator.class'));
|
||||
// no cache, no annotations
|
||||
}
|
||||
|
||||
public function testValidation2Dot5Api()
|
||||
{
|
||||
$container = $this->createContainerFromFile('validation_2_5_api');
|
||||
@ -448,11 +427,7 @@ abstract class FrameworkExtensionTest extends TestCase
|
||||
$this->assertSame('setApiVersion', $calls[5][0]);
|
||||
// no cache, no annotations
|
||||
|
||||
if (PHP_VERSION_ID < 50309) {
|
||||
$this->assertSame(array(Validation::API_VERSION_2_4), $calls[5][1]);
|
||||
} else {
|
||||
$this->assertSame(array(Validation::API_VERSION_2_5_BC), $calls[5][1]);
|
||||
}
|
||||
$this->assertSame(array(Validation::API_VERSION_2_5_BC), $calls[5][1]);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -472,11 +447,7 @@ abstract class FrameworkExtensionTest extends TestCase
|
||||
$this->assertSame('setApiVersion', $calls[5][0]);
|
||||
// no cache, no annotations
|
||||
|
||||
if (PHP_VERSION_ID < 50309) {
|
||||
$this->assertSame(array(Validation::API_VERSION_2_4), $calls[5][1]);
|
||||
} else {
|
||||
$this->assertSame(array(Validation::API_VERSION_2_5_BC), $calls[5][1]);
|
||||
}
|
||||
$this->assertSame(array(Validation::API_VERSION_2_5_BC), $calls[5][1]);
|
||||
}
|
||||
|
||||
public function testFormsCanBeEnabledWithoutCsrfProtection()
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/dependency-injection" : "~2.6,>=2.6.2",
|
||||
"symfony/config" : "~2.4",
|
||||
"symfony/event-dispatcher": "~2.5|~3.0.0",
|
||||
|
@ -30,10 +30,6 @@ class SecurityRoutingIntegrationTest extends WebTestCase
|
||||
*/
|
||||
public function testRoutingErrorIsExposedWhenNotProtected($config)
|
||||
{
|
||||
if ('\\' === DIRECTORY_SEPARATOR && PHP_VERSION_ID < 50309) {
|
||||
$this->markTestSkipped('Test hangs on Windows & PHP due to https://bugs.php.net/bug.php?id=60120 fixed in http://svn.php.net/viewvc?view=revision&revision=318366');
|
||||
}
|
||||
|
||||
$client = $this->createClient(array('test_case' => 'StandardFormLogin', 'root_config' => $config));
|
||||
$client->insulate();
|
||||
$client->request('GET', '/unprotected_resource');
|
||||
@ -46,10 +42,6 @@ class SecurityRoutingIntegrationTest extends WebTestCase
|
||||
*/
|
||||
public function testRoutingErrorIsNotExposedForProtectedResourceWhenLoggedInWithInsufficientRights($config)
|
||||
{
|
||||
if ('\\' === DIRECTORY_SEPARATOR && PHP_VERSION_ID < 50309) {
|
||||
$this->markTestSkipped('Test hangs on Windows & PHP due to https://bugs.php.net/bug.php?id=60120 fixed in http://svn.php.net/viewvc?view=revision&revision=318366');
|
||||
}
|
||||
|
||||
$client = $this->createClient(array('test_case' => 'StandardFormLogin', 'root_config' => $config));
|
||||
$client->insulate();
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/security": "~2.7|~3.0.0",
|
||||
"symfony/http-kernel": "~2.2|~3.0.0"
|
||||
},
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/twig-bridge": "~2.6|~3.0.0",
|
||||
"symfony/http-foundation": "~2.5|~3.0.0",
|
||||
"symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2|~3.0.0"
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/http-kernel": "~2.4|~3.0.0",
|
||||
"symfony/routing": "~2.2|~3.0.0",
|
||||
"symfony/twig-bridge": "~2.2|~3.0.0"
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/dom-crawler": "~2.0,>=2.0.5|~3.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
|
@ -17,7 +17,7 @@
|
||||
],
|
||||
"minimum-stability": "dev",
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/finder": "~2.0,>=2.0.5|~3.0.0"
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/filesystem": "~2.3|~3.0.0"
|
||||
},
|
||||
"autoload": {
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/event-dispatcher": "~2.1|~3.0.0",
|
||||
|
@ -20,7 +20,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": { "Symfony\\Component\\CssSelector\\": "" }
|
||||
|
@ -401,7 +401,7 @@ class ErrorHandler
|
||||
$e['stack'] = debug_backtrace(true); // Provide object
|
||||
}
|
||||
} elseif ($trace) {
|
||||
$e['stack'] = debug_backtrace(PHP_VERSION_ID >= 50306 ? DEBUG_BACKTRACE_IGNORE_ARGS : false);
|
||||
$e['stack'] = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"psr/log": "~1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/yaml": "~2.1|~3.0.0",
|
||||
|
@ -581,15 +581,7 @@ class Crawler extends \SplObjectStorage
|
||||
|
||||
$html = '';
|
||||
foreach ($this->getNode(0)->childNodes as $child) {
|
||||
if (PHP_VERSION_ID >= 50306) {
|
||||
// node parameter was added to the saveHTML() method in PHP 5.3.6
|
||||
// @see http://php.net/manual/en/domdocument.savehtml.php
|
||||
$html .= $child->ownerDocument->saveHTML($child);
|
||||
} else {
|
||||
$document = new \DOMDocument('1.0', 'UTF-8');
|
||||
$document->appendChild($document->importNode($child, true));
|
||||
$html .= rtrim($document->saveHTML());
|
||||
}
|
||||
$html .= $child->ownerDocument->saveHTML($child);
|
||||
}
|
||||
|
||||
return $html;
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/css-selector": "~2.3|~3.0.0"
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/dependency-injection": "~2.6|~3.0.0",
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": { "Symfony\\Component\\ExpressionLanguage\\": "" }
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": { "Symfony\\Component\\Filesystem\\": "" }
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": { "Symfony\\Component\\Finder\\": "" }
|
||||
|
@ -61,17 +61,13 @@ class DateTimeToStringTransformer extends BaseDateTimeTransformer
|
||||
*
|
||||
* @throws UnexpectedTypeException if a timezone is not a string
|
||||
*/
|
||||
public function __construct($inputTimezone = null, $outputTimezone = null, $format = 'Y-m-d H:i:s', $parseUsingPipe = null)
|
||||
public function __construct($inputTimezone = null, $outputTimezone = null, $format = 'Y-m-d H:i:s', $parseUsingPipe = true)
|
||||
{
|
||||
parent::__construct($inputTimezone, $outputTimezone);
|
||||
|
||||
$this->generateFormat = $this->parseFormat = $format;
|
||||
|
||||
// The pipe in the parser pattern only works as of PHP 5.3.7
|
||||
// See http://bugs.php.net/54316
|
||||
$this->parseUsingPipe = null === $parseUsingPipe
|
||||
? PHP_VERSION_ID >= 50307
|
||||
: $parseUsingPipe;
|
||||
$this->parseUsingPipe = $parseUsingPipe || null === $parseUsingPipe;
|
||||
|
||||
// See http://php.net/manual/en/datetime.createfromformat.php
|
||||
// The character "|" in the format makes sure that the parts of a date
|
||||
|
@ -99,22 +99,39 @@ class FormValidator extends ConstraintValidator
|
||||
? (string) $form->getViewData()
|
||||
: gettype($form->getViewData());
|
||||
|
||||
$this->buildViolation($config->getOption('invalid_message'))
|
||||
->setParameters(array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters')))
|
||||
->setInvalidValue($form->getViewData())
|
||||
->setCode(Form::NOT_SYNCHRONIZED_ERROR)
|
||||
->setCause($form->getTransformationFailure())
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($config->getOption('invalid_message'))
|
||||
->setParameters(array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters')))
|
||||
->setInvalidValue($form->getViewData())
|
||||
->setCode(Form::NOT_SYNCHRONIZED_ERROR)
|
||||
->setCause($form->getTransformationFailure())
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($config->getOption('invalid_message'))
|
||||
->setParameters(array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters')))
|
||||
->setInvalidValue($form->getViewData())
|
||||
->setCode(Form::NOT_SYNCHRONIZED_ERROR)
|
||||
->setCause($form->getTransformationFailure())
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Mark the form with an error if it contains extra fields
|
||||
if (!$config->getOption('allow_extra_fields') && count($form->getExtraData()) > 0) {
|
||||
$this->buildViolation($config->getOption('extra_fields_message'))
|
||||
->setParameter('{{ extra_fields }}', implode('", "', array_keys($form->getExtraData())))
|
||||
->setInvalidValue($form->getExtraData())
|
||||
->setCode(Form::NO_SUCH_FIELD_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($config->getOption('extra_fields_message'))
|
||||
->setParameter('{{ extra_fields }}', implode('", "', array_keys($form->getExtraData())))
|
||||
->setInvalidValue($form->getExtraData())
|
||||
->setCode(Form::NO_SUCH_FIELD_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($config->getOption('extra_fields_message'))
|
||||
->setParameter('{{ extra_fields }}', implode('", "', array_keys($form->getExtraData())))
|
||||
->setInvalidValue($form->getExtraData())
|
||||
->setCode(Form::NO_SUCH_FIELD_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,12 +57,9 @@ class DateTimeToStringTransformerTest extends DateTimeTestCase
|
||||
|
||||
// seconds since Unix
|
||||
array('U', '1265213106', '2010-02-03 16:05:06 UTC'),
|
||||
);
|
||||
|
||||
// This test will fail < 5.3.9 - see https://bugs.php.net/51994
|
||||
if (PHP_VERSION_ID >= 50309) {
|
||||
$data[] = array('Y-z', '2010-33', '2010-02-03 00:00:00 UTC');
|
||||
}
|
||||
array('Y-z', '2010-33', '2010-02-03 00:00:00 UTC'),
|
||||
);
|
||||
|
||||
return $data;
|
||||
}
|
||||
@ -111,10 +108,6 @@ class DateTimeToStringTransformerTest extends DateTimeTestCase
|
||||
*/
|
||||
public function testReverseTransformUsingPipe($format, $input, $output)
|
||||
{
|
||||
if (PHP_VERSION_ID < 50307) {
|
||||
$this->markTestSkipped('Pipe usage requires PHP 5.3.7 or newer.');
|
||||
}
|
||||
|
||||
$reverseTransformer = new DateTimeToStringTransformer('UTC', 'UTC', $format, true);
|
||||
|
||||
$output = new \DateTime($output);
|
||||
|
@ -224,14 +224,12 @@ class FormValidatorTest extends AbstractConstraintValidatorTest
|
||||
|
||||
$this->validator->validate($form, new Form());
|
||||
|
||||
$is2Dot4Api = Validation::API_VERSION_2_4 === $this->getApiVersion();
|
||||
|
||||
$this->buildViolation('invalid_message_key')
|
||||
->setParameter('{{ value }}', 'foo')
|
||||
->setParameter('{{ foo }}', 'bar')
|
||||
->setInvalidValue('foo')
|
||||
->setCode(Form::NOT_SYNCHRONIZED_ERROR)
|
||||
->setCause($is2Dot4Api ? null : $form->getTransformationFailure())
|
||||
->setCause($form->getTransformationFailure())
|
||||
->assertRaised();
|
||||
}
|
||||
|
||||
@ -261,14 +259,12 @@ class FormValidatorTest extends AbstractConstraintValidatorTest
|
||||
|
||||
$this->validator->validate($form, new Form());
|
||||
|
||||
$is2Dot4Api = Validation::API_VERSION_2_4 === $this->getApiVersion();
|
||||
|
||||
$this->buildViolation('invalid_message_key')
|
||||
->setParameter('{{ value }}', 'foo')
|
||||
->setParameter('{{ foo }}', 'bar')
|
||||
->setInvalidValue('foo')
|
||||
->setCode(Form::NOT_SYNCHRONIZED_ERROR)
|
||||
->setCause($is2Dot4Api ? null : $form->getTransformationFailure())
|
||||
->setCause($form->getTransformationFailure())
|
||||
->assertRaised();
|
||||
}
|
||||
|
||||
@ -298,13 +294,11 @@ class FormValidatorTest extends AbstractConstraintValidatorTest
|
||||
|
||||
$this->validator->validate($form, new Form());
|
||||
|
||||
$is2Dot4Api = Validation::API_VERSION_2_4 === $this->getApiVersion();
|
||||
|
||||
$this->buildViolation('invalid_message_key')
|
||||
->setParameter('{{ value }}', 'foo')
|
||||
->setInvalidValue('foo')
|
||||
->setCode(Form::NOT_SYNCHRONIZED_ERROR)
|
||||
->setCause($is2Dot4Api ? null : $form->getTransformationFailure())
|
||||
->setCause($form->getTransformationFailure())
|
||||
->assertRaised();
|
||||
}
|
||||
|
||||
|
@ -1,26 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\Form\Tests\Extension\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Validation;
|
||||
|
||||
/**
|
||||
* @since 2.5.3
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class LegacyFormValidator2Dot4ApiTest extends FormValidatorTest
|
||||
{
|
||||
protected function getApiVersion()
|
||||
{
|
||||
return Validation::API_VERSION_2_4;
|
||||
}
|
||||
}
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/event-dispatcher": "~2.1|~3.0.0",
|
||||
"symfony/intl": "~2.3|~3.0.0",
|
||||
"symfony/options-resolver": "~2.6|~3.0.0",
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/expression-language": "~2.4|~3.0.0"
|
||||
|
@ -60,7 +60,7 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface
|
||||
$this->isCollected = false;
|
||||
}
|
||||
|
||||
$trace = PHP_VERSION_ID >= 50306 ? DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS : true;
|
||||
$trace = DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS;
|
||||
if (PHP_VERSION_ID >= 50400) {
|
||||
$trace = debug_backtrace($trace, 7);
|
||||
} else {
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/event-dispatcher": "~2.5.9|~2.6,>=2.6.2|~3.0.0",
|
||||
"symfony/http-foundation": "~2.5,>=2.5.4|~3.0.0",
|
||||
"symfony/debug": "~2.6,>=2.6.2|~3.0.0",
|
||||
|
@ -200,18 +200,14 @@ class IntlDateFormatter
|
||||
{
|
||||
// intl allows timestamps to be passed as arrays - we don't
|
||||
if (is_array($timestamp)) {
|
||||
$message = PHP_VERSION_ID >= 50304 ?
|
||||
'Only integer Unix timestamps and DateTime objects are supported' :
|
||||
'Only integer Unix timestamps are supported';
|
||||
$message = 'Only integer Unix timestamps and DateTime objects are supported';
|
||||
|
||||
throw new MethodArgumentValueNotImplementedException(__METHOD__, 'timestamp', $timestamp, $message);
|
||||
}
|
||||
|
||||
// behave like the intl extension
|
||||
$argumentError = null;
|
||||
if (PHP_VERSION_ID < 50304 && !is_int($timestamp)) {
|
||||
$argumentError = 'datefmt_format: takes either an array or an integer timestamp value ';
|
||||
} elseif (PHP_VERSION_ID >= 50304 && !is_int($timestamp) && !$timestamp instanceof \DateTime) {
|
||||
if (!is_int($timestamp) && !$timestamp instanceof \DateTime) {
|
||||
$argumentError = 'datefmt_format: takes either an array or an integer timestamp value or a DateTime object';
|
||||
if (PHP_VERSION_ID >= 50500 && !is_int($timestamp)) {
|
||||
$argumentError = sprintf('datefmt_format: string \'%s\' is not numeric, which would be required for it to be a valid date', $timestamp);
|
||||
@ -226,8 +222,7 @@ class IntlDateFormatter
|
||||
return false;
|
||||
}
|
||||
|
||||
// As of PHP 5.3.4, IntlDateFormatter::format() accepts DateTime instances
|
||||
if (PHP_VERSION_ID >= 50304 && $timestamp instanceof \DateTime) {
|
||||
if ($timestamp instanceof \DateTime) {
|
||||
$timestamp = $timestamp->getTimestamp();
|
||||
}
|
||||
|
||||
|
@ -238,19 +238,16 @@ abstract class AbstractIntlDateFormatterTest extends \PHPUnit_Framework_TestCase
|
||||
array('zzzzz', 0, 'GMT'),
|
||||
);
|
||||
|
||||
// As of PHP 5.3.4, IntlDateFormatter::format() accepts DateTime instances
|
||||
if (PHP_VERSION_ID >= 50304) {
|
||||
$dateTime = new \DateTime('@0');
|
||||
$dateTime = new \DateTime('@0');
|
||||
|
||||
/* general, DateTime */
|
||||
$formatData[] = array('y-M-d', $dateTime, '1970-1-1');
|
||||
$formatData[] = array("EEE, MMM d, ''yy", $dateTime, "Thu, Jan 1, '70");
|
||||
$formatData[] = array('h:mm a', $dateTime, '12:00 AM');
|
||||
$formatData[] = array('yyyyy.MMMM.dd hh:mm aaa', $dateTime, '01970.January.01 12:00 AM');
|
||||
/* general, DateTime */
|
||||
$formatData[] = array('y-M-d', $dateTime, '1970-1-1');
|
||||
$formatData[] = array("EEE, MMM d, ''yy", $dateTime, "Thu, Jan 1, '70");
|
||||
$formatData[] = array('h:mm a', $dateTime, '12:00 AM');
|
||||
$formatData[] = array('yyyyy.MMMM.dd hh:mm aaa', $dateTime, '01970.January.01 12:00 AM');
|
||||
|
||||
$formatData[] = array("yyyy.MM.dd 'at' HH:mm:ss zzz", $dateTime, '1970.01.01 at 00:00:00 GMT');
|
||||
$formatData[] = array('K:mm a, z', $dateTime, '0:00 AM, GMT');
|
||||
}
|
||||
$formatData[] = array("yyyy.MM.dd 'at' HH:mm:ss zzz", $dateTime, '1970.01.01 at 00:00:00 GMT');
|
||||
$formatData[] = array('K:mm a, z', $dateTime, '0:00 AM, GMT');
|
||||
|
||||
return $formatData;
|
||||
}
|
||||
@ -276,11 +273,7 @@ abstract class AbstractIntlDateFormatterTest extends \PHPUnit_Framework_TestCase
|
||||
);
|
||||
}
|
||||
|
||||
$message = 'datefmt_format: takes either an array or an integer timestamp value : U_ILLEGAL_ARGUMENT_ERROR';
|
||||
|
||||
if (PHP_VERSION_ID >= 50304) {
|
||||
$message = 'datefmt_format: takes either an array or an integer timestamp value or a DateTime object: U_ILLEGAL_ARGUMENT_ERROR';
|
||||
}
|
||||
$message = 'datefmt_format: takes either an array or an integer timestamp value or a DateTime object: U_ILLEGAL_ARGUMENT_ERROR';
|
||||
|
||||
return array(
|
||||
array('y-M-d', '0', $message),
|
||||
|
@ -57,11 +57,7 @@ class IntlDateFormatterTest extends AbstractIntlDateFormatterTest
|
||||
} catch (\Exception $e) {
|
||||
$this->assertInstanceOf('Symfony\Component\Intl\Exception\MethodArgumentValueNotImplementedException', $e);
|
||||
|
||||
if (PHP_VERSION_ID >= 50304) {
|
||||
$this->assertStringEndsWith('Only integer Unix timestamps and DateTime objects are supported. Please install the "intl" extension for full localization capabilities.', $e->getMessage());
|
||||
} else {
|
||||
$this->assertStringEndsWith('Only integer Unix timestamps are supported. Please install the "intl" extension for full localization capabilities.', $e->getMessage());
|
||||
}
|
||||
$this->assertStringEndsWith('Only integer Unix timestamps and DateTime objects are supported. Please install the "intl" extension for full localization capabilities.', $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/filesystem": "~2.1|~3.0.0"
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/intl": "~2.3|~3.0.0"
|
||||
},
|
||||
"autoload": {
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": { "Symfony\\Component\\OptionsResolver\\": "" }
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": { "Symfony\\Component\\Process\\": "" }
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": { "Symfony\\Component\\PropertyAccess\\": "" }
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/config": "~2.2|~3.0.0",
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/security-core": "~2.4|~3.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
|
@ -47,8 +47,6 @@ class BCryptPasswordEncoderTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
public function testResultLength()
|
||||
{
|
||||
$this->skipIfPhpVersionIsNotSupported();
|
||||
|
||||
$encoder = new BCryptPasswordEncoder(self::VALID_COST);
|
||||
$result = $encoder->encodePassword(self::PASSWORD, null);
|
||||
$this->assertEquals(60, strlen($result));
|
||||
@ -56,21 +54,12 @@ class BCryptPasswordEncoderTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
public function testValidation()
|
||||
{
|
||||
$this->skipIfPhpVersionIsNotSupported();
|
||||
|
||||
$encoder = new BCryptPasswordEncoder(self::VALID_COST);
|
||||
$result = $encoder->encodePassword(self::PASSWORD, null);
|
||||
$this->assertTrue($encoder->isPasswordValid($result, self::PASSWORD, null));
|
||||
$this->assertFalse($encoder->isPasswordValid($result, 'anotherPassword', null));
|
||||
}
|
||||
|
||||
private function skipIfPhpVersionIsNotSupported()
|
||||
{
|
||||
if (PHP_VERSION_ID < 50307) {
|
||||
$this->markTestSkipped('Requires PHP >= 5.3.7');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Symfony\Component\Security\Core\Exception\BadCredentialsException
|
||||
*/
|
||||
|
@ -1,26 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\Security\Core\Tests\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Validation;
|
||||
|
||||
/**
|
||||
* @since 2.5.4
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class LegacyUserPasswordValidator2Dot4ApiTest extends UserPasswordValidatorTest
|
||||
{
|
||||
protected function getApiVersion()
|
||||
{
|
||||
return Validation::API_VERSION_2_4;
|
||||
}
|
||||
}
|
@ -43,9 +43,7 @@ final class SecureRandom implements SecureRandomInterface
|
||||
$this->logger = $logger;
|
||||
|
||||
// determine whether to use OpenSSL
|
||||
if ('\\' === DIRECTORY_SEPARATOR && PHP_VERSION_ID < 50304) {
|
||||
$this->useOpenSsl = false;
|
||||
} elseif (!function_exists('openssl_random_pseudo_bytes')) {
|
||||
if (!function_exists('openssl_random_pseudo_bytes')) {
|
||||
if (null !== $this->logger) {
|
||||
$this->logger->notice('It is recommended that you enable the "openssl" extension for random number generation.');
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ namespace Symfony\Component\Security\Core\Validator\Constraints;
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/event-dispatcher": "~2.1|~3.0.0",
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/security-core": "~2.4|~3.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/security-core": "~2.6|~3.0.0",
|
||||
"symfony/event-dispatcher": "~2.1|~3.0.0",
|
||||
"symfony/http-foundation": "~2.4|~3.0.0",
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"php": ">=5.3.9",
|
||||
"symfony/event-dispatcher": "~2.2|~3.0.0",
|
||||
"symfony/http-foundation": "~2.1|~3.0.0",
|
||||
"symfony/http-kernel": "~2.4|~3.0.0"
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/yaml": "~2.0|~3.0.0",
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": { "Symfony\\Component\\Stopwatch\\": "" }
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/log": "~1.0"
|
||||
|
@ -16,7 +16,7 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
"php": ">=5.3.9"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/config": "~2.3,>=2.3.12|~3.0.0",
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -54,11 +55,19 @@ abstract class AbstractComparisonValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if (!$this->compareValues($value, $comparedValue)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::OBJECT_TO_STRING | self::PRETTY_DATE))
|
||||
->setParameter('{{ compared_value }}', $this->formatValue($comparedValue, self::OBJECT_TO_STRING | self::PRETTY_DATE))
|
||||
->setParameter('{{ compared_value_type }}', $this->formatTypeOf($comparedValue))
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::OBJECT_TO_STRING | self::PRETTY_DATE))
|
||||
->setParameter('{{ compared_value }}', $this->formatValue($comparedValue, self::OBJECT_TO_STRING | self::PRETTY_DATE))
|
||||
->setParameter('{{ compared_value_type }}', $this->formatTypeOf($comparedValue))
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::OBJECT_TO_STRING | self::PRETTY_DATE))
|
||||
->setParameter('{{ compared_value }}', $this->formatValue($comparedValue, self::OBJECT_TO_STRING | self::PRETTY_DATE))
|
||||
->setParameter('{{ compared_value_type }}', $this->formatTypeOf($comparedValue))
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -32,9 +33,15 @@ class BlankValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if ('' !== $value && null !== $value) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -47,12 +47,15 @@ class Callback extends Constraint
|
||||
$options = $options['value'];
|
||||
}
|
||||
|
||||
if (is_array($options) && isset($options['methods'])) {
|
||||
trigger_error('The "methods" option of the '.__CLASS__.' class is deprecated since version 2.4 and will be removed in 3.0. Use the "callback" option instead.', E_USER_DEPRECATED);
|
||||
}
|
||||
|
||||
if (is_array($options) && !isset($options['callback']) && !isset($options['methods']) && !isset($options['groups'])) {
|
||||
if (is_callable($options)) {
|
||||
if (is_callable($options) || !$options) {
|
||||
$options = array('callback' => $options);
|
||||
} else {
|
||||
// BC with Symfony < 2.4
|
||||
trigger_error('The "methods" option of the '.__CLASS__.' class is deprecated since version 2.4 and will be removed in 3.0. Use the "callback" option instead.', E_USER_DEPRECATED);
|
||||
// @deprecated, to be removed in 3.0
|
||||
$options = array('methods' => $options);
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -115,10 +116,17 @@ class CardSchemeValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if (!is_numeric($value)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(CardScheme::NOT_NUMERIC_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(CardScheme::NOT_NUMERIC_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(CardScheme::NOT_NUMERIC_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -134,9 +142,16 @@ class CardSchemeValidator extends ConstraintValidator
|
||||
}
|
||||
}
|
||||
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(CardScheme::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(CardScheme::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(CardScheme::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
@ -62,11 +63,19 @@ class ChoiceValidator extends ConstraintValidator
|
||||
if ($constraint->multiple) {
|
||||
foreach ($value as $_value) {
|
||||
if (!in_array($_value, $choices, $constraint->strict)) {
|
||||
$this->buildViolation($constraint->multipleMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($_value))
|
||||
->setCode(Choice::NO_SUCH_CHOICE_ERROR)
|
||||
->setInvalidValue($_value)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->multipleMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($_value))
|
||||
->setCode(Choice::NO_SUCH_CHOICE_ERROR)
|
||||
->setInvalidValue($_value)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->multipleMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($_value))
|
||||
->setCode(Choice::NO_SUCH_CHOICE_ERROR)
|
||||
->setInvalidValue($_value)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -75,29 +84,52 @@ class ChoiceValidator extends ConstraintValidator
|
||||
$count = count($value);
|
||||
|
||||
if ($constraint->min !== null && $count < $constraint->min) {
|
||||
$this->buildViolation($constraint->minMessage)
|
||||
->setParameter('{{ limit }}', $constraint->min)
|
||||
->setPlural((int) $constraint->min)
|
||||
->setCode(Choice::TOO_FEW_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->minMessage)
|
||||
->setParameter('{{ limit }}', $constraint->min)
|
||||
->setPlural((int) $constraint->min)
|
||||
->setCode(Choice::TOO_FEW_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->minMessage)
|
||||
->setParameter('{{ limit }}', $constraint->min)
|
||||
->setPlural((int) $constraint->min)
|
||||
->setCode(Choice::TOO_FEW_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($constraint->max !== null && $count > $constraint->max) {
|
||||
$this->buildViolation($constraint->maxMessage)
|
||||
->setParameter('{{ limit }}', $constraint->max)
|
||||
->setPlural((int) $constraint->max)
|
||||
->setCode(Choice::TOO_MANY_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->maxMessage)
|
||||
->setParameter('{{ limit }}', $constraint->max)
|
||||
->setPlural((int) $constraint->max)
|
||||
->setCode(Choice::TOO_MANY_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->maxMessage)
|
||||
->setParameter('{{ limit }}', $constraint->max)
|
||||
->setPlural((int) $constraint->max)
|
||||
->setCode(Choice::TOO_MANY_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
} elseif (!in_array($value, $choices, $constraint->strict)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Choice::NO_SUCH_CHOICE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Choice::NO_SUCH_CHOICE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Choice::NO_SUCH_CHOICE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -69,12 +69,21 @@ class CollectionValidator extends ConstraintValidator
|
||||
}
|
||||
}
|
||||
} elseif (!$fieldConstraint instanceof Optional && !$constraint->allowMissingFields) {
|
||||
$this->buildViolationInContext($context, $constraint->missingFieldsMessage)
|
||||
->atPath('['.$field.']')
|
||||
->setParameter('{{ field }}', $this->formatValue($field))
|
||||
->setInvalidValue(null)
|
||||
->setCode(Collection::MISSING_FIELD_ERROR)
|
||||
->addViolation();
|
||||
if ($context instanceof ExecutionContextInterface) {
|
||||
$context->buildViolation($constraint->missingFieldsMessage)
|
||||
->atPath('['.$field.']')
|
||||
->setParameter('{{ field }}', $this->formatValue($field))
|
||||
->setInvalidValue(null)
|
||||
->setCode(Collection::MISSING_FIELD_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolationInContext($context, $constraint->missingFieldsMessage)
|
||||
->atPath('['.$field.']')
|
||||
->setParameter('{{ field }}', $this->formatValue($field))
|
||||
->setInvalidValue(null)
|
||||
->setCode(Collection::MISSING_FIELD_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -36,25 +37,45 @@ class CountValidator extends ConstraintValidator
|
||||
$count = count($value);
|
||||
|
||||
if (null !== $constraint->max && $count > $constraint->max) {
|
||||
$this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->maxMessage)
|
||||
->setParameter('{{ count }}', $count)
|
||||
->setParameter('{{ limit }}', $constraint->max)
|
||||
->setInvalidValue($value)
|
||||
->setPlural((int) $constraint->max)
|
||||
->setCode(Count::TOO_MANY_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->maxMessage)
|
||||
->setParameter('{{ count }}', $count)
|
||||
->setParameter('{{ limit }}', $constraint->max)
|
||||
->setInvalidValue($value)
|
||||
->setPlural((int) $constraint->max)
|
||||
->setCode(Count::TOO_MANY_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->maxMessage)
|
||||
->setParameter('{{ count }}', $count)
|
||||
->setParameter('{{ limit }}', $constraint->max)
|
||||
->setInvalidValue($value)
|
||||
->setPlural((int) $constraint->max)
|
||||
->setCode(Count::TOO_MANY_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (null !== $constraint->min && $count < $constraint->min) {
|
||||
$this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->minMessage)
|
||||
->setParameter('{{ count }}', $count)
|
||||
->setParameter('{{ limit }}', $constraint->min)
|
||||
->setInvalidValue($value)
|
||||
->setPlural((int) $constraint->min)
|
||||
->setCode(Count::TOO_FEW_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->minMessage)
|
||||
->setParameter('{{ count }}', $count)
|
||||
->setParameter('{{ limit }}', $constraint->min)
|
||||
->setInvalidValue($value)
|
||||
->setPlural((int) $constraint->min)
|
||||
->setCode(Count::TOO_FEW_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->minMessage)
|
||||
->setParameter('{{ count }}', $count)
|
||||
->setParameter('{{ limit }}', $constraint->min)
|
||||
->setInvalidValue($value)
|
||||
->setPlural((int) $constraint->min)
|
||||
->setCode(Count::TOO_FEW_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Intl\Intl;
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -46,9 +47,15 @@ class CountryValidator extends ConstraintValidator
|
||||
$countries = Intl::getRegionBundle()->getCountryNames();
|
||||
|
||||
if (!isset($countries[$value])) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Intl\Intl;
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -46,9 +47,15 @@ class CurrencyValidator extends ConstraintValidator
|
||||
$currencies = Intl::getCurrencyBundle()->getCurrencyNames();
|
||||
|
||||
if (!isset($currencies[$value])) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
@ -43,26 +44,47 @@ class DateTimeValidator extends DateValidator
|
||||
$value = (string) $value;
|
||||
|
||||
if (!preg_match(static::PATTERN, $value, $matches)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(DateTime::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(DateTime::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(DateTime::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!DateValidator::checkDate($matches[1], $matches[2], $matches[3])) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(DateTime::INVALID_DATE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(DateTime::INVALID_DATE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(DateTime::INVALID_DATE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
|
||||
if (!TimeValidator::checkTime($matches[4], $matches[5], $matches[6])) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(DateTime::INVALID_TIME_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(DateTime::INVALID_TIME_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(DateTime::INVALID_TIME_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -60,19 +61,33 @@ class DateValidator extends ConstraintValidator
|
||||
$value = (string) $value;
|
||||
|
||||
if (!preg_match(static::PATTERN, $value, $matches)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Date::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Date::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Date::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!self::checkDate($matches[1], $matches[2], $matches[3])) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Date::INVALID_DATE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Date::INVALID_DATE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Date::INVALID_DATE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\RuntimeException;
|
||||
@ -66,18 +67,32 @@ class EmailValidator extends ConstraintValidator
|
||||
$strictValidator = new \Egulias\EmailValidator\EmailValidator();
|
||||
|
||||
if (!$strictValidator->isValid($value, false, true)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Email::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Email::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Email::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
} elseif (!preg_match('/.+\@.+\..+/', $value)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Email::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Email::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Email::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -87,20 +102,34 @@ class EmailValidator extends ConstraintValidator
|
||||
// Check for host DNS resource records
|
||||
if ($constraint->checkMX) {
|
||||
if (!$this->checkMX($host)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Email::MX_CHECK_FAILED_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Email::MX_CHECK_FAILED_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Email::MX_CHECK_FAILED_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($constraint->checkHost && !$this->checkHost($host)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Email::HOST_CHECK_FAILED_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Email::HOST_CHECK_FAILED_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Email::HOST_CHECK_FAILED_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -85,9 +85,15 @@ class ExpressionValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if (!$this->getExpressionLanguage()->evaluate($constraint->expression, $variables)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -35,8 +36,14 @@ class FalseValidator extends ConstraintValidator
|
||||
return;
|
||||
}
|
||||
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\HttpFoundation\File\File as FileObject;
|
||||
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -63,53 +64,103 @@ class FileValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
list($sizeAsString, $limitAsString, $suffix) = $this->factorizeSizes(0, $limitInBytes, $binaryFormat);
|
||||
$this->buildViolation($constraint->uploadIniSizeErrorMessage)
|
||||
->setParameter('{{ limit }}', $limitAsString)
|
||||
->setParameter('{{ suffix }}', $suffix)
|
||||
->setCode(UPLOAD_ERR_INI_SIZE)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->uploadIniSizeErrorMessage)
|
||||
->setParameter('{{ limit }}', $limitAsString)
|
||||
->setParameter('{{ suffix }}', $suffix)
|
||||
->setCode(UPLOAD_ERR_INI_SIZE)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->uploadIniSizeErrorMessage)
|
||||
->setParameter('{{ limit }}', $limitAsString)
|
||||
->setParameter('{{ suffix }}', $suffix)
|
||||
->setCode(UPLOAD_ERR_INI_SIZE)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
case UPLOAD_ERR_FORM_SIZE:
|
||||
$this->buildViolation($constraint->uploadFormSizeErrorMessage)
|
||||
->setCode(UPLOAD_ERR_FORM_SIZE)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->uploadFormSizeErrorMessage)
|
||||
->setCode(UPLOAD_ERR_FORM_SIZE)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->uploadFormSizeErrorMessage)
|
||||
->setCode(UPLOAD_ERR_FORM_SIZE)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
case UPLOAD_ERR_PARTIAL:
|
||||
$this->buildViolation($constraint->uploadPartialErrorMessage)
|
||||
->setCode(UPLOAD_ERR_PARTIAL)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->uploadPartialErrorMessage)
|
||||
->setCode(UPLOAD_ERR_PARTIAL)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->uploadPartialErrorMessage)
|
||||
->setCode(UPLOAD_ERR_PARTIAL)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
case UPLOAD_ERR_NO_FILE:
|
||||
$this->buildViolation($constraint->uploadNoFileErrorMessage)
|
||||
->setCode(UPLOAD_ERR_NO_FILE)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->uploadNoFileErrorMessage)
|
||||
->setCode(UPLOAD_ERR_NO_FILE)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->uploadNoFileErrorMessage)
|
||||
->setCode(UPLOAD_ERR_NO_FILE)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
case UPLOAD_ERR_NO_TMP_DIR:
|
||||
$this->buildViolation($constraint->uploadNoTmpDirErrorMessage)
|
||||
->setCode(UPLOAD_ERR_NO_TMP_DIR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->uploadNoTmpDirErrorMessage)
|
||||
->setCode(UPLOAD_ERR_NO_TMP_DIR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->uploadNoTmpDirErrorMessage)
|
||||
->setCode(UPLOAD_ERR_NO_TMP_DIR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
case UPLOAD_ERR_CANT_WRITE:
|
||||
$this->buildViolation($constraint->uploadCantWriteErrorMessage)
|
||||
->setCode(UPLOAD_ERR_CANT_WRITE)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->uploadCantWriteErrorMessage)
|
||||
->setCode(UPLOAD_ERR_CANT_WRITE)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->uploadCantWriteErrorMessage)
|
||||
->setCode(UPLOAD_ERR_CANT_WRITE)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
case UPLOAD_ERR_EXTENSION:
|
||||
$this->buildViolation($constraint->uploadExtensionErrorMessage)
|
||||
->setCode(UPLOAD_ERR_EXTENSION)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->uploadExtensionErrorMessage)
|
||||
->setCode(UPLOAD_ERR_EXTENSION)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->uploadExtensionErrorMessage)
|
||||
->setCode(UPLOAD_ERR_EXTENSION)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
default:
|
||||
$this->buildViolation($constraint->uploadErrorMessage)
|
||||
->setCode($value->getError())
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->uploadErrorMessage)
|
||||
->setCode($value->getError())
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->uploadErrorMessage)
|
||||
->setCode($value->getError())
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -122,19 +173,33 @@ class FileValidator extends ConstraintValidator
|
||||
$path = $value instanceof FileObject ? $value->getPathname() : (string) $value;
|
||||
|
||||
if (!is_file($path)) {
|
||||
$this->buildViolation($constraint->notFoundMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setCode(File::NOT_FOUND_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->notFoundMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setCode(File::NOT_FOUND_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->notFoundMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setCode(File::NOT_FOUND_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_readable($path)) {
|
||||
$this->buildViolation($constraint->notReadableMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setCode(File::NOT_READABLE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->notReadableMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setCode(File::NOT_READABLE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->notReadableMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setCode(File::NOT_READABLE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -142,10 +207,17 @@ class FileValidator extends ConstraintValidator
|
||||
$sizeInBytes = filesize($path);
|
||||
|
||||
if (0 === $sizeInBytes) {
|
||||
$this->buildViolation($constraint->disallowEmptyMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setCode(File::EMPTY_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->disallowEmptyMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setCode(File::EMPTY_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->disallowEmptyMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setCode(File::EMPTY_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -155,13 +227,23 @@ class FileValidator extends ConstraintValidator
|
||||
|
||||
if ($sizeInBytes > $limitInBytes) {
|
||||
list($sizeAsString, $limitAsString, $suffix) = $this->factorizeSizes($sizeInBytes, $limitInBytes, $constraint->binaryFormat);
|
||||
$this->buildViolation($constraint->maxSizeMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setParameter('{{ size }}', $sizeAsString)
|
||||
->setParameter('{{ limit }}', $limitAsString)
|
||||
->setParameter('{{ suffix }}', $suffix)
|
||||
->setCode(File::TOO_LARGE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->maxSizeMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setParameter('{{ size }}', $sizeAsString)
|
||||
->setParameter('{{ limit }}', $limitAsString)
|
||||
->setParameter('{{ suffix }}', $suffix)
|
||||
->setCode(File::TOO_LARGE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->maxSizeMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setParameter('{{ size }}', $sizeAsString)
|
||||
->setParameter('{{ limit }}', $limitAsString)
|
||||
->setParameter('{{ suffix }}', $suffix)
|
||||
->setCode(File::TOO_LARGE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -187,12 +269,21 @@ class FileValidator extends ConstraintValidator
|
||||
}
|
||||
}
|
||||
|
||||
$this->buildViolation($constraint->mimeTypesMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setParameter('{{ type }}', $this->formatValue($mime))
|
||||
->setParameter('{{ types }}', $this->formatValues($mimeTypes))
|
||||
->setCode(File::INVALID_MIME_TYPE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->mimeTypesMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setParameter('{{ type }}', $this->formatValue($mime))
|
||||
->setParameter('{{ types }}', $this->formatValues($mimeTypes))
|
||||
->setCode(File::INVALID_MIME_TYPE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->mimeTypesMessage)
|
||||
->setParameter('{{ file }}', $this->formatValue($path))
|
||||
->setParameter('{{ type }}', $this->formatValue($mime))
|
||||
->setParameter('{{ types }}', $this->formatValues($mimeTypes))
|
||||
->setCode(File::INVALID_MIME_TYPE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -48,40 +49,68 @@ class IbanValidator extends ConstraintValidator
|
||||
|
||||
// The IBAN must have at least 4 characters...
|
||||
if (strlen($canonicalized) < 4) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::TOO_SHORT_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::TOO_SHORT_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::TOO_SHORT_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// ...start with a country code...
|
||||
if (!ctype_alpha($canonicalized{0}) || !ctype_alpha($canonicalized{1})) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::INVALID_COUNTRY_CODE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::INVALID_COUNTRY_CODE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::INVALID_COUNTRY_CODE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// ...contain only digits and characters...
|
||||
if (!ctype_alnum($canonicalized)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// ...and contain uppercase characters only
|
||||
if ($canonicalized !== strtoupper($canonicalized)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::INVALID_CASE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::INVALID_CASE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::INVALID_CASE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -102,10 +131,17 @@ class IbanValidator extends ConstraintValidator
|
||||
// We cannot use PHP's modulo operator, so we calculate the
|
||||
// modulo step-wisely instead
|
||||
if (1 !== $this->bigModulo97($checkSum)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::CHECKSUM_FAILED_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::CHECKSUM_FAILED_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::CHECKSUM_FAILED_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -53,9 +54,15 @@ class ImageValidator extends FileValidator
|
||||
$size = @getimagesize($value);
|
||||
|
||||
if (empty($size) || ($size[0] === 0) || ($size[1] === 0)) {
|
||||
$this->buildViolation($constraint->sizeNotDetectedMessage)
|
||||
->setCode(Image::SIZE_NOT_DETECTED_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->sizeNotDetectedMessage)
|
||||
->setCode(Image::SIZE_NOT_DETECTED_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->sizeNotDetectedMessage)
|
||||
->setCode(Image::SIZE_NOT_DETECTED_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -69,11 +76,19 @@ class ImageValidator extends FileValidator
|
||||
}
|
||||
|
||||
if ($width < $constraint->minWidth) {
|
||||
$this->buildViolation($constraint->minWidthMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ min_width }}', $constraint->minWidth)
|
||||
->setCode(Image::TOO_NARROW_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->minWidthMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ min_width }}', $constraint->minWidth)
|
||||
->setCode(Image::TOO_NARROW_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->minWidthMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ min_width }}', $constraint->minWidth)
|
||||
->setCode(Image::TOO_NARROW_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -85,11 +100,19 @@ class ImageValidator extends FileValidator
|
||||
}
|
||||
|
||||
if ($width > $constraint->maxWidth) {
|
||||
$this->buildViolation($constraint->maxWidthMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ max_width }}', $constraint->maxWidth)
|
||||
->setCode(Image::TOO_WIDE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->maxWidthMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ max_width }}', $constraint->maxWidth)
|
||||
->setCode(Image::TOO_WIDE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->maxWidthMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ max_width }}', $constraint->maxWidth)
|
||||
->setCode(Image::TOO_WIDE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -101,11 +124,19 @@ class ImageValidator extends FileValidator
|
||||
}
|
||||
|
||||
if ($height < $constraint->minHeight) {
|
||||
$this->buildViolation($constraint->minHeightMessage)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setParameter('{{ min_height }}', $constraint->minHeight)
|
||||
->setCode(Image::TOO_LOW_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->minHeightMessage)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setParameter('{{ min_height }}', $constraint->minHeight)
|
||||
->setCode(Image::TOO_LOW_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->minHeightMessage)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setParameter('{{ min_height }}', $constraint->minHeight)
|
||||
->setCode(Image::TOO_LOW_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -117,11 +148,19 @@ class ImageValidator extends FileValidator
|
||||
}
|
||||
|
||||
if ($height > $constraint->maxHeight) {
|
||||
$this->buildViolation($constraint->maxHeightMessage)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setParameter('{{ max_height }}', $constraint->maxHeight)
|
||||
->setCode(Image::TOO_HIGH_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->maxHeightMessage)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setParameter('{{ max_height }}', $constraint->maxHeight)
|
||||
->setCode(Image::TOO_HIGH_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->maxHeightMessage)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setParameter('{{ max_height }}', $constraint->maxHeight)
|
||||
->setCode(Image::TOO_HIGH_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -133,11 +172,19 @@ class ImageValidator extends FileValidator
|
||||
}
|
||||
|
||||
if ($ratio < $constraint->minRatio) {
|
||||
$this->buildViolation($constraint->minRatioMessage)
|
||||
->setParameter('{{ ratio }}', $ratio)
|
||||
->setParameter('{{ min_ratio }}', $constraint->minRatio)
|
||||
->setCode(Image::RATIO_TOO_SMALL_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->minRatioMessage)
|
||||
->setParameter('{{ ratio }}', $ratio)
|
||||
->setParameter('{{ min_ratio }}', $constraint->minRatio)
|
||||
->setCode(Image::RATIO_TOO_SMALL_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->minRatioMessage)
|
||||
->setParameter('{{ ratio }}', $ratio)
|
||||
->setParameter('{{ min_ratio }}', $constraint->minRatio)
|
||||
->setCode(Image::RATIO_TOO_SMALL_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -147,36 +194,68 @@ class ImageValidator extends FileValidator
|
||||
}
|
||||
|
||||
if ($ratio > $constraint->maxRatio) {
|
||||
$this->buildViolation($constraint->maxRatioMessage)
|
||||
->setParameter('{{ ratio }}', $ratio)
|
||||
->setParameter('{{ max_ratio }}', $constraint->maxRatio)
|
||||
->setCode(Image::RATIO_TOO_BIG_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->maxRatioMessage)
|
||||
->setParameter('{{ ratio }}', $ratio)
|
||||
->setParameter('{{ max_ratio }}', $constraint->maxRatio)
|
||||
->setCode(Image::RATIO_TOO_BIG_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->maxRatioMessage)
|
||||
->setParameter('{{ ratio }}', $ratio)
|
||||
->setParameter('{{ max_ratio }}', $constraint->maxRatio)
|
||||
->setCode(Image::RATIO_TOO_BIG_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$constraint->allowSquare && $width == $height) {
|
||||
$this->buildViolation($constraint->allowSquareMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setCode(Image::SQUARE_NOT_ALLOWED_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->allowSquareMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setCode(Image::SQUARE_NOT_ALLOWED_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->allowSquareMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setCode(Image::SQUARE_NOT_ALLOWED_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
|
||||
if (!$constraint->allowLandscape && $width > $height) {
|
||||
$this->buildViolation($constraint->allowLandscapeMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setCode(Image::LANDSCAPE_NOT_ALLOWED_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->allowLandscapeMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setCode(Image::LANDSCAPE_NOT_ALLOWED_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->allowLandscapeMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setCode(Image::LANDSCAPE_NOT_ALLOWED_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
|
||||
if (!$constraint->allowPortrait && $width < $height) {
|
||||
$this->buildViolation($constraint->allowPortraitMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setCode(Image::PORTRAIT_NOT_ALLOWED_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->allowPortraitMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setCode(Image::PORTRAIT_NOT_ALLOWED_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->allowPortraitMessage)
|
||||
->setParameter('{{ width }}', $width)
|
||||
->setParameter('{{ height }}', $height)
|
||||
->setCode(Image::PORTRAIT_NOT_ALLOWED_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -95,9 +96,16 @@ class IpValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if (!filter_var($value, FILTER_VALIDATE_IP, $flag)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -59,10 +60,17 @@ class IsbnValidator extends ConstraintValidator
|
||||
// Explicitly validate against ISBN-10
|
||||
if ('isbn10' === $constraint->type) {
|
||||
if (true !== ($code = $this->validateIsbn10($canonical))) {
|
||||
$this->buildViolation($this->getMessage($constraint, $constraint->type))
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode($code)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($this->getMessage($constraint, $constraint->type))
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode($code)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($this->getMessage($constraint, $constraint->type))
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode($code)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
@ -71,10 +79,17 @@ class IsbnValidator extends ConstraintValidator
|
||||
// Explicitly validate against ISBN-13
|
||||
if ('isbn13' === $constraint->type) {
|
||||
if (true !== ($code = $this->validateIsbn13($canonical))) {
|
||||
$this->buildViolation($this->getMessage($constraint, $constraint->type))
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode($code)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($this->getMessage($constraint, $constraint->type))
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode($code)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($this->getMessage($constraint, $constraint->type))
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode($code)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
@ -97,10 +112,17 @@ class IsbnValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if (true !== $code) {
|
||||
$this->buildViolation($this->getMessage($constraint))
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode($code)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($this->getMessage($constraint))
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode($code)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($this->getMessage($constraint))
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode($code)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -51,10 +52,17 @@ class IssnValidator extends ConstraintValidator
|
||||
// remove hyphen
|
||||
$canonical = substr($canonical, 0, 4).substr($canonical, 5);
|
||||
} elseif ($constraint->requireHyphen) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::MISSING_HYPHEN_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::MISSING_HYPHEN_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::MISSING_HYPHEN_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -62,19 +70,33 @@ class IssnValidator extends ConstraintValidator
|
||||
$length = strlen($canonical);
|
||||
|
||||
if ($length < 8) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::TOO_SHORT_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::TOO_SHORT_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::TOO_SHORT_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($length > 8) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::TOO_LONG_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::TOO_LONG_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::TOO_LONG_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -82,10 +104,17 @@ class IssnValidator extends ConstraintValidator
|
||||
// 1234567X
|
||||
// ^^^^^^^ digits only
|
||||
if (!ctype_digit(substr($canonical, 0, 7))) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -93,10 +122,17 @@ class IssnValidator extends ConstraintValidator
|
||||
// 1234567X
|
||||
// ^ digit, x or X
|
||||
if (!ctype_digit($canonical{7}) && 'x' !== $canonical{7} && 'X' !== $canonical{7}) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -104,10 +140,17 @@ class IssnValidator extends ConstraintValidator
|
||||
// 1234567X
|
||||
// ^ case-sensitive?
|
||||
if ($constraint->caseSensitive && 'x' === $canonical{7}) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::INVALID_CASE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::INVALID_CASE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::INVALID_CASE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -123,10 +166,17 @@ class IssnValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if (0 !== $checkSum % 11) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::CHECKSUM_FAILED_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::CHECKSUM_FAILED_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Issn::CHECKSUM_FAILED_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Intl\Intl;
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -46,9 +47,15 @@ class LanguageValidator extends ConstraintValidator
|
||||
$languages = Intl::getLanguageBundle()->getLanguageNames();
|
||||
|
||||
if (!isset($languages[$value])) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -48,25 +49,45 @@ class LengthValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if (null !== $constraint->max && $length > $constraint->max) {
|
||||
$this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->maxMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($stringValue))
|
||||
->setParameter('{{ limit }}', $constraint->max)
|
||||
->setInvalidValue($value)
|
||||
->setPlural((int) $constraint->max)
|
||||
->setCode(Length::TOO_LONG_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->maxMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($stringValue))
|
||||
->setParameter('{{ limit }}', $constraint->max)
|
||||
->setInvalidValue($value)
|
||||
->setPlural((int) $constraint->max)
|
||||
->setCode(Length::TOO_LONG_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->maxMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($stringValue))
|
||||
->setParameter('{{ limit }}', $constraint->max)
|
||||
->setInvalidValue($value)
|
||||
->setPlural((int) $constraint->max)
|
||||
->setCode(Length::TOO_LONG_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (null !== $constraint->min && $length < $constraint->min) {
|
||||
$this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->minMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($stringValue))
|
||||
->setParameter('{{ limit }}', $constraint->min)
|
||||
->setInvalidValue($value)
|
||||
->setPlural((int) $constraint->min)
|
||||
->setCode(Length::TOO_SHORT_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->minMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($stringValue))
|
||||
->setParameter('{{ limit }}', $constraint->min)
|
||||
->setInvalidValue($value)
|
||||
->setPlural((int) $constraint->min)
|
||||
->setCode(Length::TOO_SHORT_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->minMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($stringValue))
|
||||
->setParameter('{{ limit }}', $constraint->min)
|
||||
->setInvalidValue($value)
|
||||
->setPlural((int) $constraint->min)
|
||||
->setCode(Length::TOO_SHORT_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Intl\Intl;
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -46,9 +47,15 @@ class LocaleValidator extends ConstraintValidator
|
||||
$locales = Intl::getLocaleBundle()->getLocaleNames();
|
||||
|
||||
if (!isset($locales[$value])) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -56,10 +57,17 @@ class LuhnValidator extends ConstraintValidator
|
||||
$value = (string) $value;
|
||||
|
||||
if (!ctype_digit($value)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Luhn::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Luhn::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Luhn::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -87,10 +95,17 @@ class LuhnValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if (0 === $checkSum || 0 !== $checkSum % 10) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Luhn::CHECKSUM_FAILED_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Luhn::CHECKSUM_FAILED_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Luhn::CHECKSUM_FAILED_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -32,9 +33,15 @@ class NotBlankValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if (false === $value || (empty($value) && '0' != $value)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -32,9 +33,15 @@ class NullValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if (null !== $value) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -34,10 +35,17 @@ class RangeValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if (!is_numeric($value) && !$value instanceof \DateTime && !$value instanceof \DateTimeInterface) {
|
||||
$this->buildViolation($constraint->invalidMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
|
||||
->setCode(Range::INVALID_VALUE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->invalidMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
|
||||
->setCode(Range::INVALID_VALUE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->invalidMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
|
||||
->setCode(Range::INVALID_VALUE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@ -60,21 +68,37 @@ class RangeValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
if (null !== $constraint->max && $value > $max) {
|
||||
$this->buildViolation($constraint->maxMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
|
||||
->setParameter('{{ limit }}', $this->formatValue($max, self::PRETTY_DATE))
|
||||
->setCode(Range::BEYOND_RANGE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->maxMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
|
||||
->setParameter('{{ limit }}', $this->formatValue($max, self::PRETTY_DATE))
|
||||
->setCode(Range::BEYOND_RANGE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->maxMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
|
||||
->setParameter('{{ limit }}', $this->formatValue($max, self::PRETTY_DATE))
|
||||
->setCode(Range::BEYOND_RANGE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (null !== $constraint->min && $value < $min) {
|
||||
$this->buildViolation($constraint->minMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
|
||||
->setParameter('{{ limit }}', $this->formatValue($min, self::PRETTY_DATE))
|
||||
->setCode(Range::BELOW_RANGE_ERROR)
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->minMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
|
||||
->setParameter('{{ limit }}', $this->formatValue($min, self::PRETTY_DATE))
|
||||
->setCode(Range::BELOW_RANGE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->minMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
|
||||
->setParameter('{{ limit }}', $this->formatValue($min, self::PRETTY_DATE))
|
||||
->setCode(Range::BELOW_RANGE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
@ -45,9 +46,15 @@ class RegexValidator extends ConstraintValidator
|
||||
$value = (string) $value;
|
||||
|
||||
if ($constraint->match xor preg_match($constraint->pattern, $value)) {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user