src/Controller/NewsletterController.php line 142

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Pimcore\Controller\FrontendController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\RequestStack;
  6. use Symfony\Contracts\Translation\TranslatorInterface;
  7. use Pimcore\Model\DataObject;
  8. use Pimcore\Model\Document;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Pimcore\Model\WebsiteSetting;
  12. use App\Form\NewsletterFormType;
  13. use Pimcore\Mail;
  14. class NewsletterController extends FrontendController
  15. {
  16.     /**
  17.      * @Template
  18.      * @param Request $request
  19.      * 
  20.      * @param DataObject $object
  21.      * 
  22.      * @return Request
  23.      *
  24.      */
  25.     private function formAction(Request $request)
  26.     {
  27.         //Formulaire de contact
  28.         $formStatus false;
  29.         $formSubmited false;
  30.         // initialize form and handle request data
  31.         $form $this->createForm(NewsletterFormType::class, null);
  32.         $form->handleRequest($request);
  33.             
  34.         // On vérifie si un POST a bien été effectué et donc si le formulaire a été envoyé
  35.         if ($form->isSubmitted() && $form->isValid()) {
  36.             $data $form->getData();
  37.             
  38.             $email                 $data['email'];
  39.             $date                 = new \DateTime('now');
  40.             $gdpr                 true;
  41.             // On vérifie que tous les champs sont bien complétés
  42.             if($email !== ""){
  43.                 $subscriber DataObject\Subscriber::getByEmail($email);
  44.                 if(count($subscriber) < 1){
  45.                     // reCaptcha verification
  46.                     $recaptchaKeyPrivate WebsiteSetting::getByName('recaptchaKeyPrivate');
  47.                     $recaptcha_url 'https://www.google.com/recaptcha/api/siteverify';
  48.                     $recaptcha_response $data['recaptcha'];
  49.                     $recaptcha file_get_contents($recaptcha_url '?secret=' $recaptchaKeyPrivate->getData() . '&response=' $recaptcha_response);
  50.                     $recaptcha json_decode($recaptcha);
  51.                     if ($recaptcha->success){
  52.                         if (filter_var($emailFILTER_VALIDATE_EMAIL)) {
  53.                             // on rempli les champs du subscriber
  54.                             $subscriber = new DataObject\Subscriber();
  55.                             $subscriber->setEmail($email);
  56.                             $subscriber->setGdpr($gdpr);
  57.                             $subscriber->setLang($request->getLocale());
  58.                             $subscriber->setParent(DataObject\Folder::getByPath('/Newsletter'));
  59.                             $subscriber->setKey('subscriber_'.$email);
  60.                             $subscriber->setPublished(true);
  61.                             $subscriber->save();
  62.                             //email à l'admin
  63.                             // $mail = new \Pimcore\Mail();
  64.                             // $mail->setDocument('/emails/contact');
  65.                             // $mail->replyTo($email);
  66.                             // $mail->setParams($data);
  67.                             // $mail->send();
  68.                             //Copie au visiteur
  69.                             $mail = new Mail();
  70.                             $mail->setDocument('/'.$request->getLocale().'/emails/newsletter-confirmation');
  71.                             $mail->to($email);
  72.                             $mail->setParams($data);
  73.                             $mail->send();
  74.                             $formStatus 'success';
  75.                             $formSubmited true;
  76.                         }else{
  77.                             $formStatus 'invalid-email';
  78.                         }
  79.                     }else{
  80.                         $formStatus 'robot';
  81.                     }
  82.                 }else{
  83.                     $formStatus 'already';
  84.                 }
  85.             }
  86.         }
  87.         $viewForm $form->createView();
  88.         return [
  89.             'form' => $viewForm,
  90.             'formStatus' => $formStatus,
  91.             'formSubmited' => $formSubmited
  92.         ];
  93.     }
  94.     /**
  95.      * @Template
  96.      * 
  97.      * @param Request $request
  98.      * 
  99.      * @param DataObject $object
  100.      * 
  101.      * @return response
  102.      *
  103.      */
  104.     public function defaultAction(Request $request)
  105.     {
  106.         $formPage =$this->formAction($request);
  107.         return $this->render('newsletter/default.html.twig',[
  108.             'formPage' => $formPage
  109.         ]);
  110.     }
  111.     /**
  112.      * @Template
  113.      * 
  114.      * @param RequestStack $request
  115.      * 
  116.      * @param DataObject $object
  117.      * 
  118.      * @return response
  119.      *
  120.      */
  121.     public function snippetAction(RequestStack $request)
  122.     {
  123.         //$formSnippet =$this->formAction($request->getMasterRequest());
  124.         return $this->render('snippets/newsletter.html.twig',[
  125.             //'formSnippet' => $formSnippet
  126.         ]);
  127.     }
  128. }