diff --git a/core/lib/Thelia/Controller/Front/CustomerController.php b/core/lib/Thelia/Controller/Front/CustomerController.php index 2bb01a94a..7f956287e 100755 --- a/core/lib/Thelia/Controller/Front/CustomerController.php +++ b/core/lib/Thelia/Controller/Front/CustomerController.php @@ -104,6 +104,24 @@ class CustomerController extends BaseFrontController $this->dispatch(TheliaEvents::CUSTOMER_CREATEACCOUNT, $customerCreateEvent); + $newCustomer = $customerCreateEvent->getCustomer(); + + // Newsletter + if (true === $form->get('newsletter')->getData()) { + $newsletterEmail = $newCustomer->getEmail(); + $nlEvent = new NewsletterEvent($newsletterEmail, $this->getRequest()->getSession()->getLang()->getLocale()); + $nlEvent->setFirstname($newCustomer->getFirstname()); + $nlEvent->setLastname($newCustomer->getLastname()); + + // Security : Check if this new Email address already exist + if (null !== $newsletter = NewsletterQuery::create()->findOneByEmail($newsletterEmail)) { + $nlEvent->setId($newsletter->getId()); + $this->dispatch(TheliaEvents::NEWSLETTER_UPDATE, $nlEvent); + } else { + $this->dispatch(TheliaEvents::NEWSLETTER_SUBSCRIBE, $nlEvent); + } + } + $this->processLogin($customerCreateEvent->getCustomer()); $cart = $this->getCart($this->getRequest()); diff --git a/core/lib/Thelia/Form/CustomerCreateForm.php b/core/lib/Thelia/Form/CustomerCreateForm.php index 38da394cc..35954dc88 100755 --- a/core/lib/Thelia/Form/CustomerCreateForm.php +++ b/core/lib/Thelia/Form/CustomerCreateForm.php @@ -89,6 +89,14 @@ class CustomerCreateForm extends AddressCreateForm "for" => "password_confirmation" ) )) + // Add Newsletter + ->add("newsletter", "checkbox", array( + "label" => Translator::getInstance()->trans('I would like to receive the newsletter or the latest news.'), + "label_attr" => array( + "for" => "newsletter" + ), + "required" => false + )) // Add terms & conditions ->add("agreed", "checkbox", array( "constraints" => array( diff --git a/core/lib/Thelia/Form/CustomerProfileUpdateForm.php b/core/lib/Thelia/Form/CustomerProfileUpdateForm.php index c7ebd2c43..3bf0c372a 100755 --- a/core/lib/Thelia/Form/CustomerProfileUpdateForm.php +++ b/core/lib/Thelia/Form/CustomerProfileUpdateForm.php @@ -55,16 +55,7 @@ class CustomerProfileUpdateForm extends CustomerCreateForm ->remove("password") ->remove("password_confirm") // Remove Terms & conditions - ->remove("agreed") - - // Add Newsletter - ->add("newsletter", "checkbox", array( - "label" => Translator::getInstance()->trans('I would like to receive the newsletter or the latest news.'), - "label_attr" => array( - "for" => "newsletter" - ), - "required" => false - )); + ->remove("agreed"); } /** diff --git a/templates/default/register.html b/templates/default/register.html index 4f551ead5..50a20f2ee 100644 --- a/templates/default/register.html +++ b/templates/default/register.html @@ -245,6 +245,21 @@ + {form_field form=$form field="newsletter"} +
+
+
+ + {if $error } + {$message} + {/if} +
+
+
+ {/form_field} + {form_field form=$form field="agreed"}