src/Controller/CaseStudyController.php line 135

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\CaseStudyFormType;
  13. use Pimcore\Mail;
  14. use Carbon\Carbon;
  15. use Pimcore\Model\DataObject\Folder;
  16. class CaseStudyController extends FrontendController
  17. {
  18.     /**
  19.      * @Template
  20.      * 
  21.      * @param Request $request
  22.      * 
  23.      * @param DataObject $object
  24.      * 
  25.      * @return response
  26.      *
  27.      */
  28.     private function formContactAction(Request $request)
  29.     {
  30.         //Formulaire de contact
  31.         $formStatus false;
  32.          
  33.         // initialize form and handle request data
  34.         $formContact $this->createForm(CaseStudyFormType::class, null);
  35.         $formContact->handleRequest($request);
  36.             
  37.         // On vérifie si un POST a bien été effectué et donc si le formulaire a été envoyé
  38.         if ($formContact->isSubmitted() && $formContact->isValid()) {
  39.             $data $formContact->getData();
  40.             
  41.             $email                 $data['email'];
  42.             $firstname             $data['firstname'];
  43.             $lastname             $data['lastname'];
  44.             $gdpr                 $data['gdpr'];
  45.             // On vérifie que tous les champs sont bien complétés
  46.             if($lastname !== "" && $email !== ""){
  47.                 // reCaptcha verification
  48.                 $recaptchaKeyPrivate WebsiteSetting::getByName('recaptchaKeyPrivate');
  49.                 $recaptcha_url 'https://www.google.com/recaptcha/api/siteverify';
  50.                 $recaptcha_response $data['recaptcha'];
  51.                 $recaptcha file_get_contents($recaptcha_url '?secret=' $recaptchaKeyPrivate->getData() . '&response=' $recaptcha_response);
  52.                 $recaptcha json_decode($recaptcha);
  53.                 if ($recaptcha->success && isset($recaptcha->score) && $recaptcha->score 0.7)
  54.                 {
  55.                     if (filter_var($emailFILTER_VALIDATE_EMAIL)) {
  56.                         // condition pour changer le folder d'enregistrement de concours dans les assets
  57.                         $folderPath Folder::getByPath("/CaseStudy");
  58.                         if(!$folderPath){
  59.                             $folderPath = new Folder();
  60.                             $folderPath->setKey("CaseStudy");
  61.                             $folderPath->setParentId(1);
  62.                             $folderPath->save();
  63.                         }
  64.                         if($this->document->getProperty('objectFormFolder')) {
  65.                             $folderPath Folder::getByPath($this->document->getProperty('objectFormFolder'));
  66.                         }
  67.                         $contact = new DataObject\CaseStudy();
  68.                         $contact->setLastname($lastname);
  69.                         $contact->setFirstname($firstname);
  70.                         $contact->setEmail($email);
  71.                         $contact->setGdpr($gdpr);
  72.                         /*$contact->setLang($request->getLocale());*/
  73.                         $contact->setKey($email.'_'.uniqid());
  74.                         $contact->setParent($folderPath);
  75.                         $contact->setPublished(true);
  76.                         $contact->save();
  77.                         //email à CED
  78.                         $mail = new \Pimcore\Mail();
  79.                         $mail->setDocument('/emails/case-study');
  80.                         $mail->replyTo($email);
  81.                         $mail->setParams($data);
  82.                         $mail->send();
  83.                         //Copie au visiteur
  84.                         $mail = new \Pimcore\Mail();
  85.                         $mail->setDocument('/emails/'.$request->getLocale().'/case-study-confirmation');
  86.                         $mail->to($email);
  87.                         $mail->setParams($data);
  88.                         $mail->send();
  89.                         $formStatus 'success';
  90.                     }else{
  91.                         $formStatus 'invalid-email';
  92.                     }
  93.                 }else{
  94.                     $formStatus 'robot';
  95.                 }
  96.             }else{
  97.                 $formStatus 'required-empty';
  98.             }
  99.         }
  100.         $viewContactForm $formContact->createView();
  101.         return[
  102.             'form' => $viewContactForm,
  103.             'formStatus' => $formStatus
  104.         ];
  105.     }
  106.     /**
  107.      * @Template
  108.      * 
  109.      * @param RequestStack $request
  110.      * 
  111.      * @param DataObject $object
  112.      * 
  113.      * @return response
  114.      *
  115.      */
  116.     public function snippetContactAction(RequestStack $request)
  117.     {
  118.         $formSnippet =$this->formContactAction($request->getMasterRequest());
  119.         return $this->render('snippets/modal-form-case-study.html.twig',[
  120.             'form' => $formSnippet['form'],
  121.             'formStatus' => $formSnippet['formStatus'],
  122.         ]);
  123.     }
  124. }