<?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\NewsletterFormType;use Pimcore\Mail;class NewsletterController extends FrontendController{ /** * @Template * @param Request $request * * @param DataObject $object * * @return Request * */ private function formAction(Request $request) { //Formulaire de contact $formStatus = false; $formSubmited = false; // initialize form and handle request data $form = $this->createForm(NewsletterFormType::class, null); $form->handleRequest($request); // On vérifie si un POST a bien été effectué et donc si le formulaire a été envoyé if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); $email = $data['email']; $date = new \DateTime('now'); $gdpr = true; // On vérifie que tous les champs sont bien complétés if($email !== ""){ $subscriber = DataObject\Subscriber::getByEmail($email); if(count($subscriber) < 1){ // 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){ if (filter_var($email, FILTER_VALIDATE_EMAIL)) { // on rempli les champs du subscriber $subscriber = new DataObject\Subscriber(); $subscriber->setEmail($email); $subscriber->setGdpr($gdpr); $subscriber->setLang($request->getLocale()); $subscriber->setParent(DataObject\Folder::getByPath('/Newsletter')); $subscriber->setKey('subscriber_'.$email); $subscriber->setPublished(true); $subscriber->save(); //email à l'admin // $mail = new \Pimcore\Mail(); // $mail->setDocument('/emails/contact'); // $mail->replyTo($email); // $mail->setParams($data); // $mail->send(); //Copie au visiteur $mail = new Mail(); $mail->setDocument('/'.$request->getLocale().'/emails/newsletter-confirmation'); $mail->to($email); $mail->setParams($data); $mail->send(); $formStatus = 'success'; $formSubmited = true; }else{ $formStatus = 'invalid-email'; } }else{ $formStatus = 'robot'; } }else{ $formStatus = 'already'; } } } $viewForm = $form->createView(); return [ 'form' => $viewForm, 'formStatus' => $formStatus, 'formSubmited' => $formSubmited ]; } /** * @Template * * @param Request $request * * @param DataObject $object * * @return response * */ public function defaultAction(Request $request) { $formPage =$this->formAction($request); return $this->render('newsletter/default.html.twig',[ 'formPage' => $formPage ]); } /** * @Template * * @param RequestStack $request * * @param DataObject $object * * @return response * */ public function snippetAction(RequestStack $request) { //$formSnippet =$this->formAction($request->getMasterRequest()); return $this->render('snippets/newsletter.html.twig',[ //'formSnippet' => $formSnippet ]); }}