From c9074892b287474bbe3f4bc58053c4dd9d846400 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Tue, 22 Oct 2013 10:01:02 +0200 Subject: [PATCH] complete controller and newsletter listener --- core/lib/Thelia/Action/Newsletter.php | 10 ++++++- .../Controller/Front/NewsletterController.php | 9 ++++-- .../Core/Event/Newsletter/NewsletterEvent.php | 30 ++++++++++++++++++- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/core/lib/Thelia/Action/Newsletter.php b/core/lib/Thelia/Action/Newsletter.php index fd5aeeb6c..fa2e54f09 100644 --- a/core/lib/Thelia/Action/Newsletter.php +++ b/core/lib/Thelia/Action/Newsletter.php @@ -25,7 +25,8 @@ namespace Thelia\Action; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Thelia\Core\Event\Newsletter\NewsletterEvent; use Thelia\Core\Event\TheliaEvents; -use Thelia\Tests\Action\BaseAction; +use Thelia\Action\BaseAction; +use Thelia\Model\Newsletter as NewsletterModel; /** @@ -38,7 +39,14 @@ class Newsletter extends BaseAction implements EventSubscriberInterface public function subscribe(NewsletterEvent $event) { + $newsletter = new NewsletterModel(); + $newsletter + ->setEmail($event->getEmail()) + ->setFirstname($event->getFirstname()) + ->setLastname($event->getLastname()) + ->setLocale($event->getLocale()) + ->save(); } /** diff --git a/core/lib/Thelia/Controller/Front/NewsletterController.php b/core/lib/Thelia/Controller/Front/NewsletterController.php index b0d92353e..bdc52db75 100644 --- a/core/lib/Thelia/Controller/Front/NewsletterController.php +++ b/core/lib/Thelia/Controller/Front/NewsletterController.php @@ -22,9 +22,9 @@ /*************************************************************************************/ namespace Thelia\Controller\Front; + use Thelia\Core\Event\Newsletter\NewsletterEvent; use Thelia\Core\Event\TheliaEvents; -use Thelia\Form\Exception\FormValidationException; use Thelia\Form\NewsletterForm; @@ -45,7 +45,10 @@ class NewsletterController extends BaseFrontController $form = $this->validateForm($newsletterForm); - $event = new NewsletterEvent($form->get('email')->getData()); + $event = new NewsletterEvent( + $form->get('email')->getData(), + $this->getRequest()->getSession()->getLang()->getLocale() + ); if (null !== $customer = $this->getSecurityContext()->getCustomerUser()) { @@ -55,7 +58,7 @@ class NewsletterController extends BaseFrontController $this->dispatch(TheliaEvents::NEWSLETTER_SUBSCRIBE, $event); - } catch(FormValidationException $e) { + } catch(\Exception $e) { $error_message = $e->getMessage(); } diff --git a/core/lib/Thelia/Core/Event/Newsletter/NewsletterEvent.php b/core/lib/Thelia/Core/Event/Newsletter/NewsletterEvent.php index 9d64d59f5..fc50980c0 100644 --- a/core/lib/Thelia/Core/Event/Newsletter/NewsletterEvent.php +++ b/core/lib/Thelia/Core/Event/Newsletter/NewsletterEvent.php @@ -47,9 +47,15 @@ class NewsletterEvent extends ActionEvent */ protected $lastname; - function __construct($email) + /** + * @var string current locale + */ + protected $locale; + + function __construct($email, $locale) { $this->email = $email; + $this->locale = $locale; } /** @@ -112,6 +118,28 @@ class NewsletterEvent extends ActionEvent return $this->lastname; } + /** + * @param string $locale + * + * @return $this + */ + public function setLocale($locale) + { + $this->locale = $locale; + + return $this; + } + + /** + * @return string + */ + public function getLocale() + { + return $this->locale; + } + + + } \ No newline at end of file