src/Controller/Front/ContactsController.php line 36

  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 Doctrine\Persistence\ManagerRegistry;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  9. use Symfony\Component\Mailer\MailerInterface;
  10. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  11. use Symfony\Component\Mime\Email;
  12. use Symfony\Component\Mime\Address;
  13. use OlaSoft\Common;
  14. use App\Entity\Messages;
  15. use App\Form\MessagesType;
  16. class ContactsController extends AbstractController
  17. {
  18.     public function __construct(ManagerRegistry $doctrine){
  19.         $this->doctrine =  $doctrine;
  20.     }
  21.     
  22.     private $doctrine;
  23.     
  24.     public function getDoctrine()
  25.     {
  26.         return $this->doctrine;
  27.     }
  28.     
  29.     /**
  30.      * @Route("/contacts/", name="contacts")
  31.      */
  32.     public function contact(Request $requestMailerInterface $mailer)
  33.     {
  34.         $em $this->getDoctrine()->getManager();
  35.         $msg = new Messages();
  36.         $form $this->createForm(MessagesType::class, $msg);
  37.         $form->handleRequest($request);
  38.         $captchaResponse $_POST['g-recaptcha-response'] ?? null;
  39.         if ($form->isSubmitted() && $form->isValid() && $captchaResponse){
  40.             $captchaUrl Common::getParameter("recaptcha")["url"];
  41.             $captchaSecret Common::getParameter("recaptcha")["secret"];
  42.             $userIP $_SERVER['REMOTE_ADDR'];
  43.             $captcha file_get_contents($captchaUrl '?secret=' $captchaSecret '&response=' $captchaResponse'&remoteip=' $userIP);
  44.             $captcha json_decode($captcha);
  45.             if($captcha->success){
  46.                 $browser Common::getBrowser(nulltrue);
  47.                 $msg->setIP($request->getClientIP());
  48.                 $msg->setBrowser($browser['name']);
  49.                 $msg->setOS($browser['platform']);
  50.                 $msg->setDate(new \DateTime);
  51.                 $em->persist($msg);
  52.                 $em->flush();
  53.                 $author $msg->getFName().' '.$msg->getLName();
  54.                 $message"<b>Nom et prénoms : </b>".$author.
  55.                     "<br/><b>Adresse électronique : </b>".$msg->getEmail().
  56.                     "<br/><b>Object : </b>".$msg->getObject().
  57.                     "<br/><b>Message :</b><p style='border-left: 3px solid #ccc; padding-left: 10px; padding-top: 5px; padding-bottom: 5px;'>".nl2br($msg->getContent())."</p>";
  58.                 $email = (new TemplatedEmail())
  59.                     // ->from('noreply@'.$_SERVER['HTTP_HOST'])
  60.                     ->to(Common::getParameter('contacts')['email'])
  61.                     ->replyTo(new Address($msg->getEmail(),$author))
  62.                     ->priority(Email::PRIORITY_HIGH)
  63.                     ->subject(Common::getParameter('sitename').' - '.$msg->getObject())
  64.                     ->html($message);
  65.                 $mailer->send($email);
  66.                 $this->addFlash("notice","Votre message a été envoyé avec succès.");
  67.                 return $this->redirectToRoute('contacts');
  68.             }
  69.             $this->addFlash("error","Une erreur s'est produite, veuillez cocher le Captcha svp.");
  70.         }
  71.         return $this->render('Default/contacts.html.twig',['form'=>$form->createView()]);
  72.     }
  73. }