<?phpnamespace App\Controller;use Pimcore\Controller\FrontendController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\RequestStack;use Symfony\Contracts\Translation\TranslatorInterface;use Pimcore\Model\DataObject;use Pimcore\Model\Document;use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;use Symfony\Component\Routing\Annotation\Route;use Pimcore\Model\WebsiteSetting;use App\Form\RdvGratuitFormType;use Pimcore\Mail;use Carbon\Carbon;use Pimcore\Model\DataObject\Folder;class RdvGratuitController extends FrontendController{ /** * @Template * * @param Request $request * * @param DataObject $object * * @return response * */ private function formContactAction(Request $request) { //Formulaire de contact $formStatus = false; // initialize form and handle request data $formContact = $this->createForm(RdvGratuitFormType::class, null); $formContact->handleRequest($request); // On vérifie si un POST a bien été effectué et donc si le formulaire a été envoyé if ($formContact->isSubmitted() && $formContact->isValid()) { $data = $formContact->getData(); $email = $data['email']; $phone = $data['phone']; $firstname = $data['firstname']; $lastname = $data['lastname']; $message = nl2br($data['message']); $gdpr = $data['gdpr']; // On vérifie que tous les champs sont bien complétés if($firstname !== "" && $lastname !== "" && $email !== "" && $message !== ""){ // reCaptcha verification $recaptchaKeyPrivate = WebsiteSetting::getByName('recaptchaKeyPrivate'); $recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify'; $recaptcha_response = $data['recaptcha']; $recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptchaKeyPrivate->getData() . '&response=' . $recaptcha_response); $recaptcha = json_decode($recaptcha); if ($recaptcha->success && isset($recaptcha->score) && $recaptcha->score > 0.7) { if (filter_var($email, FILTER_VALIDATE_EMAIL)) { // Récupération du score recaptcha if (isset($recaptcha->score)){ $data['recaptchaScore'] = strval($recaptcha->score); } // condition pour changer le folder d'enregistrement de concours dans les assets $folderPath = Folder::getByPath("/RdvGratuit"); if(!$folderPath){ $folderPath = new Folder(); $folderPath->setKey("RdvGratuit"); $folderPath->setParentId(1); $folderPath->save(); } if($this->document->getProperty('objectFormFolder')) { $folderPath = Folder::getByPath($this->document->getProperty('objectFormFolder')); } $contact = new DataObject\RdvGratuit(); $contact->setLastname($lastname); $contact->setFirstname($firstname); $contact->setEmail($email); $contact->setPhone($phone); $contact->setMessage($message); $contact->setGdpr($gdpr); /*$contact->setLang($request->getLocale());*/ $contact->setKey($email.'_'.uniqid()); $contact->setParent($folderPath); $contact->setPublished(true); $contact->save(); //email à CED $mail = new \Pimcore\Mail(); $mail->setDocument('/emails/rdv-gratuit'); $mail->replyTo($email); $mail->setParams($data); $mail->setSubject('Prise de contact de '.$data['firstname'].' '.$data['lastname']); $mail->send(); //Copie au visiteur $mail = new \Pimcore\Mail(); $mail->setDocument('/emails/'.$request->getLocale().'/rdv-gratuit-confirmation'); $mail->to($email); $mail->setParams($data); $mail->send(); $formStatus = 'success'; }else{ $formStatus = 'invalid-email'; } }else{ $formStatus = 'robot'; } }else{ $formStatus = 'required-empty'; } } $viewContactForm = $formContact->createView(); return[ 'form' => $viewContactForm, 'formStatus' => $formStatus ]; } /** * @Template * * @param RequestStack $request * * @param DataObject $object * * @return response * */ public function defaultContactAction(RequestStack $request) { $formDefault =$this->formContactAction($request->getMasterRequest()); return $this->render('rdv-gratuit/default.html.twig',[ 'form' => $formDefault['form'], 'formStatus' => $formDefault['formStatus'], ]); }}