src/Controller/TimobrachtController.php line 22

Open in your IDE?
  1. <?php
  2. /**
  3.  *  TimobrachtController extends BaseController extends FrontendController 
  4.  * 
  5. */
  6. namespace App\Controller;
  7. use Pimcore\Controller\FrontendController;
  8. use Pimcore\Model\Asset;
  9. use Pimcore\Model\Document;
  10. use Pimcore\Tool\DeviceDetector;
  11. use Pimcore\Translation\Translator;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Carbon\Carbon;
  17. use App\Captcha\Captcha;
  18. class TimobrachtController extends BaseController
  19. {
  20.     /**
  21.      *  Document homepage action
  22.     */
  23.     public function homepageAction(
  24.         Request $request, 
  25.         Translator $translator
  26.     ) {
  27.         $device = \Pimcore\Tool\DeviceDetector::getInstance();
  28.         $captcha = new Captcha('de');
  29.         $siteConfig = $this->document->getProperty('_siteConfig');
  30.         return $this->render('timobracht/homepage.html.twig', [
  31.             'languages'   => $this->getValidLanguages(),
  32.             'locale'      => $request->getLocale(),
  33.             'siteConfig'  => $siteConfig,
  34.             'device'      => $device,
  35.             'captcha'     => $captcha->getCaptcha($request->getLocale())
  36.         ]);
  37.     }    
  38.     
  39.     /**
  40.      *  Document document action
  41.     */
  42.     public function documentAction(
  43.         Request $request, 
  44.         Translator $translator
  45.     ) {
  46.         $device = \Pimcore\Tool\DeviceDetector::getInstance();
  47.         $siteConfig = $this->document->getProperty('_siteConfig');
  48.         
  49.         return $this->render('timobracht/document.html.twig', [
  50.             'languages'   => $this->getValidLanguages(),           
  51.             'locale'      => $request->getLocale(),
  52.             'siteConfig'  => $siteConfig,
  53.             'device'      => $device
  54.         ]);
  55.     }
  56.     
  57.     /**
  58.      *  imageGalleryAction
  59.     */
  60.     public function imageGalleryAction(
  61.         Request $request
  62.     ) {
  63.         if ('asset' === $request->get('type')) {
  64.             $asset = Asset::getById($request->get('id'));
  65.             if ('folder' === $asset->getType()) {                
  66.                 return $this->render('timobracht/imageGallery.html.twig', ['assets' => $asset->getChildren()]);
  67.             }
  68.         }    
  69.         return [];
  70.     }    
  71.     
  72.     /**
  73.      *  defaultMailAction
  74.     */
  75.     public function defaultMailAction(
  76.         Request $request, 
  77.         Translator $translator     
  78.     ) {
  79.         $device = \Pimcore\Tool\DeviceDetector::getInstance();
  80.         $siteConfig = $this->document->getProperty('_siteConfig');
  81.         
  82.         return $this->render('timobracht/defaultMailTemplate.html.twig', [
  83.             'device'      => $device,
  84.             'languages'   => $this->getValidLanguages(),
  85.             'siteConfig'  => $siteConfig,
  86.             'locale'      => $request->getLocale()
  87.         ]);
  88.     }
  89.     
  90.     /**
  91.      *  ajaxMailAction 
  92.     */
  93.     public function ajaxMailAction (
  94.         Request $request, 
  95.         Translator $translator     
  96.     ) {
  97.         $status = new class {};
  98.         
  99.         // get post form data
  100.         $post_vars  = $request->request->all();
  101.         $formdata = [];
  102.         foreach ($post_vars as $key => $var) {
  103.             $formdata[$key] = $var;
  104.         }
  105.         // check trap field
  106.         $spam_detected = false;
  107.         if (isset($formdata['emailAddress']) && strlen($formdata['emailAddress']))
  108.             $spam_detected = true;  
  109.             
  110.         // init captcha
  111.         $captcha = new Captcha('de'); 
  112.         $captcha_validated = false;       
  113.         // validate captcha
  114.         if ($request->get('captcha_key')) {
  115.             $captcha_validated = $captcha->validateCaptcha($request->get('captcha_key'), $request->get('captcha_answer'));
  116.         }  
  117.         
  118.         if ( !$formdata['contactToken'] || $spam_detected || $captcha_validated==false ) {
  119.             $status = new class {};
  120.             $status ->code = 400;
  121.             $status ->message = 'Kritischer Fehler.';   
  122.         } else {
  123.             if ( filter_var($formdata['contactEmail'], FILTER_VALIDATE_EMAIL) && $spam_detected === false ) {
  124.                 $mail = new \Pimcore\Mail();
  125.                 // $mail ->setCharset('utf-8');
  126.                 $mail ->addTo( $formdata['contactEmail'] );
  127.                 $mail ->addTo( SITE_MAIL_DEFAULT );
  128.                 $mail ->addBcc( 'info@mallorca-aktiv.de' );
  129.                 $mail ->addReplyTo( $formdata['contactEmail'] );
  130.                 $mail ->setSubject( 'Ihre Anfrage bei Timo Bracht - Sportmedizinische Fortbildungen' );
  131.                 $mail ->setDocument( Document::getByPath( '/_system/email-templates/contact-default' ) );                    
  132.                 $mail ->setParams( $formdata );                         
  133.                 $mail ->send(); 
  134.     
  135.                 $status ->code = 200;
  136.                 $status ->message = 'Vielen Dank. Ihre Nachricht wurde versendet.';   
  137.             } else {
  138.                 $status = new class {};
  139.                 $status ->code = 500;
  140.                 $status ->message = 'Es ist ein Fehler aufgetreten: ungueltige Eingaben.' . $mail->ErrorInfo;  
  141.             }
  142.         }
  143.   
  144.         return new Response( json_encode($status) );
  145.     }
  146.  
  147. }
  148. ?>