Move into nested docroot
This commit is contained in:
parent
83a0d3a149
commit
c8b70abde9
13405 changed files with 0 additions and 0 deletions
web/vendor/symfony/validator/Constraints
AbstractComparison.phpAbstractComparisonValidator.phpAll.phpAllValidator.phpBic.phpBicValidator.phpBlank.phpBlankValidator.phpCallback.phpCallbackValidator.phpCardScheme.phpCardSchemeValidator.phpChoice.phpChoiceValidator.phpCollection.php
Collection
CollectionValidator.phpComposite.phpCount.phpCountValidator.phpCountry.phpCountryValidator.phpCurrency.phpCurrencyValidator.phpDate.phpDateTime.phpDateTimeValidator.phpDateValidator.phpEmail.phpEmailValidator.phpEqualTo.phpEqualToValidator.phpExistence.phpExpression.phpExpressionValidator.phpFalse.phpFalseValidator.phpFile.phpFileValidator.phpGreaterThan.phpGreaterThanOrEqual.phpGreaterThanOrEqualValidator.phpGreaterThanValidator.phpGroupSequence.phpGroupSequenceProvider.phpIban.phpIbanValidator.phpIdenticalTo.phpIdenticalToValidator.phpImage.phpImageValidator.phpIp.phpIpValidator.phpIsFalse.phpIsFalseValidator.phpIsNull.phpIsNullValidator.phpIsTrue.phpIsTrueValidator.phpIsbn.phpIsbnValidator.phpIssn.phpIssnValidator.phpLanguage.phpLanguageValidator.phpLength.phpLengthValidator.phpLessThan.phpLessThanOrEqual.phpLessThanOrEqualValidator.phpLessThanValidator.phpLocale.phpLocaleValidator.phpLuhn.phpLuhnValidator.phpNotBlank.phpNotBlankValidator.phpNotEqualTo.phpNotEqualToValidator.phpNotIdenticalTo.phpNotIdenticalToValidator.phpNotNull.phpNotNullValidator.phpNull.phpNullValidator.phpOptional.phpRange.phpRangeValidator.phpRegex.phpRegexValidator.phpRequired.phpTime.phpTimeValidator.phpTraverse.phpTrue.phpTrueValidator.phpType.phpTypeValidator.phpUrl.php
50
web/vendor/symfony/validator/Constraints/AbstractComparison.php
vendored
Normal file
50
web/vendor/symfony/validator/Constraints/AbstractComparison.php
vendored
Normal file
|
@ -0,0 +1,50 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
|
||||
/**
|
||||
* Used for the comparison of values.
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
abstract class AbstractComparison extends Constraint
|
||||
{
|
||||
public $message;
|
||||
public $value;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __construct($options = null)
|
||||
{
|
||||
if (is_array($options) && !isset($options['value'])) {
|
||||
throw new ConstraintDefinitionException(sprintf(
|
||||
'The %s constraint requires the "value" option to be set.',
|
||||
get_class($this)
|
||||
));
|
||||
}
|
||||
|
||||
parent::__construct($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getDefaultOption()
|
||||
{
|
||||
return 'value';
|
||||
}
|
||||
}
|
94
web/vendor/symfony/validator/Constraints/AbstractComparisonValidator.php
vendored
Normal file
94
web/vendor/symfony/validator/Constraints/AbstractComparisonValidator.php
vendored
Normal file
|
@ -0,0 +1,94 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* Provides a base class for the validation of property comparisons.
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
abstract class AbstractComparisonValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof AbstractComparison) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\AbstractComparison');
|
||||
}
|
||||
|
||||
if (null === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
$comparedValue = $constraint->value;
|
||||
|
||||
// Convert strings to DateTimes if comparing another DateTime
|
||||
// This allows to compare with any date/time value supported by
|
||||
// the DateTime constructor:
|
||||
// http://php.net/manual/en/datetime.formats.php
|
||||
if (is_string($comparedValue)) {
|
||||
if ($value instanceof \DateTimeImmutable) {
|
||||
// If $value is immutable, convert the compared value to a
|
||||
// DateTimeImmutable too
|
||||
$comparedValue = new \DatetimeImmutable($comparedValue);
|
||||
} elseif ($value instanceof \DateTime || $value instanceof \DateTimeInterface) {
|
||||
// Otherwise use DateTime
|
||||
$comparedValue = new \DateTime($comparedValue);
|
||||
}
|
||||
}
|
||||
|
||||
if (!$this->compareValues($value, $comparedValue)) {
|
||||
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))
|
||||
->setCode($this->getErrorCode())
|
||||
->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))
|
||||
->setCode($this->getErrorCode())
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares the two given values to find if their relationship is valid.
|
||||
*
|
||||
* @param mixed $value1 The first value to compare
|
||||
* @param mixed $value2 The second value to compare
|
||||
*
|
||||
* @return bool true if the relationship is valid, false otherwise
|
||||
*/
|
||||
abstract protected function compareValues($value1, $value2);
|
||||
|
||||
/**
|
||||
* Returns the error code used if the comparison fails.
|
||||
*
|
||||
* @return string|null The error code or `null` if no code should be set
|
||||
*/
|
||||
protected function getErrorCode()
|
||||
{
|
||||
}
|
||||
}
|
38
web/vendor/symfony/validator/Constraints/All.php
vendored
Normal file
38
web/vendor/symfony/validator/Constraints/All.php
vendored
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class All extends Composite
|
||||
{
|
||||
public $constraints = array();
|
||||
|
||||
public function getDefaultOption()
|
||||
{
|
||||
return 'constraints';
|
||||
}
|
||||
|
||||
public function getRequiredOptions()
|
||||
{
|
||||
return array('constraints');
|
||||
}
|
||||
|
||||
protected function getCompositeOption()
|
||||
{
|
||||
return 'constraints';
|
||||
}
|
||||
}
|
56
web/vendor/symfony/validator/Constraints/AllValidator.php
vendored
Normal file
56
web/vendor/symfony/validator/Constraints/AllValidator.php
vendored
Normal file
|
@ -0,0 +1,56 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class AllValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof All) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\All');
|
||||
}
|
||||
|
||||
if (null === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_array($value) && !$value instanceof \Traversable) {
|
||||
throw new UnexpectedTypeException($value, 'array or Traversable');
|
||||
}
|
||||
|
||||
$context = $this->context;
|
||||
|
||||
if ($context instanceof ExecutionContextInterface) {
|
||||
$validator = $context->getValidator()->inContext($context);
|
||||
|
||||
foreach ($value as $key => $element) {
|
||||
$validator->atPath('['.$key.']')->validate($element, $constraint->constraints);
|
||||
}
|
||||
} else {
|
||||
// 2.4 API
|
||||
foreach ($value as $key => $element) {
|
||||
$context->validateValue($element, $constraint->constraints, '['.$key.']');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
39
web/vendor/symfony/validator/Constraints/Bic.php
vendored
Normal file
39
web/vendor/symfony/validator/Constraints/Bic.php
vendored
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Michael Hirschler <michael.vhirsch@gmail.com>
|
||||
*/
|
||||
class Bic extends Constraint
|
||||
{
|
||||
const INVALID_LENGTH_ERROR = '66dad313-af0b-4214-8566-6c799be9789c';
|
||||
const INVALID_CHARACTERS_ERROR = 'f424c529-7add-4417-8f2d-4b656e4833e2';
|
||||
const INVALID_BANK_CODE_ERROR = '00559357-6170-4f29-aebd-d19330aa19cf';
|
||||
const INVALID_COUNTRY_CODE_ERROR = '1ce76f8d-3c1f-451c-9e62-fe9c3ed486ae';
|
||||
const INVALID_CASE_ERROR = '11884038-3312-4ae5-9d04-699f782130c7';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::INVALID_LENGTH_ERROR => 'INVALID_LENGTH_ERROR',
|
||||
self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
|
||||
self::INVALID_BANK_CODE_ERROR => 'INVALID_BANK_CODE_ERROR',
|
||||
self::INVALID_COUNTRY_CODE_ERROR => 'INVALID_COUNTRY_CODE_ERROR',
|
||||
self::INVALID_CASE_ERROR => 'INVALID_CASE_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This is not a valid Business Identifier Code (BIC).';
|
||||
}
|
85
web/vendor/symfony/validator/Constraints/BicValidator.php
vendored
Normal file
85
web/vendor/symfony/validator/Constraints/BicValidator.php
vendored
Normal file
|
@ -0,0 +1,85 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
|
||||
/**
|
||||
* @author Michael Hirschler <michael.vhirsch@gmail.com>
|
||||
*
|
||||
* @link https://en.wikipedia.org/wiki/ISO_9362#Structure
|
||||
*/
|
||||
class BicValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
$canonicalize = str_replace(' ', '', $value);
|
||||
|
||||
// the bic must be either 8 or 11 characters long
|
||||
if (!in_array(strlen($canonicalize), array(8, 11))) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Bic::INVALID_LENGTH_ERROR)
|
||||
->addViolation();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// must contain alphanumeric values only
|
||||
if (!ctype_alnum($canonicalize)) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Bic::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// first 4 letters must be alphabetic (bank code)
|
||||
if (!ctype_alpha(substr($canonicalize, 0, 4))) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Bic::INVALID_BANK_CODE_ERROR)
|
||||
->addViolation();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// next 2 letters must be alphabetic (country code)
|
||||
if (!ctype_alpha(substr($canonicalize, 4, 2))) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Bic::INVALID_COUNTRY_CODE_ERROR)
|
||||
->addViolation();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// should contain uppercase characters only
|
||||
if (strtoupper($canonicalize) !== $canonicalize) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Bic::INVALID_CASE_ERROR)
|
||||
->addViolation();
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
31
web/vendor/symfony/validator/Constraints/Blank.php
vendored
Normal file
31
web/vendor/symfony/validator/Constraints/Blank.php
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Blank extends Constraint
|
||||
{
|
||||
const NOT_BLANK_ERROR = '183ad2de-533d-4796-a439-6d3c3852b549';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NOT_BLANK_ERROR => 'NOT_BLANK_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should be blank.';
|
||||
}
|
47
web/vendor/symfony/validator/Constraints/BlankValidator.php
vendored
Normal file
47
web/vendor/symfony/validator/Constraints/BlankValidator.php
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class BlankValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Blank) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Blank');
|
||||
}
|
||||
|
||||
if ('' !== $value && null !== $value) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Blank::NOT_BLANK_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Blank::NOT_BLANK_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
77
web/vendor/symfony/validator/Constraints/Callback.php
vendored
Normal file
77
web/vendor/symfony/validator/Constraints/Callback.php
vendored
Normal file
|
@ -0,0 +1,77 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"CLASS", "PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Callback extends Constraint
|
||||
{
|
||||
/**
|
||||
* @var string|callable
|
||||
*/
|
||||
public $callback;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*
|
||||
* @deprecated since version 2.4, to be removed in 3.0.
|
||||
*/
|
||||
public $methods;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __construct($options = null)
|
||||
{
|
||||
// Invocation through annotations with an array parameter only
|
||||
if (is_array($options) && 1 === count($options) && isset($options['value'])) {
|
||||
$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']) && !isset($options['payload'])) {
|
||||
if (is_callable($options) || !$options) {
|
||||
$options = array('callback' => $options);
|
||||
} else {
|
||||
// @deprecated, to be removed in 3.0
|
||||
$options = array('methods' => $options);
|
||||
}
|
||||
}
|
||||
|
||||
parent::__construct($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getDefaultOption()
|
||||
{
|
||||
return 'callback';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getTargets()
|
||||
{
|
||||
return array(self::CLASS_CONSTRAINT, self::PROPERTY_CONSTRAINT);
|
||||
}
|
||||
}
|
77
web/vendor/symfony/validator/Constraints/CallbackValidator.php
vendored
Normal file
77
web/vendor/symfony/validator/Constraints/CallbackValidator.php
vendored
Normal file
|
@ -0,0 +1,77 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* Validator for Callback constraint.
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class CallbackValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($object, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Callback) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Callback');
|
||||
}
|
||||
|
||||
if (null !== $constraint->callback && null !== $constraint->methods) {
|
||||
throw new ConstraintDefinitionException(
|
||||
'The Callback constraint supports either the option "callback" '.
|
||||
'or "methods", but not both at the same time.'
|
||||
);
|
||||
}
|
||||
|
||||
// has to be an array so that we can differentiate between callables
|
||||
// and method names
|
||||
if (null !== $constraint->methods && !is_array($constraint->methods)) {
|
||||
throw new UnexpectedTypeException($constraint->methods, 'array');
|
||||
}
|
||||
|
||||
$methods = $constraint->methods ?: array($constraint->callback);
|
||||
|
||||
foreach ($methods as $method) {
|
||||
if ($method instanceof \Closure) {
|
||||
$method($object, $this->context);
|
||||
} elseif (is_array($method)) {
|
||||
if (!is_callable($method)) {
|
||||
if (isset($method[0]) && is_object($method[0])) {
|
||||
$method[0] = get_class($method[0]);
|
||||
}
|
||||
throw new ConstraintDefinitionException(sprintf('%s targeted by Callback constraint is not a valid callable', json_encode($method)));
|
||||
}
|
||||
|
||||
call_user_func($method, $object, $this->context);
|
||||
} elseif (null !== $object) {
|
||||
if (!method_exists($object, $method)) {
|
||||
throw new ConstraintDefinitionException(sprintf('Method "%s" targeted by Callback constraint does not exist in class %s', $method, get_class($object)));
|
||||
}
|
||||
|
||||
$reflMethod = new \ReflectionMethod($object, $method);
|
||||
|
||||
if ($reflMethod->isStatic()) {
|
||||
$reflMethod->invoke(null, $object, $this->context);
|
||||
} else {
|
||||
$reflMethod->invoke($object, $this->context);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
47
web/vendor/symfony/validator/Constraints/CardScheme.php
vendored
Normal file
47
web/vendor/symfony/validator/Constraints/CardScheme.php
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* Metadata for the CardSchemeValidator.
|
||||
*
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Tim Nagel <t.nagel@infinite.net.au>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class CardScheme extends Constraint
|
||||
{
|
||||
const NOT_NUMERIC_ERROR = 'a2ad9231-e827-485f-8a1e-ef4d9a6d5c2e';
|
||||
const INVALID_FORMAT_ERROR = 'a8faedbf-1c2f-4695-8d22-55783be8efed';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NOT_NUMERIC_ERROR => 'NOT_NUMERIC_ERROR',
|
||||
self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'Unsupported card type or invalid card number.';
|
||||
public $schemes;
|
||||
|
||||
public function getDefaultOption()
|
||||
{
|
||||
return 'schemes';
|
||||
}
|
||||
|
||||
public function getRequiredOptions()
|
||||
{
|
||||
return array('schemes');
|
||||
}
|
||||
}
|
143
web/vendor/symfony/validator/Constraints/CardSchemeValidator.php
vendored
Normal file
143
web/vendor/symfony/validator/Constraints/CardSchemeValidator.php
vendored
Normal file
|
@ -0,0 +1,143 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* Validates that a card number belongs to a specified scheme.
|
||||
*
|
||||
* @author Tim Nagel <t.nagel@infinite.net.au>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @see http://en.wikipedia.org/wiki/Bank_card_number
|
||||
* @see http://www.regular-expressions.info/creditcard.html
|
||||
* @see http://www.barclaycard.co.uk/business/files/Ranges_and_Rules_September_2014.pdf
|
||||
*/
|
||||
class CardSchemeValidator extends ConstraintValidator
|
||||
{
|
||||
protected $schemes = array(
|
||||
// American Express card numbers start with 34 or 37 and have 15 digits.
|
||||
'AMEX' => array(
|
||||
'/^3[47][0-9]{13}$/',
|
||||
),
|
||||
// China UnionPay cards start with 62 and have between 16 and 19 digits.
|
||||
// Please note that these cards do not follow Luhn Algorithm as a checksum.
|
||||
'CHINA_UNIONPAY' => array(
|
||||
'/^62[0-9]{14,17}$/',
|
||||
),
|
||||
// Diners Club card numbers begin with 300 through 305, 36 or 38. All have 14 digits.
|
||||
// There are Diners Club cards that begin with 5 and have 16 digits.
|
||||
// These are a joint venture between Diners Club and MasterCard, and should be processed like a MasterCard.
|
||||
'DINERS' => array(
|
||||
'/^3(?:0[0-5]|[68][0-9])[0-9]{11}$/',
|
||||
),
|
||||
// Discover card numbers begin with 6011, 622126 through 622925, 644 through 649 or 65.
|
||||
// All have 16 digits.
|
||||
'DISCOVER' => array(
|
||||
'/^6011[0-9]{12}$/',
|
||||
'/^64[4-9][0-9]{13}$/',
|
||||
'/^65[0-9]{14}$/',
|
||||
'/^622(12[6-9]|1[3-9][0-9]|[2-8][0-9][0-9]|91[0-9]|92[0-5])[0-9]{10}$/',
|
||||
),
|
||||
// InstaPayment cards begin with 637 through 639 and have 16 digits.
|
||||
'INSTAPAYMENT' => array(
|
||||
'/^63[7-9][0-9]{13}$/',
|
||||
),
|
||||
// JCB cards beginning with 2131 or 1800 have 15 digits.
|
||||
// JCB cards beginning with 35 have 16 digits.
|
||||
'JCB' => array(
|
||||
'/^(?:2131|1800|35[0-9]{3})[0-9]{11}$/',
|
||||
),
|
||||
// Laser cards begin with either 6304, 6706, 6709 or 6771 and have between 16 and 19 digits.
|
||||
'LASER' => array(
|
||||
'/^(6304|670[69]|6771)[0-9]{12,15}$/',
|
||||
),
|
||||
// Maestro international cards begin with 675900..675999 and have between 12 and 19 digits.
|
||||
// Maestro UK cards begin with either 500000..509999 or 560000..699999 and have between 12 and 19 digits.
|
||||
'MAESTRO' => array(
|
||||
'/^(6759[0-9]{2})[0-9]{6,13}$/',
|
||||
'/^(50[0-9]{4})[0-9]{6,13}$/',
|
||||
'/^5[6-9][0-9]{10,17}$/',
|
||||
'/^6[0-9]{11,18}$/',
|
||||
),
|
||||
// All MasterCard numbers start with the numbers 51 through 55. All have 16 digits.
|
||||
// October 2016 MasterCard numbers can also start with 222100 through 272099.
|
||||
'MASTERCARD' => array(
|
||||
'/^5[1-5][0-9]{14}$/',
|
||||
'/^2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12})$/',
|
||||
),
|
||||
// All Visa card numbers start with a 4. New cards have 16 digits. Old cards have 13.
|
||||
'VISA' => array(
|
||||
'/^4([0-9]{12}|[0-9]{15})$/',
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
* Validates a creditcard belongs to a specified scheme.
|
||||
*
|
||||
* @param mixed $value
|
||||
* @param Constraint $constraint
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof CardScheme) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\CardScheme');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_numeric($value)) {
|
||||
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;
|
||||
}
|
||||
|
||||
$schemes = array_flip((array) $constraint->schemes);
|
||||
$schemeRegexes = array_intersect_key($this->schemes, $schemes);
|
||||
|
||||
foreach ($schemeRegexes as $regexes) {
|
||||
foreach ($regexes as $regex) {
|
||||
if (preg_match($regex, $value)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
52
web/vendor/symfony/validator/Constraints/Choice.php
vendored
Normal file
52
web/vendor/symfony/validator/Constraints/Choice.php
vendored
Normal file
|
@ -0,0 +1,52 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Choice extends Constraint
|
||||
{
|
||||
const NO_SUCH_CHOICE_ERROR = '8e179f1b-97aa-4560-a02f-2a8b42e49df7';
|
||||
const TOO_FEW_ERROR = '11edd7eb-5872-4b6e-9f12-89923999fd0e';
|
||||
const TOO_MANY_ERROR = '9bd98e49-211c-433f-8630-fd1c2d0f08c3';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NO_SUCH_CHOICE_ERROR => 'NO_SUCH_CHOICE_ERROR',
|
||||
self::TOO_FEW_ERROR => 'TOO_FEW_ERROR',
|
||||
self::TOO_MANY_ERROR => 'TOO_MANY_ERROR',
|
||||
);
|
||||
|
||||
public $choices;
|
||||
public $callback;
|
||||
public $multiple = false;
|
||||
public $strict = false;
|
||||
public $min;
|
||||
public $max;
|
||||
public $message = 'The value you selected is not a valid choice.';
|
||||
public $multipleMessage = 'One or more of the given values is invalid.';
|
||||
public $minMessage = 'You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.';
|
||||
public $maxMessage = 'You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.';
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getDefaultOption()
|
||||
{
|
||||
return 'choices';
|
||||
}
|
||||
}
|
133
web/vendor/symfony/validator/Constraints/ChoiceValidator.php
vendored
Normal file
133
web/vendor/symfony/validator/Constraints/ChoiceValidator.php
vendored
Normal file
|
@ -0,0 +1,133 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* ChoiceValidator validates that the value is one of the expected values.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Florian Eckerstorfer <florian@eckerstorfer.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class ChoiceValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Choice) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Choice');
|
||||
}
|
||||
|
||||
if (!is_array($constraint->choices) && !$constraint->callback) {
|
||||
throw new ConstraintDefinitionException('Either "choices" or "callback" must be specified on constraint Choice');
|
||||
}
|
||||
|
||||
if (null === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($constraint->multiple && !is_array($value)) {
|
||||
throw new UnexpectedTypeException($value, 'array');
|
||||
}
|
||||
|
||||
if ($constraint->callback) {
|
||||
if (!is_callable($choices = array($this->context->getClassName(), $constraint->callback))
|
||||
&& !is_callable($choices = $constraint->callback)
|
||||
) {
|
||||
throw new ConstraintDefinitionException('The Choice constraint expects a valid callback');
|
||||
}
|
||||
$choices = call_user_func($choices);
|
||||
} else {
|
||||
$choices = $constraint->choices;
|
||||
}
|
||||
|
||||
if ($constraint->multiple) {
|
||||
foreach ($value as $_value) {
|
||||
if (!in_array($_value, $choices, $constraint->strict)) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
$count = count($value);
|
||||
|
||||
if ($constraint->min !== null && $count < $constraint->min) {
|
||||
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) {
|
||||
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)) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
85
web/vendor/symfony/validator/Constraints/Collection.php
vendored
Normal file
85
web/vendor/symfony/validator/Constraints/Collection.php
vendored
Normal file
|
@ -0,0 +1,85 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Collection extends Composite
|
||||
{
|
||||
const MISSING_FIELD_ERROR = '2fa2158c-2a7f-484b-98aa-975522539ff8';
|
||||
const NO_SUCH_FIELD_ERROR = '7703c766-b5d5-4cef-ace7-ae0dd82304e9';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::MISSING_FIELD_ERROR => 'MISSING_FIELD_ERROR',
|
||||
self::NO_SUCH_FIELD_ERROR => 'NO_SUCH_FIELD_ERROR',
|
||||
);
|
||||
|
||||
public $fields = array();
|
||||
public $allowExtraFields = false;
|
||||
public $allowMissingFields = false;
|
||||
public $extraFieldsMessage = 'This field was not expected.';
|
||||
public $missingFieldsMessage = 'This field is missing.';
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __construct($options = null)
|
||||
{
|
||||
// no known options set? $options is the fields array
|
||||
if (is_array($options)
|
||||
&& !array_intersect(array_keys($options), array('groups', 'fields', 'allowExtraFields', 'allowMissingFields', 'extraFieldsMessage', 'missingFieldsMessage'))) {
|
||||
$options = array('fields' => $options);
|
||||
}
|
||||
|
||||
parent::__construct($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function initializeNestedConstraints()
|
||||
{
|
||||
parent::initializeNestedConstraints();
|
||||
|
||||
if (!is_array($this->fields)) {
|
||||
throw new ConstraintDefinitionException(sprintf('The option "fields" is expected to be an array in constraint %s', __CLASS__));
|
||||
}
|
||||
|
||||
foreach ($this->fields as $fieldName => $field) {
|
||||
// the XmlFileLoader and YamlFileLoader pass the field Optional
|
||||
// and Required constraint as an array with exactly one element
|
||||
if (is_array($field) && count($field) == 1) {
|
||||
$this->fields[$fieldName] = $field = $field[0];
|
||||
}
|
||||
|
||||
if (!$field instanceof Optional && !$field instanceof Required) {
|
||||
$this->fields[$fieldName] = $field = new Required($field);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getRequiredOptions()
|
||||
{
|
||||
return array('fields');
|
||||
}
|
||||
|
||||
protected function getCompositeOption()
|
||||
{
|
||||
return 'fields';
|
||||
}
|
||||
}
|
29
web/vendor/symfony/validator/Constraints/Collection/Optional.php
vendored
Normal file
29
web/vendor/symfony/validator/Constraints/Collection/Optional.php
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?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\Validator\Constraints\Collection;
|
||||
|
||||
@trigger_error('The '.__NAMESPACE__.'\Optional class is deprecated since version 2.3 and will be removed in 3.0. Use the Symfony\Component\Validator\Constraints\Optional class instead.', E_USER_DEPRECATED);
|
||||
|
||||
use Symfony\Component\Validator\Constraints\Optional as BaseOptional;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @deprecated since version 2.3, to be removed in 3.0.
|
||||
* Use {@link \Symfony\Component\Validator\Constraints\Optional} instead.
|
||||
*/
|
||||
class Optional extends BaseOptional
|
||||
{
|
||||
}
|
29
web/vendor/symfony/validator/Constraints/Collection/Required.php
vendored
Normal file
29
web/vendor/symfony/validator/Constraints/Collection/Required.php
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?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\Validator\Constraints\Collection;
|
||||
|
||||
@trigger_error('The '.__NAMESPACE__.'\Required class is deprecated since version 2.3 and will be removed in 3.0. Use the Symfony\Component\Validator\Constraints\Required class instead.', E_USER_DEPRECATED);
|
||||
|
||||
use Symfony\Component\Validator\Constraints\Required as BaseRequired;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @deprecated since version 2.3, to be removed in 3.0.
|
||||
* Use {@link \Symfony\Component\Validator\Constraints\Required} instead.
|
||||
*/
|
||||
class Required extends BaseRequired
|
||||
{
|
||||
}
|
110
web/vendor/symfony/validator/Constraints/CollectionValidator.php
vendored
Normal file
110
web/vendor/symfony/validator/Constraints/CollectionValidator.php
vendored
Normal file
|
@ -0,0 +1,110 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class CollectionValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Collection) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Collection');
|
||||
}
|
||||
|
||||
if (null === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_array($value) && !($value instanceof \Traversable && $value instanceof \ArrayAccess)) {
|
||||
throw new UnexpectedTypeException($value, 'array or Traversable and ArrayAccess');
|
||||
}
|
||||
|
||||
// We need to keep the initialized context when CollectionValidator
|
||||
// calls itself recursively (Collection constraints can be nested).
|
||||
// Since the context of the validator is overwritten when initialize()
|
||||
// is called for the nested constraint, the outer validator is
|
||||
// acting on the wrong context when the nested validation terminates.
|
||||
//
|
||||
// A better solution - which should be approached in Symfony 3.0 - is to
|
||||
// remove the initialize() method and pass the context as last argument
|
||||
// to validate() instead.
|
||||
$context = $this->context;
|
||||
|
||||
foreach ($constraint->fields as $field => $fieldConstraint) {
|
||||
// bug fix issue #2779
|
||||
$existsInArray = is_array($value) && array_key_exists($field, $value);
|
||||
$existsInArrayAccess = $value instanceof \ArrayAccess && $value->offsetExists($field);
|
||||
|
||||
if ($existsInArray || $existsInArrayAccess) {
|
||||
if (count($fieldConstraint->constraints) > 0) {
|
||||
if ($context instanceof ExecutionContextInterface) {
|
||||
$context->getValidator()
|
||||
->inContext($context)
|
||||
->atPath('['.$field.']')
|
||||
->validate($value[$field], $fieldConstraint->constraints);
|
||||
} else {
|
||||
// 2.4 API
|
||||
$context->validateValue($value[$field], $fieldConstraint->constraints, '['.$field.']');
|
||||
}
|
||||
}
|
||||
} elseif (!$fieldConstraint instanceof Optional && !$constraint->allowMissingFields) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$constraint->allowExtraFields) {
|
||||
foreach ($value as $field => $fieldValue) {
|
||||
if (!isset($constraint->fields[$field])) {
|
||||
if ($context instanceof ExecutionContextInterface) {
|
||||
$context->buildViolation($constraint->extraFieldsMessage)
|
||||
->atPath('['.$field.']')
|
||||
->setParameter('{{ field }}', $this->formatValue($field))
|
||||
->setInvalidValue($fieldValue)
|
||||
->setCode(Collection::NO_SUCH_FIELD_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolationInContext($context, $constraint->extraFieldsMessage)
|
||||
->atPath('['.$field.']')
|
||||
->setParameter('{{ field }}', $this->formatValue($field))
|
||||
->setInvalidValue($fieldValue)
|
||||
->setCode(Collection::NO_SUCH_FIELD_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
151
web/vendor/symfony/validator/Constraints/Composite.php
vendored
Normal file
151
web/vendor/symfony/validator/Constraints/Composite.php
vendored
Normal file
|
@ -0,0 +1,151 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
|
||||
/**
|
||||
* A constraint that is composed of other constraints.
|
||||
*
|
||||
* You should never use the nested constraint instances anywhere else, because
|
||||
* their groups are adapted when passed to the constructor of this class.
|
||||
*
|
||||
* If you want to create your own composite constraint, extend this class and
|
||||
* let {@link getCompositeOption()} return the name of the property which
|
||||
* contains the nested constraints.
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
abstract class Composite extends Constraint
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* The groups of the composite and its nested constraints are made
|
||||
* consistent using the following strategy:
|
||||
*
|
||||
* - If groups are passed explicitly to the composite constraint, but
|
||||
* not to the nested constraints, the options of the composite
|
||||
* constraint are copied to the nested constraints;
|
||||
*
|
||||
* - If groups are passed explicitly to the nested constraints, but not
|
||||
* to the composite constraint, the groups of all nested constraints
|
||||
* are merged and used as groups for the composite constraint;
|
||||
*
|
||||
* - If groups are passed explicitly to both the composite and its nested
|
||||
* constraints, the groups of the nested constraints must be a subset
|
||||
* of the groups of the composite constraint. If not, a
|
||||
* {@link ConstraintDefinitionException} is thrown.
|
||||
*
|
||||
* All this is done in the constructor, because constraints can then be
|
||||
* cached. When constraints are loaded from the cache, no more group
|
||||
* checks need to be done.
|
||||
*/
|
||||
public function __construct($options = null)
|
||||
{
|
||||
parent::__construct($options);
|
||||
|
||||
$this->initializeNestedConstraints();
|
||||
|
||||
/* @var Constraint[] $nestedConstraints */
|
||||
$compositeOption = $this->getCompositeOption();
|
||||
$nestedConstraints = $this->$compositeOption;
|
||||
|
||||
if (!is_array($nestedConstraints)) {
|
||||
$nestedConstraints = array($nestedConstraints);
|
||||
}
|
||||
|
||||
foreach ($nestedConstraints as $constraint) {
|
||||
if (!$constraint instanceof Constraint) {
|
||||
throw new ConstraintDefinitionException(sprintf('The value %s is not an instance of Constraint in constraint %s', $constraint, get_class($this)));
|
||||
}
|
||||
|
||||
if ($constraint instanceof Valid) {
|
||||
throw new ConstraintDefinitionException(sprintf('The constraint Valid cannot be nested inside constraint %s. You can only declare the Valid constraint directly on a field or method.', get_class($this)));
|
||||
}
|
||||
}
|
||||
|
||||
if (!property_exists($this, 'groups')) {
|
||||
$mergedGroups = array();
|
||||
|
||||
foreach ($nestedConstraints as $constraint) {
|
||||
foreach ($constraint->groups as $group) {
|
||||
$mergedGroups[$group] = true;
|
||||
}
|
||||
}
|
||||
|
||||
$this->groups = array_keys($mergedGroups);
|
||||
$this->$compositeOption = $nestedConstraints;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($nestedConstraints as $constraint) {
|
||||
if (property_exists($constraint, 'groups')) {
|
||||
$excessGroups = array_diff($constraint->groups, $this->groups);
|
||||
|
||||
if (count($excessGroups) > 0) {
|
||||
throw new ConstraintDefinitionException(sprintf(
|
||||
'The group(s) "%s" passed to the constraint %s '.
|
||||
'should also be passed to its containing constraint %s',
|
||||
implode('", "', $excessGroups),
|
||||
get_class($constraint),
|
||||
get_class($this)
|
||||
));
|
||||
}
|
||||
} else {
|
||||
$constraint->groups = $this->groups;
|
||||
}
|
||||
}
|
||||
|
||||
$this->$compositeOption = $nestedConstraints;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* Implicit group names are forwarded to nested constraints.
|
||||
*
|
||||
* @param string $group
|
||||
*/
|
||||
public function addImplicitGroupName($group)
|
||||
{
|
||||
parent::addImplicitGroupName($group);
|
||||
|
||||
/** @var Constraint[] $nestedConstraints */
|
||||
$nestedConstraints = $this->{$this->getCompositeOption()};
|
||||
|
||||
foreach ($nestedConstraints as $constraint) {
|
||||
$constraint->addImplicitGroupName($group);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the property that contains the nested constraints.
|
||||
*
|
||||
* @return string The property name
|
||||
*/
|
||||
abstract protected function getCompositeOption();
|
||||
|
||||
/**
|
||||
* Initializes the nested constraints.
|
||||
*
|
||||
* This method can be overwritten in subclasses to clean up the nested
|
||||
* constraints passed to the constructor.
|
||||
*
|
||||
* @see Collection::initializeNestedConstraints()
|
||||
*/
|
||||
protected function initializeNestedConstraints()
|
||||
{
|
||||
}
|
||||
}
|
54
web/vendor/symfony/validator/Constraints/Count.php
vendored
Normal file
54
web/vendor/symfony/validator/Constraints/Count.php
vendored
Normal file
|
@ -0,0 +1,54 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\MissingOptionsException;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Count extends Constraint
|
||||
{
|
||||
const TOO_FEW_ERROR = 'bef8e338-6ae5-4caf-b8e2-50e7b0579e69';
|
||||
const TOO_MANY_ERROR = '756b1212-697c-468d-a9ad-50dd783bb169';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::TOO_FEW_ERROR => 'TOO_FEW_ERROR',
|
||||
self::TOO_MANY_ERROR => 'TOO_MANY_ERROR',
|
||||
);
|
||||
|
||||
public $minMessage = 'This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.';
|
||||
public $maxMessage = 'This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.';
|
||||
public $exactMessage = 'This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.';
|
||||
public $min;
|
||||
public $max;
|
||||
|
||||
public function __construct($options = null)
|
||||
{
|
||||
if (null !== $options && !is_array($options)) {
|
||||
$options = array(
|
||||
'min' => $options,
|
||||
'max' => $options,
|
||||
);
|
||||
}
|
||||
|
||||
parent::__construct($options);
|
||||
|
||||
if (null === $this->min && null === $this->max) {
|
||||
throw new MissingOptionsException(sprintf('Either option "min" or "max" must be given for constraint %s', __CLASS__), array('min', 'max'));
|
||||
}
|
||||
}
|
||||
}
|
81
web/vendor/symfony/validator/Constraints/CountValidator.php
vendored
Normal file
81
web/vendor/symfony/validator/Constraints/CountValidator.php
vendored
Normal file
|
@ -0,0 +1,81 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class CountValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (null === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_array($value) && !$value instanceof \Countable) {
|
||||
throw new UnexpectedTypeException($value, 'array or \Countable');
|
||||
}
|
||||
|
||||
$count = count($value);
|
||||
|
||||
if (null !== $constraint->max && $count > $constraint->max) {
|
||||
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) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
31
web/vendor/symfony/validator/Constraints/Country.php
vendored
Normal file
31
web/vendor/symfony/validator/Constraints/Country.php
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Country extends Constraint
|
||||
{
|
||||
const NO_SUCH_COUNTRY_ERROR = '8f900c12-61bd-455d-9398-996cd040f7f0';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NO_SUCH_COUNTRY_ERROR => 'NO_SUCH_COUNTRY_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value is not a valid country.';
|
||||
}
|
61
web/vendor/symfony/validator/Constraints/CountryValidator.php
vendored
Normal file
61
web/vendor/symfony/validator/Constraints/CountryValidator.php
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
<?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\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;
|
||||
|
||||
/**
|
||||
* Validates whether a value is a valid country code.
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class CountryValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Country) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Country');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
$countries = Intl::getRegionBundle()->getCountryNames();
|
||||
|
||||
if (!isset($countries[$value])) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Country::NO_SUCH_COUNTRY_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Country::NO_SUCH_COUNTRY_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
32
web/vendor/symfony/validator/Constraints/Currency.php
vendored
Normal file
32
web/vendor/symfony/validator/Constraints/Currency.php
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Miha Vrhovnik <miha.vrhovnik@pagein.si>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Currency extends Constraint
|
||||
{
|
||||
const NO_SUCH_CURRENCY_ERROR = '69945ac1-2db4-405f-bec7-d2772f73df52';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NO_SUCH_CURRENCY_ERROR => 'NO_SUCH_CURRENCY_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value is not a valid currency.';
|
||||
}
|
62
web/vendor/symfony/validator/Constraints/CurrencyValidator.php
vendored
Normal file
62
web/vendor/symfony/validator/Constraints/CurrencyValidator.php
vendored
Normal file
|
@ -0,0 +1,62 @@
|
|||
<?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\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;
|
||||
|
||||
/**
|
||||
* Validates whether a value is a valid currency.
|
||||
*
|
||||
* @author Miha Vrhovnik <miha.vrhovnik@pagein.si>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class CurrencyValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Currency) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Currency');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
$currencies = Intl::getCurrencyBundle()->getCurrencyNames();
|
||||
|
||||
if (!isset($currencies[$value])) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Currency::NO_SUCH_CURRENCY_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Currency::NO_SUCH_CURRENCY_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
33
web/vendor/symfony/validator/Constraints/Date.php
vendored
Normal file
33
web/vendor/symfony/validator/Constraints/Date.php
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Date extends Constraint
|
||||
{
|
||||
const INVALID_FORMAT_ERROR = '69819696-02ac-4a99-9ff0-14e127c4d1bc';
|
||||
const INVALID_DATE_ERROR = '3c184ce5-b31d-4de7-8b76-326da7b2be93';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
|
||||
self::INVALID_DATE_ERROR => 'INVALID_DATE_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value is not a valid date.';
|
||||
}
|
35
web/vendor/symfony/validator/Constraints/DateTime.php
vendored
Normal file
35
web/vendor/symfony/validator/Constraints/DateTime.php
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class DateTime extends Constraint
|
||||
{
|
||||
const INVALID_FORMAT_ERROR = '1a9da513-2640-4f84-9b6a-4d99dcddc628';
|
||||
const INVALID_DATE_ERROR = 'd52afa47-620d-4d99-9f08-f4d85b36e33c';
|
||||
const INVALID_TIME_ERROR = '5e797c9d-74f7-4098-baa3-94390c447b27';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
|
||||
self::INVALID_DATE_ERROR => 'INVALID_DATE_ERROR',
|
||||
self::INVALID_TIME_ERROR => 'INVALID_TIME_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value is not a valid datetime.';
|
||||
}
|
88
web/vendor/symfony/validator/Constraints/DateTimeValidator.php
vendored
Normal file
88
web/vendor/symfony/validator/Constraints/DateTimeValidator.php
vendored
Normal file
|
@ -0,0 +1,88 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class DateTimeValidator extends DateValidator
|
||||
{
|
||||
const PATTERN = '/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/';
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof DateTime) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\DateTime');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value || $value instanceof \DateTime) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
|
||||
if (!preg_match(static::PATTERN, $value, $matches)) {
|
||||
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])) {
|
||||
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])) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
91
web/vendor/symfony/validator/Constraints/DateValidator.php
vendored
Normal file
91
web/vendor/symfony/validator/Constraints/DateValidator.php
vendored
Normal file
|
@ -0,0 +1,91 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class DateValidator extends ConstraintValidator
|
||||
{
|
||||
const PATTERN = '/^(\d{4})-(\d{2})-(\d{2})$/';
|
||||
|
||||
/**
|
||||
* Checks whether a date is valid.
|
||||
*
|
||||
* @param int $year The year
|
||||
* @param int $month The month
|
||||
* @param int $day The day
|
||||
*
|
||||
* @return bool Whether the date is valid
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
public static function checkDate($year, $month, $day)
|
||||
{
|
||||
return checkdate($month, $day, $year);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Date) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Date');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value || $value instanceof \DateTime) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
|
||||
if (!preg_match(static::PATTERN, $value, $matches)) {
|
||||
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])) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
38
web/vendor/symfony/validator/Constraints/Email.php
vendored
Normal file
38
web/vendor/symfony/validator/Constraints/Email.php
vendored
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Email extends Constraint
|
||||
{
|
||||
const INVALID_FORMAT_ERROR = 'bd79c0ab-ddba-46cc-a703-a7a4b08de310';
|
||||
const MX_CHECK_FAILED_ERROR = 'bf447c1c-0266-4e10-9c6c-573df282e413';
|
||||
const HOST_CHECK_FAILED_ERROR = '7da53a8b-56f3-4288-bb3e-ee9ede4ef9a1';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::INVALID_FORMAT_ERROR => 'STRICT_CHECK_FAILED_ERROR',
|
||||
self::MX_CHECK_FAILED_ERROR => 'MX_CHECK_FAILED_ERROR',
|
||||
self::HOST_CHECK_FAILED_ERROR => 'HOST_CHECK_FAILED_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value is not a valid email address.';
|
||||
public $checkMX = false;
|
||||
public $checkHost = false;
|
||||
public $strict;
|
||||
}
|
155
web/vendor/symfony/validator/Constraints/EmailValidator.php
vendored
Normal file
155
web/vendor/symfony/validator/Constraints/EmailValidator.php
vendored
Normal file
|
@ -0,0 +1,155 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\RuntimeException;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class EmailValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $isStrict;
|
||||
|
||||
public function __construct($strict = false)
|
||||
{
|
||||
$this->isStrict = $strict;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Email) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Email');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
|
||||
if (null === $constraint->strict) {
|
||||
$constraint->strict = $this->isStrict;
|
||||
}
|
||||
|
||||
if ($constraint->strict) {
|
||||
if (!class_exists('\Egulias\EmailValidator\EmailValidator') || interface_exists('\Egulias\EmailValidator\Validation\EmailValidation')) {
|
||||
throw new RuntimeException('Strict email validation requires egulias/email-validator:~1.2');
|
||||
}
|
||||
|
||||
$strictValidator = new \Egulias\EmailValidator\EmailValidator();
|
||||
|
||||
if (!$strictValidator->isValid($value, false, true)) {
|
||||
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('/^.+\@\S+\.\S+$/', $value)) {
|
||||
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;
|
||||
}
|
||||
|
||||
$host = substr($value, strrpos($value, '@') + 1);
|
||||
|
||||
// Check for host DNS resource records
|
||||
if ($constraint->checkMX) {
|
||||
if (!$this->checkMX($host)) {
|
||||
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)) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check DNS Records for MX type.
|
||||
*
|
||||
* @param string $host Host
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function checkMX($host)
|
||||
{
|
||||
return checkdnsrr($host, 'MX');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if one of MX, A or AAAA DNS RR exists.
|
||||
*
|
||||
* @param string $host Host
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function checkHost($host)
|
||||
{
|
||||
return $this->checkMX($host) || (checkdnsrr($host, 'A') || checkdnsrr($host, 'AAAA'));
|
||||
}
|
||||
}
|
30
web/vendor/symfony/validator/Constraints/EqualTo.php
vendored
Normal file
30
web/vendor/symfony/validator/Constraints/EqualTo.php
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class EqualTo extends AbstractComparison
|
||||
{
|
||||
const NOT_EQUAL_ERROR = '478618a7-95ba-473d-9101-cabd45e49115';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NOT_EQUAL_ERROR => 'NOT_EQUAL_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should be equal to {{ compared_value }}.';
|
||||
}
|
37
web/vendor/symfony/validator/Constraints/EqualToValidator.php
vendored
Normal file
37
web/vendor/symfony/validator/Constraints/EqualToValidator.php
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* Validates values are equal (==).
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class EqualToValidator extends AbstractComparisonValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function compareValues($value1, $value2)
|
||||
{
|
||||
return $value1 == $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getErrorCode()
|
||||
{
|
||||
return EqualTo::NOT_EQUAL_ERROR;
|
||||
}
|
||||
}
|
30
web/vendor/symfony/validator/Constraints/Existence.php
vendored
Normal file
30
web/vendor/symfony/validator/Constraints/Existence.php
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
abstract class Existence extends Composite
|
||||
{
|
||||
public $constraints = array();
|
||||
|
||||
public function getDefaultOption()
|
||||
{
|
||||
return 'constraints';
|
||||
}
|
||||
|
||||
protected function getCompositeOption()
|
||||
{
|
||||
return 'constraints';
|
||||
}
|
||||
}
|
65
web/vendor/symfony/validator/Constraints/Expression.php
vendored
Normal file
65
web/vendor/symfony/validator/Constraints/Expression.php
vendored
Normal file
|
@ -0,0 +1,65 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"CLASS", "PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Expression extends Constraint
|
||||
{
|
||||
const EXPRESSION_FAILED_ERROR = '6b3befbc-2f01-4ddf-be21-b57898905284';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::EXPRESSION_FAILED_ERROR => 'EXPRESSION_FAILED_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value is not valid.';
|
||||
public $expression;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getDefaultOption()
|
||||
{
|
||||
return 'expression';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getRequiredOptions()
|
||||
{
|
||||
return array('expression');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getTargets()
|
||||
{
|
||||
return array(self::CLASS_CONSTRAINT, self::PROPERTY_CONSTRAINT);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validatedBy()
|
||||
{
|
||||
return 'validator.expression';
|
||||
}
|
||||
}
|
117
web/vendor/symfony/validator/Constraints/ExpressionValidator.php
vendored
Normal file
117
web/vendor/symfony/validator/Constraints/ExpressionValidator.php
vendored
Normal file
|
@ -0,0 +1,117 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
|
||||
use Symfony\Component\PropertyAccess\PropertyAccess;
|
||||
use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
|
||||
use Symfony\Component\PropertyAccess\PropertyPath;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Exception\RuntimeException;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Bernhard Schussek <bschussek@symfony.com>
|
||||
*/
|
||||
class ExpressionValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* @var PropertyAccessorInterface
|
||||
*/
|
||||
private $propertyAccessor;
|
||||
|
||||
/**
|
||||
* @var ExpressionLanguage
|
||||
*/
|
||||
private $expressionLanguage;
|
||||
|
||||
public function __construct(PropertyAccessorInterface $propertyAccessor = null, ExpressionLanguage $expressionLanguage = null)
|
||||
{
|
||||
$this->propertyAccessor = $propertyAccessor;
|
||||
$this->expressionLanguage = $expressionLanguage;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Expression) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Expression');
|
||||
}
|
||||
|
||||
$variables = array();
|
||||
|
||||
// Symfony 2.5+
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$variables['value'] = $value;
|
||||
$variables['this'] = $this->context->getObject();
|
||||
} elseif (null === $this->context->getPropertyName()) {
|
||||
$variables['value'] = $value;
|
||||
$variables['this'] = $value;
|
||||
} else {
|
||||
$root = $this->context->getRoot();
|
||||
$variables['value'] = $value;
|
||||
|
||||
if (is_object($root)) {
|
||||
// Extract the object that the property belongs to from the object
|
||||
// graph
|
||||
$path = new PropertyPath($this->context->getPropertyPath());
|
||||
$parentPath = $path->getParent();
|
||||
$variables['this'] = $parentPath ? $this->getPropertyAccessor()->getValue($root, $parentPath) : $root;
|
||||
} else {
|
||||
$variables['this'] = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$this->getExpressionLanguage()->evaluate($constraint->expression, $variables)) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Expression::EXPRESSION_FAILED_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Expression::EXPRESSION_FAILED_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function getExpressionLanguage()
|
||||
{
|
||||
if (null === $this->expressionLanguage) {
|
||||
if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {
|
||||
throw new RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.');
|
||||
}
|
||||
$this->expressionLanguage = new ExpressionLanguage();
|
||||
}
|
||||
|
||||
return $this->expressionLanguage;
|
||||
}
|
||||
|
||||
private function getPropertyAccessor()
|
||||
{
|
||||
if (null === $this->propertyAccessor) {
|
||||
if (!class_exists('Symfony\Component\PropertyAccess\PropertyAccess')) {
|
||||
throw new RuntimeException('Unable to use expressions as the Symfony PropertyAccess component is not installed.');
|
||||
}
|
||||
$this->propertyAccessor = PropertyAccess::createPropertyAccessor();
|
||||
}
|
||||
|
||||
return $this->propertyAccessor;
|
||||
}
|
||||
}
|
26
web/vendor/symfony/validator/Constraints/False.php
vendored
Normal file
26
web/vendor/symfony/validator/Constraints/False.php
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
@trigger_error('The '.__NAMESPACE__.'\False class is deprecated since version 2.7 and will be removed in 3.0. Use the IsFalse class in the same namespace instead.', E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @deprecated since version 2.7, to be removed in 3.0. Use IsFalse instead.
|
||||
*/
|
||||
class False extends IsFalse
|
||||
{
|
||||
}
|
23
web/vendor/symfony/validator/Constraints/FalseValidator.php
vendored
Normal file
23
web/vendor/symfony/validator/Constraints/FalseValidator.php
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
@trigger_error('The '.__NAMESPACE__.'\FalseValidator class is deprecated since version 2.7 and will be removed in 3.0. Use the IsFalseValidator class in the same namespace instead.', E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @deprecated since version 2.7, to be removed in 3.0. Use IsFalseValidator instead.
|
||||
*/
|
||||
class FalseValidator extends IsFalseValidator
|
||||
{
|
||||
}
|
112
web/vendor/symfony/validator/Constraints/File.php
vendored
Normal file
112
web/vendor/symfony/validator/Constraints/File.php
vendored
Normal file
|
@ -0,0 +1,112 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class File extends Constraint
|
||||
{
|
||||
// Check the Image constraint for clashes if adding new constants here
|
||||
|
||||
const NOT_FOUND_ERROR = 'd2a3fb6e-7ddc-4210-8fbf-2ab345ce1998';
|
||||
const NOT_READABLE_ERROR = 'c20c92a4-5bfa-4202-9477-28e800e0f6ff';
|
||||
const EMPTY_ERROR = '5d743385-9775-4aa5-8ff5-495fb1e60137';
|
||||
const TOO_LARGE_ERROR = 'df8637af-d466-48c6-a59d-e7126250a654';
|
||||
const INVALID_MIME_TYPE_ERROR = '744f00bc-4389-4c74-92de-9a43cde55534';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NOT_FOUND_ERROR => 'NOT_FOUND_ERROR',
|
||||
self::NOT_READABLE_ERROR => 'NOT_READABLE_ERROR',
|
||||
self::EMPTY_ERROR => 'EMPTY_ERROR',
|
||||
self::TOO_LARGE_ERROR => 'TOO_LARGE_ERROR',
|
||||
self::INVALID_MIME_TYPE_ERROR => 'INVALID_MIME_TYPE_ERROR',
|
||||
);
|
||||
|
||||
public $binaryFormat;
|
||||
public $mimeTypes = array();
|
||||
public $notFoundMessage = 'The file could not be found.';
|
||||
public $notReadableMessage = 'The file is not readable.';
|
||||
public $maxSizeMessage = 'The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.';
|
||||
public $mimeTypesMessage = 'The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.';
|
||||
public $disallowEmptyMessage = 'An empty file is not allowed.';
|
||||
|
||||
public $uploadIniSizeErrorMessage = 'The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.';
|
||||
public $uploadFormSizeErrorMessage = 'The file is too large.';
|
||||
public $uploadPartialErrorMessage = 'The file was only partially uploaded.';
|
||||
public $uploadNoFileErrorMessage = 'No file was uploaded.';
|
||||
public $uploadNoTmpDirErrorMessage = 'No temporary folder was configured in php.ini.';
|
||||
public $uploadCantWriteErrorMessage = 'Cannot write temporary file to disk.';
|
||||
public $uploadExtensionErrorMessage = 'A PHP extension caused the upload to fail.';
|
||||
public $uploadErrorMessage = 'The file could not be uploaded.';
|
||||
|
||||
protected $maxSize;
|
||||
|
||||
public function __construct($options = null)
|
||||
{
|
||||
parent::__construct($options);
|
||||
|
||||
if (null !== $this->maxSize) {
|
||||
$this->normalizeBinaryFormat($this->maxSize);
|
||||
}
|
||||
}
|
||||
|
||||
public function __set($option, $value)
|
||||
{
|
||||
if ('maxSize' === $option) {
|
||||
$this->normalizeBinaryFormat($value);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
parent::__set($option, $value);
|
||||
}
|
||||
|
||||
public function __get($option)
|
||||
{
|
||||
if ('maxSize' === $option) {
|
||||
return $this->maxSize;
|
||||
}
|
||||
|
||||
return parent::__get($option);
|
||||
}
|
||||
|
||||
private function normalizeBinaryFormat($maxSize)
|
||||
{
|
||||
$sizeInt = (int) $maxSize;
|
||||
|
||||
if (ctype_digit((string) $maxSize)) {
|
||||
$this->maxSize = $sizeInt;
|
||||
$this->binaryFormat = null === $this->binaryFormat ? false : $this->binaryFormat;
|
||||
} elseif (preg_match('/^\d++k$/i', $maxSize)) {
|
||||
$this->maxSize = $sizeInt * 1000;
|
||||
$this->binaryFormat = null === $this->binaryFormat ? false : $this->binaryFormat;
|
||||
} elseif (preg_match('/^\d++M$/i', $maxSize)) {
|
||||
$this->maxSize = $sizeInt * 1000000;
|
||||
$this->binaryFormat = null === $this->binaryFormat ? false : $this->binaryFormat;
|
||||
} elseif (preg_match('/^\d++Ki$/i', $maxSize)) {
|
||||
$this->maxSize = $sizeInt << 10;
|
||||
$this->binaryFormat = null === $this->binaryFormat ? true : $this->binaryFormat;
|
||||
} elseif (preg_match('/^\d++Mi$/i', $maxSize)) {
|
||||
$this->maxSize = $sizeInt << 20;
|
||||
$this->binaryFormat = null === $this->binaryFormat ? true : $this->binaryFormat;
|
||||
} else {
|
||||
throw new ConstraintDefinitionException(sprintf('"%s" is not a valid maximum size', $this->maxSize));
|
||||
}
|
||||
}
|
||||
}
|
329
web/vendor/symfony/validator/Constraints/FileValidator.php
vendored
Normal file
329
web/vendor/symfony/validator/Constraints/FileValidator.php
vendored
Normal file
|
@ -0,0 +1,329 @@
|
|||
<?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\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;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class FileValidator extends ConstraintValidator
|
||||
{
|
||||
const KB_BYTES = 1000;
|
||||
const MB_BYTES = 1000000;
|
||||
const KIB_BYTES = 1024;
|
||||
const MIB_BYTES = 1048576;
|
||||
|
||||
private static $suffices = array(
|
||||
1 => 'bytes',
|
||||
self::KB_BYTES => 'kB',
|
||||
self::MB_BYTES => 'MB',
|
||||
self::KIB_BYTES => 'KiB',
|
||||
self::MIB_BYTES => 'MiB',
|
||||
);
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof File) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\File');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($value instanceof UploadedFile && !$value->isValid()) {
|
||||
switch ($value->getError()) {
|
||||
case UPLOAD_ERR_INI_SIZE:
|
||||
$iniLimitSize = UploadedFile::getMaxFilesize();
|
||||
if ($constraint->maxSize && $constraint->maxSize < $iniLimitSize) {
|
||||
$limitInBytes = $constraint->maxSize;
|
||||
$binaryFormat = $constraint->binaryFormat;
|
||||
} else {
|
||||
$limitInBytes = $iniLimitSize;
|
||||
$binaryFormat = true;
|
||||
}
|
||||
|
||||
list($sizeAsString, $limitAsString, $suffix) = $this->factorizeSizes(0, $limitInBytes, $binaryFormat);
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->uploadErrorMessage)
|
||||
->setCode($value->getError())
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->uploadErrorMessage)
|
||||
->setCode($value->getError())
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !$value instanceof FileObject && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$path = $value instanceof FileObject ? $value->getPathname() : (string) $value;
|
||||
|
||||
if (!is_file($path)) {
|
||||
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)) {
|
||||
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;
|
||||
}
|
||||
|
||||
$sizeInBytes = filesize($path);
|
||||
|
||||
if (0 === $sizeInBytes) {
|
||||
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;
|
||||
}
|
||||
|
||||
if ($constraint->maxSize) {
|
||||
$limitInBytes = $constraint->maxSize;
|
||||
|
||||
if ($sizeInBytes > $limitInBytes) {
|
||||
list($sizeAsString, $limitAsString, $suffix) = $this->factorizeSizes($sizeInBytes, $limitInBytes, $constraint->binaryFormat);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
if ($constraint->mimeTypes) {
|
||||
if (!$value instanceof FileObject) {
|
||||
$value = new FileObject($value);
|
||||
}
|
||||
|
||||
$mimeTypes = (array) $constraint->mimeTypes;
|
||||
$mime = $value->getMimeType();
|
||||
|
||||
foreach ($mimeTypes as $mimeType) {
|
||||
if ($mimeType === $mime) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($discrete = strstr($mimeType, '/*', true)) {
|
||||
if (strstr($mime, '/', true) === $discrete) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static function moreDecimalsThan($double, $numberOfDecimals)
|
||||
{
|
||||
return strlen((string) $double) > strlen(round($double, $numberOfDecimals));
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert the limit to the smallest possible number
|
||||
* (i.e. try "MB", then "kB", then "bytes").
|
||||
*/
|
||||
private function factorizeSizes($size, $limit, $binaryFormat)
|
||||
{
|
||||
if ($binaryFormat) {
|
||||
$coef = self::MIB_BYTES;
|
||||
$coefFactor = self::KIB_BYTES;
|
||||
} else {
|
||||
$coef = self::MB_BYTES;
|
||||
$coefFactor = self::KB_BYTES;
|
||||
}
|
||||
|
||||
$limitAsString = (string) ($limit / $coef);
|
||||
|
||||
// Restrict the limit to 2 decimals (without rounding! we
|
||||
// need the precise value)
|
||||
while (self::moreDecimalsThan($limitAsString, 2)) {
|
||||
$coef /= $coefFactor;
|
||||
$limitAsString = (string) ($limit / $coef);
|
||||
}
|
||||
|
||||
// Convert size to the same measure, but round to 2 decimals
|
||||
$sizeAsString = (string) round($size / $coef, 2);
|
||||
|
||||
// If the size and limit produce the same string output
|
||||
// (due to rounding), reduce the coefficient
|
||||
while ($sizeAsString === $limitAsString) {
|
||||
$coef /= $coefFactor;
|
||||
$limitAsString = (string) ($limit / $coef);
|
||||
$sizeAsString = (string) round($size / $coef, 2);
|
||||
}
|
||||
|
||||
return array($sizeAsString, $limitAsString, self::$suffices[$coef]);
|
||||
}
|
||||
}
|
30
web/vendor/symfony/validator/Constraints/GreaterThan.php
vendored
Normal file
30
web/vendor/symfony/validator/Constraints/GreaterThan.php
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class GreaterThan extends AbstractComparison
|
||||
{
|
||||
const TOO_LOW_ERROR = '778b7ae0-84d3-481a-9dec-35fdb64b1d78';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::TOO_LOW_ERROR => 'TOO_LOW_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should be greater than {{ compared_value }}.';
|
||||
}
|
30
web/vendor/symfony/validator/Constraints/GreaterThanOrEqual.php
vendored
Normal file
30
web/vendor/symfony/validator/Constraints/GreaterThanOrEqual.php
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class GreaterThanOrEqual extends AbstractComparison
|
||||
{
|
||||
const TOO_LOW_ERROR = 'ea4e51d1-3342-48bd-87f1-9e672cd90cad';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::TOO_LOW_ERROR => 'TOO_LOW_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should be greater than or equal to {{ compared_value }}.';
|
||||
}
|
37
web/vendor/symfony/validator/Constraints/GreaterThanOrEqualValidator.php
vendored
Normal file
37
web/vendor/symfony/validator/Constraints/GreaterThanOrEqualValidator.php
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* Validates values are greater than or equal to the previous (>=).
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class GreaterThanOrEqualValidator extends AbstractComparisonValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function compareValues($value1, $value2)
|
||||
{
|
||||
return $value1 >= $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getErrorCode()
|
||||
{
|
||||
return GreaterThanOrEqual::TOO_LOW_ERROR;
|
||||
}
|
||||
}
|
37
web/vendor/symfony/validator/Constraints/GreaterThanValidator.php
vendored
Normal file
37
web/vendor/symfony/validator/Constraints/GreaterThanValidator.php
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* Validates values are greater than the previous (>).
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class GreaterThanValidator extends AbstractComparisonValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function compareValues($value1, $value2)
|
||||
{
|
||||
return $value1 > $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getErrorCode()
|
||||
{
|
||||
return GreaterThan::TOO_LOW_ERROR;
|
||||
}
|
||||
}
|
211
web/vendor/symfony/validator/Constraints/GroupSequence.php
vendored
Normal file
211
web/vendor/symfony/validator/Constraints/GroupSequence.php
vendored
Normal file
|
@ -0,0 +1,211 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Exception\OutOfBoundsException;
|
||||
|
||||
/**
|
||||
* A sequence of validation groups.
|
||||
*
|
||||
* When validating a group sequence, each group will only be validated if all
|
||||
* of the previous groups in the sequence succeeded. For example:
|
||||
*
|
||||
* $validator->validate($address, null, new GroupSequence(array('Basic', 'Strict')));
|
||||
*
|
||||
* In the first step, all constraints that belong to the group "Basic" will be
|
||||
* validated. If none of the constraints fail, the validator will then validate
|
||||
* the constraints in group "Strict". This is useful, for example, if "Strict"
|
||||
* contains expensive checks that require a lot of CPU or slow, external
|
||||
* services. You usually don't want to run expensive checks if any of the cheap
|
||||
* checks fail.
|
||||
*
|
||||
* When adding metadata to a class, you can override the "Default" group of
|
||||
* that class with a group sequence:
|
||||
*
|
||||
* /**
|
||||
* * @GroupSequence({"Address", "Strict"})
|
||||
* *\/
|
||||
* class Address
|
||||
* {
|
||||
* // ...
|
||||
* }
|
||||
*
|
||||
* Whenever you validate that object in the "Default" group, the group sequence
|
||||
* will be validated:
|
||||
*
|
||||
* $validator->validate($address);
|
||||
*
|
||||
* If you want to execute the constraints of the "Default" group for a class
|
||||
* with an overridden default group, pass the class name as group name instead:
|
||||
*
|
||||
* $validator->validate($address, null, "Address")
|
||||
*
|
||||
* @Annotation
|
||||
* @Target({"CLASS", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* Implementing \ArrayAccess, \IteratorAggregate and \Countable is @deprecated since 2.5 and will be removed in 3.0.
|
||||
*/
|
||||
class GroupSequence implements \ArrayAccess, \IteratorAggregate, \Countable
|
||||
{
|
||||
/**
|
||||
* The groups in the sequence.
|
||||
*
|
||||
* @var string[]|GroupSequence[]
|
||||
*/
|
||||
public $groups;
|
||||
|
||||
/**
|
||||
* The group in which cascaded objects are validated when validating
|
||||
* this sequence.
|
||||
*
|
||||
* By default, cascaded objects are validated in each of the groups of
|
||||
* the sequence.
|
||||
*
|
||||
* If a class has a group sequence attached, that sequence replaces the
|
||||
* "Default" group. When validating that class in the "Default" group, the
|
||||
* group sequence is used instead, but still the "Default" group should be
|
||||
* cascaded to other objects.
|
||||
*
|
||||
* @var string|GroupSequence
|
||||
*/
|
||||
public $cascadedGroup;
|
||||
|
||||
/**
|
||||
* Creates a new group sequence.
|
||||
*
|
||||
* @param string[] $groups The groups in the sequence
|
||||
*/
|
||||
public function __construct(array $groups)
|
||||
{
|
||||
// Support for Doctrine annotations
|
||||
$this->groups = isset($groups['value']) ? $groups['value'] : $groups;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an iterator for this group.
|
||||
*
|
||||
* Implemented for backwards compatibility with Symfony < 2.5.
|
||||
*
|
||||
* @return \Traversable The iterator
|
||||
*
|
||||
* @see \IteratorAggregate::getIterator()
|
||||
* @deprecated since version 2.5, to be removed in 3.0.
|
||||
*/
|
||||
public function getIterator()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
|
||||
|
||||
return new \ArrayIterator($this->groups);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the given offset exists in the sequence.
|
||||
*
|
||||
* Implemented for backwards compatibility with Symfony < 2.5.
|
||||
*
|
||||
* @param int $offset The offset
|
||||
*
|
||||
* @return bool Whether the offset exists
|
||||
*
|
||||
* @deprecated since version 2.5, to be removed in 3.0.
|
||||
*/
|
||||
public function offsetExists($offset)
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
|
||||
|
||||
return isset($this->groups[$offset]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the group at the given offset.
|
||||
*
|
||||
* Implemented for backwards compatibility with Symfony < 2.5.
|
||||
*
|
||||
* @param int $offset The offset
|
||||
*
|
||||
* @return string The group a the given offset
|
||||
*
|
||||
* @throws OutOfBoundsException If the object does not exist
|
||||
*
|
||||
* @deprecated since version 2.5, to be removed in 3.0.
|
||||
*/
|
||||
public function offsetGet($offset)
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
|
||||
|
||||
if (!isset($this->groups[$offset])) {
|
||||
throw new OutOfBoundsException(sprintf(
|
||||
'The offset "%s" does not exist.',
|
||||
$offset
|
||||
));
|
||||
}
|
||||
|
||||
return $this->groups[$offset];
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the group at the given offset.
|
||||
*
|
||||
* Implemented for backwards compatibility with Symfony < 2.5.
|
||||
*
|
||||
* @param int $offset The offset
|
||||
* @param string $value The group name
|
||||
*
|
||||
* @deprecated since version 2.5, to be removed in 3.0.
|
||||
*/
|
||||
public function offsetSet($offset, $value)
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
|
||||
|
||||
if (null !== $offset) {
|
||||
$this->groups[$offset] = $value;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->groups[] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the group at the given offset.
|
||||
*
|
||||
* Implemented for backwards compatibility with Symfony < 2.5.
|
||||
*
|
||||
* @param int $offset The offset
|
||||
*
|
||||
* @deprecated since version 2.5, to be removed in 3.0.
|
||||
*/
|
||||
public function offsetUnset($offset)
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
|
||||
|
||||
unset($this->groups[$offset]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of groups in the sequence.
|
||||
*
|
||||
* Implemented for backwards compatibility with Symfony < 2.5.
|
||||
*
|
||||
* @return int The number of groups
|
||||
*
|
||||
* @deprecated since version 2.5, to be removed in 3.0.
|
||||
*/
|
||||
public function count()
|
||||
{
|
||||
@trigger_error('The '.__METHOD__.' method is deprecated since version 2.5 and will be removed in 3.0.', E_USER_DEPRECATED);
|
||||
|
||||
return count($this->groups);
|
||||
}
|
||||
}
|
24
web/vendor/symfony/validator/Constraints/GroupSequenceProvider.php
vendored
Normal file
24
web/vendor/symfony/validator/Constraints/GroupSequenceProvider.php
vendored
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* Annotation to define a group sequence provider.
|
||||
*
|
||||
* @Annotation
|
||||
* @Target({"CLASS", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class GroupSequenceProvider
|
||||
{
|
||||
}
|
47
web/vendor/symfony/validator/Constraints/Iban.php
vendored
Normal file
47
web/vendor/symfony/validator/Constraints/Iban.php
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Manuel Reinhard <manu@sprain.ch>
|
||||
* @author Michael Schummel
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Iban extends Constraint
|
||||
{
|
||||
/** @deprecated, to be removed in 3.0. */
|
||||
const TOO_SHORT_ERROR = '88e5e319-0aeb-4979-a27e-3d9ce0c16166';
|
||||
const INVALID_COUNTRY_CODE_ERROR = 'de78ee2c-bd50-44e2-aec8-3d8228aeadb9';
|
||||
const INVALID_CHARACTERS_ERROR = '8d3d85e4-784f-4719-a5bc-d9e40d45a3a5';
|
||||
/** @deprecated, to be removed in 3.0. */
|
||||
const INVALID_CASE_ERROR = 'f4bf62fe-03ec-42af-a53b-68e21b1e7274';
|
||||
const CHECKSUM_FAILED_ERROR = 'b9401321-f9bf-4dcb-83c1-f31094440795';
|
||||
const INVALID_FORMAT_ERROR = 'c8d318f1-2ecc-41ba-b983-df70d225cf5a';
|
||||
const NOT_SUPPORTED_COUNTRY_CODE_ERROR = 'e2c259f3-4b46-48e6-b72e-891658158ec8';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::TOO_SHORT_ERROR => 'TOO_SHORT_ERROR',
|
||||
self::INVALID_COUNTRY_CODE_ERROR => 'INVALID_COUNTRY_CODE_ERROR',
|
||||
self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
|
||||
self::INVALID_CASE_ERROR => 'INVALID_CASE_ERROR',
|
||||
self::CHECKSUM_FAILED_ERROR => 'CHECKSUM_FAILED_ERROR',
|
||||
self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
|
||||
self::NOT_SUPPORTED_COUNTRY_CODE_ERROR => 'NOT_SUPPORTED_COUNTRY_CODE_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This is not a valid International Bank Account Number (IBAN).';
|
||||
}
|
294
web/vendor/symfony/validator/Constraints/IbanValidator.php
vendored
Normal file
294
web/vendor/symfony/validator/Constraints/IbanValidator.php
vendored
Normal file
|
@ -0,0 +1,294 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Manuel Reinhard <manu@sprain.ch>
|
||||
* @author Michael Schummel
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @see http://www.michael-schummel.de/2007/10/05/iban-prufung-mit-php/
|
||||
*/
|
||||
class IbanValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* IBAN country specific formats.
|
||||
*
|
||||
* The first 2 characters from an IBAN format are the two-character ISO country code.
|
||||
* The following 2 characters represent the check digits calculated from the rest of the IBAN characters.
|
||||
* The rest are up to thirty alphanumeric characters for
|
||||
* a BBAN (Basic Bank Account Number) which has a fixed length per country and,
|
||||
* included within it, a bank identifier with a fixed position and a fixed length per country
|
||||
*
|
||||
* @see http://www.swift.com/dsp/resources/documents/IBAN_Registry.pdf
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private static $formats = array(
|
||||
'AD' => 'AD\d{2}\d{4}\d{4}[\dA-Z]{12}', // Andorra
|
||||
'AE' => 'AE\d{2}\d{3}\d{16}', // United Arab Emirates
|
||||
'AL' => 'AL\d{2}\d{8}[\dA-Z]{16}', // Albania
|
||||
'AO' => 'AO\d{2}\d{21}', // Angola
|
||||
'AT' => 'AT\d{2}\d{5}\d{11}', // Austria
|
||||
'AX' => 'FI\d{2}\d{6}\d{7}\d{1}', // Aland Islands
|
||||
'AZ' => 'AZ\d{2}[A-Z]{4}[\dA-Z]{20}', // Azerbaijan
|
||||
'BA' => 'BA\d{2}\d{3}\d{3}\d{8}\d{2}', // Bosnia and Herzegovina
|
||||
'BE' => 'BE\d{2}\d{3}\d{7}\d{2}', // Belgium
|
||||
'BF' => 'BF\d{2}\d{23}', // Burkina Faso
|
||||
'BG' => 'BG\d{2}[A-Z]{4}\d{4}\d{2}[\dA-Z]{8}', // Bulgaria
|
||||
'BH' => 'BH\d{2}[A-Z]{4}[\dA-Z]{14}', // Bahrain
|
||||
'BI' => 'BI\d{2}\d{12}', // Burundi
|
||||
'BJ' => 'BJ\d{2}[A-Z]{1}\d{23}', // Benin
|
||||
'BL' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Saint Barthelemy
|
||||
'BR' => 'BR\d{2}\d{8}\d{5}\d{10}[A-Z][\dA-Z]', // Brazil
|
||||
'CG' => 'CG\d{2}\d{23}', // Congo
|
||||
'CH' => 'CH\d{2}\d{5}[\dA-Z]{12}', // Switzerland
|
||||
'CI' => 'CI\d{2}[A-Z]{1}\d{23}', // Ivory Coast
|
||||
'CM' => 'CM\d{2}\d{23}', // Cameron
|
||||
'CR' => 'CR\d{2}\d{3}\d{14}', // Costa Rica
|
||||
'CV' => 'CV\d{2}\d{21}', // Cape Verde
|
||||
'CY' => 'CY\d{2}\d{3}\d{5}[\dA-Z]{16}', // Cyprus
|
||||
'CZ' => 'CZ\d{2}\d{20}', // Czech Republic
|
||||
'DE' => 'DE\d{2}\d{8}\d{10}', // Germany
|
||||
'DO' => 'DO\d{2}[\dA-Z]{4}\d{20}', // Dominican Republic
|
||||
'DK' => 'DK\d{2}\d{4}\d{10}', // Denmark
|
||||
'DZ' => 'DZ\d{2}\d{20}', // Algeria
|
||||
'EE' => 'EE\d{2}\d{2}\d{2}\d{11}\d{1}', // Estonia
|
||||
'ES' => 'ES\d{2}\d{4}\d{4}\d{1}\d{1}\d{10}', // Spain (also includes Canary Islands, Ceuta and Melilla)
|
||||
'FI' => 'FI\d{2}\d{6}\d{7}\d{1}', // Finland
|
||||
'FO' => 'FO\d{2}\d{4}\d{9}\d{1}', // Faroe Islands
|
||||
'FR' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // France
|
||||
'GF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // French Guyana
|
||||
'GB' => 'GB\d{2}[A-Z]{4}\d{6}\d{8}', // United Kingdom of Great Britain and Northern Ireland
|
||||
'GE' => 'GE\d{2}[A-Z]{2}\d{16}', // Georgia
|
||||
'GI' => 'GI\d{2}[A-Z]{4}[\dA-Z]{15}', // Gibraltar
|
||||
'GL' => 'GL\d{2}\d{4}\d{9}\d{1}', // Greenland
|
||||
'GP' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Guadeloupe
|
||||
'GR' => 'GR\d{2}\d{3}\d{4}[\dA-Z]{16}', // Greece
|
||||
'GT' => 'GT\d{2}[\dA-Z]{4}[\dA-Z]{20}', // Guatemala
|
||||
'HR' => 'HR\d{2}\d{7}\d{10}', // Croatia
|
||||
'HU' => 'HU\d{2}\d{3}\d{4}\d{1}\d{15}\d{1}', // Hungary
|
||||
'IE' => 'IE\d{2}[A-Z]{4}\d{6}\d{8}', // Ireland
|
||||
'IL' => 'IL\d{2}\d{3}\d{3}\d{13}', // Israel
|
||||
'IR' => 'IR\d{2}\d{22}', // Iran
|
||||
'IS' => 'IS\d{2}\d{4}\d{2}\d{6}\d{10}', // Iceland
|
||||
'IT' => 'IT\d{2}[A-Z]{1}\d{5}\d{5}[\dA-Z]{12}', // Italy
|
||||
'JO' => 'JO\d{2}[A-Z]{4}\d{4}[\dA-Z]{18}', // Jordan
|
||||
'KW' => 'KW\d{2}[A-Z]{4}\d{22}', // KUWAIT
|
||||
'KZ' => 'KZ\d{2}\d{3}[\dA-Z]{13}', // Kazakhstan
|
||||
'LB' => 'LB\d{2}\d{4}[\dA-Z]{20}', // LEBANON
|
||||
'LI' => 'LI\d{2}\d{5}[\dA-Z]{12}', // Liechtenstein (Principality of)
|
||||
'LT' => 'LT\d{2}\d{5}\d{11}', // Lithuania
|
||||
'LU' => 'LU\d{2}\d{3}[\dA-Z]{13}', // Luxembourg
|
||||
'LV' => 'LV\d{2}[A-Z]{4}[\dA-Z]{13}', // Latvia
|
||||
'MC' => 'MC\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Monaco
|
||||
'MD' => 'MD\d{2}[\dA-Z]{2}[\dA-Z]{18}', // Moldova
|
||||
'ME' => 'ME\d{2}\d{3}\d{13}\d{2}', // Montenegro
|
||||
'MF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Saint Martin (French part)
|
||||
'MG' => 'MG\d{2}\d{23}', // Madagascar
|
||||
'MK' => 'MK\d{2}\d{3}[\dA-Z]{10}\d{2}', // Macedonia, Former Yugoslav Republic of
|
||||
'ML' => 'ML\d{2}[A-Z]{1}\d{23}', // Mali
|
||||
'MQ' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Martinique
|
||||
'MR' => 'MR13\d{5}\d{5}\d{11}\d{2}', // Mauritania
|
||||
'MT' => 'MT\d{2}[A-Z]{4}\d{5}[\dA-Z]{18}', // Malta
|
||||
'MU' => 'MU\d{2}[A-Z]{4}\d{2}\d{2}\d{12}\d{3}[A-Z]{3}', // Mauritius
|
||||
'MZ' => 'MZ\d{2}\d{21}', // Mozambique
|
||||
'NC' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // New Caledonia
|
||||
'NL' => 'NL\d{2}[A-Z]{4}\d{10}', // The Netherlands
|
||||
'NO' => 'NO\d{2}\d{4}\d{6}\d{1}', // Norway
|
||||
'PF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // French Polynesia
|
||||
'PK' => 'PK\d{2}[A-Z]{4}[\dA-Z]{16}', // Pakistan
|
||||
'PL' => 'PL\d{2}\d{8}\d{16}', // Poland
|
||||
'PM' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Saint Pierre et Miquelon
|
||||
'PS' => 'PS\d{2}[A-Z]{4}[\dA-Z]{21}', // Palestine, State of
|
||||
'PT' => 'PT\d{2}\d{4}\d{4}\d{11}\d{2}', // Portugal (plus Azores and Madeira)
|
||||
'QA' => 'QA\d{2}[A-Z]{4}[\dA-Z]{21}', // Qatar
|
||||
'RE' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Reunion
|
||||
'RO' => 'RO\d{2}[A-Z]{4}[\dA-Z]{16}', // Romania
|
||||
'RS' => 'RS\d{2}\d{3}\d{13}\d{2}', // Serbia
|
||||
'SA' => 'SA\d{2}\d{2}[\dA-Z]{18}', // Saudi Arabia
|
||||
'SE' => 'SE\d{2}\d{3}\d{16}\d{1}', // Sweden
|
||||
'SI' => 'SI\d{2}\d{5}\d{8}\d{2}', // Slovenia
|
||||
'SK' => 'SK\d{2}\d{4}\d{6}\d{10}', // Slovak Republic
|
||||
'SM' => 'SM\d{2}[A-Z]{1}\d{5}\d{5}[\dA-Z]{12}', // San Marino
|
||||
'SN' => 'SN\d{2}[A-Z]{1}\d{23}', // Senegal
|
||||
'TF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // French Southern Territories
|
||||
'TL' => 'TL\d{2}\d{3}\d{14}\d{2}', // Timor-Leste
|
||||
'TN' => 'TN59\d{2}\d{3}\d{13}\d{2}', // Tunisia
|
||||
'TR' => 'TR\d{2}\d{5}[\dA-Z]{1}[\dA-Z]{16}', // Turkey
|
||||
'UA' => 'UA\d{2}[A-Z]{6}[\dA-Z]{19}', // Ukraine
|
||||
'VG' => 'VG\d{2}[A-Z]{4}\d{16}', // Virgin Islands, British
|
||||
'WF' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Wallis and Futuna Islands
|
||||
'XK' => 'XK\d{2}\d{4}\d{10}\d{2}', // Republic of Kosovo
|
||||
'YT' => 'FR\d{2}\d{5}\d{5}[\dA-Z]{11}\d{2}', // Mayotte
|
||||
);
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Iban) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Iban');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
|
||||
// Remove spaces and convert to uppercase
|
||||
$canonicalized = str_replace(' ', '', strtoupper($value));
|
||||
|
||||
// The IBAN must contain only digits and characters...
|
||||
if (!ctype_alnum($canonicalized)) {
|
||||
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;
|
||||
}
|
||||
|
||||
// ...start with a two-letter country code
|
||||
$countryCode = substr($canonicalized, 0, 2);
|
||||
|
||||
if (!ctype_alpha($countryCode)) {
|
||||
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;
|
||||
}
|
||||
|
||||
// ...have a format available
|
||||
if (!array_key_exists($countryCode, self::$formats)) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::NOT_SUPPORTED_COUNTRY_CODE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::NOT_SUPPORTED_COUNTRY_CODE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// ...and have a valid format
|
||||
if (!preg_match('/^'.self::$formats[$countryCode].'$/', $canonicalized)
|
||||
) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Iban::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Move the first four characters to the end
|
||||
// e.g. CH93 0076 2011 6238 5295 7
|
||||
// -> 0076 2011 6238 5295 7 CH93
|
||||
$canonicalized = substr($canonicalized, 4).substr($canonicalized, 0, 4);
|
||||
|
||||
// Convert all remaining letters to their ordinals
|
||||
// The result is an integer, which is too large for PHP's int
|
||||
// data type, so we store it in a string instead.
|
||||
// e.g. 0076 2011 6238 5295 7 CH93
|
||||
// -> 0076 2011 6238 5295 7 121893
|
||||
$checkSum = self::toBigInt($canonicalized);
|
||||
|
||||
// Do a modulo-97 operation on the large integer
|
||||
// We cannot use PHP's modulo operator, so we calculate the
|
||||
// modulo step-wisely instead
|
||||
if (1 !== self::bigModulo97($checkSum)) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static function toBigInt($string)
|
||||
{
|
||||
$chars = str_split($string);
|
||||
$bigInt = '';
|
||||
|
||||
foreach ($chars as $char) {
|
||||
// Convert uppercase characters to ordinals, starting with 10 for "A"
|
||||
if (ctype_upper($char)) {
|
||||
$bigInt .= (ord($char) - 55);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
// Simply append digits
|
||||
$bigInt .= $char;
|
||||
}
|
||||
|
||||
return $bigInt;
|
||||
}
|
||||
|
||||
private static function bigModulo97($bigInt)
|
||||
{
|
||||
$parts = str_split($bigInt, 7);
|
||||
$rest = 0;
|
||||
|
||||
foreach ($parts as $part) {
|
||||
$rest = ($rest.$part) % 97;
|
||||
}
|
||||
|
||||
return $rest;
|
||||
}
|
||||
}
|
30
web/vendor/symfony/validator/Constraints/IdenticalTo.php
vendored
Normal file
30
web/vendor/symfony/validator/Constraints/IdenticalTo.php
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class IdenticalTo extends AbstractComparison
|
||||
{
|
||||
const NOT_IDENTICAL_ERROR = '2a8cc50f-58a2-4536-875e-060a2ce69ed5';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NOT_IDENTICAL_ERROR => 'NOT_IDENTICAL_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should be identical to {{ compared_value_type }} {{ compared_value }}.';
|
||||
}
|
37
web/vendor/symfony/validator/Constraints/IdenticalToValidator.php
vendored
Normal file
37
web/vendor/symfony/validator/Constraints/IdenticalToValidator.php
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* Validates values are identical (===).
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class IdenticalToValidator extends AbstractComparisonValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function compareValues($value1, $value2)
|
||||
{
|
||||
return $value1 === $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getErrorCode()
|
||||
{
|
||||
return IdenticalTo::NOT_IDENTICAL_ERROR;
|
||||
}
|
||||
}
|
77
web/vendor/symfony/validator/Constraints/Image.php
vendored
Normal file
77
web/vendor/symfony/validator/Constraints/Image.php
vendored
Normal file
|
@ -0,0 +1,77 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Benjamin Dulau <benjamin.dulau@gmail.com>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Image extends File
|
||||
{
|
||||
const SIZE_NOT_DETECTED_ERROR = '6d55c3f4-e58e-4fe3-91ee-74b492199956';
|
||||
const TOO_WIDE_ERROR = '7f87163d-878f-47f5-99ba-a8eb723a1ab2';
|
||||
const TOO_NARROW_ERROR = '9afbd561-4f90-4a27-be62-1780fc43604a';
|
||||
const TOO_HIGH_ERROR = '7efae81c-4877-47ba-aa65-d01ccb0d4645';
|
||||
const TOO_LOW_ERROR = 'aef0cb6a-c07f-4894-bc08-1781420d7b4c';
|
||||
const RATIO_TOO_BIG_ERROR = '70cafca6-168f-41c9-8c8c-4e47a52be643';
|
||||
const RATIO_TOO_SMALL_ERROR = '59b8c6ef-bcf2-4ceb-afff-4642ed92f12e';
|
||||
const SQUARE_NOT_ALLOWED_ERROR = '5d41425b-facb-47f7-a55a-de9fbe45cb46';
|
||||
const LANDSCAPE_NOT_ALLOWED_ERROR = '6f895685-7cf2-4d65-b3da-9029c5581d88';
|
||||
const PORTRAIT_NOT_ALLOWED_ERROR = '65608156-77da-4c79-a88c-02ef6d18c782';
|
||||
|
||||
// Include the mapping from the base class
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NOT_FOUND_ERROR => 'NOT_FOUND_ERROR',
|
||||
self::NOT_READABLE_ERROR => 'NOT_READABLE_ERROR',
|
||||
self::EMPTY_ERROR => 'EMPTY_ERROR',
|
||||
self::TOO_LARGE_ERROR => 'TOO_LARGE_ERROR',
|
||||
self::INVALID_MIME_TYPE_ERROR => 'INVALID_MIME_TYPE_ERROR',
|
||||
self::SIZE_NOT_DETECTED_ERROR => 'SIZE_NOT_DETECTED_ERROR',
|
||||
self::TOO_WIDE_ERROR => 'TOO_WIDE_ERROR',
|
||||
self::TOO_NARROW_ERROR => 'TOO_NARROW_ERROR',
|
||||
self::TOO_HIGH_ERROR => 'TOO_HIGH_ERROR',
|
||||
self::TOO_LOW_ERROR => 'TOO_LOW_ERROR',
|
||||
self::RATIO_TOO_BIG_ERROR => 'RATIO_TOO_BIG_ERROR',
|
||||
self::RATIO_TOO_SMALL_ERROR => 'RATIO_TOO_SMALL_ERROR',
|
||||
self::SQUARE_NOT_ALLOWED_ERROR => 'SQUARE_NOT_ALLOWED_ERROR',
|
||||
self::LANDSCAPE_NOT_ALLOWED_ERROR => 'LANDSCAPE_NOT_ALLOWED_ERROR',
|
||||
self::PORTRAIT_NOT_ALLOWED_ERROR => 'PORTRAIT_NOT_ALLOWED_ERROR',
|
||||
);
|
||||
|
||||
public $mimeTypes = 'image/*';
|
||||
public $minWidth;
|
||||
public $maxWidth;
|
||||
public $maxHeight;
|
||||
public $minHeight;
|
||||
public $maxRatio;
|
||||
public $minRatio;
|
||||
public $allowSquare = true;
|
||||
public $allowLandscape = true;
|
||||
public $allowPortrait = true;
|
||||
|
||||
// The constant for a wrong MIME type is taken from the parent class.
|
||||
public $mimeTypesMessage = 'This file is not a valid image.';
|
||||
public $sizeNotDetectedMessage = 'The size of the image could not be detected.';
|
||||
public $maxWidthMessage = 'The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.';
|
||||
public $minWidthMessage = 'The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.';
|
||||
public $maxHeightMessage = 'The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.';
|
||||
public $minHeightMessage = 'The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.';
|
||||
public $maxRatioMessage = 'The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.';
|
||||
public $minRatioMessage = 'The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.';
|
||||
public $allowSquareMessage = 'The image is square ({{ width }}x{{ height }}px). Square images are not allowed.';
|
||||
public $allowLandscapeMessage = 'The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.';
|
||||
public $allowPortraitMessage = 'The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.';
|
||||
}
|
261
web/vendor/symfony/validator/Constraints/ImageValidator.php
vendored
Normal file
261
web/vendor/symfony/validator/Constraints/ImageValidator.php
vendored
Normal file
|
@ -0,0 +1,261 @@
|
|||
<?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\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;
|
||||
|
||||
/**
|
||||
* Validates whether a value is a valid image file and is valid
|
||||
* against minWidth, maxWidth, minHeight and maxHeight constraints.
|
||||
*
|
||||
* @author Benjamin Dulau <benjamin.dulau@gmail.com>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class ImageValidator extends FileValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Image) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Image');
|
||||
}
|
||||
|
||||
$violations = count($this->context->getViolations());
|
||||
|
||||
parent::validate($value, $constraint);
|
||||
|
||||
$failed = count($this->context->getViolations()) !== $violations;
|
||||
|
||||
if ($failed || null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (null === $constraint->minWidth && null === $constraint->maxWidth
|
||||
&& null === $constraint->minHeight && null === $constraint->maxHeight
|
||||
&& null === $constraint->minRatio && null === $constraint->maxRatio
|
||||
&& $constraint->allowSquare && $constraint->allowLandscape && $constraint->allowPortrait) {
|
||||
return;
|
||||
}
|
||||
|
||||
$size = @getimagesize($value);
|
||||
|
||||
if (empty($size) || ($size[0] === 0) || ($size[1] === 0)) {
|
||||
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;
|
||||
}
|
||||
|
||||
$width = $size[0];
|
||||
$height = $size[1];
|
||||
|
||||
if ($constraint->minWidth) {
|
||||
if (!ctype_digit((string) $constraint->minWidth)) {
|
||||
throw new ConstraintDefinitionException(sprintf('"%s" is not a valid minimum width', $constraint->minWidth));
|
||||
}
|
||||
|
||||
if ($width < $constraint->minWidth) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
if ($constraint->maxWidth) {
|
||||
if (!ctype_digit((string) $constraint->maxWidth)) {
|
||||
throw new ConstraintDefinitionException(sprintf('"%s" is not a valid maximum width', $constraint->maxWidth));
|
||||
}
|
||||
|
||||
if ($width > $constraint->maxWidth) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
if ($constraint->minHeight) {
|
||||
if (!ctype_digit((string) $constraint->minHeight)) {
|
||||
throw new ConstraintDefinitionException(sprintf('"%s" is not a valid minimum height', $constraint->minHeight));
|
||||
}
|
||||
|
||||
if ($height < $constraint->minHeight) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
if ($constraint->maxHeight) {
|
||||
if (!ctype_digit((string) $constraint->maxHeight)) {
|
||||
throw new ConstraintDefinitionException(sprintf('"%s" is not a valid maximum height', $constraint->maxHeight));
|
||||
}
|
||||
|
||||
if ($height > $constraint->maxHeight) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$ratio = round($width / $height, 2);
|
||||
|
||||
if (null !== $constraint->minRatio) {
|
||||
if (!is_numeric((string) $constraint->minRatio)) {
|
||||
throw new ConstraintDefinitionException(sprintf('"%s" is not a valid minimum ratio', $constraint->minRatio));
|
||||
}
|
||||
|
||||
if ($ratio < $constraint->minRatio) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (null !== $constraint->maxRatio) {
|
||||
if (!is_numeric((string) $constraint->maxRatio)) {
|
||||
throw new ConstraintDefinitionException(sprintf('"%s" is not a valid maximum ratio', $constraint->maxRatio));
|
||||
}
|
||||
|
||||
if ($ratio > $constraint->maxRatio) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
86
web/vendor/symfony/validator/Constraints/Ip.php
vendored
Normal file
86
web/vendor/symfony/validator/Constraints/Ip.php
vendored
Normal file
|
@ -0,0 +1,86 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
|
||||
/**
|
||||
* Validates that a value is a valid IP address.
|
||||
*
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
* @author Joseph Bielawski <stloyd@gmail.com>
|
||||
*/
|
||||
class Ip extends Constraint
|
||||
{
|
||||
const V4 = '4';
|
||||
const V6 = '6';
|
||||
const ALL = 'all';
|
||||
|
||||
// adds FILTER_FLAG_NO_PRIV_RANGE flag (skip private ranges)
|
||||
const V4_NO_PRIV = '4_no_priv';
|
||||
const V6_NO_PRIV = '6_no_priv';
|
||||
const ALL_NO_PRIV = 'all_no_priv';
|
||||
|
||||
// adds FILTER_FLAG_NO_RES_RANGE flag (skip reserved ranges)
|
||||
const V4_NO_RES = '4_no_res';
|
||||
const V6_NO_RES = '6_no_res';
|
||||
const ALL_NO_RES = 'all_no_res';
|
||||
|
||||
// adds FILTER_FLAG_NO_PRIV_RANGE and FILTER_FLAG_NO_RES_RANGE flags (skip both)
|
||||
const V4_ONLY_PUBLIC = '4_public';
|
||||
const V6_ONLY_PUBLIC = '6_public';
|
||||
const ALL_ONLY_PUBLIC = 'all_public';
|
||||
|
||||
const INVALID_IP_ERROR = 'b1b427ae-9f6f-41b0-aa9b-84511fbb3c5b';
|
||||
|
||||
protected static $versions = array(
|
||||
self::V4,
|
||||
self::V6,
|
||||
self::ALL,
|
||||
|
||||
self::V4_NO_PRIV,
|
||||
self::V6_NO_PRIV,
|
||||
self::ALL_NO_PRIV,
|
||||
|
||||
self::V4_NO_RES,
|
||||
self::V6_NO_RES,
|
||||
self::ALL_NO_RES,
|
||||
|
||||
self::V4_ONLY_PUBLIC,
|
||||
self::V6_ONLY_PUBLIC,
|
||||
self::ALL_ONLY_PUBLIC,
|
||||
);
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::INVALID_IP_ERROR => 'INVALID_IP_ERROR',
|
||||
);
|
||||
|
||||
public $version = self::V4;
|
||||
|
||||
public $message = 'This is not a valid IP address.';
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __construct($options = null)
|
||||
{
|
||||
parent::__construct($options);
|
||||
|
||||
if (!in_array($this->version, self::$versions)) {
|
||||
throw new ConstraintDefinitionException(sprintf('The option "version" must be one of "%s"', implode('", "', self::$versions)));
|
||||
}
|
||||
}
|
||||
}
|
110
web/vendor/symfony/validator/Constraints/IpValidator.php
vendored
Normal file
110
web/vendor/symfony/validator/Constraints/IpValidator.php
vendored
Normal file
|
@ -0,0 +1,110 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* Validates whether a value is a valid IP address.
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
* @author Joseph Bielawski <stloyd@gmail.com>
|
||||
*/
|
||||
class IpValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Ip) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Ip');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
|
||||
switch ($constraint->version) {
|
||||
case Ip::V4:
|
||||
$flag = FILTER_FLAG_IPV4;
|
||||
break;
|
||||
|
||||
case Ip::V6:
|
||||
$flag = FILTER_FLAG_IPV6;
|
||||
break;
|
||||
|
||||
case Ip::V4_NO_PRIV:
|
||||
$flag = FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE;
|
||||
break;
|
||||
|
||||
case Ip::V6_NO_PRIV:
|
||||
$flag = FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE;
|
||||
break;
|
||||
|
||||
case Ip::ALL_NO_PRIV:
|
||||
$flag = FILTER_FLAG_NO_PRIV_RANGE;
|
||||
break;
|
||||
|
||||
case Ip::V4_NO_RES:
|
||||
$flag = FILTER_FLAG_IPV4 | FILTER_FLAG_NO_RES_RANGE;
|
||||
break;
|
||||
|
||||
case Ip::V6_NO_RES:
|
||||
$flag = FILTER_FLAG_IPV6 | FILTER_FLAG_NO_RES_RANGE;
|
||||
break;
|
||||
|
||||
case Ip::ALL_NO_RES:
|
||||
$flag = FILTER_FLAG_NO_RES_RANGE;
|
||||
break;
|
||||
|
||||
case Ip::V4_ONLY_PUBLIC:
|
||||
$flag = FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE;
|
||||
break;
|
||||
|
||||
case Ip::V6_ONLY_PUBLIC:
|
||||
$flag = FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE;
|
||||
break;
|
||||
|
||||
case Ip::ALL_ONLY_PUBLIC:
|
||||
$flag = FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE;
|
||||
break;
|
||||
|
||||
default:
|
||||
$flag = null;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!filter_var($value, FILTER_VALIDATE_IP, $flag)) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Ip::INVALID_IP_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Ip::INVALID_IP_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
31
web/vendor/symfony/validator/Constraints/IsFalse.php
vendored
Normal file
31
web/vendor/symfony/validator/Constraints/IsFalse.php
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class IsFalse extends Constraint
|
||||
{
|
||||
const NOT_FALSE_ERROR = 'd53a91b0-def3-426a-83d7-269da7ab4200';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NOT_FALSE_ERROR => 'NOT_FALSE_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should be false.';
|
||||
}
|
49
web/vendor/symfony/validator/Constraints/IsFalseValidator.php
vendored
Normal file
49
web/vendor/symfony/validator/Constraints/IsFalseValidator.php
vendored
Normal file
|
@ -0,0 +1,49 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class IsFalseValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof IsFalse) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\IsFalse');
|
||||
}
|
||||
|
||||
if (null === $value || false === $value || 0 === $value || '0' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(IsFalse::NOT_FALSE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(IsFalse::NOT_FALSE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
31
web/vendor/symfony/validator/Constraints/IsNull.php
vendored
Normal file
31
web/vendor/symfony/validator/Constraints/IsNull.php
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class IsNull extends Constraint
|
||||
{
|
||||
const NOT_NULL_ERROR = '60d2f30b-8cfa-4372-b155-9656634de120';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NOT_NULL_ERROR => 'NOT_NULL_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should be null.';
|
||||
}
|
47
web/vendor/symfony/validator/Constraints/IsNullValidator.php
vendored
Normal file
47
web/vendor/symfony/validator/Constraints/IsNullValidator.php
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class IsNullValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof IsNull) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\IsNull');
|
||||
}
|
||||
|
||||
if (null !== $value) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(IsNull::NOT_NULL_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(IsNull::NOT_NULL_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
31
web/vendor/symfony/validator/Constraints/IsTrue.php
vendored
Normal file
31
web/vendor/symfony/validator/Constraints/IsTrue.php
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class IsTrue extends Constraint
|
||||
{
|
||||
const NOT_TRUE_ERROR = '2beabf1c-54c0-4882-a928-05249b26e23b';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NOT_TRUE_ERROR => 'NOT_TRUE_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should be true.';
|
||||
}
|
51
web/vendor/symfony/validator/Constraints/IsTrueValidator.php
vendored
Normal file
51
web/vendor/symfony/validator/Constraints/IsTrueValidator.php
vendored
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class IsTrueValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof IsTrue) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\IsTrue');
|
||||
}
|
||||
|
||||
if (null === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (true !== $value && 1 !== $value && '1' !== $value) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(IsTrue::NOT_TRUE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(IsTrue::NOT_TRUE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
67
web/vendor/symfony/validator/Constraints/Isbn.php
vendored
Normal file
67
web/vendor/symfony/validator/Constraints/Isbn.php
vendored
Normal file
|
@ -0,0 +1,67 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author The Whole Life To Learn <thewholelifetolearn@gmail.com>
|
||||
* @author Manuel Reinhard <manu@sprain.ch>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Isbn extends Constraint
|
||||
{
|
||||
const TOO_SHORT_ERROR = '949acbb0-8ef5-43ed-a0e9-032dfd08ae45';
|
||||
const TOO_LONG_ERROR = '3171387d-f80a-47b3-bd6e-60598545316a';
|
||||
const INVALID_CHARACTERS_ERROR = '23d21cea-da99-453d-98b1-a7d916fbb339';
|
||||
const CHECKSUM_FAILED_ERROR = '2881c032-660f-46b6-8153-d352d9706640';
|
||||
const TYPE_NOT_RECOGNIZED_ERROR = 'fa54a457-f042-441f-89c4-066ee5bdd3e1';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::TOO_SHORT_ERROR => 'TOO_SHORT_ERROR',
|
||||
self::TOO_LONG_ERROR => 'TOO_LONG_ERROR',
|
||||
self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
|
||||
self::CHECKSUM_FAILED_ERROR => 'CHECKSUM_FAILED_ERROR',
|
||||
self::TYPE_NOT_RECOGNIZED_ERROR => 'TYPE_NOT_RECOGNIZED_ERROR',
|
||||
);
|
||||
|
||||
public $isbn10Message = 'This value is not a valid ISBN-10.';
|
||||
public $isbn13Message = 'This value is not a valid ISBN-13.';
|
||||
public $bothIsbnMessage = 'This value is neither a valid ISBN-10 nor a valid ISBN-13.';
|
||||
public $type;
|
||||
public $message;
|
||||
|
||||
/**
|
||||
* @deprecated since version 2.5, to be removed in 3.0. Use option "type" instead.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $isbn10 = false;
|
||||
|
||||
/**
|
||||
* @deprecated since version 2.5, to be removed in 3.0. Use option "type" instead.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $isbn13 = false;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getDefaultOption()
|
||||
{
|
||||
return 'type';
|
||||
}
|
||||
}
|
216
web/vendor/symfony/validator/Constraints/IsbnValidator.php
vendored
Normal file
216
web/vendor/symfony/validator/Constraints/IsbnValidator.php
vendored
Normal file
|
@ -0,0 +1,216 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* Validates whether the value is a valid ISBN-10 or ISBN-13.
|
||||
*
|
||||
* @author The Whole Life To Learn <thewholelifetolearn@gmail.com>
|
||||
* @author Manuel Reinhard <manu@sprain.ch>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @see https://en.wikipedia.org/wiki/Isbn
|
||||
*/
|
||||
class IsbnValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Isbn) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Isbn');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
$canonical = str_replace('-', '', $value);
|
||||
|
||||
if (null === $constraint->type) {
|
||||
if ($constraint->isbn10 && !$constraint->isbn13) {
|
||||
@trigger_error('The "isbn10" option of the Isbn constraint is deprecated since version 2.5 and will be removed in 3.0. Use the "type" option instead.', E_USER_DEPRECATED);
|
||||
$constraint->type = 'isbn10';
|
||||
} elseif ($constraint->isbn13 && !$constraint->isbn10) {
|
||||
@trigger_error('The "isbn13" option of the Isbn constraint is deprecated since version 2.5 and will be removed in 3.0. Use the "type" option instead.', E_USER_DEPRECATED);
|
||||
$constraint->type = 'isbn13';
|
||||
}
|
||||
}
|
||||
|
||||
// Explicitly validate against ISBN-10
|
||||
if ('isbn10' === $constraint->type) {
|
||||
if (true !== ($code = $this->validateIsbn10($canonical))) {
|
||||
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;
|
||||
}
|
||||
|
||||
// Explicitly validate against ISBN-13
|
||||
if ('isbn13' === $constraint->type) {
|
||||
if (true !== ($code = $this->validateIsbn13($canonical))) {
|
||||
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;
|
||||
}
|
||||
|
||||
// Try both ISBNs
|
||||
|
||||
// First, try ISBN-10
|
||||
$code = $this->validateIsbn10($canonical);
|
||||
|
||||
// The ISBN can only be an ISBN-13 if the value was too long for ISBN-10
|
||||
if (Isbn::TOO_LONG_ERROR === $code) {
|
||||
// Try ISBN-13 now
|
||||
$code = $this->validateIsbn13($canonical);
|
||||
|
||||
// If too short, this means we have 11 or 12 digits
|
||||
if (Isbn::TOO_SHORT_ERROR === $code) {
|
||||
$code = Isbn::TYPE_NOT_RECOGNIZED_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
if (true !== $code) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function validateIsbn10($isbn)
|
||||
{
|
||||
// Choose an algorithm so that ERROR_INVALID_CHARACTERS is preferred
|
||||
// over ERROR_TOO_SHORT/ERROR_TOO_LONG
|
||||
// Otherwise "0-45122-5244" passes, but "0-45122_5244" reports
|
||||
// "too long"
|
||||
|
||||
// Error priority:
|
||||
// 1. ERROR_INVALID_CHARACTERS
|
||||
// 2. ERROR_TOO_SHORT/ERROR_TOO_LONG
|
||||
// 3. ERROR_CHECKSUM_FAILED
|
||||
|
||||
$checkSum = 0;
|
||||
|
||||
for ($i = 0; $i < 10; ++$i) {
|
||||
// If we test the length before the loop, we get an ERROR_TOO_SHORT
|
||||
// when actually an ERROR_INVALID_CHARACTERS is wanted, e.g. for
|
||||
// "0-45122_5244" (typo)
|
||||
if (!isset($isbn[$i])) {
|
||||
return Isbn::TOO_SHORT_ERROR;
|
||||
}
|
||||
|
||||
if ('X' === $isbn[$i]) {
|
||||
$digit = 10;
|
||||
} elseif (ctype_digit($isbn[$i])) {
|
||||
$digit = $isbn[$i];
|
||||
} else {
|
||||
return Isbn::INVALID_CHARACTERS_ERROR;
|
||||
}
|
||||
|
||||
$checkSum += $digit * (10 - $i);
|
||||
}
|
||||
|
||||
if (isset($isbn[$i])) {
|
||||
return Isbn::TOO_LONG_ERROR;
|
||||
}
|
||||
|
||||
return 0 === $checkSum % 11 ? true : Isbn::CHECKSUM_FAILED_ERROR;
|
||||
}
|
||||
|
||||
protected function validateIsbn13($isbn)
|
||||
{
|
||||
// Error priority:
|
||||
// 1. ERROR_INVALID_CHARACTERS
|
||||
// 2. ERROR_TOO_SHORT/ERROR_TOO_LONG
|
||||
// 3. ERROR_CHECKSUM_FAILED
|
||||
|
||||
if (!ctype_digit($isbn)) {
|
||||
return Isbn::INVALID_CHARACTERS_ERROR;
|
||||
}
|
||||
|
||||
$length = strlen($isbn);
|
||||
|
||||
if ($length < 13) {
|
||||
return Isbn::TOO_SHORT_ERROR;
|
||||
}
|
||||
|
||||
if ($length > 13) {
|
||||
return Isbn::TOO_LONG_ERROR;
|
||||
}
|
||||
|
||||
$checkSum = 0;
|
||||
|
||||
for ($i = 0; $i < 13; $i += 2) {
|
||||
$checkSum += $isbn[$i];
|
||||
}
|
||||
|
||||
for ($i = 1; $i < 12; $i += 2) {
|
||||
$checkSum += $isbn[$i]
|
||||
* 3;
|
||||
}
|
||||
|
||||
return 0 === $checkSum % 10 ? true : Isbn::CHECKSUM_FAILED_ERROR;
|
||||
}
|
||||
|
||||
protected function getMessage($constraint, $type = null)
|
||||
{
|
||||
if (null !== $constraint->message) {
|
||||
return $constraint->message;
|
||||
} elseif ('isbn10' === $type) {
|
||||
return $constraint->isbn10Message;
|
||||
} elseif ('isbn13' === $type) {
|
||||
return $constraint->isbn13Message;
|
||||
}
|
||||
|
||||
return $constraint->bothIsbnMessage;
|
||||
}
|
||||
}
|
44
web/vendor/symfony/validator/Constraints/Issn.php
vendored
Normal file
44
web/vendor/symfony/validator/Constraints/Issn.php
vendored
Normal file
|
@ -0,0 +1,44 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Antonio J. García Lagar <aj@garcialagar.es>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Issn extends Constraint
|
||||
{
|
||||
const TOO_SHORT_ERROR = '6a20dd3d-f463-4460-8e7b-18a1b98abbfb';
|
||||
const TOO_LONG_ERROR = '37cef893-5871-464e-8b12-7fb79324833c';
|
||||
const MISSING_HYPHEN_ERROR = '2983286f-8134-4693-957a-1ec4ef887b15';
|
||||
const INVALID_CHARACTERS_ERROR = 'a663d266-37c2-4ece-a914-ae891940c588';
|
||||
const INVALID_CASE_ERROR = '7b6dd393-7523-4a6c-b84d-72b91bba5e1a';
|
||||
const CHECKSUM_FAILED_ERROR = 'b0f92dbc-667c-48de-b526-ad9586d43e85';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::TOO_SHORT_ERROR => 'TOO_SHORT_ERROR',
|
||||
self::TOO_LONG_ERROR => 'TOO_LONG_ERROR',
|
||||
self::MISSING_HYPHEN_ERROR => 'MISSING_HYPHEN_ERROR',
|
||||
self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
|
||||
self::INVALID_CASE_ERROR => 'INVALID_CASE_ERROR',
|
||||
self::CHECKSUM_FAILED_ERROR => 'CHECKSUM_FAILED_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value is not a valid ISSN.';
|
||||
public $caseSensitive = false;
|
||||
public $requireHyphen = false;
|
||||
}
|
183
web/vendor/symfony/validator/Constraints/IssnValidator.php
vendored
Normal file
183
web/vendor/symfony/validator/Constraints/IssnValidator.php
vendored
Normal file
|
@ -0,0 +1,183 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* Validates whether the value is a valid ISSN.
|
||||
*
|
||||
* @author Antonio J. García Lagar <aj@garcialagar.es>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @see https://en.wikipedia.org/wiki/Issn
|
||||
*/
|
||||
class IssnValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Issn) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Issn');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
$canonical = $value;
|
||||
|
||||
// 1234-567X
|
||||
// ^
|
||||
if (isset($canonical[4]) && '-' === $canonical[4]) {
|
||||
// remove hyphen
|
||||
$canonical = substr($canonical, 0, 4).substr($canonical, 5);
|
||||
} elseif ($constraint->requireHyphen) {
|
||||
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;
|
||||
}
|
||||
|
||||
$length = strlen($canonical);
|
||||
|
||||
if ($length < 8) {
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
|
||||
// 1234567X
|
||||
// ^^^^^^^ digits only
|
||||
if (!ctype_digit(substr($canonical, 0, 7))) {
|
||||
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;
|
||||
}
|
||||
|
||||
// 1234567X
|
||||
// ^ digit, x or X
|
||||
if (!ctype_digit($canonical[7]) && 'x' !== $canonical[7] && 'X' !== $canonical[7]) {
|
||||
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;
|
||||
}
|
||||
|
||||
// 1234567X
|
||||
// ^ case-sensitive?
|
||||
if ($constraint->caseSensitive && 'x' === $canonical[7]) {
|
||||
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;
|
||||
}
|
||||
|
||||
// Calculate a checksum. "X" equals 10.
|
||||
$checkSum = 'X' === $canonical[7]
|
||||
|| 'x' === $canonical[7]
|
||||
? 10
|
||||
: $canonical[7];
|
||||
|
||||
for ($i = 0; $i < 7; ++$i) {
|
||||
// Multiply the first digit by 8, the second by 7, etc.
|
||||
$checkSum += (8 - $i) * $canonical[$i];
|
||||
}
|
||||
|
||||
if (0 !== $checkSum % 11) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
31
web/vendor/symfony/validator/Constraints/Language.php
vendored
Normal file
31
web/vendor/symfony/validator/Constraints/Language.php
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Language extends Constraint
|
||||
{
|
||||
const NO_SUCH_LANGUAGE_ERROR = 'ee65fec4-9a20-4202-9f39-ca558cd7bdf7';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NO_SUCH_LANGUAGE_ERROR => 'NO_SUCH_LANGUAGE_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value is not a valid language.';
|
||||
}
|
61
web/vendor/symfony/validator/Constraints/LanguageValidator.php
vendored
Normal file
61
web/vendor/symfony/validator/Constraints/LanguageValidator.php
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
<?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\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;
|
||||
|
||||
/**
|
||||
* Validates whether a value is a valid language code.
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class LanguageValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Language) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Language');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
$languages = Intl::getLanguageBundle()->getLanguageNames();
|
||||
|
||||
if (!isset($languages[$value])) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Language::NO_SUCH_LANGUAGE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Language::NO_SUCH_LANGUAGE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
58
web/vendor/symfony/validator/Constraints/Length.php
vendored
Normal file
58
web/vendor/symfony/validator/Constraints/Length.php
vendored
Normal file
|
@ -0,0 +1,58 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\MissingOptionsException;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Length extends Constraint
|
||||
{
|
||||
const TOO_SHORT_ERROR = '9ff3fdc4-b214-49db-8718-39c315e33d45';
|
||||
const TOO_LONG_ERROR = 'd94b19cc-114f-4f44-9cc4-4138e80a87b9';
|
||||
const INVALID_CHARACTERS_ERROR = '35e6a710-aa2e-4719-b58e-24b35749b767';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::TOO_SHORT_ERROR => 'TOO_SHORT_ERROR',
|
||||
self::TOO_LONG_ERROR => 'TOO_LONG_ERROR',
|
||||
self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
|
||||
);
|
||||
|
||||
public $maxMessage = 'This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.';
|
||||
public $minMessage = 'This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.';
|
||||
public $exactMessage = 'This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.';
|
||||
public $charsetMessage = 'This value does not match the expected {{ charset }} charset.';
|
||||
public $max;
|
||||
public $min;
|
||||
public $charset = 'UTF-8';
|
||||
|
||||
public function __construct($options = null)
|
||||
{
|
||||
if (null !== $options && !is_array($options)) {
|
||||
$options = array(
|
||||
'min' => $options,
|
||||
'max' => $options,
|
||||
);
|
||||
}
|
||||
|
||||
parent::__construct($options);
|
||||
|
||||
if (null === $this->min && null === $this->max) {
|
||||
throw new MissingOptionsException(sprintf('Either option "min" or "max" must be given for constraint %s', __CLASS__), array('min', 'max'));
|
||||
}
|
||||
}
|
||||
}
|
109
web/vendor/symfony/validator/Constraints/LengthValidator.php
vendored
Normal file
109
web/vendor/symfony/validator/Constraints/LengthValidator.php
vendored
Normal file
|
@ -0,0 +1,109 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class LengthValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Length) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Length');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$stringValue = (string) $value;
|
||||
|
||||
if (!$invalidCharset = !@mb_check_encoding($stringValue, $constraint->charset)) {
|
||||
$length = mb_strlen($stringValue, $constraint->charset);
|
||||
}
|
||||
|
||||
if ($invalidCharset) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->charsetMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($stringValue))
|
||||
->setParameter('{{ charset }}', $constraint->charset)
|
||||
->setInvalidValue($value)
|
||||
->setCode(Length::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->charsetMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($stringValue))
|
||||
->setParameter('{{ charset }}', $constraint->charset)
|
||||
->setInvalidValue($value)
|
||||
->setCode(Length::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (null !== $constraint->max && $length > $constraint->max) {
|
||||
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) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
30
web/vendor/symfony/validator/Constraints/LessThan.php
vendored
Normal file
30
web/vendor/symfony/validator/Constraints/LessThan.php
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class LessThan extends AbstractComparison
|
||||
{
|
||||
const TOO_HIGH_ERROR = '079d7420-2d13-460c-8756-de810eeb37d2';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::TOO_HIGH_ERROR => 'TOO_HIGH_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should be less than {{ compared_value }}.';
|
||||
}
|
30
web/vendor/symfony/validator/Constraints/LessThanOrEqual.php
vendored
Normal file
30
web/vendor/symfony/validator/Constraints/LessThanOrEqual.php
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class LessThanOrEqual extends AbstractComparison
|
||||
{
|
||||
const TOO_HIGH_ERROR = '079d7420-2d13-460c-8756-de810eeb37d2';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::TOO_HIGH_ERROR => 'TOO_HIGH_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should be less than or equal to {{ compared_value }}.';
|
||||
}
|
37
web/vendor/symfony/validator/Constraints/LessThanOrEqualValidator.php
vendored
Normal file
37
web/vendor/symfony/validator/Constraints/LessThanOrEqualValidator.php
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* Validates values are less than or equal to the previous (<=).
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class LessThanOrEqualValidator extends AbstractComparisonValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function compareValues($value1, $value2)
|
||||
{
|
||||
return $value1 <= $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getErrorCode()
|
||||
{
|
||||
return LessThanOrEqual::TOO_HIGH_ERROR;
|
||||
}
|
||||
}
|
37
web/vendor/symfony/validator/Constraints/LessThanValidator.php
vendored
Normal file
37
web/vendor/symfony/validator/Constraints/LessThanValidator.php
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* Validates values are less than the previous (<).
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class LessThanValidator extends AbstractComparisonValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function compareValues($value1, $value2)
|
||||
{
|
||||
return $value1 < $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getErrorCode()
|
||||
{
|
||||
return LessThan::TOO_HIGH_ERROR;
|
||||
}
|
||||
}
|
31
web/vendor/symfony/validator/Constraints/Locale.php
vendored
Normal file
31
web/vendor/symfony/validator/Constraints/Locale.php
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Locale extends Constraint
|
||||
{
|
||||
const NO_SUCH_LOCALE_ERROR = 'a0af4293-1f1a-4a1c-a328-979cba6182a2';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::NO_SUCH_LOCALE_ERROR => 'NO_SUCH_LOCALE_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value is not a valid locale.';
|
||||
}
|
62
web/vendor/symfony/validator/Constraints/LocaleValidator.php
vendored
Normal file
62
web/vendor/symfony/validator/Constraints/LocaleValidator.php
vendored
Normal file
|
@ -0,0 +1,62 @@
|
|||
<?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\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;
|
||||
|
||||
/**
|
||||
* Validates whether a value is a valid locale code.
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class LocaleValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Locale) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Locale');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
$locales = Intl::getLocaleBundle()->getLocaleNames();
|
||||
$aliases = Intl::getLocaleBundle()->getAliases();
|
||||
|
||||
if (!isset($locales[$value]) && !in_array($value, $aliases)) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Locale::NO_SUCH_LOCALE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Locale::NO_SUCH_LOCALE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
37
web/vendor/symfony/validator/Constraints/Luhn.php
vendored
Normal file
37
web/vendor/symfony/validator/Constraints/Luhn.php
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* Metadata for the LuhnValidator.
|
||||
*
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Tim Nagel <t.nagel@infinite.net.au>
|
||||
* @author Greg Knapp http://gregk.me/2011/php-implementation-of-bank-card-luhn-algorithm/
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Luhn extends Constraint
|
||||
{
|
||||
const INVALID_CHARACTERS_ERROR = 'dfad6d23-1b74-4374-929b-5cbb56fc0d9e';
|
||||
const CHECKSUM_FAILED_ERROR = '4d760774-3f50-4cd5-a6d5-b10a3299d8d3';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
|
||||
self::CHECKSUM_FAILED_ERROR => 'CHECKSUM_FAILED_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'Invalid card number.';
|
||||
}
|
111
web/vendor/symfony/validator/Constraints/LuhnValidator.php
vendored
Normal file
111
web/vendor/symfony/validator/Constraints/LuhnValidator.php
vendored
Normal file
|
@ -0,0 +1,111 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* Validates a PAN using the LUHN Algorithm.
|
||||
*
|
||||
* For a list of example card numbers that are used to test this
|
||||
* class, please see the LuhnValidatorTest class.
|
||||
*
|
||||
* @see http://en.wikipedia.org/wiki/Luhn_algorithm
|
||||
*
|
||||
* @author Tim Nagel <t.nagel@infinite.net.au>
|
||||
* @author Greg Knapp http://gregk.me/2011/php-implementation-of-bank-card-luhn-algorithm/
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class LuhnValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* Validates a credit card number with the Luhn algorithm.
|
||||
*
|
||||
* @param mixed $value
|
||||
* @param Constraint $constraint
|
||||
*
|
||||
* @throws UnexpectedTypeException when the given credit card number is no string
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Luhn) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Luhn');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Work with strings only, because long numbers are represented as floats
|
||||
// internally and don't work with strlen()
|
||||
if (!is_string($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
|
||||
if (!ctype_digit($value)) {
|
||||
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;
|
||||
}
|
||||
|
||||
$checkSum = 0;
|
||||
$length = strlen($value);
|
||||
|
||||
// Starting with the last digit and walking left, add every second
|
||||
// digit to the check sum
|
||||
// e.g. 7 9 9 2 7 3 9 8 7 1 3
|
||||
// ^ ^ ^ ^ ^ ^
|
||||
// = 7 + 9 + 7 + 9 + 7 + 3
|
||||
for ($i = $length - 1; $i >= 0; $i -= 2) {
|
||||
$checkSum += $value[$i];
|
||||
}
|
||||
|
||||
// Starting with the second last digit and walking left, double every
|
||||
// second digit and add it to the check sum
|
||||
// For doubles greater than 9, sum the individual digits
|
||||
// e.g. 7 9 9 2 7 3 9 8 7 1 3
|
||||
// ^ ^ ^ ^ ^
|
||||
// = 1+8 + 4 + 6 + 1+6 + 2
|
||||
for ($i = $length - 2; $i >= 0; $i -= 2) {
|
||||
$checkSum += array_sum(str_split($value[$i] * 2));
|
||||
}
|
||||
|
||||
if (0 === $checkSum || 0 !== $checkSum % 10) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
31
web/vendor/symfony/validator/Constraints/NotBlank.php
vendored
Normal file
31
web/vendor/symfony/validator/Constraints/NotBlank.php
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class NotBlank extends Constraint
|
||||
{
|
||||
const IS_BLANK_ERROR = 'c1051bb4-d103-4f74-8988-acbcafc7fdc3';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::IS_BLANK_ERROR => 'IS_BLANK_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should not be blank.';
|
||||
}
|
47
web/vendor/symfony/validator/Constraints/NotBlankValidator.php
vendored
Normal file
47
web/vendor/symfony/validator/Constraints/NotBlankValidator.php
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class NotBlankValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof NotBlank) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\NotBlank');
|
||||
}
|
||||
|
||||
if (false === $value || (empty($value) && '0' != $value)) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(NotBlank::IS_BLANK_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(NotBlank::IS_BLANK_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
30
web/vendor/symfony/validator/Constraints/NotEqualTo.php
vendored
Normal file
30
web/vendor/symfony/validator/Constraints/NotEqualTo.php
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class NotEqualTo extends AbstractComparison
|
||||
{
|
||||
const IS_EQUAL_ERROR = 'aa2e33da-25c8-4d76-8c6c-812f02ea89dd';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::IS_EQUAL_ERROR => 'IS_EQUAL_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should not be equal to {{ compared_value }}.';
|
||||
}
|
37
web/vendor/symfony/validator/Constraints/NotEqualToValidator.php
vendored
Normal file
37
web/vendor/symfony/validator/Constraints/NotEqualToValidator.php
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* Validates values are all unequal (!=).
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class NotEqualToValidator extends AbstractComparisonValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function compareValues($value1, $value2)
|
||||
{
|
||||
return $value1 != $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getErrorCode()
|
||||
{
|
||||
return NotEqualTo::IS_EQUAL_ERROR;
|
||||
}
|
||||
}
|
30
web/vendor/symfony/validator/Constraints/NotIdenticalTo.php
vendored
Normal file
30
web/vendor/symfony/validator/Constraints/NotIdenticalTo.php
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class NotIdenticalTo extends AbstractComparison
|
||||
{
|
||||
const IS_IDENTICAL_ERROR = '4aaac518-0dda-4129-a6d9-e216b9b454a0';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::IS_IDENTICAL_ERROR => 'IS_IDENTICAL_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should not be identical to {{ compared_value_type }} {{ compared_value }}.';
|
||||
}
|
37
web/vendor/symfony/validator/Constraints/NotIdenticalToValidator.php
vendored
Normal file
37
web/vendor/symfony/validator/Constraints/NotIdenticalToValidator.php
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* Validates values aren't identical (!==).
|
||||
*
|
||||
* @author Daniel Holmes <daniel@danielholmes.org>
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class NotIdenticalToValidator extends AbstractComparisonValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function compareValues($value1, $value2)
|
||||
{
|
||||
return $value1 !== $value2;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getErrorCode()
|
||||
{
|
||||
return NotIdenticalTo::IS_IDENTICAL_ERROR;
|
||||
}
|
||||
}
|
31
web/vendor/symfony/validator/Constraints/NotNull.php
vendored
Normal file
31
web/vendor/symfony/validator/Constraints/NotNull.php
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class NotNull extends Constraint
|
||||
{
|
||||
const IS_NULL_ERROR = 'ad32d13f-c3d4-423b-909a-857b961eb720';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::IS_NULL_ERROR => 'IS_NULL_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should not be null.';
|
||||
}
|
47
web/vendor/symfony/validator/Constraints/NotNullValidator.php
vendored
Normal file
47
web/vendor/symfony/validator/Constraints/NotNullValidator.php
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class NotNullValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof NotNull) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\NotNull');
|
||||
}
|
||||
|
||||
if (null === $value) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(NotNull::IS_NULL_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(NotNull::IS_NULL_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
26
web/vendor/symfony/validator/Constraints/Null.php
vendored
Normal file
26
web/vendor/symfony/validator/Constraints/Null.php
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
@trigger_error('The '.__NAMESPACE__.'\Null class is deprecated since version 2.7 and will be removed in 3.0. Use the IsNull class in the same namespace instead.', E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @deprecated since version 2.7, to be removed in 3.0. Use IsNull instead.
|
||||
*/
|
||||
class Null extends IsNull
|
||||
{
|
||||
}
|
23
web/vendor/symfony/validator/Constraints/NullValidator.php
vendored
Normal file
23
web/vendor/symfony/validator/Constraints/NullValidator.php
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
@trigger_error('The '.__NAMESPACE__.'\NullValidator class is deprecated since version 2.7 and will be removed in 3.0. Use the IsNullValidator class in the same namespace instead.', E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @deprecated since version 2.7, to be removed in 3.0. Use IsNullValidator instead.
|
||||
*/
|
||||
class NullValidator extends IsNullValidator
|
||||
{
|
||||
}
|
22
web/vendor/symfony/validator/Constraints/Optional.php
vendored
Normal file
22
web/vendor/symfony/validator/Constraints/Optional.php
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Optional extends Existence
|
||||
{
|
||||
}
|
67
web/vendor/symfony/validator/Constraints/Range.php
vendored
Normal file
67
web/vendor/symfony/validator/Constraints/Range.php
vendored
Normal file
|
@ -0,0 +1,67 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\MissingOptionsException;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Range extends Constraint
|
||||
{
|
||||
const INVALID_CHARACTERS_ERROR = 'ad9a9798-7a99-4df7-8ce9-46e416a1e60b';
|
||||
const TOO_HIGH_ERROR = '2d28afcb-e32e-45fb-a815-01c431a86a69';
|
||||
const TOO_LOW_ERROR = '76454e69-502c-46c5-9643-f447d837c4d5';
|
||||
|
||||
/**
|
||||
* @deprecated Deprecated since version 2.8, to be removed in 3.0. Use
|
||||
* {@link INVALID_CHARACTERS_ERROR} instead.
|
||||
*/
|
||||
const INVALID_VALUE_ERROR = self::INVALID_CHARACTERS_ERROR;
|
||||
|
||||
/**
|
||||
* @deprecated Deprecated since version 2.8, to be removed in 3.0. Use
|
||||
* {@link TOO_HIGH_ERROR} instead.
|
||||
*/
|
||||
const BEYOND_RANGE_ERROR = self::TOO_HIGH_ERROR;
|
||||
|
||||
/**
|
||||
* @deprecated Deprecated since version 2.8, to be removed in 3.0. Use
|
||||
* {@link TOO_LOW_ERROR} instead.
|
||||
*/
|
||||
const BELOW_RANGE_ERROR = self::TOO_LOW_ERROR;
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
|
||||
self::TOO_HIGH_ERROR => 'TOO_HIGH_ERROR',
|
||||
self::TOO_LOW_ERROR => 'TOO_LOW_ERROR',
|
||||
);
|
||||
|
||||
public $minMessage = 'This value should be {{ limit }} or more.';
|
||||
public $maxMessage = 'This value should be {{ limit }} or less.';
|
||||
public $invalidMessage = 'This value should be a valid number.';
|
||||
public $min;
|
||||
public $max;
|
||||
|
||||
public function __construct($options = null)
|
||||
{
|
||||
parent::__construct($options);
|
||||
|
||||
if (null === $this->min && null === $this->max) {
|
||||
throw new MissingOptionsException(sprintf('Either option "min" or "max" must be given for constraint %s', __CLASS__), array('min', 'max'));
|
||||
}
|
||||
}
|
||||
}
|
104
web/vendor/symfony/validator/Constraints/RangeValidator.php
vendored
Normal file
104
web/vendor/symfony/validator/Constraints/RangeValidator.php
vendored
Normal file
|
@ -0,0 +1,104 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class RangeValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Range) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Range');
|
||||
}
|
||||
|
||||
if (null === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_numeric($value) && !$value instanceof \DateTime && !$value instanceof \DateTimeInterface) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->invalidMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
|
||||
->setCode(Range::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->invalidMessage)
|
||||
->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
|
||||
->setCode(Range::INVALID_CHARACTERS_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$min = $constraint->min;
|
||||
$max = $constraint->max;
|
||||
|
||||
// Convert strings to DateTimes if comparing another DateTime
|
||||
// This allows to compare with any date/time value supported by
|
||||
// the DateTime constructor:
|
||||
// http://php.net/manual/en/datetime.formats.php
|
||||
if ($value instanceof \DateTime || $value instanceof \DateTimeInterface) {
|
||||
if (is_string($min)) {
|
||||
$min = new \DateTime($min);
|
||||
}
|
||||
|
||||
if (is_string($max)) {
|
||||
$max = new \DateTime($max);
|
||||
}
|
||||
}
|
||||
|
||||
if (null !== $constraint->max && $value > $max) {
|
||||
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::TOO_HIGH_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::TOO_HIGH_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (null !== $constraint->min && $value < $min) {
|
||||
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::TOO_LOW_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::TOO_LOW_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
102
web/vendor/symfony/validator/Constraints/Regex.php
vendored
Normal file
102
web/vendor/symfony/validator/Constraints/Regex.php
vendored
Normal file
|
@ -0,0 +1,102 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Regex extends Constraint
|
||||
{
|
||||
const REGEX_FAILED_ERROR = 'de1e3db3-5ed4-4941-aae4-59f3667cc3a3';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::REGEX_FAILED_ERROR => 'REGEX_FAILED_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value is not valid.';
|
||||
public $pattern;
|
||||
public $htmlPattern;
|
||||
public $match = true;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getDefaultOption()
|
||||
{
|
||||
return 'pattern';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getRequiredOptions()
|
||||
{
|
||||
return array('pattern');
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts the htmlPattern to a suitable format for HTML5 pattern.
|
||||
* Example: /^[a-z]+$/ would be converted to [a-z]+
|
||||
* However, if options are specified, it cannot be converted.
|
||||
*
|
||||
* Pattern is also ignored if match=false since the pattern should
|
||||
* then be reversed before application.
|
||||
*
|
||||
* @see http://dev.w3.org/html5/spec/single-page.html#the-pattern-attribute
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getHtmlPattern()
|
||||
{
|
||||
// If htmlPattern is specified, use it
|
||||
if (null !== $this->htmlPattern) {
|
||||
return empty($this->htmlPattern)
|
||||
? null
|
||||
: $this->htmlPattern;
|
||||
}
|
||||
|
||||
// Quit if delimiters not at very beginning/end (e.g. when options are passed)
|
||||
if ($this->pattern[0] !== $this->pattern[strlen($this->pattern) - 1]) {
|
||||
return;
|
||||
}
|
||||
|
||||
$delimiter = $this->pattern[0];
|
||||
|
||||
// Unescape the delimiter
|
||||
$pattern = str_replace('\\'.$delimiter, $delimiter, substr($this->pattern, 1, -1));
|
||||
|
||||
// If the pattern is inverted, we can simply wrap it in
|
||||
// ((?!pattern).)*
|
||||
if (!$this->match) {
|
||||
return '((?!'.$pattern.').)*';
|
||||
}
|
||||
|
||||
// If the pattern contains an or statement, wrap the pattern in
|
||||
// .*(pattern).* and quit. Otherwise we'd need to parse the pattern
|
||||
if (false !== strpos($pattern, '|')) {
|
||||
return '.*('.$pattern.').*';
|
||||
}
|
||||
|
||||
// Trim leading ^, otherwise prepend .*
|
||||
$pattern = '^' === $pattern[0] ? substr($pattern, 1) : '.*'.$pattern;
|
||||
|
||||
// Trim trailing $, otherwise append .*
|
||||
$pattern = '$' === $pattern[strlen($pattern) - 1] ? substr($pattern, 0, -1) : $pattern.'.*';
|
||||
|
||||
return $pattern;
|
||||
}
|
||||
}
|
60
web/vendor/symfony/validator/Constraints/RegexValidator.php
vendored
Normal file
60
web/vendor/symfony/validator/Constraints/RegexValidator.php
vendored
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* Validates whether a value match or not given regexp pattern.
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
* @author Joseph Bielawski <stloyd@gmail.com>
|
||||
*/
|
||||
class RegexValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Regex) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Regex');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
|
||||
if ($constraint->match xor preg_match($constraint->pattern, $value)) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Regex::REGEX_FAILED_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Regex::REGEX_FAILED_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
22
web/vendor/symfony/validator/Constraints/Required.php
vendored
Normal file
22
web/vendor/symfony/validator/Constraints/Required.php
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Required extends Existence
|
||||
{
|
||||
}
|
33
web/vendor/symfony/validator/Constraints/Time.php
vendored
Normal file
33
web/vendor/symfony/validator/Constraints/Time.php
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Time extends Constraint
|
||||
{
|
||||
const INVALID_FORMAT_ERROR = '9d27b2bb-f755-4fbf-b725-39b1edbdebdf';
|
||||
const INVALID_TIME_ERROR = '8532f9e1-84b2-4d67-8989-0818bc38533b';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
|
||||
self::INVALID_TIME_ERROR => 'INVALID_TIME_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value is not a valid time.';
|
||||
}
|
91
web/vendor/symfony/validator/Constraints/TimeValidator.php
vendored
Normal file
91
web/vendor/symfony/validator/Constraints/TimeValidator.php
vendored
Normal file
|
@ -0,0 +1,91 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class TimeValidator extends ConstraintValidator
|
||||
{
|
||||
const PATTERN = '/^(\d{2}):(\d{2}):(\d{2})$/';
|
||||
|
||||
/**
|
||||
* Checks whether a time is valid.
|
||||
*
|
||||
* @param int $hour The hour
|
||||
* @param int $minute The minute
|
||||
* @param int $second The second
|
||||
*
|
||||
* @return bool Whether the time is valid
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
public static function checkTime($hour, $minute, $second)
|
||||
{
|
||||
return $hour >= 0 && $hour < 24 && $minute >= 0 && $minute < 60 && $second >= 0 && $second < 60;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Time) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Time');
|
||||
}
|
||||
|
||||
if (null === $value || '' === $value || $value instanceof \DateTime) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) {
|
||||
throw new UnexpectedTypeException($value, 'string');
|
||||
}
|
||||
|
||||
$value = (string) $value;
|
||||
|
||||
if (!preg_match(static::PATTERN, $value, $matches)) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Time::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Time::INVALID_FORMAT_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!self::checkTime($matches[1], $matches[2], $matches[3])) {
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Time::INVALID_TIME_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setCode(Time::INVALID_TIME_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
53
web/vendor/symfony/validator/Constraints/Traverse.php
vendored
Normal file
53
web/vendor/symfony/validator/Constraints/Traverse.php
vendored
Normal file
|
@ -0,0 +1,53 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Traverse extends Constraint
|
||||
{
|
||||
public $traverse = true;
|
||||
|
||||
public function __construct($options = null)
|
||||
{
|
||||
if (is_array($options) && array_key_exists('groups', $options)) {
|
||||
throw new ConstraintDefinitionException(sprintf(
|
||||
'The option "groups" is not supported by the constraint %s',
|
||||
__CLASS__
|
||||
));
|
||||
}
|
||||
|
||||
parent::__construct($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getDefaultOption()
|
||||
{
|
||||
return 'traverse';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getTargets()
|
||||
{
|
||||
return self::CLASS_CONSTRAINT;
|
||||
}
|
||||
}
|
26
web/vendor/symfony/validator/Constraints/True.php
vendored
Normal file
26
web/vendor/symfony/validator/Constraints/True.php
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
@trigger_error('The '.__NAMESPACE__.'\True class is deprecated since version 2.7 and will be removed in 3.0. Use the IsTrue class in the same namespace instead.', E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @deprecated since version 2.7, to be removed in 3.0. Use IsTrue instead.
|
||||
*/
|
||||
class True extends IsTrue
|
||||
{
|
||||
}
|
23
web/vendor/symfony/validator/Constraints/TrueValidator.php
vendored
Normal file
23
web/vendor/symfony/validator/Constraints/TrueValidator.php
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
@trigger_error('The '.__NAMESPACE__.'\TrueValidator class is deprecated since version 2.7 and will be removed in 3.0. Use the IsTrueValidator class in the same namespace instead.', E_USER_DEPRECATED);
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* @deprecated since version 2.7, to be removed in 3.0. Use IsTrueValidator instead.
|
||||
*/
|
||||
class TrueValidator extends IsTrueValidator
|
||||
{
|
||||
}
|
48
web/vendor/symfony/validator/Constraints/Type.php
vendored
Normal file
48
web/vendor/symfony/validator/Constraints/Type.php
vendored
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Type extends Constraint
|
||||
{
|
||||
const INVALID_TYPE_ERROR = 'ba785a8c-82cb-4283-967c-3cf342181b40';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::INVALID_TYPE_ERROR => 'INVALID_TYPE_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value should be of type {{ type }}.';
|
||||
public $type;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getDefaultOption()
|
||||
{
|
||||
return 'type';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getRequiredOptions()
|
||||
{
|
||||
return array('type');
|
||||
}
|
||||
}
|
64
web/vendor/symfony/validator/Constraints/TypeValidator.php
vendored
Normal file
64
web/vendor/symfony/validator/Constraints/TypeValidator.php
vendored
Normal file
|
@ -0,0 +1,64 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\ConstraintValidator;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class TypeValidator extends ConstraintValidator
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function validate($value, Constraint $constraint)
|
||||
{
|
||||
if (!$constraint instanceof Type) {
|
||||
throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Type');
|
||||
}
|
||||
|
||||
if (null === $value) {
|
||||
return;
|
||||
}
|
||||
|
||||
$type = strtolower($constraint->type);
|
||||
$type = $type == 'boolean' ? 'bool' : $constraint->type;
|
||||
$isFunction = 'is_'.$type;
|
||||
$ctypeFunction = 'ctype_'.$type;
|
||||
|
||||
if (function_exists($isFunction) && $isFunction($value)) {
|
||||
return;
|
||||
} elseif (function_exists($ctypeFunction) && $ctypeFunction($value)) {
|
||||
return;
|
||||
} elseif ($value instanceof $constraint->type) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->context instanceof ExecutionContextInterface) {
|
||||
$this->context->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setParameter('{{ type }}', $constraint->type)
|
||||
->setCode(Type::INVALID_TYPE_ERROR)
|
||||
->addViolation();
|
||||
} else {
|
||||
$this->buildViolation($constraint->message)
|
||||
->setParameter('{{ value }}', $this->formatValue($value))
|
||||
->setParameter('{{ type }}', $constraint->type)
|
||||
->setCode(Type::INVALID_TYPE_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
}
|
||||
}
|
34
web/vendor/symfony/validator/Constraints/Url.php
vendored
Normal file
34
web/vendor/symfony/validator/Constraints/Url.php
vendored
Normal file
|
@ -0,0 +1,34 @@
|
|||
<?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\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
|
||||
/**
|
||||
* @Annotation
|
||||
* @Target({"PROPERTY", "METHOD", "ANNOTATION"})
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class Url extends Constraint
|
||||
{
|
||||
const INVALID_URL_ERROR = '57c2f299-1154-4870-89bb-ef3b1f5ad229';
|
||||
|
||||
protected static $errorNames = array(
|
||||
self::INVALID_URL_ERROR => 'INVALID_URL_ERROR',
|
||||
);
|
||||
|
||||
public $message = 'This value is not a valid URL.';
|
||||
public $dnsMessage = 'The host could not be resolved.';
|
||||
public $protocols = array('http', 'https');
|
||||
public $checkDNS = false;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue