. * * PHP version 5 * @copyright cgo IT, 2012-2013 * @author Carsten Götzinger (info@cgo-it.de) * @package aeo * @license GNU/LGPL * @filesource */ namespace cgoIT\aeo; /** * Class AeoModule */ class AeoHybrid extends \Hybrid { /** * Primary key * @var string */ protected $strPk = 'id'; /** * Template * @var string */ protected $strTemplate = 'aeo_default_no_js'; /** * Use additional ROT13 encryption, default is 1 * @var int */ protected $use_rot_13 = 1; /** * Show standard-info to frontend user, default is true * @var int */ protected $show_standard_info = true; /** * custom info to frontend user, default is '' * @var int */ protected $info = ''; protected $objCaptcha; /** * Initialize the object * @param array */ public function __construct($objElement, $strColumn='main') { parent::__construct($objElement, $strColumn); } /** * Display a wildcard in the back end * @return string */ public function generate() { global $objPage; $GLOBALS['TL_LANGUAGE'] = $objPage->language; if (TL_MODE == 'BE') { $objTemplate = new \BackendTemplate('be_wildcard'); $objTemplate->wildcard = '### AEO JavaScript Fallback ###'; $objTemplate->title = $this->headline; $objTemplate->id = $this->id; $objTemplate->link = $this->name; $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id; return $objTemplate->parse(); } $this->use_rot_13 = $GLOBALS['TL_CONFIG']['aeo_use_rot_13'] === true; // Fallback auf default template $strTemplate = deserialize($this->getParent()->aeo_custom_template, true); if (!is_array($strTemplate) || count($strTemplate) < 1) { $this->strTemplate = 'aeo_default_no_js'; } else { $this->strTemplate = $strTemplate[0]; } // Default Info für Frontend-User anzeigen $numShowInfo = deserialize($this->getParent()->aeo_show_info, true); if (is_array($numShowInfo) && count($numShowInfo) >= 1) { $this->show_standard_info = $numShowInfo[0]; } else { $this->show_standard_info = false; } // Eigene Info für Frontend-User anzeigen $strInfo = deserialize($this->getParent()->aeo_info_text, true); if (is_array($strInfo) && count($strInfo) >= 1) { $this->info = $strInfo[0]; } if (strlen($this->info) == 0) { $this->show_standard_info = true; } return parent::generate(); } /** * Generate the module */ protected function compile() { global $objPage; $GLOBALS['TL_LANGUAGE'] = $objPage->language; $this->loadLanguageFile('default'); // Auf E-Mail-Adresse weiterleiten $this->Template = new \FrontendTemplate($this->strTemplate); if ($this->getParent() instanceof \ModuleModel) { $this->Template->setData($this->getParent()->row()); // Überschrift setzen $arrHeadline = deserialize($this->getParent()->headline); if (is_array($arrHeadline)) { $this->Template->hl = $arrHeadline['unit']; $this->Template->headline = $arrHeadline['value']; } } else { $this->Template->setData($this->arrData); } $doSubmit = true; $arrCaptcha = array ( 'id' => 'aeo', 'label' => $GLOBALS['TL_LANG']['MSC']['securityQuestion'], 'type' => 'captcha', 'mandatory' => true, 'required' => true, 'tableless' => true ); $strClass = $GLOBALS['TL_FFL']['captcha']; // Fallback auf Default Captcha, falls Klasse nicht existiert if (!$this->classFileExists($strClass)) { $strClass = '\\FormCaptcha'; } $objCaptcha = new $strClass($arrCaptcha); $this->objCaptcha = $objCaptcha; if ($this->Input->post('FORM_SUBMIT') == 'tl_aeo') { $this->objCaptcha->validate(); if ($this->objCaptcha->hasErrors()) { $doSubmit = false; } } $objResult = $this->Database->prepare("SELECT * FROM tl_page WHERE id=?") ->limit(1) ->execute($this->Input->get('p')) ->fetchAssoc(); $pageDetails = $this->getPageDetails($objResult['id']); $backLink = $this->generateFrontendUrl($objResult); /** * Template variables */ $this->import('String'); $this->Template->action = $this->getIndexFreeRequest(); $this->Template->n = $this->Input->get('n'); $this->Template->d = $this->Input->get('d'); $this->Template->t = $this->Input->get('t'); $this->Template->p = $this->Input->get('param'); $this->Template->captcha = $this->objCaptcha; $this->Template->captchaDetails = $GLOBALS['TL_LANG']['MSC']['securityQuestion']; if ($this->show_standard_info) { $this->Template->info = $GLOBALS['TL_LANG']['aeo']['info']; } else { $this->Template->info = $this->info; } $this->Template->formId = 'tl_aeo'; $this->Template->buttonLabel = $GLOBALS['TL_LANG']['aeo']['buttonLabel']; $this->Template->backLink = $backLink; $this->Template->backLabel = $GLOBALS['TL_LANG']['MSC']['goBack']; if ($this->Input->post('FORM_SUBMIT') == 'tl_aeo' && $doSubmit) { if ($this->use_rot_13) { $email = strip_tags(str_rot13($this->Input->post('n')).'@'.str_rot13($this->Input->post('d')).'.'.str_rot13($this->Input->post('t'))); } else { $email = strip_tags($this->Input->post('n').'@'.$this->Input->post('d').'.'.$this->Input->post('t')); } if ($this->Input->post('p')) { $email .= $this->String->decodeEntities(base64_decode($this->String->decodeEntities($this->Input->post('p')))); } $this->Template->isHuman = true; $this->Template->success = sprintf($GLOBALS['TL_LANG']['aeo']['success'], $this->String->encodeEmail($email), $this->String->encodeEmail(preg_replace('/\?.*$/', '', $email))); if (!headers_sent()) { header('HTTP/1.1 303 See Other'); header('Location: mailto:'.$email); } else { die(''); } } } } ?>