<?php
/**
* AlkanbariDocumentController extends BaseController extends FrontendController
*
*/
namespace App\Controller;
use Pimcore\Controller\FrontendController;
use Pimcore\Model\Asset;
use Pimcore\Model\Document;
use Pimcore\Tool\DeviceDetector;
use Pimcore\Translation\Translator;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
use Carbon\Carbon;
use App\Captcha\Captcha;
class AlkanbariDocumentController extends BaseController
{
/**
* Document homepage action
*/
public function homepageAction(
Request $request,
Translator $translator
) {
$device = \Pimcore\Tool\DeviceDetector::getInstance();
$config = $this->getSiteConfig('/_Config/Alkanbari');
if (!$config instanceof \Pimcore\Model\DataObject\SiteConfig)
return new Response('Failed loading site config: /_Config/Alkanbari.');
return $this->render('alkanbari/document/homepage.html.twig', [
'languages' => $this->getValidLanguages(),
'config' => $config,
'locale' => $request->getLocale(),
'device' => $device
]);
}
/**
* Document document action
*/
public function documentAction(
Request $request,
Translator $translator
) {
$device = \Pimcore\Tool\DeviceDetector::getInstance();
$config = $this->getSiteConfig('/_Config/Alkanbari');
if (!$config instanceof \Pimcore\Model\DataObject\SiteConfig)
return new Response('Failed loading site config: /_Config/Alkanbari.');
return $this->render('alkanbari/document/document.html.twig', [
'languages' => $this->getValidLanguages(),
'config' => $config,
'locale' => $request->getLocale(),
'device' => $device
]);
}
/**
* Document contact action
*/
public function contactAction(
Request $request,
Translator $translator
) {
$device = \Pimcore\Tool\DeviceDetector::getInstance();
$config = $this->getSiteConfig('/_Config/Alkanbari');
if (!$config instanceof \Pimcore\Model\DataObject\SiteConfig)
return new Response('Failed loading site config: /_Config/Alkanbari.');
$locations = new \Pimcore\Model\DataObject\Location\Listing();
$locations ->setCondition("o_path LIKE '".$config->getSiteContactsPath()."%'");
$locations ->setOrderKey("position");
$locations ->setOrder("asc");
return $this->render('alkanbari/document/document.html.twig', [
'languages' => $this->getValidLanguages(),
'config' => $config,
'locale' => $request->getLocale(),
'device' => $device,
'locations' => $locations,
'loadOSM' => true
]);
}
/**
* imageGalleryAction
*/
public function imageGalleryAction(
Request $request
) {
if ('asset' === $request->get('type'))
{
$asset = Asset::getById($request->get('id'));
if ('folder' === $asset->getType())
{
return $this->render('alkanbari/document/imageGallery.html.twig', ['assets' => $asset->getChildren()]);
}
}
return [];
}
/**
* defaultMailAction
*/
public function defaultMailAction(
Request $request,
Translator $translator
) {
$device = \Pimcore\Tool\DeviceDetector::getInstance();
return $this->render('alkanbari/document/defaultMailTemplate.html.twig', [
'device' => $device,
'languages' => $this->getValidLanguages(),
'locale' => $request->getLocale()
]);
}
/**
* ajaxMailAction
*/
public function ajaxMailAction (
Request $request,
Translator $translator
) {
$config = $this->getSiteConfig('/_Config/Alkanbari');
$status = new class {};
// get post form data
$post_vars = $request->request->all();
$formdata = [];
foreach ($post_vars as $key => $var) {
$formdata[$key] = $var;
}
// check trap field
$spam_detected = false;
if (isset($formdata['emailAddress']) && strlen($formdata['emailAddress']))
$spam_detected = true;
if ( !$formdata['contactToken'] || $spam_detected )
{
$status = new class {};
$status ->code = 400;
$status ->message = 'Kritischer Fehler.';
}
else
{
if ( filter_var($formdata['contactEmail'], FILTER_VALIDATE_EMAIL) && $spam_detected === false )
{
$mail = new \Pimcore\Mail();
// $mail ->setCharset('utf-8');
$mail ->addTo( $formdata['contactEmail'] );
$mail ->addTo( $config->getWebsiteEmailAddress() );
$mail ->addBcc( 'k.klauer@78-media.de' );
$mail ->addReplyTo( $formdata['contactEmail'] );
$mail ->setSubject( 'Ihre Anfrage bei '.$config->getWebsiteName() );
$mail ->setDocument( Document::getByPath( '/alkanbari/email-templates/contact-default' ) );
$mail ->setParams( $formdata );
$mail ->send();
$status ->code = 200;
$status ->message = 'Vielen Dank. Ihre Nachricht wurde versendet.';
}
else
{
$status = new class {};
$status ->code = 500;
$status ->message = 'Es ist ein Fehler aufgetreten: SPAM oder ungueltige Eingaben.';
}
}
return new Response( json_encode($status) );
}
}
?>