src/Controller/DefaultController.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Form\ContactFormType;
  4. use Exception;
  5. use Pimcore\Controller\FrontendController;
  6. use Pimcore\Log\ApplicationLogger;
  7. use Pimcore\Mail;
  8. use Pimcore\Model\DataObject;
  9. use Pimcore\Model\DataObject\ContactRequest;
  10. use Pimcore\Model\WebsiteSetting;
  11. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Contracts\Translation\TranslatorInterface;
  15. class DefaultController extends FrontendController
  16. {
  17.     /**
  18.      * @param Request $request
  19.      * @return Response
  20.      */
  21.     public function defaultAction(Request $request): Response
  22.     {
  23.         return $this->render('default/default.html.twig');
  24.     }
  25.     /**
  26.      * @Template
  27.      * @param Request $request
  28.      * @param ApplicationLogger $logger
  29.      * @param TranslatorInterface $translator
  30.      * @return Response
  31.      * @throws Exception
  32.      */
  33.     public function contentAction(Request $requestApplicationLogger $loggerTranslatorInterface $translator): Response
  34.     {
  35.         $device \Pimcore\Tool\DeviceDetector::getInstance();
  36.         $device->getDevice(); // returns "phone", "tablet" or "desktop"
  37.         $searchCX $_ENV['GOOGLE_SEARCH_CX'];
  38.         $contactForm $this->contactForm($request$logger$translator);
  39.         $success false;
  40.         if ($contactForm == 'submitted') {
  41.             $success true;
  42.         }
  43.         return $this->render('default/content.html.twig', [
  44.             'isDesktop'   => $device->isDesktop(),
  45.             'isTablet'    => $device->isTablet(),
  46.             'isPhone'     => $device->isPhone(),
  47.             'deviceType'  => $device->getDevice(),
  48.             'searchCX'    => $searchCX,
  49.             'contactForm' => $contactForm,
  50.             'success'     => $success
  51.         ]);
  52.     }
  53.     /**
  54.      * @throws Exception
  55.      */
  56.     public function contactForm(Request $requestApplicationLogger $loggerTranslatorInterface $translator): \Symfony\Component\Form\FormView|string
  57.     {
  58.         // build form
  59.         $form $this->createForm(ContactFormType::class);
  60.         // get form request
  61.         $form->handleRequest($request);
  62.         // set parameter for folder
  63.         $today date("d_m_Y_H_i_s");
  64.         $month date('m');
  65.         $year date('Y');
  66.         // create Folder
  67.         $parentFolder DataObject\Service::createFolderByPath('/Kontaktanfragen/' $year "/" $month);
  68.         if ($form->isSubmitted() && $form->isValid()) {
  69.             // get form fields
  70.             $data $form->getData();
  71.             // spam
  72.             if ($data['hidden'] !== NULL || $data['filled'] !== 'jsfilled') {
  73.                 $logger->debug('Contact mail spam');
  74.             } else {
  75.                 $params = [
  76.                     'headtitle' => $translator->trans('email.contact.headtitle'),
  77.                     'preheader' => $translator->trans('email.contact.preheader'),
  78.                     'name' => $data['name'],
  79.                     'lastname' => $data['lastname'],
  80.                     /*'company' => $data['company'],*/
  81.                     'email'   => $data['email'],
  82.                     'tel'     => $data['tel'],
  83.                     'message' => nl2br($data['message'])
  84.                 ];
  85.                 $contactRequest = new ContactRequest();
  86.                 $contactRequest->setParent($parentFolder);
  87.                 $contactRequest->setKey($data['name'] . '_' $today);
  88.                 $contactRequest->setName($data['name']);
  89.                 $contactRequest->setLastname($data['lastname']);
  90.                 /*$contactRequest->setCompany($data['company']);*/
  91.                 $contactRequest->setEmail($data['email']);
  92.                 $contactRequest->setTel($data['tel']);
  93.                 $contactRequest->setMessage($data['message']);
  94.                 $contactRequest->setPublished(true);
  95.                 $contactRequest->save();
  96.                 // send mail
  97.                 try {
  98.                     $pageName WebsiteSetting::getByName('pageName'null$request->getLocale());
  99.                     // send E-Mail to website Admin
  100.                     $adminEmail "milan.galusic@a4agentur.ch";
  101.                     if (WebsiteSetting::getByName('ContactFormAdminMail')) {
  102.                         $adminEmail WebsiteSetting::getByName('ContactFormAdminMail',null$request->getLocale());
  103.                     }
  104.                     // get params from WebsiteConfig
  105.                     $mailDocPathAdmin    WebsiteSetting::getByName('mailContactDocAdmin'null$request->getLocale());
  106.                     $mailDocPathCustomer WebsiteSetting::getByName('mailContactDocCustomer'null$request->getLocale());
  107.                     $mailDocAdmin    $mailDocPathAdmin->getData();
  108.                     $mailDocCustomer $mailDocPathCustomer->getData();
  109.                     // send E-Mail to Admin
  110.                     $mailAdmin = new Mail();
  111.                     $mailAdmin->setIgnoreDebugMode(true);
  112.                     $mailAdmin->to($adminEmail);
  113.                     $mailAdmin->addReplyTo($data['email'], $data['name'] . " " $data['lastname']);
  114.                     $mailAdmin->setDocument($mailDocAdmin);
  115.                     $mailAdmin->setParams($params);
  116.                     $mailAdmin->send();
  117.                     // send E-Mail to Customer / User
  118.                     $mailCustomer = new \Pimcore\Mail();
  119.                     $mailCustomer->setIgnoreDebugMode(true);
  120.                     $mailCustomer->to($data['email']);
  121.                     $mailCustomer->addReplyTo($adminEmail$pageName->getData());
  122.                     $mailCustomer->setDocument($mailDocCustomer);
  123.                     $mailCustomer->setParams($params);
  124.                     $mailCustomer->send();
  125.                 } catch (Exception $e) {
  126.                     $logger->debug('Contact mail failed: ' $e);
  127.                 }
  128.             } return 'submitted';
  129.         } else {
  130.             return $form->createView();
  131.         }
  132.     }
  133. }