Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
f5879c7614 | |||
8ccaabd170 | |||
5d9172850f | |||
974e8a4bad | |||
ca6aabdf01 | |||
5244aa2f13 | |||
620c671f89 | |||
dde4464d32 | |||
51d20d5d2d | |||
81ae92763e | |||
c79d6e41f0 | |||
72937119e3 | |||
5602f44935 | |||
bd310110b0 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/.project
|
51
composer.json
Normal file
51
composer.json
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"name":"cgoit/contao-aeo-bundle",
|
||||
"description":"Contao 4 Advanced eMail Obfuscation Bundle",
|
||||
"keywords":["contao","aeo","bundle"],
|
||||
"type":"contao-bundle",
|
||||
"homepage":"https://cgo-it.de",
|
||||
"license":"LGPL-3.0+",
|
||||
"authors":[
|
||||
{
|
||||
"name":"Carsten Götzinger",
|
||||
"homepage":"https://cgo-it.de",
|
||||
"role":"Developer"
|
||||
}
|
||||
],
|
||||
"support":{
|
||||
"issues":"https://git.cgo-it.de/contao/aeo/issues",
|
||||
"source":"https://git.cgo-it.de/contao/aeo",
|
||||
"forum":"https://community.contao.org/de/showthread.php?31684-Advanced-eMail-Obfuscation"
|
||||
},
|
||||
"require":{
|
||||
"php": ">=5.6.0",
|
||||
"contao/core-bundle": "~4.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"contao/manager-plugin": "^2.0"
|
||||
},
|
||||
"conflict": {
|
||||
"contao/manager-plugin": "<2.0 || >=3.0",
|
||||
"symfony/symfony": "3.2.7"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"cgoIT\\aeo\\": "src/"
|
||||
},
|
||||
"classmap": [
|
||||
"src/Resources/contao/"
|
||||
],
|
||||
"exclude-from-classmap": [
|
||||
"src/Resources/contao/config/",
|
||||
"src/Resources/contao/dca/",
|
||||
"src/Resources/contao/languages/",
|
||||
"src/Resources/contao/templates/"
|
||||
]
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-develop": "3.6.x-dev"
|
||||
},
|
||||
"contao-manager-plugin": "cgoIT\\aeo\\ContaoManager\\Plugin"
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
|
||||
;;
|
||||
; Configure what you want the autoload creator to register
|
||||
;;
|
||||
register_namespaces = true
|
||||
register_classes = true
|
||||
register_templates = true
|
@ -1,48 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Contao Open Source CMS
|
||||
*
|
||||
* Copyright (C) 2005-2013 Leo Feyer
|
||||
*
|
||||
* @package Zaeo
|
||||
* @link http://contao.org
|
||||
* @license http://www.gnu.org/licenses/lgpl-3.0.html LGPL
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Register the namespaces
|
||||
*/
|
||||
ClassLoader::addNamespaces(array
|
||||
(
|
||||
'cgoIT',
|
||||
));
|
||||
|
||||
|
||||
/**
|
||||
* Register the classes
|
||||
*/
|
||||
ClassLoader::addClasses(array
|
||||
(
|
||||
'cgoIT\aeo\AeoJavaScript' => 'system/modules/zaeo/AeoJavaScript.php',
|
||||
'cgoIT\aeo\AeoHybrid' => 'system/modules/zaeo/AeoHybrid.php',
|
||||
'cgoIT\aeo\AeoCE' => 'system/modules/zaeo/AeoCE.php',
|
||||
'cgoIT\aeo\AeoModule' => 'system/modules/zaeo/AeoModule.php',
|
||||
'cgoIT\aeo\PageRoot_Aeo' => 'system/modules/zaeo/PageRoot_Aeo.php',
|
||||
// Util
|
||||
'cgoIT\aeo\AeoFrontendUtil' => 'system/modules/zaeo/util/AeoFrontendUtil.php',
|
||||
'cgoIT\aeo\AeoRedirectUtil' => 'system/modules/zaeo/util/AeoRedirectUtil.php',
|
||||
'cgoIT\aeo\AeoUtil' => 'system/modules/zaeo/util/AeoUtil.php',
|
||||
'cgoIT\aeo\McwPageTree' => 'system/modules/zaeo/widgets/McwPageTree.php',
|
||||
));
|
||||
|
||||
|
||||
/**
|
||||
* Register the templates
|
||||
*/
|
||||
TemplateLoader::addFiles(array
|
||||
(
|
||||
'aeo_default_no_js' => 'system/modules/zaeo/templates',
|
||||
'js_aeo_deobfuscate' => 'system/modules/zaeo/templates',
|
||||
));
|
@ -1,29 +0,0 @@
|
||||
-- **********************************************************
|
||||
-- * *
|
||||
-- * IMPORTANT NOTE *
|
||||
-- * *
|
||||
-- * Do not import this file manually but use the TYPOlight *
|
||||
-- * install tool to create and maintain database tables! *
|
||||
-- * *
|
||||
-- **********************************************************
|
||||
|
||||
|
||||
--
|
||||
-- Table `tl_module`
|
||||
--
|
||||
CREATE TABLE `tl_module` (
|
||||
`aeo_custom_template` varchar(32) NOT NULL default '',
|
||||
`aeo_show_info` char(1) NOT NULL default '',
|
||||
`aeo_info_text` mediumtext NULL,
|
||||
`aeo_disable` char(1) NOT NULL default ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
--
|
||||
-- Table `tl_content`
|
||||
--
|
||||
CREATE TABLE `tl_content` (
|
||||
`aeo_custom_template` varchar(32) NOT NULL default '',
|
||||
`aeo_show_info` char(1) NOT NULL default '',
|
||||
`aeo_info_text` mediumtext NULL,
|
||||
`aeo_disable` char(1) NOT NULL default ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
@ -1,7 +0,0 @@
|
||||
<IfModule !mod_authz_core.c>
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</IfModule>
|
||||
<IfModule mod_authz_core.c>
|
||||
Require all granted
|
||||
</IfModule>
|
14
src/CgoITAeoBundle.php
Normal file
14
src/CgoITAeoBundle.php
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace cgoIT\aeo;
|
||||
|
||||
use Symfony\Component\HttpKernel\Bundle\Bundle;
|
||||
|
||||
/**
|
||||
* Configures the Contao aeo bundle.
|
||||
*
|
||||
* @author Carsten G<>tzinger
|
||||
*/
|
||||
class CgoITAeoBundle extends Bundle
|
||||
{
|
||||
}
|
28
src/ContaoManager/Plugin.php
Normal file
28
src/ContaoManager/Plugin.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace cgoIT\aeo\ContaoManager;
|
||||
|
||||
use Contao\ManagerPlugin\Bundle\Config\BundleConfig;
|
||||
use Contao\ManagerPlugin\Bundle\BundlePluginInterface;
|
||||
use Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
|
||||
|
||||
/**
|
||||
* Plugin for the Contao Manager.
|
||||
*
|
||||
* @author Carsten G<>tzinger
|
||||
*/
|
||||
class Plugin implements BundlePluginInterface
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getBundles(ParserInterface $parser)
|
||||
{
|
||||
return [
|
||||
BundleConfig::create('cgoIT\aeo\CgoITAeoBundle')
|
||||
->setLoadAfter(['Contao\CoreBundle\ContaoCoreBundle'])
|
||||
->setLoadAfter(['*'])
|
||||
->setReplace(['aeo']);
|
||||
];
|
||||
}
|
||||
}
|
@ -189,13 +189,12 @@ class AeoHybrid extends \Hybrid
|
||||
->limit(1)
|
||||
->execute($this->Input->get('p'))
|
||||
->fetchAssoc();
|
||||
$pageDetails = $this->getPageDetails($objResult['id']);
|
||||
$backLink = $this->generateFrontendUrl($objResult);
|
||||
|
||||
/**
|
||||
* Template variables
|
||||
*/
|
||||
$this->import('String');
|
||||
$this->import('StringUtil');
|
||||
$this->Template->action = $this->getIndexFreeRequest();
|
||||
$this->Template->n = $this->Input->get('n');
|
||||
$this->Template->d = $this->Input->get('d');
|
||||
@ -221,11 +220,11 @@ class AeoHybrid extends \Hybrid
|
||||
}
|
||||
|
||||
if ($this->Input->post('p')) {
|
||||
$email .= $this->String->decodeEntities(base64_decode($this->String->decodeEntities($this->Input->post('p'))));
|
||||
$email .= $this->StringUtil->decodeEntities(base64_decode($this->StringUtil->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)));
|
||||
$this->Template->success = sprintf($GLOBALS['TL_LANG']['aeo']['success'], $this->StringUtil->encodeEmail($email), $this->StringUtil->encodeEmail(preg_replace('/\?.*$/', '', $email)));
|
||||
|
||||
if (!headers_sent()) {
|
||||
header('HTTP/1.1 303 See Other');
|
@ -52,12 +52,12 @@ class PageRoot_Aeo extends \PageRoot {
|
||||
* @param boolean
|
||||
* @return integer
|
||||
*/
|
||||
public function generate($pageId, $blnReturn=false) {
|
||||
public function generate($pageId, $blnReturn=false, $blnPreferAlias=false) {
|
||||
$id = $this->AeoRedirectUtil->redirectFromRootPage();
|
||||
if ($id !== FALSE) {
|
||||
return $id;
|
||||
} else {
|
||||
return parent::generate($pageId, $blnReturn);
|
||||
return parent::generate($pageId, $blnReturn, $blnPreferAlias);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Contao Open Source CMS
|
||||
@ -21,7 +21,7 @@
|
||||
* Software Foundation website at <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* PHP version 5
|
||||
* @copyright cgo IT, 2012-2013
|
||||
* @copyright cgo IT, 2012-2017
|
||||
* @author Carsten Götzinger (info@cgo-it.de)
|
||||
* @package aeo
|
||||
* @license GNU/LGPL
|
||||
@ -31,24 +31,22 @@
|
||||
/**
|
||||
* Hooks
|
||||
*/
|
||||
$GLOBALS['TL_HOOKS']['getFrontendModule'][] = array('aeo\\AeoFrontendUtil', 'aeoGetFrontendModule');
|
||||
$GLOBALS['TL_HOOKS']['getContentElement'][] = array('aeo\\AeoFrontendUtil', 'aeoGetContentElement');
|
||||
$GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = array('aeo\\AeoFrontendUtil', 'obfuscateEmails');
|
||||
$GLOBALS['TL_HOOKS']['getPageIdFromUrl'][] = array('aeo\\AeoRedirectUtil', 'getRedirectPageAeo');
|
||||
$GLOBALS['TL_HOOKS']['getFrontendModule'][] = array('cgoIT\\aeo\\AeoFrontendUtil', 'aeoGetFrontendModule');
|
||||
$GLOBALS['TL_HOOKS']['getContentElement'][] = array('cgoIT\\aeo\\AeoFrontendUtil', 'aeoGetContentElement');
|
||||
$GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = array('cgoIT\\aeo\\AeoFrontendUtil', 'obfuscateEmails');
|
||||
$GLOBALS['TL_HOOKS']['getPageIdFromUrl'][] = array('cgoIT\\aeo\\AeoRedirectUtil', 'getRedirectPageAeo');
|
||||
|
||||
/**
|
||||
* frontend moduls
|
||||
*/
|
||||
$GLOBALS['FE_MOD']['application']['aeo'] = 'aeo\\AeoModule';
|
||||
$GLOBALS['FE_MOD']['application']['aeo'] = 'cgoIT\\aeo\\AeoModule';
|
||||
|
||||
/**
|
||||
* content elements
|
||||
*/
|
||||
$GLOBALS['TL_CTE']['includes']['aeo'] = 'aeo\\AeoCE';
|
||||
$GLOBALS['TL_CTE']['includes']['aeo'] = 'cgoIT\\aeo\\AeoCE';
|
||||
|
||||
/**
|
||||
* PageTypes
|
||||
*/
|
||||
$GLOBALS['TL_PTY']['root'] = 'aeo\\PageRoot_Aeo';
|
||||
|
||||
?>
|
||||
$GLOBALS['TL_PTY']['root'] = 'cgoIT\\aeo\\PageRoot_Aeo';
|
@ -52,27 +52,30 @@ $GLOBALS['TL_DCA']['tl_content']['fields']['aeo_custom_template'] = array
|
||||
'exclude' => true,
|
||||
'inputType' => 'select',
|
||||
'options_callback' => array('tl_content_aeo', 'getAeoTemplates'),
|
||||
'eval' => array('tl_class'=>'w50')
|
||||
'eval' => array('tl_class'=>'w50'),
|
||||
'sql' => "varchar(32) NOT NULL default ''"
|
||||
);
|
||||
|
||||
$GLOBALS['TL_DCA']['tl_content']['fields']['aeo_show_info'] = array
|
||||
(
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_content']['aeo_show_info'],
|
||||
'exclude' => true,
|
||||
'filter' => true,
|
||||
'filter' => false,
|
||||
'search' => false,
|
||||
'inputType' => 'checkbox',
|
||||
'eval' => array('tl_class'=>'w50')
|
||||
'eval' => array('tl_class'=>'w50'),
|
||||
'sql' => "char(1) NOT NULL default ''"
|
||||
);
|
||||
|
||||
$GLOBALS['TL_DCA']['tl_content']['fields']['aeo_info_text'] = array
|
||||
(
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_content']['aeo_info_text'],
|
||||
'exclude' => true,
|
||||
'filter' => true,
|
||||
'search' => true,
|
||||
'filter' => false,
|
||||
'search' => false,
|
||||
'inputType' => 'textarea',
|
||||
'eval' => array('rte'=>'tinyMCE', 'tl_class'=>'clr')
|
||||
'eval' => array('rte'=>'tinyMCE', 'tl_class'=>'clr'),
|
||||
'sql' => "mediumtext NULL"
|
||||
);
|
||||
|
||||
$GLOBALS['TL_DCA']['tl_content']['fields']['aeo_disable'] = array
|
||||
@ -83,7 +86,8 @@ $GLOBALS['TL_DCA']['tl_content']['fields']['aeo_disable'] = array
|
||||
'filter' => true,
|
||||
'search' => false,
|
||||
'inputType' => 'checkbox',
|
||||
'eval' => array('tl_class'=>'long')
|
||||
'eval' => array('tl_class'=>'long'),
|
||||
'sql' => "char(1) NOT NULL default ''"
|
||||
);
|
||||
|
||||
/**
|
@ -21,7 +21,7 @@
|
||||
* Software Foundation website at <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* PHP version 5
|
||||
* @copyright cgo IT, 2012-2013
|
||||
* @copyright cgo IT, 2012-2017
|
||||
* @author Carsten Götzinger (info@cgo-it.de)
|
||||
* @package aeo
|
||||
* @license GNU/LGPL
|
||||
@ -41,11 +41,6 @@ foreach ($GLOBALS['TL_DCA']['tl_module']['palettes'] as $key => $palette) {
|
||||
$GLOBALS['TL_DCA']['tl_module']['palettes'][$key] = $palette.';{aeo_legend:hide},aeo_disable';
|
||||
}
|
||||
}
|
||||
//foreach ($GLOBALS['TL_DCA']['tl_module']['palettes'] as $key => $palette) {
|
||||
// if (!is_array($palette)) {
|
||||
// print "<h1>$key => $palette </h1>\n";
|
||||
// }
|
||||
//}
|
||||
|
||||
/**
|
||||
* fields
|
||||
@ -57,27 +52,30 @@ $GLOBALS['TL_DCA']['tl_module']['fields']['aeo_custom_template'] = array
|
||||
'exclude' => true,
|
||||
'inputType' => 'select',
|
||||
'options_callback' => array('tl_module_aeo', 'getAeoTemplates'),
|
||||
'eval' => array('tl_class'=>'w50')
|
||||
'eval' => array('tl_class'=>'w50'),
|
||||
'sql' => "varchar(32) NOT NULL default ''"
|
||||
);
|
||||
|
||||
$GLOBALS['TL_DCA']['tl_module']['fields']['aeo_show_info'] = array
|
||||
(
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_module']['aeo_show_info'],
|
||||
'exclude' => true,
|
||||
'filter' => true,
|
||||
'filter' => false,
|
||||
'search' => false,
|
||||
'inputType' => 'checkbox',
|
||||
'eval' => array('tl_class'=>'w50')
|
||||
'eval' => array('tl_class'=>'w50'),
|
||||
'sql' => "char(1) NOT NULL default ''"
|
||||
);
|
||||
|
||||
$GLOBALS['TL_DCA']['tl_module']['fields']['aeo_info_text'] = array
|
||||
(
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_module']['aeo_info_text'],
|
||||
'exclude' => true,
|
||||
'filter' => true,
|
||||
'search' => true,
|
||||
'filter' => false,
|
||||
'search' => false,
|
||||
'inputType' => 'textarea',
|
||||
'eval' => array('rte'=>'tinyMCE', 'tl_class'=>'clr')
|
||||
'eval' => array('rte'=>'tinyMCE', 'tl_class'=>'clr'),
|
||||
'sql' => "mediumtext NULL"
|
||||
);
|
||||
|
||||
$GLOBALS['TL_DCA']['tl_module']['fields']['aeo_disable'] = array
|
||||
@ -85,10 +83,11 @@ $GLOBALS['TL_DCA']['tl_module']['fields']['aeo_disable'] = array
|
||||
'label' => &$GLOBALS['TL_LANG']['tl_module']['aeo_disable'],
|
||||
'default' => '',
|
||||
'exclude' => true,
|
||||
'filter' => true,
|
||||
'filter' => false,
|
||||
'search' => false,
|
||||
'inputType' => 'checkbox',
|
||||
'eval' => array('tl_class'=>'long')
|
||||
'eval' => array('tl_class'=>'long'),
|
||||
'sql' => "char(1) NOT NULL default ''"
|
||||
);
|
||||
|
||||
/**
|
@ -144,7 +144,7 @@ class tl_settings_aeo extends \Backend
|
||||
}
|
||||
|
||||
if (in_array('i18nl10n', $this->Config->getActiveModules())) {
|
||||
$languages = deserialize($GLOBALS['TL_CONFIG']['i18nl10n_languages']);
|
||||
$languages = \I18nl10n\Classes\I18nl10n::getInstance()->getAvailableLanguages(true, true);
|
||||
foreach ($languages as $language) {
|
||||
array_push($arrLanguages, strtolower($language));
|
||||
}
|
@ -34,9 +34,9 @@ namespace cgoIT\aeo;
|
||||
* Class AeoFrontendUtil
|
||||
*/
|
||||
|
||||
define('REGEXP_EMAIL_PREFIX', '(\w[-._\w]*\w)\@');
|
||||
define('REGEXP_EMAIL', '\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,18}');
|
||||
define('REGEXP_MAILTO_LINK', '/(?P<all>\<a(?P<before>[^>]+)href\=["\']mailto\:(?P<email>\w[-._\w]*\w)\@(?P<domain>\w[-._\w]*\w)\.(?P<suffix>\w{2,18})(?P<params>\?{0,1}[\w=&; ]*)["\'](?P<after>[^>]*)\>).*?\<\/a\>/ism');
|
||||
//define('REGEXP_EMAIL_PREFIX', '(\w[-._\w]*\w)\@');
|
||||
define('REGEXP_EMAIL', '\w[-._\w]*\w@[\d\w][-._\w]*\w\.\w{2,18}');
|
||||
define('REGEXP_MAILTO_LINK', '/(?P<all>\<a(?P<before>[^>]+)href\=["\']mailto\:(?P<email>\w[-._\w]*\w)\@(?P<domain>\w[-._\w]*\w)\.(?P<suffix>\w{2,18})(?P<params>\?{0,1}[^"^\']*)["\'](?P<after>[^>]*)\>).*?\<\/a\>/ism');
|
||||
|
||||
class AeoFrontendUtil extends \Frontend {
|
||||
|
||||
@ -104,7 +104,7 @@ class AeoFrontendUtil extends \Frontend {
|
||||
}
|
||||
if (in_array('i18nl10n', $this->Config->getActiveModules())) {
|
||||
$this->AeoUtil->fixupCurrentLanguage();
|
||||
if ($GLOBALS['TL_CONFIG']['i18nl10n_addLanguageToUrl']) {
|
||||
if ($GLOBALS['TL_CONFIG']['i18nl10n_urlParam'] == 'url') {
|
||||
$folder .= $GLOBALS['TL_LANGUAGE'] . '/';
|
||||
}
|
||||
$folder .= $this->virtual_path.'/'.$GLOBALS['TL_LANGUAGE'];
|
||||
@ -122,7 +122,7 @@ class AeoFrontendUtil extends \Frontend {
|
||||
$urlSuffix = '';
|
||||
if (strlen($GLOBALS['TL_CONFIG']['urlSuffix']) > 0) {
|
||||
if (in_array('i18nl10n', $this->Config->getActiveModules()) &&
|
||||
$GLOBALS['TL_CONFIG']['i18nl10n_alias_suffix']) {
|
||||
$GLOBALS['TL_CONFIG']['i18nl10n_urlParam'] == 'alias') {
|
||||
$this->AeoUtil->fixupCurrentLanguage();
|
||||
$urlSuffix .= '.'.$GLOBALS['TL_LANGUAGE'];
|
||||
}
|
||||
@ -185,20 +185,20 @@ class AeoFrontendUtil extends \Frontend {
|
||||
public function obfuscateEmails($strContent, $strTemplate)
|
||||
{
|
||||
global $objPage;
|
||||
$objPage = $this->getPageDetails($objPage->id);
|
||||
$redirectPageId = $this->AeoUtil->getRedirectPageForLanguage(deserialize($this->jump_to_no_js), $objPage->rootLanguage);
|
||||
$objPage2 = $this->getPageDetails($objPage->id);
|
||||
$redirectPageId = $this->AeoUtil->getRedirectPageForLanguage(deserialize($this->jump_to_no_js), $objPage2->rootLanguage);
|
||||
|
||||
if (TL_MODE == 'FE' && $this->replace_standard_obfuscation && $objPage->id != $redirectPageId) {
|
||||
if (TL_MODE == 'FE' && $this->replace_standard_obfuscation && $objPage2->id != $redirectPageId) {
|
||||
$strContent = $this->aeoReplaceInsertTags($strContent);
|
||||
|
||||
$this->import('String');
|
||||
$this->import('StringUtil');
|
||||
|
||||
// erst alle Mailadresse decodieren (Verschleierung von Contao rückgänging machen)
|
||||
$intOffset = 0;
|
||||
$arrNoAeoAreas = $this->aeo->getNoAeoAreas($strContent);
|
||||
while (preg_match('/(&#[x]?\w+;)+/i', $strContent, $arrEmail, PREG_OFFSET_CAPTURE, $intOffset)) {
|
||||
if ($this->aeo->isEnabled($arrEmail[0][1], $arrNoAeoAreas)) {
|
||||
$strDecodedMail = $this->String->decodeEntities($arrEmail[0][0]);
|
||||
$strDecodedMail = $this->StringUtil->decodeEntities($arrEmail[0][0]);
|
||||
if (preg_match('/mailto:'.REGEXP_EMAIL.'/i', $strDecodedMail)) {
|
||||
// erst alle verlinkten eMail-Adressen entschleiern
|
||||
$strContent = $this->aeo->str_replace($arrEmail[0][0], $strDecodedMail, $strContent, $arrEmail[0][1]);
|
||||
@ -221,7 +221,7 @@ class AeoFrontendUtil extends \Frontend {
|
||||
}
|
||||
}
|
||||
|
||||
$strContent = $this->aeo->prepareOutput($strContent, $objPage->id);
|
||||
$strContent = $this->aeo->prepareOutput($strContent, $objPage2->id);
|
||||
}
|
||||
|
||||
return $strContent;
|
||||
@ -229,20 +229,15 @@ class AeoFrontendUtil extends \Frontend {
|
||||
|
||||
private function includeStaticJs() {
|
||||
global $objPage;
|
||||
$objPage = $this->getPageDetails($objPage);
|
||||
$objPage2 = $this->getPageDetails($objPage);
|
||||
|
||||
$objLayout = $this->Database->prepare("SELECT * FROM tl_layout WHERE id=?")
|
||||
->limit(1)
|
||||
->execute($objPage->layout)
|
||||
->execute($objPage2->layout)
|
||||
->fetchAssoc();
|
||||
// if ($objLayout['addMooTools']) {
|
||||
// $GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/zaeo/public/js/aeo-mootools.js';
|
||||
// } else if ($objLayout['addJQuery']) {
|
||||
// $GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/zaeo/public/js/aeo-jquery.js';
|
||||
// }
|
||||
|
||||
$GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/zaeo/public/js/onReadyAeo.js';
|
||||
$GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/zaeo/public/js/aeo.js';
|
||||
$GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/zaeo/public/js/onReadyAeo.min.js|static';
|
||||
$GLOBALS['TL_JAVASCRIPT'][] = 'system/modules/zaeo/public/js/aeo.min.js|static';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -286,17 +281,17 @@ class AeoFrontendUtil extends \Frontend {
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->import('String');
|
||||
$this->import('StringUtil');
|
||||
if ($GLOBALS['TL_CONFIG']['aeo_replace_standard_obfuscation'] === true &&
|
||||
$this->aeo->isEnabled($position, $arrNoAeoAreas)) {
|
||||
// AEO aktiv und Bereich nicht auf deaktiviert gestellt
|
||||
$strValue = $this->aeo->obfuscateSingle($this->String->decodeEntities($arrTag[1]), $objPage->id, $arrTag[2]);
|
||||
$strValue = $this->aeo->obfuscateSingle($this->StringUtil->decodeEntities($arrTag[1]), $objPage->id, $arrTag[2]);
|
||||
$strContent = $this->aeo->str_replace($arrTags[0][0], $strValue, $strContent, $position);
|
||||
$intOffset += strlen($strValue);
|
||||
} else {
|
||||
// AEO nicht aktiv oder Bereich auf deaktiviert gestellt
|
||||
$strEmail = $this->String->encodeEmail($this->String->decodeEntities($arrTag[1]));
|
||||
$strValue = '<a href="mailto:' . $this->String->encodeEmail($strEmail) . '" class="email">' . $this->String->encodeEmail(preg_replace('/\?.*$/', '', $strEmail)) . '</a>';
|
||||
$strEmail = $this->StringUtil->encodeEmail($this->StringUtil->decodeEntities($arrTag[1]));
|
||||
$strValue = '<a href="mailto:' . $this->StringUtil->encodeEmail($strEmail) . '" class="email">' . $this->StringUtil->encodeEmail(preg_replace('/\?.*$/', '', $strEmail)) . '</a>';
|
||||
$strContent = $this->aeo->str_replace($arrTags[0][0], $strValue, $strContent, $position);
|
||||
$intOffset += strlen($strValue);
|
||||
}
|
||||
@ -361,7 +356,7 @@ class Aeo extends \System {
|
||||
// jetzt alle nicht verlinkten eMail-Adressen verschleiern.
|
||||
$arrNoAeoAreas = $this->getNoAeoAreas($output);
|
||||
$intOffset = 0;
|
||||
while(preg_match('/'.REGEXP_EMAIL_PREFIX.'/esm', $output, $arrNonLinkedeMail, PREG_OFFSET_CAPTURE, $intOffset)) {
|
||||
while(preg_match('/'.REGEXP_EMAIL.'/esm', $output, $arrNonLinkedeMail, PREG_OFFSET_CAPTURE, $intOffset)) {
|
||||
if ($this->isEnabled($arrNonLinkedeMail[0][1], $arrNoAeoAreas)) {
|
||||
$output = $this->str_replace($arrNonLinkedeMail[0][0], $this->obfuscateWithMethod($arrNonLinkedeMail[0][0], $this->method, false, $arrNonLinkedeMail[0][1], $intOffset), $output, $arrNonLinkedeMail[0][1]);
|
||||
|
||||
@ -407,8 +402,8 @@ class Aeo extends \System {
|
||||
// passendes CSS hinzufügen
|
||||
$strLink .= $this->obfuscateWithMethod($arrEmail[0], $method, true, 0, 0).'@'.$strDomain.'.'.$strTld;
|
||||
} else {
|
||||
$this->import('String');
|
||||
$strLink .= $this->String->encodeEmail($email);
|
||||
$this->import('StringUtil');
|
||||
$strLink .= $this->StringUtil->encodeEmail($email);
|
||||
}
|
||||
$strLink .= '</a>';
|
||||
return $this->createSpecialEntities($strLink);
|
||||
@ -509,9 +504,11 @@ class Aeo extends \System {
|
||||
switch ($this->method) {
|
||||
case 'rtl':
|
||||
$css .= '.obfuscated { unicode-bidi: bidi-override; direction: rtl; }';
|
||||
// Hack für FireFox
|
||||
//$css .= '*>.obfuscated { unicode-bidi: -moz-isolate-override !important; }';
|
||||
break;
|
||||
case 'nullspan':
|
||||
$css .= 'span.obfuscated { display: none; }';
|
||||
$css .= 'span.obfuscated { display: none; white-space: nowrap;}';
|
||||
break;
|
||||
}
|
||||
$css .= "\n</style>";
|
||||
@ -556,14 +553,15 @@ class Aeo extends \System {
|
||||
}
|
||||
|
||||
function shorten ($email, $includeCss) {
|
||||
if (strlen ($email) <= 4) {
|
||||
$email = substr ($email, 0, 1);
|
||||
} else if (strlen ($email) <= 6) {
|
||||
$email = substr ($email, 0, 3);
|
||||
$arrEmail = explode('@', $email);
|
||||
if (strlen ($arrEmail[0]) <= 4) {
|
||||
$email = substr ($arrEmail[0], 0, 1);
|
||||
} else if (strlen ($arrEmail[0]) <= 6) {
|
||||
$email = substr ($arrEmail[0], 0, 3);
|
||||
} else {
|
||||
$email = substr ($email, 0, 4);
|
||||
$email = substr ($arrEmail[0], 0, 4);
|
||||
}
|
||||
return $email.'...'.($includeCss ? '' : '@');
|
||||
return $email.'...'.($includeCss ? '' : '@').$arrEmail[1];
|
||||
}
|
||||
|
||||
function rtl ($email, $includeCss) {
|
||||
@ -571,25 +569,26 @@ class Aeo extends \System {
|
||||
if ($includeCss) {
|
||||
return '<span style="unicode-bidi: bidi-override; direction: rtl;">'.$strEmail.'</span>';
|
||||
}
|
||||
return '<span class="obfuscated">'.strrev($email).'</span>';
|
||||
return '<span class="obfuscated">'.$strEmail.'</span>';
|
||||
}
|
||||
|
||||
function nullspan ($email, $includeCss) {
|
||||
if (strlen ($email) <= 4) {
|
||||
$email1 = substr ($email, 0, 1);
|
||||
$email2 = substr ($email, 1);
|
||||
} else if (strlen ($email) <= 6) {
|
||||
$email1 = substr ($email, 0, 3);
|
||||
$email2 = substr ($email, 3);
|
||||
$arrEmail = explode('@', $email);
|
||||
if (strlen ($arrEmail[0]) <= 4) {
|
||||
$email1 = substr ($arrEmail[0], 0, 1);
|
||||
$email2 = substr ($arrEmail[0], 1);
|
||||
} else if (strlen ($arrEmail[0]) <= 6) {
|
||||
$email1 = substr ($arrEmail[0], 0, 3);
|
||||
$email2 = substr ($arrEmail[0], 3);
|
||||
} else {
|
||||
$email1 = substr ($email, 0, 4);
|
||||
$email2 = substr ($email, 4);
|
||||
$email1 = substr ($arrEmail[0], 0, 4);
|
||||
$email2 = substr ($arrEmail[0], 4);
|
||||
}
|
||||
|
||||
if ($includeCss) {
|
||||
return $email1.'<span style="display: none;">null</span>'.$email2;
|
||||
return $email1.'<span style="display: none; white-space: nowrap;">null</span>'.$email2.'@'.$arrEmail[1];
|
||||
}
|
||||
return $email1.'<span class="obfuscated">null</span>'.$email2;
|
||||
return $email1.'<span class="obfuscated">null</span>'.$email2.'@'.$arrEmail[1];
|
||||
}
|
||||
|
||||
function getNoAeoAreas($output) {
|
@ -83,7 +83,7 @@ class AeoRedirectUtil extends \Frontend {
|
||||
}
|
||||
$i18nl10nLanguage = '';
|
||||
if (in_array('i18nl10n', $this->Config->getActiveModules())) {
|
||||
if ($GLOBALS['TL_CONFIG']['i18nl10n_addLanguageToUrl']) {
|
||||
if ($GLOBALS['TL_CONFIG']['i18nl10n_urlParam'] == 'url') {
|
||||
$i18nl10nLanguage = $arrFragments[count($arrFragments) - 1];
|
||||
}
|
||||
}
|
||||
@ -128,7 +128,7 @@ class AeoRedirectUtil extends \Frontend {
|
||||
|
||||
$strObfuscatedValues = $arrFragments[3];
|
||||
if (in_array('i18nl10n', $this->Config->getActiveModules()) &&
|
||||
$GLOBALS['TL_CONFIG']['i18nl10n_alias_suffix']) {
|
||||
$GLOBALS['TL_CONFIG']['i18nl10n_urlParam'] == 'alias') {
|
||||
$this->AeoUtil->fixupCurrentLanguage();
|
||||
$strObfuscatedValues = str_replace('.'.$GLOBALS['TL_LANGUAGE'], '', $strObfuscatedValues);
|
||||
}
|
||||
@ -160,7 +160,7 @@ class AeoRedirectUtil extends \Frontend {
|
||||
}
|
||||
|
||||
if (in_array('i18nl10n', $this->Config->getActiveModules()) &&
|
||||
$GLOBALS['TL_CONFIG']['i18nl10n_addLanguageToUrl'] &&
|
||||
$GLOBALS['TL_CONFIG']['i18nl10n_urlParam'] == 'url' &&
|
||||
strlen($i18nl10nLanguage)) {
|
||||
$arrFragments[$i++] = 'language';
|
||||
$arrFragments[$i++] = $i18nl10nLanguage;
|
||||
@ -176,12 +176,12 @@ class AeoRedirectUtil extends \Frontend {
|
||||
$url = $arrValue['aeo_redirecturl'];
|
||||
} else {
|
||||
$objPage = \PageModel::findPublishedByIdOrAlias($arrValue['aeo_redirecturl']);
|
||||
$objPage = $this->getPageDetails($objPage);
|
||||
$url = $this->generateFrontendUrl($objPage->row());
|
||||
$objPage2 = $this->getPageDetails($objPage);
|
||||
$url = $this->generateFrontendUrl($objPage2->row());
|
||||
$url = $this->removeUrlPrefix($url);
|
||||
if ($GLOBALS['TL_CONFIG']['addLanguageToUrl'] ||
|
||||
(in_array('i18nl10n', $this->Config->getActiveModules()) &&
|
||||
$GLOBALS['TL_CONFIG']['i18nl10n_addLanguageToUrl'])) {
|
||||
$GLOBALS['TL_CONFIG']['i18nl10n_urlParam'] == 'url')) {
|
||||
$arrUrlFragments = explode('/', $url);
|
||||
$url = $arrUrlFragments[1];
|
||||
}
|
||||
@ -218,7 +218,7 @@ class AeoRedirectUtil extends \Frontend {
|
||||
}
|
||||
}
|
||||
if (in_array('i18nl10n', $this->Config->getActiveModules()) &&
|
||||
$GLOBALS['TL_CONFIG']['i18nl10n_alias_suffix']) {
|
||||
$GLOBALS['TL_CONFIG']['i18nl10n_urlParam'] == 'alias') {
|
||||
$this->AeoUtil->fixupCurrentLanguage();
|
||||
$strUrl = str_replace('.'.$GLOBALS['TL_LANGUAGE'], '', $strUrl);
|
||||
}
|
@ -97,7 +97,7 @@ class AeoUtil extends \Controller {
|
||||
if(
|
||||
($selected_language) &&
|
||||
in_array($selected_language,
|
||||
deserialize($GLOBALS['TL_CONFIG']['i18nl10n_languages']))
|
||||
\I18nl10n\Classes\I18nl10n::getInstance()->getAvailableLanguages(true, true))
|
||||
) {
|
||||
$_SESSION['TL_LANGUAGE'] = $GLOBALS['TL_LANGUAGE'] = $selected_language;
|
||||
} elseif(isset($_SESSION['TL_LANGUAGE'])) {
|
@ -27,8 +27,8 @@ function doWithMootols() {
|
||||
|
||||
function doWithJQuery() {
|
||||
jQuery('a[name^="aeo-obfuscated-"]').each(function(i, el) {
|
||||
if (!$(el).hasClass('aeo-with-title')) {
|
||||
$(el).attr('title',tooltip_js_on);
|
||||
if (!jQuery(el).hasClass('aeo-with-title')) {
|
||||
jQuery(el).attr('title',tooltip_js_on);
|
||||
}
|
||||
aeo_prepare_link(el);
|
||||
}
|
27
src/Resources/public/js/aeo.min.js
vendored
Normal file
27
src/Resources/public/js/aeo.min.js
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
|
||||
var map;onReadyAeo(function(){aeo_dom_ready();});function aeo_dom_ready(){if(window.MooTools){doWithMootols();}else if(window.jQuery){doWithJQuery();}}
|
||||
function doWithMootols(){$$('a').filter(function(el){return el.getAttribute('name')!=null&&el.getAttribute('name').match('^aeo-obfuscated-')=='aeo-obfuscated-'}).each(function(el){if(!el.hasClass('aeo-with-title')){el.setAttribute('title',tooltip_js_on);}
|
||||
aeo_prepare_link(el);});}
|
||||
function doWithJQuery(){jQuery('a[name^="aeo-obfuscated-"]').each(function(i,el){if(!jQuery(el).hasClass('aeo-with-title')){jQuery(el).attr('title',tooltip_js_on);}
|
||||
aeo_prepare_link(el);});}
|
||||
function aeo_prepare_link(el){el.setAttribute('href','javascript:aeo_link_decode(\''+el.getAttribute('href')+'\');');}
|
||||
function rot13init(){this.map=new Array();var s="abcdefghijklmnopqrstuvwxyz";for(var i=0;i<s.length;i++)
|
||||
this.map[s.charAt(i)]=s.charAt((i+13)%26);for(var i=0;i<s.length;i++)
|
||||
this.map[s.charAt(i).toUpperCase()]=s.charAt((i+13)%26).toUpperCase();}
|
||||
function str_rot13(a){if(this.map===undefined){rot13init();}
|
||||
var s="";for(var i=0;i<a.length;i++){var b=a.charAt(i);s+=(b>='A'&&b<='Z'||b>='a'&&b<='z'?this.map[b]:b);}
|
||||
return s;}
|
||||
function base64_decode(data){var b64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,dec="",tmp_arr=[];if(!data){return data;}
|
||||
data+='';do{h1=b64.indexOf(data.charAt(i++));h2=b64.indexOf(data.charAt(i++));h3=b64.indexOf(data.charAt(i++));h4=b64.indexOf(data.charAt(i++));bits=h1<<18|h2<<12|h3<<6|h4;o1=bits>>16&0xff;o2=bits>>8&0xff;o3=bits&0xff;if(h3==64){tmp_arr[ac++]=String.fromCharCode(o1);}else if(h4==64){tmp_arr[ac++]=String.fromCharCode(o1,o2);}else{tmp_arr[ac++]=String.fromCharCode(o1,o2,o3);}}while(i<data.length);dec=tmp_arr.join('');dec=this.utf8_decode(dec);return dec;}
|
||||
function utf8_decode(str_data){var tmp_arr=[],i=0,ac=0,c1=0,c2=0,c3=0;str_data+='';while(i<str_data.length){c1=str_data.charCodeAt(i);if(c1<128){tmp_arr[ac++]=String.fromCharCode(c1);i++;}else if(c1>191&&c1<224){c2=str_data.charCodeAt(i+1);tmp_arr[ac++]=String.fromCharCode(((c1&31)<<6)|(c2&63));i+=2;}else{c2=str_data.charCodeAt(i+1);c3=str_data.charCodeAt(i+2);tmp_arr[ac++]=String.fromCharCode(((c1&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}
|
||||
return tmp_arr.join('');}
|
||||
function strpos(haystack,needle,offset){var i=(haystack+'').indexOf(needle,(offset||0));return i===-1?false:i;}
|
||||
function html_entity_decode(string,quote_style){var hash_map={},symbol='',tmp_str='',entity='';tmp_str=string.toString();if(false===(hash_map=this.get_html_translation_table('HTML_ENTITIES',quote_style))){return false;}
|
||||
delete(hash_map['&']);hash_map['&']='&';for(symbol in hash_map){entity=hash_map[symbol];tmp_str=tmp_str.split(entity).join(symbol);}
|
||||
tmp_str=tmp_str.split(''').join("'");return tmp_str;}
|
||||
function get_html_translation_table(table,quote_style){var entities={},hash_map={},decimal=null;var constMappingTable={},constMappingQuoteStyle={};var useTable={},useQuoteStyle={};constMappingTable[0]='HTML_SPECIALCHARS';constMappingTable[1]='HTML_ENTITIES';constMappingQuoteStyle[0]='ENT_NOQUOTES';constMappingQuoteStyle[2]='ENT_COMPAT';constMappingQuoteStyle[3]='ENT_QUOTES';useTable=!isNaN(table)?constMappingTable[table]:table?table.toUpperCase():'HTML_SPECIALCHARS';useQuoteStyle=!isNaN(quote_style)?constMappingQuoteStyle[quote_style]:quote_style?quote_style.toUpperCase():'ENT_COMPAT';if(useTable!=='HTML_SPECIALCHARS'&&useTable!=='HTML_ENTITIES'){throw new Error("Table: "+useTable+' not supported');}
|
||||
entities['38']='&';if(useTable==='HTML_ENTITIES'){entities['160']=' ';entities['161']='¡';entities['162']='¢';entities['163']='£';entities['164']='¤';entities['165']='¥';entities['166']='¦';entities['167']='§';entities['168']='¨';entities['169']='©';entities['170']='ª';entities['171']='«';entities['172']='¬';entities['173']='­';entities['174']='®';entities['175']='¯';entities['176']='°';entities['177']='±';entities['178']='²';entities['179']='³';entities['180']='´';entities['181']='µ';entities['182']='¶';entities['183']='·';entities['184']='¸';entities['185']='¹';entities['186']='º';entities['187']='»';entities['188']='¼';entities['189']='½';entities['190']='¾';entities['191']='¿';entities['192']='À';entities['193']='Á';entities['194']='Â';entities['195']='Ã';entities['196']='Ä';entities['197']='Å';entities['198']='Æ';entities['199']='Ç';entities['200']='È';entities['201']='É';entities['202']='Ê';entities['203']='Ë';entities['204']='Ì';entities['205']='Í';entities['206']='Î';entities['207']='Ï';entities['208']='Ð';entities['209']='Ñ';entities['210']='Ò';entities['211']='Ó';entities['212']='Ô';entities['213']='Õ';entities['214']='Ö';entities['215']='×';entities['216']='Ø';entities['217']='Ù';entities['218']='Ú';entities['219']='Û';entities['220']='Ü';entities['221']='Ý';entities['222']='Þ';entities['223']='ß';entities['224']='à';entities['225']='á';entities['226']='â';entities['227']='ã';entities['228']='ä';entities['229']='å';entities['230']='æ';entities['231']='ç';entities['232']='è';entities['233']='é';entities['234']='ê';entities['235']='ë';entities['236']='ì';entities['237']='í';entities['238']='î';entities['239']='ï';entities['240']='ð';entities['241']='ñ';entities['242']='ò';entities['243']='ó';entities['244']='ô';entities['245']='õ';entities['246']='ö';entities['247']='÷';entities['248']='ø';entities['249']='ù';entities['250']='ú';entities['251']='û';entities['252']='ü';entities['253']='ý';entities['254']='þ';entities['255']='ÿ';}
|
||||
if(useQuoteStyle!=='ENT_NOQUOTES'){entities['34']='"';}
|
||||
if(useQuoteStyle==='ENT_QUOTES'){entities['39']=''';}
|
||||
entities['60']='<';entities['62']='>';for(decimal in entities){if(entities.hasOwnProperty(decimal)){hash_map[String.fromCharCode(decimal)]=entities[decimal];}}
|
||||
return hash_map;}
|
15
src/Resources/public/js/onReadyAeo.min.js
vendored
Normal file
15
src/Resources/public/js/onReadyAeo.min.js
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
|
||||
var readyListAeo=[];function onReadyAeo(handler){function executeHandlers(){for(var i=0;i<readyListAeo.length;i++){readyListAeo[i]();}}
|
||||
if(!readyListAeo.length){bindReady(executeHandlers);}
|
||||
readyListAeo.push(handler);}
|
||||
function bindReady(handler){var called=false;function ready(){if(called)
|
||||
return
|
||||
called=true;handler();}
|
||||
if(document.addEventListener){document.addEventListener("DOMContentLoaded",ready,false);}else if(document.attachEvent){try{var isFrame=window.frameElement!=null;}catch(e){}
|
||||
if(document.documentElement.doScroll&&!isFrame){function tryScroll(){if(called)
|
||||
return;try{document.documentElement.doScroll("left");ready();}catch(e){setTimeout(tryScroll,10);}}
|
||||
tryScroll();}
|
||||
document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){ready();}});}
|
||||
if(window.addEventListener)
|
||||
window.addEventListener('load',ready,false);else if(window.attachEvent)
|
||||
window.attachEvent('onload',ready);else{var fn=window.onload;window.onload=function(){fn&&fn();ready();};}}
|
Reference in New Issue
Block a user