src/Controller/DefaultController.php line 56

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Pimcore\Controller\FrontendController;
  4. use Pimcore\Model\Document;
  5. use Pimcore\Tool;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Component\Validator\Validator\ValidatorInterface;
  10. use Symfony\Component\Validator\Constraints as Assert;
  11. use Pimcore\Model\DataObject;
  12. class DefaultController extends FrontendController
  13. {
  14.     /**
  15.      * @Template
  16.      * @param Request $request
  17.      * @return array
  18.      */
  19.     public function defaultAction(Request $request)
  20.     {
  21.         return [];
  22.     }
  23.    /**
  24.      * @Template
  25.      * @param Request $request
  26.      * @return array
  27.      */
  28.     public function modalAction(Request $request)
  29.     {
  30.         $modalObject = DataObject\Modal::getById(8);
  31.         return ['headline' => $modalObject->getHeadline(), 'text' => $modalObject->getWysiwyg() ];
  32.     }
  33.     /**
  34.      * @Template
  35.      *
  36.      * @param Request $request
  37.      * @return array
  38.      */
  39.     public function contactAction(Request $request)
  40.     {
  41.         return [];
  42.     }
  43.     /**
  44.      * @Template
  45.      *
  46.      * @param Request $request
  47.      * @return array
  48.      */
  49.     public function footerAction(Request $request)
  50.     {
  51.         return [];
  52.     }
  53.     /**
  54.      * @Template
  55.      *
  56.      * @param Request $request
  57.      * @return array
  58.      */
  59.     public function notfoundAction(Request $request)
  60.     {
  61.         // only when not in editmode, because otherwise the 404 page is not editable in backend
  62.         if($this->editmode !== true) {
  63.             $requestUriSegments = explode('/', mb_substr($_SERVER['REQUEST_URI'], 1));
  64.             $requestUriLocale = array_shift($requestUriSegments);
  65.             $validLanguages = Tool::getValidLanguages();
  66.             if (in_array($requestUriLocale, $validLanguages)) {
  67.                 $locale = $requestUriLocale;
  68.             } else {
  69.                 $preferredUserLanguage = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
  70.                 if (in_array($preferredUserLanguage, $validLanguages)) {
  71.                     $locale = $preferredUserLanguage;
  72.                 } else {
  73.                     $locale = Tool::getDefaultLanguage();
  74.                 }
  75.             }
  76.             $errorPagePath = $this->getParameter('pimcore.config')['documents']['error_pages']['default'] ?? '404';
  77.             $errorPagePathSegments = explode('/', mb_substr($errorPagePath, 1));
  78.             $errorPagePathSegments[0] = $locale;
  79.             $errorPagePath = '/' . join('/', $errorPagePathSegments);
  80.             $errorPageDocument = Document::getByPath($errorPagePath);
  81.             return ['document' => $errorPageDocument];
  82.         }
  83.     }
  84.     /**
  85.      * @Template
  86.      *
  87.      * @param Request $request
  88.      * @param Validator $validator
  89.      * @param \Pimcore\Config\Config $websiteConfig
  90.      * @return array
  91.      */
  92.     public function inquiryAction(Request $request, ValidatorInterface $validator, \Pimcore\Config\Config $websiteConfig)
  93.     {
  94.         /* Pass parameters to view */
  95.         $now = new \DateTime('now');
  96.         $defaultDate = $now->format('d.m.Y');
  97.         $result = array(
  98.             "arrival" => $request->get('arrival', $defaultDate),
  99.             "departure" => $request->get('departure', $defaultDate),
  100.             "rooms" => $request->get('rooms', 1),
  101.             "grownups" => $request->get('grownups', 1),
  102.             "children" => $request->get('children', 0),
  103.             "validation_error" => false,
  104.             "robot_error" => false,
  105.         );
  106.         /* Handle the form itself */
  107.         $session = $request->getSession();
  108.         $session->clear();
  109.         if (!$this->editmode && $request->get('isSend') == 'Ja' && $request->get('sendcheck') == '') {
  110.             // validation
  111.             $mandatories = [
  112.                 'firstnamefpmcr' => $request->get('firstnamefpmcr'),
  113.                 'lastnamelpmcr' => $request->get('lastnamelpmcr'),
  114.                 'emailepmcr' => $request->get('emailepmcr'),
  115.                 'dataProtection' => $request->get('dataProtection')
  116.             ];
  117.             $constraints = new Assert\Collection([
  118.                 'firstnamefpmcr' => [new Assert\Length(['min' => 2]), new Assert\NotBlank],
  119.                 'lastnamelpmcr' => [new Assert\Length(['min' => 2]), new Assert\NotBlank],
  120.                 'emailepmcr' => [new Assert\Email(), new Assert\notBlank],
  121.                 'dataProtection' => [new Assert\NotNull],
  122.             ]);
  123.             $honeypot_fields_text = [
  124.                 'firstname' => $request->get('firstname'),
  125.                 'lastname' => $request->get('lastname'),
  126.                 'email' => $request->get('email'),
  127.                 'phone' => $request->get('phone')
  128.             ];
  129.             $honeypot_fields  = new Assert\Collection([
  130.                 'firstname' => [new Assert\Blank],
  131.                 'lastname' => [new Assert\Blank],
  132.                 'email' => [new Assert\Blank],
  133.                 'phone' => [new Assert\Blank],
  134.             ]);
  135.             $violations_captcha = $validator->validate($honeypot_fields_text, $honeypot_fields);
  136.             $violations = $validator->validate($mandatories, $constraints);
  137.             if (count($violations) > 0) {
  138.                 $result["validation_error"] = true;
  139.                 $fields = [
  140.                     "firstnamefpmcr" => $request->get("firstnamefpmcr"),
  141.                     "lastnamelpmcr" => $request->get("lastnamelpmcr"),
  142.                     "emailepmcr" => $request->get("emailepmcr"),
  143.                     "phoneppmcr" => $request->get("phoneppmcr"),
  144.                     "arrival" => $request->get("arrival"),
  145.                     "departure" => $request->get("departure"),
  146.                     "rooms" => $request->get("rooms"),
  147.                     "grownups" => $request->get("grownups"),
  148.                     "children" => $request->get("children"),
  149.                     "street" => $request->get("street"),
  150.                     "postal" => $request->get("postal"),
  151.                     "city" => $request->get("city"),
  152.                     "country" => $request->get("country"),
  153.                     "attention" => $request->get("attention"),
  154.                     "message" => $request->get("message"),
  155.                 ];
  156.                 $result["fields"] = $fields;
  157.             } elseif (count($violations_captcha) > 0) {
  158.                 $result["robot_error"] = true;
  159.             } else {
  160.                 // validation passed
  161.                 $area = $request->get("message");
  162.                 $text = trim($area);
  163.                 $text = nl2br($text);
  164.                 $paramArray = [
  165.                     "firstnamefpmcr" => $request->get("firstnamefpmcr"),
  166.                     "lastnamelpmcr" => $request->get("lastnamelpmcr"),
  167.                     "emailepmcr" => $request->get("emailepmcr"),
  168.                     "phoneppmcr" => $request->get("phoneppmcr"),
  169.                     "arrival" => $request->get("arrival"),
  170.                     "departure" => $request->get("departure"),
  171.                     "rooms" => $request->get("rooms"),
  172.                     "grownups" => $request->get("grownups"),
  173.                     "children" => $request->get("children"),
  174.                     "street" => $request->get("street"),
  175.                     "postal" => $request->get("postal"),
  176.                     "city" => $request->get("city"),
  177.                     "country" => $request->get("country"),
  178.                     "attention" => $request->get("attention"),
  179.                     "message" => $text,
  180.                 ];
  181.                 $mail = new \Pimcore\Mail();
  182.                 $mail->addTo($paramArray['emailepmcr']);
  183.                 $mail->setDocument($this->document->getProperty("inquiryEmail"));
  184.                 $mail->setParams($paramArray);
  185.                 $mail->send();
  186.                 return $this->redirect($this->document->getProperty("thankyouPage"));
  187.             }
  188.         }
  189.         return $result;
  190.     }
  191.     /**
  192.      * @Template
  193.      *
  194.      * @param Request $request
  195.      * @return array
  196.      */
  197.     public function inquirymailAction(Request $request)
  198.     {
  199.         return [];
  200.     }
  201. }