src/Controller/Front/ContactsController.php line 36
<?php
namespace App\Controller\Front;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Response;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\Mime\Email;
use Symfony\Component\Mime\Address;
use OlaSoft\Common;
use App\Entity\Messages;
use App\Form\MessagesType;
class ContactsController extends AbstractController
{
public function __construct(ManagerRegistry $doctrine){
$this->doctrine = $doctrine;
}
private $doctrine;
public function getDoctrine()
{
return $this->doctrine;
}
/**
* @Route("/contacts/", name="contacts")
*/
public function contact(Request $request, MailerInterface $mailer)
{
$em = $this->getDoctrine()->getManager();
$msg = new Messages();
$form = $this->createForm(MessagesType::class, $msg);
$form->handleRequest($request);
$captchaResponse = $_POST['g-recaptcha-response'] ?? null;
if ($form->isSubmitted() && $form->isValid() && $captchaResponse){
$captchaUrl = Common::getParameter("recaptcha")["url"];
$captchaSecret = Common::getParameter("recaptcha")["secret"];
$userIP = $_SERVER['REMOTE_ADDR'];
$captcha = file_get_contents($captchaUrl . '?secret=' . $captchaSecret . '&response=' . $captchaResponse. '&remoteip=' . $userIP);
$captcha = json_decode($captcha);
if($captcha->success){
$browser = Common::getBrowser(null, true);
$msg->setIP($request->getClientIP());
$msg->setBrowser($browser['name']);
$msg->setOS($browser['platform']);
$msg->setDate(new \DateTime);
$em->persist($msg);
$em->flush();
$author = $msg->getFName().' '.$msg->getLName();
$message= "<b>Nom et prénoms : </b>".$author.
"<br/><b>Adresse électronique : </b>".$msg->getEmail().
"<br/><b>Object : </b>".$msg->getObject().
"<br/><b>Message :</b><p style='border-left: 3px solid #ccc; padding-left: 10px; padding-top: 5px; padding-bottom: 5px;'>".nl2br($msg->getContent())."</p>";
$email = (new TemplatedEmail())
// ->from('noreply@'.$_SERVER['HTTP_HOST'])
->to(Common::getParameter('contacts')['email'])
->replyTo(new Address($msg->getEmail(),$author))
->priority(Email::PRIORITY_HIGH)
->subject(Common::getParameter('sitename').' - '.$msg->getObject())
->html($message);
$mailer->send($email);
$this->addFlash("notice","Votre message a été envoyé avec succès.");
return $this->redirectToRoute('contacts');
}
$this->addFlash("error","Une erreur s'est produite, veuillez cocher le Captcha svp.");
}
return $this->render('Default/contacts.html.twig',['form'=>$form->createView()]);
}
}