src/Controller/RequestDemoController.php line 16

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Pimcore\Controller\FrontendController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Contracts\Translation\TranslatorInterface;
  6. use Pimcore\Model\DataObject;
  7. use Pimcore\Model\Document;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Pimcore\Model\WebsiteSetting;
  11. use App\Form\RequestADemoFormType;
  12. use Pimcore\Mail;
  13. class RequestDemoController extends FrontendController
  14. {
  15.     /**
  16.      * @Template
  17.      * @param Request $request
  18.      * 
  19.      * @param DataObject $object
  20.      * 
  21.      * @return Response
  22.      *
  23.      */
  24.     public function defaultAction(Request $request)
  25.     {
  26.         $formStatus false;
  27.         $honeypotValue "Waterloo"
  28.          
  29.         // initialize form and handle request data
  30.         $formContact $this->createForm(RequestADemoFormType::class, null);
  31.         $formContact->handleRequest($request);
  32.             
  33.         // On vérifie si un POST a bien été effectué et donc si le formulaire a été envoyé
  34.         if ($formContact->isSubmitted() && $formContact ->isValid()) {
  35.             $data $formContact->getData();
  36.             
  37.             $email $data['email'];
  38.             $phone $data['phone'];
  39.             $firstname $data['firstname'];
  40.             $lastname $data['lastname'];
  41.             $role $data['role'];
  42.             $company $data['company'];
  43.             $industry $data['industry'];
  44.             $country $data['country'];
  45.             $message nl2br($data['message']);
  46.             // fake variable
  47.             $website $_POST["website"];
  48.             $address $_POST["address"];
  49.             $date = new \DateTime('now');
  50.             $gdpr true;
  51.             // On vérifie que tous les champs sont bien complétés
  52.             if($email !== "" && $phone !== "" && $message !== ""){
  53.                 // reCaptcha verification
  54.                 $recaptchaKeyPrivate WebsiteSetting::getByName('recaptchaKeyPrivate');
  55.                 $recaptcha_url 'https://www.google.com/recaptcha/api/siteverify';
  56.                 $recaptcha_response $data['recaptcha'];
  57.                 $recaptcha file_get_contents($recaptcha_url '?secret=' $recaptchaKeyPrivate->getData() . '&response=' $recaptcha_response);
  58.                 $recaptcha json_decode($recaptcha);
  59.                 if ($recaptcha->success && isset($recaptcha->score) && $recaptcha->score 0.7 && $website == "" && $address == $honeypotValue)
  60.                 {
  61.                     if (filter_var($emailFILTER_VALIDATE_EMAIL)) {
  62.                         // Récupération du score recaptcha
  63.                         if (isset($recaptcha->score)){
  64.                             $data['recaptchaScore'] = strval($recaptcha->score);
  65.                         }
  66.                         // Email Admin
  67.                         $mail = new Mail();
  68.                         $emailDocument Document::getByPath('/emails/request-demo');
  69.                         $mail->setDocument($emailDocument);
  70.         
  71.                         $data['lang'] = $request->getLocale();
  72.                         $data['message'] = nl2br($data['message']);
  73.         
  74.                         $mail->setParams($data);
  75.                         $mail->send();
  76.         
  77.                         // Email Confirmation
  78.                         $mailConfirmation = new Mail();
  79.                         $emailConfirmationDocument Document::getByPath('/emails/'.$request->getLocale().'/request-demo-confirmation');
  80.                         $mailConfirmation->setDocument($emailConfirmationDocument);
  81.                         $mailConfirmation->to($data['email']);
  82.                         $mailConfirmation->setParams($data);
  83.                         $mailConfirmation->send();
  84.                         $formStatus 'success';
  85.                         return $this->redirect($this->generateUrl('requestDemoSuccess', array('customer_email'=> $data['email'])));
  86.                     }else{
  87.                         $formStatus 'invalid-email';
  88.         
  89.                     }
  90.                 }else{
  91.                     $formStatus 'robot';
  92.                     $honeypotValue $address;
  93.     
  94.                 }
  95.             
  96.             }else{
  97.                 $formStatus 'required-empty';
  98.             }
  99.         }
  100.         return [
  101.             'form' => $formContact->createView(),
  102.             'formStatus' => $formStatus,
  103.             'honeypotValue' => $honeypotValue
  104.         ];
  105.     }
  106.     /**
  107.      * @Template
  108.      * @param Request $request
  109.      * @return \Symfony\Component\HttpFoundation\JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse
  110.      * @throws \Exception
  111.      * @Route(
  112.      *      "/{_locale}/request-a-demo-sucess",
  113.      *      name="requestDemoSuccess",
  114.      *      methods={"GET","POST"}
  115.      * )
  116.      */
  117.     public function successAction(Request $request)
  118.     {    
  119.         $mail $request->get('customer_email');
  120.         return $this->render('request_demo/success.html.twig',[
  121.             'mail' => $mail,
  122.         ]);
  123.     }
  124. }