system/modules/47_CustomModule/library/CustomModule/Frontend/Modules/ModPhotoCompetitionVerify.php line 61

Open in your IDE?
  1. <?php
  2. /**
  3.  * SYMPATHIEMAGAZIN for Contao Open Source CMS
  4.  *
  5.  * Copyright (C) 2018 47GradNord - Agentur für Internetlösungen
  6.  *
  7.  * @license    commercial
  8.  * @author     Holger Neuner
  9.  */
  10. namespace CustomModule\Frontend\Modules;
  11. use App\WebsiteBundle\PhotoCompetitionSession;
  12. use Contao\System;
  13. use CustomModule\Entity\PhotoCompetitionSubscriber;
  14. use CustomModule\Models\PhotocompetitionSubscriberModel;
  15. use CustomModule\PhotoCompetition\SubscriberSession;
  16. use Haste\Form\Form;
  17. use NotificationCenter\Model\Notification;
  18. class ModPhotoCompetitionVerify extends AbstractModule
  19. {
  20.     /**
  21.      * Template
  22.      * @var string
  23.      */
  24.     protected $strTemplate 'mod_PhotoCompetitionVerify';
  25.     /** @var string */
  26.     private $autoItem;
  27.     /**
  28.      * Display a wildcard in the back end
  29.      *
  30.      * @return string
  31.      */
  32.     public function generate()
  33.     {
  34.         if (TL_MODE == 'BE')
  35.         {
  36.             /** @var \BackendTemplate|object $objTemplate */
  37.             $objTemplate = new \BackendTemplate('be_wildcard');
  38.             $objTemplate->wildcard '### ' utf8_strtoupper($GLOBALS['TL_LANG']['FMD']['47_ModPhotoCompetitionVerify'][0]) . ' ###';
  39.             $objTemplate->title $this->headline;
  40.             $objTemplate->id $this->id;
  41.             $objTemplate->link $this->name;
  42.             $objTemplate->href 'contao/main.php?do=themes&amp;table=tl_module&amp;act=edit&amp;id=' $this->id;
  43.             return $objTemplate->parse();
  44.         }
  45.         return parent::generate();
  46.     }
  47.     /**
  48.      * Generate the module
  49.      */
  50.     protected function compile()
  51.     {
  52.         $this->autoItem = \Input::get('auto_item');
  53.         // Inital Request without Auto Item
  54.         if (null === $this->autoItem) {
  55.             return $this->redirectToStep('start');
  56.         }
  57.         // Verify Mail is calling
  58.         if('verify' === $this->autoItem)
  59.         {
  60.             /** @var PhotocompetitionSubscriberModel $validToken */
  61.             $validToken PhotocompetitionSubscriberModel::findValidToken(\Input::get('token'));
  62.             if(null !== $validToken)
  63.             {
  64.                 /** @var PhotocompetitionSubscriberModel $subscriberModel */
  65.                 $subscriberModel PhotocompetitionSubscriberModel::setEmailVerified(\Input::get('token'));
  66.                 /** @var PhotoCompetitionSession $subscriberSession */
  67.                 $subscriberSession System::getContainer()->get('App\WebsiteBundle\PhotoCompetitionSession');
  68.                 $subscriberSession->setSession(\App\WebsiteBundle\Entity\PhotoCompetitionSubscriber::buildFromModel($subscriberModel));
  69.                 $this->redirectToStep('verificationSuccessfull');
  70.             } else {
  71.                 $subscriberSession System::getContainer()->get('App\WebsiteBundle\PhotoCompetitionSession');
  72.                 $subscriberSession->removeSession();
  73.                 $this->redirectToStep('verificationFailed');
  74.             }
  75.         }
  76.         /** @var Form $verifyMailForm */
  77.         $verifyMailForm $this->getFormVerifyMail();
  78.         if($verifyMailForm->validate()) {
  79.             if($this->handleSubmitedEmailAddress($verifyMailForm->fetchAll()))
  80.             {
  81.                 $this->redirectToStep('waitForVerification');
  82.             } else {
  83.                 $this->redirectToStep('verificationFailed','email='.$verifyMailForm->fetchAll()['email']);
  84.             }
  85.         }
  86.         $this->Template->step $this->autoItem;
  87.         $this->Template->showVerificationForm = ($this->autoItem === 'start') ? true false;
  88.         $this->Template->showWaitForVerification = ($this->autoItem === 'waitForVerification') ? true false;
  89.         $this->Template->showVerificationFailed = ($this->autoItem === 'verificationFailed') ? true false;
  90.         $this->Template->showVerificationSuccessfull = ($this->autoItem === 'verificationSuccessfull') ? true false;
  91.         $this->Template->verifyMailForm $verifyMailForm->generate();
  92.         $this->Template->jumpToUpload $this->redirectToFrontendPage($this->modPhotoCompetitionJumpToUploadnulltrue);
  93.         $this->Template->givenEMail = \Input::get('email');
  94.         $this->Template->givenPage $GLOBALS['objPage']->alias;
  95.     }
  96.     /**
  97.      * @param $fetchedData
  98.      * @return bool
  99.      */
  100.     protected function handleSubmitedEmailAddress($fetchedData)
  101.     {
  102.         /** @var PhotoCompetitionSession $subscriberSession */
  103.         $subscriberSession System::getContainer()->get('App\WebsiteBundle\PhotoCompetitionSession');
  104.         /** @var PhotocompetitionSubscriberModel $subscriberModel */
  105.         $subscriberModel PhotocompetitionSubscriberModel::checkUniqueEMail($fetchedData['email']);
  106.         if(null !== $subscriberModel) {
  107.             return false;
  108.         }
  109.         /** @var \App\WebsiteBundle\Entity\PhotoCompetitionSubscriber $photoCompetitionSubscriber */
  110.         $photoCompetitionSubscriber $subscriberSession->getSession();
  111.         $photoCompetitionSubscriber->setEmail($fetchedData['email']);
  112.         $photoCompetitionSubscriber->setVerifyToken($this->getUniqueString(32));
  113.         $subscriberSession->setSession($photoCompetitionSubscriber);
  114.         PhotocompetitionSubscriberModel::addMemberToVerifyEmailaddress($photoCompetitionSubscriber);
  115.         /** @var Notification $objNotification */
  116.         $objNotification Notification::findByPk(\Config::get('photocompetion_notification_verifymail'));
  117.         // Set the language
  118.         $strLanguage 'de';
  119.         // Set tokens
  120.         $arrTokens = array(
  121.             'admin_mail' => 'info@sympathiemagazin.de',
  122.             'admin_name' => 'SympathieMagazine',
  123.             'user_email' => $fetchedData['email'],
  124.             'user_firstname' => $fetchedData['firstname'],
  125.             'user_lastname' => $fetchedData['lastname'],
  126.             'user_city' => $fetchedData['city'],
  127.             'user_zip' => $fetchedData['zip'],
  128.             'user_country' => $fetchedData['country'],
  129.             'emailverification_link'      => $this->getUrlToStep('verify').'?token='.$photoCompetitionSubscriber->getVerifyToken(),
  130.             'domain' => \Environment::get('base'),
  131.         );
  132.         $objNotification->send($arrTokens$strLanguage);
  133.         return true;
  134.     }
  135.     /**
  136.      * @return Form
  137.      */
  138.     protected function getFormVerifyMail()
  139.     {
  140.         /** @var Form $form */
  141.         $form = new Form('verifyMail''POST', function(Form $form) {
  142.             return \Input::post('FORM_SUBMIT') === $form->getFormId();
  143.         });
  144.         $form->addFormField('email', array(
  145.             'label'         => 'Bitte geben Sie hier ihre E-Mail-Adresse ein:',
  146.             'inputType'     => 'text',
  147.             'eval'          => array('mandatory'=>true'rgxp'=>'email''class' => 'email')
  148.         ));
  149.         $form->addSubmitFormField('submit''Weiter');
  150.         return $form;
  151.     }
  152. }