src/AppBundle/Controller/NewsletterController.php line 17

Open in your IDE?
  1. <?php
  2. namespace AppBundle\Controller;
  3. use AppBundle\Form\Newsletter\SubscriptionFormType;
  4. use AppBundle\Form\Newsletter\UnsubscriptionFormType;
  5. use Pimcore\Controller\FrontendController;
  6. use Pimcore\Model;
  7. use Pimcore\Tool\Newsletter;
  8. use Symfony\Component\HttpFoundation\Request;
  9. class NewsletterController extends FrontendController
  10. {
  11.     public function subscribeAction(Request $request)
  12.     {
  13.         // replace "person" with the class name you have used for your class above (mailing list)
  14.         $newsletter = new Newsletter('person');
  15.         $success    false;
  16.         // initialize form and handle request data
  17.         $form $this->createForm(SubscriptionFormType::class);
  18.         $form->handleRequest($request);
  19.         $this->view->submitted $form->isSubmitted();
  20.         if ($form->isSubmitted() && $form->isValid()) {
  21.             $params $form->getData();
  22.             if ($newsletter->checkParams($params)) {
  23.                 try {
  24.                     $params['parentId'] = 1// default folder (home) where we want to save our subscribers
  25.                     $newsletterFolder   Model\DataObject\AbstractObject::getByPath('/crm/newsletter');
  26.                     if ($newsletterFolder) {
  27.                         $params['parentId'] = $newsletterFolder->getId();
  28.                     }
  29.                     $user $newsletter->subscribe($params);
  30.                     // user and email document
  31.                     // parameters available in the email: gender, firstname, lastname, email, token, object
  32.                     // ==> see mailing framework
  33.                     $newsletter->sendConfirmationMail($userModel\Document::getByPath('/en/advanced-examples/newsletter/confirmation-email'), ['additional' => 'parameters']);
  34.                     // do some other stuff with the new user
  35.                     $user->setDateRegister(new \DateTime());
  36.                     $user->save();
  37.                     $success true;
  38.                 } catch (\Exception $e) {
  39.                     $this->view->error $e->getMessage();
  40.                 }
  41.             }
  42.         }
  43.         $this->view->success $success;
  44.         // add the form view
  45.         $this->view->form $form->createView();
  46.     }
  47.     public function confirmAction(Request $request)
  48.     {
  49.         $this->view->success false;
  50.         // replace "person" with the class name you have used for your class above (mailing list)
  51.         $newsletter = new Newsletter('person');
  52.         if ($newsletter->confirm($request->get('token'))) {
  53.             $this->view->success true;
  54.         }
  55.     }
  56.     public function unsubscribeAction(Request $request)
  57.     {
  58.         // replace "person" with the class name you have used for your class above (mailing list)
  59.         $newsletter = new Newsletter('person');
  60.         // initialize form and handle request data
  61.         $form $this->createForm(UnsubscriptionFormType::class);
  62.         $form->handleRequest($request);
  63.         $formData = ($form->isSubmitted() && $form->isValid()) ? $form->getData() : [];
  64.         $unsubscribeMethod null;
  65.         $success false;
  66.         // read email and token from request with fallback to form data
  67.         $email $request->get('email', isset($formData['email']) ? $formData['email'] : null);
  68.         $token $request->get('token', isset($formData['token']) ? $formData['token'] : null);
  69.         // we get the params here directly from the request as the action does not need
  70.         // to be called through the form (e.g. link in email)
  71.         if (null !== $email) {
  72.             $unsubscribeMethod 'email';
  73.             $success $newsletter->unsubscribeByEmail($email);
  74.         } elseif (null !== $token) {
  75.             $unsubscribeMethod 'token';
  76.             $success $newsletter->unsubscribeByToken($token);
  77.         }
  78.         $this->view->success $success;
  79.         $this->view->unsubscribeMethod $unsubscribeMethod;
  80.         // add the form view
  81.         $this->view->form $form->createView();
  82.     }
  83.     public function standardMailAction()
  84.     {
  85.     }
  86. }