src/Controller/Front/SubscribersFrontController.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Front;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use OlaSoft\Common;
  8. use App\Entity\Subscribers;
  9. use App\Form\SubscribersType;
  10. /**
  11.  * @Route("", priority=1)
  12.  */
  13. class SubscribersFrontController extends AbstractController
  14. {
  15.     /**
  16.      * @Route("/inscription/", name="subscribers", defaults={"isEmbed"=false})
  17.      */
  18.     public function form(Request $request$isEmbed true)
  19.     {
  20.         $em $this->getDoctrine()->getManager();
  21.         $subs = new Subscribers();
  22.         $form $this->createForm(SubscribersType::class, $subs);
  23.         $form->handleRequest($request);
  24.         $captchaResponse $_POST['g-recaptcha-response'] ?? null;
  25.         if ($form->isSubmitted() && $form->isValid() && $captchaResponse){
  26.             $captchaUrl Common::getParameter("recaptcha")["url"];
  27.             $captchaSecret Common::getParameter("recaptcha")["secret"];
  28.             $userIP $_SERVER['REMOTE_ADDR'];
  29.             $captcha file_get_contents($captchaUrl '?secret=' $captchaSecret '&response=' $captchaResponse'&remoteip=' $userIP);
  30.             $captcha json_decode($captcha);
  31.             if($captcha->success){
  32.                 $exist $em->getRepository(Subscribers::class)->findOneByEmail($subs->getEmail());
  33.                 if(!$exist){
  34.                     $browser=Common::getBrowser(nulltrue);
  35.                     $subs->setIP($request->getClientIP());
  36.                     $subs->setBrowser($browser['name']);
  37.                     $subs->setOS($browser['platform']);
  38.                     $subs->setDate(new \DateTime);
  39.                     $em->persist($subs);
  40.                     $em->flush();
  41.                 }
  42.                 $this->addFlash('success','Félicitations.<br>Votre inscription a été effectuée avec succès.');
  43.                 return $this->redirect($request->headers->get('referer'));
  44.             }
  45.             $this->addFlash("error","Une erreur s'est produite, veuillez cocher le Captcha svp.");
  46.         }
  47.         return $this->render($isEmbed 'Default/subscribers-form.html.twig' 'Default/subscribers.html.twig',[
  48.             'form'=>$form->createView()
  49.         ]);
  50.     }
  51. }