src/Controller/ContactController.php line 23

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