TagsValidator.php 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace Muzich\CoreBundle\Validator;
  3. use Symfony\Component\Validator\ConstraintValidator;
  4. use Symfony\Component\Validator\Constraint;
  5. use Doctrine\ORM\EntityManager;
  6. class TagsValidator extends ConstraintValidator
  7. {
  8. private $entityManager;
  9. public function __construct(EntityManager $entityManager)
  10. {
  11. $this->entityManager = $entityManager;
  12. }
  13. public function isValid($value, Constraint $constraint)
  14. {
  15. $value = json_decode($value);
  16. if (count($value))
  17. {
  18. if (array_diff($value, array_unique($value)))
  19. {
  20. //$this->setMessage('Tags saisies incorrects');UPGRADE 2.1
  21. $this->context->addViolation('tags_saisinco');
  22. return false;
  23. }
  24. $count = $this->entityManager
  25. ->createQuery("SELECT COUNT(t)
  26. FROM MuzichCoreBundle:Tag t
  27. WHERE t IN (:tids)")
  28. ->setParameter('tids', $value)
  29. ->getSingleScalarResult();
  30. if ($count != count ($value))
  31. {
  32. //$this->setMessage('Tags saisies incorrects');UPGRADE 2.1
  33. $this->context->addViolation('tags_saisinco');
  34. return false;
  35. }
  36. }
  37. return true;
  38. }
  39. }