* * 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 * * @see 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; } } } __halt_compiler();----SIGNATURE:----SWV1Wtz1S3M0yKxsU8lwLp8T/2Ps8C2eVXBiULud27HPy5H/Xjmd58/jcoH5fEoaVoOOTzyn5gMtlmFy1FQiA1O69Yf/iyuF7dA/yyWQUzQgETC7Z6ezor78XhJX4xoz/v0P4Q/m1m7ic2QW8ertJnjT6G8q9RXW2TwL1ZMlrO3L5p0lUpPVGEUI7k7b7LSZPrWXAZXp1rcdVZh2wzrW8gJ+uWbJYvJlir9rYTUPp182HF18IU2d9m1wGa0PJpKgM4gX3S5/jTjWd3Z0E8wCPFyv6AICTF6IVlciawwR61gLPpyZ8GYeYYA8OehOy6TFezBMMsx29qUMBFpkm4J/AOagzrPoMAJuKgzDEl/dqKhEZOisd1li67/mTWiYuvAvdQSIDWEdVrFPXg6T80odAKoFlzB8c8yMyumHmEVcrsA/SOWtvuq65rQyUUF2HgM63xPU14SktWv6r62pSqahFF+hxsoeldA5yJRdle4syjKxqKPyjubC85msFoaQ8dtmPS1H09kkOJU5knN7HpEmJ2HKZkHqMeM5O/uGO1bbgkI9Kijzw0mW3B4IYa3iwDqYui3xcZR6VpqVs4M7XlfKbXaoj8RYNUJjRwbhBeVAWdnp0puTne53W5LNttuB+SgKva9b/FkB+49mzklJ2T0QbWnymO93Fhn3oXGy+ubCG1Y=----ATTACHMENT:----Nzg4NjA1NzkwMjk5OTM5MSA2NDgyNTE3ODk2MjMzMDk3IDkzNDcyNjU2Nzg5NDE1NzY=