src/Controller/ContactController.php line 165

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\ContactFormType;
  13. use Pimcore\Mail;
  14. use Carbon\Carbon;
  15. use Pimcore\Model\DataObject\Folder;
  16. class ContactController 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(ContactFormType::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.             $phone                 $data['phone'];
  43.             $firstname             $data['firstname'];
  44.             $lastname             $data['lastname'];
  45.             $message             nl2br($data['message']);
  46.             $gdpr                 $data['gdpr'];
  47.             // On vérifie que tous les champs sont bien complétés
  48.             if($firstname !== "" && $lastname !== "" && $email !== "" && $message !== ""){
  49.                 // reCaptcha verification
  50.                 $recaptchaKeyPrivate WebsiteSetting::getByName('recaptchaKeyPrivate');
  51.                 $recaptcha_url 'https://www.google.com/recaptcha/api/siteverify';
  52.                 $recaptcha_response $data['recaptcha'];
  53.                 $recaptcha file_get_contents($recaptcha_url '?secret=' $recaptchaKeyPrivate->getData() . '&response=' $recaptcha_response);
  54.                 $recaptcha json_decode($recaptcha);
  55.                 if ($recaptcha->success && isset($recaptcha->score) && $recaptcha->score 0.7)
  56.                 {
  57.                     if (filter_var($emailFILTER_VALIDATE_EMAIL)) {
  58.                         // Récupération du score recaptcha
  59.                         if (isset($recaptcha->score)){
  60.                             $data['recaptchaScore'] = strval($recaptcha->score);
  61.                         }
  62.                         // condition pour changer le folder d'enregistrement de concours dans les assets
  63.                         $folderPath Folder::getByPath("/Contact");
  64.                         if(!$folderPath){
  65.                             $folderPath = new Folder();
  66.                             $folderPath->setKey("Contact");
  67.                             $folderPath->setParentId(1);
  68.                             $folderPath->save();
  69.                         }
  70.                         if($this->document->getProperty('objectFormFolder')) {
  71.                             $folderPath Folder::getByPath($this->document->getProperty('objectFormFolder'));
  72.                         }
  73.                         $contact = new DataObject\Contact();
  74.                         $contact->setLastname($lastname);
  75.                         $contact->setFirstname($firstname);
  76.                         $contact->setEmail($email);
  77.                         $contact->setPhone($phone);
  78.                         $contact->setMessage($message);
  79.                         $contact->setGdpr($gdpr);
  80.                         /*$contact->setLang($request->getLocale());*/
  81.                         $contact->setKey($email.'_'.uniqid());
  82.                         $contact->setParent($folderPath);
  83.                         $contact->setPublished(true);
  84.                         $contact->save();
  85.                         //email à CED
  86.                         $mail = new \Pimcore\Mail();
  87.                         $mail->setDocument('/emails/contact');
  88.                         $mail->replyTo($email);
  89.                         $mail->setParams($data);
  90.                         $mail->setSubject('Prise de contact de '.$data['firstname'].' '.$data['lastname']);
  91.                         $mail->send();
  92.                         //Copie au visiteur
  93.                         $mail = new \Pimcore\Mail();
  94.                         $mail->setDocument('/emails/'.$request->getLocale().'/contact-confirmation');
  95.                         $mail->to($email);
  96.                         $mail->setParams($data);
  97.                         $mail->send();
  98.                         $formStatus 'success';
  99.                     }else{
  100.                         $formStatus 'invalid-email';
  101.                     }
  102.                 }else{
  103.                     $formStatus 'robot';
  104.                 }
  105.             }else{
  106.                 $formStatus 'required-empty';
  107.             }
  108.         }
  109.         $viewContactForm $formContact->createView();
  110.         return[
  111.             'form' => $viewContactForm,
  112.             'formStatus' => $formStatus
  113.         ];
  114.     }
  115.     /**
  116.      * @Template
  117.      * 
  118.      * @param RequestStack $request
  119.      * 
  120.      * @param DataObject $object
  121.      * 
  122.      * @return response
  123.      *
  124.      */
  125.     public function defaultContactAction(RequestStack $request)
  126.     {
  127.         $formDefault =$this->formContactAction($request->getMasterRequest());
  128.         return $this->render('contact/default.html.twig',[
  129.             'form' => $formDefault['form'],
  130.             'formStatus' => $formDefault['formStatus'],
  131.         ]);
  132.     }
  133.     /**
  134.      * @Template
  135.      * 
  136.      * @param RequestStack $request
  137.      * 
  138.      * @param DataObject $object
  139.      * 
  140.      * @return response
  141.      *
  142.      */
  143.     public function snippetContactAction(RequestStack $request)
  144.     {
  145.         $formSnippet =$this->formContactAction($request->getMasterRequest());
  146.         return $this->render('snippets/contact.html.twig',[
  147.             'form' => $formSnippet['form'],
  148.             'formStatus' => $formSnippet['formStatus'],
  149.         ]);
  150.     }
  151. }