<?php
namespace App\Controller;
use Pimcore\Controller\FrontendController;
use Pimcore\Model\Document;
use Pimcore\Tool;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Component\Validator\Constraints as Assert;
use Pimcore\Model\DataObject;
class DefaultController extends FrontendController
{
/**
* @Template
* @param Request $request
* @return array
*/
public function defaultAction(Request $request)
{
return [];
}
/**
* @Template
* @param Request $request
* @return array
*/
public function modalAction(Request $request)
{
$modalObject = DataObject\Modal::getById(8);
return ['headline' => $modalObject->getHeadline(), 'text' => $modalObject->getWysiwyg() ];
}
/**
* @Template
*
* @param Request $request
* @return array
*/
public function contactAction(Request $request)
{
return [];
}
/**
* @Template
*
* @param Request $request
* @return array
*/
public function footerAction(Request $request)
{
return [];
}
/**
* @Template
*
* @param Request $request
* @return array
*/
public function notfoundAction(Request $request)
{
// only when not in editmode, because otherwise the 404 page is not editable in backend
if($this->editmode !== true) {
$requestUriSegments = explode('/', mb_substr($_SERVER['REQUEST_URI'], 1));
$requestUriLocale = array_shift($requestUriSegments);
$validLanguages = Tool::getValidLanguages();
if (in_array($requestUriLocale, $validLanguages)) {
$locale = $requestUriLocale;
} else {
$preferredUserLanguage = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if (in_array($preferredUserLanguage, $validLanguages)) {
$locale = $preferredUserLanguage;
} else {
$locale = Tool::getDefaultLanguage();
}
}
$errorPagePath = $this->getParameter('pimcore.config')['documents']['error_pages']['default'] ?? '404';
$errorPagePathSegments = explode('/', mb_substr($errorPagePath, 1));
$errorPagePathSegments[0] = $locale;
$errorPagePath = '/' . join('/', $errorPagePathSegments);
$errorPageDocument = Document::getByPath($errorPagePath);
return ['document' => $errorPageDocument];
}
}
/**
* @Template
*
* @param Request $request
* @param Validator $validator
* @param \Pimcore\Config\Config $websiteConfig
* @return array
*/
public function inquiryAction(Request $request, ValidatorInterface $validator, \Pimcore\Config\Config $websiteConfig)
{
/* Pass parameters to view */
$now = new \DateTime('now');
$defaultDate = $now->format('d.m.Y');
$result = array(
"arrival" => $request->get('arrival', $defaultDate),
"departure" => $request->get('departure', $defaultDate),
"rooms" => $request->get('rooms', 1),
"grownups" => $request->get('grownups', 1),
"children" => $request->get('children', 0),
"validation_error" => false,
"robot_error" => false,
);
/* Handle the form itself */
$session = $request->getSession();
$session->clear();
if (!$this->editmode && $request->get('isSend') == 'Ja' && $request->get('sendcheck') == '') {
// validation
$mandatories = [
'firstnamefpmcr' => $request->get('firstnamefpmcr'),
'lastnamelpmcr' => $request->get('lastnamelpmcr'),
'emailepmcr' => $request->get('emailepmcr'),
'dataProtection' => $request->get('dataProtection')
];
$constraints = new Assert\Collection([
'firstnamefpmcr' => [new Assert\Length(['min' => 2]), new Assert\NotBlank],
'lastnamelpmcr' => [new Assert\Length(['min' => 2]), new Assert\NotBlank],
'emailepmcr' => [new Assert\Email(), new Assert\notBlank],
'dataProtection' => [new Assert\NotNull],
]);
$honeypot_fields_text = [
'firstname' => $request->get('firstname'),
'lastname' => $request->get('lastname'),
'email' => $request->get('email'),
'phone' => $request->get('phone')
];
$honeypot_fields = new Assert\Collection([
'firstname' => [new Assert\Blank],
'lastname' => [new Assert\Blank],
'email' => [new Assert\Blank],
'phone' => [new Assert\Blank],
]);
$violations_captcha = $validator->validate($honeypot_fields_text, $honeypot_fields);
$violations = $validator->validate($mandatories, $constraints);
if (count($violations) > 0) {
$result["validation_error"] = true;
$fields = [
"firstnamefpmcr" => $request->get("firstnamefpmcr"),
"lastnamelpmcr" => $request->get("lastnamelpmcr"),
"emailepmcr" => $request->get("emailepmcr"),
"phoneppmcr" => $request->get("phoneppmcr"),
"arrival" => $request->get("arrival"),
"departure" => $request->get("departure"),
"rooms" => $request->get("rooms"),
"grownups" => $request->get("grownups"),
"children" => $request->get("children"),
"street" => $request->get("street"),
"postal" => $request->get("postal"),
"city" => $request->get("city"),
"country" => $request->get("country"),
"attention" => $request->get("attention"),
"message" => $request->get("message"),
];
$result["fields"] = $fields;
} elseif (count($violations_captcha) > 0) {
$result["robot_error"] = true;
} else {
// validation passed
$area = $request->get("message");
$text = trim($area);
$text = nl2br($text);
$paramArray = [
"firstnamefpmcr" => $request->get("firstnamefpmcr"),
"lastnamelpmcr" => $request->get("lastnamelpmcr"),
"emailepmcr" => $request->get("emailepmcr"),
"phoneppmcr" => $request->get("phoneppmcr"),
"arrival" => $request->get("arrival"),
"departure" => $request->get("departure"),
"rooms" => $request->get("rooms"),
"grownups" => $request->get("grownups"),
"children" => $request->get("children"),
"street" => $request->get("street"),
"postal" => $request->get("postal"),
"city" => $request->get("city"),
"country" => $request->get("country"),
"attention" => $request->get("attention"),
"message" => $text,
];
$mail = new \Pimcore\Mail();
$mail->addTo($paramArray['emailepmcr']);
$mail->setDocument($this->document->getProperty("inquiryEmail"));
$mail->setParams($paramArray);
$mail->send();
return $this->redirect($this->document->getProperty("thankyouPage"));
}
}
return $result;
}
/**
* @Template
*
* @param Request $request
* @return array
*/
public function inquirymailAction(Request $request)
{
return [];
}
}