From 47212490d215366e2e8a3f04b3f09f9f4ecdfa8f Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Tue, 22 Oct 2013 10:58:16 +0200 Subject: [PATCH] verify if an email already exists in newsletter table --- core/lib/Thelia/Form/NewsletterForm.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/core/lib/Thelia/Form/NewsletterForm.php b/core/lib/Thelia/Form/NewsletterForm.php index 3e70dde67..7b32ed8df 100644 --- a/core/lib/Thelia/Form/NewsletterForm.php +++ b/core/lib/Thelia/Form/NewsletterForm.php @@ -23,9 +23,12 @@ namespace Thelia\Form; +use Symfony\Component\Validator\Constraints\Callback; use Symfony\Component\Validator\Constraints\Email; use Symfony\Component\Validator\Constraints\NotBlank; +use Symfony\Component\Validator\ExecutionContextInterface; use Thelia\Core\Translation\Translator; +use Thelia\Model\NewsletterQuery; /** @@ -62,7 +65,13 @@ class NewsletterForm extends BaseForm ->add('email', 'email', array( 'constraints' => array( new NotBlank(), - new Email() + new Email(), + new Callback(array( + "methods" => array( + array($this, + "verifyExistingEmail") + ) + )) ), 'label' => Translator::getInstance()->trans('email'), 'label_attr' => array( @@ -71,6 +80,14 @@ class NewsletterForm extends BaseForm )); } + public function verifyExistingEmail($value, ExecutionContextInterface $context) + { + $customer = NewsletterQuery::create()->findOneByEmail($value); + if ($customer) { + $context->addViolation("This email already exists"); + } + } + /** * @return string the name of you form. This name must be unique */