Checks if the passed value is valid.
@api
mixed $value The value that should be validated:
Constraint $constraint The constraint for the validation:
Overrides ConstraintValidatorInterface::validate
public function validate($value, Constraint $constraint) {
if (null === $value || '' === $value) {
return;
}
$teststring = preg_replace('/\\s+/', '', $value);
if (strlen($teststring) < 4) {
$this->context
->addViolation($constraint->message, array(
'{{ value }}' => $value,
));
return;
}
$teststring = substr($teststring, 4) . strval(ord($teststring[0]) - 55) . strval(ord($teststring[1]) - 55) . substr($teststring, 2, 2);
$teststring = preg_replace_callback('/[A-Za-z]/', function ($letter) {
return intval(ord(strtolower($letter[0])) - 87);
}, $teststring);
$rest = 0;
$strlen = strlen($teststring);
for ($pos = 0; $pos < $strlen; $pos += 7) {
$part = strval($rest) . substr($teststring, $pos, 7);
$rest = intval($part) % 97;
}
if ($rest != 1) {
$this->context
->addViolation($constraint->message, array(
'{{ value }}' => $value,
));
return;
}
}