. */ /* */ /*************************************************************************************/ namespace Front\Controller; use Thelia\Controller\Front\BaseFrontController; use Thelia\Core\Event\Newsletter\NewsletterEvent; use Thelia\Core\Event\TheliaEvents; use Thelia\Form\NewsletterForm; /** * Class NewsletterController * @package Thelia\Controller\Front * @author Manuel Raynaud */ class NewsletterController extends BaseFrontController { public function subscribeAction() { $error_message = false; $newsletterForm = new NewsletterForm($this->getRequest()); try { $form = $this->validateForm($newsletterForm); $event = new NewsletterEvent( $form->get('email')->getData(), $this->getRequest()->getSession()->getLang()->getLocale() ); if (null !== $customer = $this->getSecurityContext()->getCustomerUser()) { $event->setFirstname($customer->getFirstname()); $event->setLastname($customer->getLastname()); } $this->dispatch(TheliaEvents::NEWSLETTER_SUBSCRIBE, $event); } catch (\Exception $e) { $error_message = $e->getMessage(); } \Thelia\Log\Tlog::getInstance()->error(sprintf('Error during newsletter subscription : %s', $error_message)); // If Ajax Request if ($this->getRequest()->isXmlHttpRequest()) { if ($error_message) { $response = $this->jsonResponse(json_encode(array( "success" => false, "message" => $error_message ))); } else { $response = $this->jsonResponse(json_encode(array( "success" => true, "message" => "Thanks for signing up! We'll keep you posted whenever we have any new updates." )));; } return $response; } else { $newsletterForm->setErrorMessage($error_message); $this->getParserContext() ->addForm($newsletterForm) ->setGeneralError($error_message) ; } } }