diff --git a/composer.json b/composer.json index 118d915..cba02b6 100644 --- a/composer.json +++ b/composer.json @@ -13,13 +13,20 @@ { "name": "D3 Data Development (Inh. Thomas Dartsch)", "email": "info@shopmodule.com", - "homepage": "http://www.oxidmodule.com" + "homepage": "http://www.oxidmodule.com", + "role": "Owner" } ], + "support": { + "email": "support@shopmodule.com" + } "homepage": "https://www.oxidmodule.com/", "license": [ "proprietary" ], + "suggest": { + "oxid-projects/statistics-module": "allows the graphical evaluation of statistics" + }, "extra": { "oxideshop": { "source-directory": "/src", @@ -27,7 +34,7 @@ } }, "require": { - "php": "7.1.*", + "php": ">=5.6", "ext-ionCube-Loader": "*", "oxid-esales/oxideshop-ce": "6.0.x", "d3/modcfg": ">=5.1.0.0" diff --git a/docs/Precheck/d3precheck.php b/docs/Precheck/d3precheck.php index 6370339..69c8fb7 100644 --- a/docs/Precheck/d3precheck.php +++ b/docs/Precheck/d3precheck.php @@ -1,1215 +1,2609 @@ -1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); -?> -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 \ No newline at end of file + + * @link http://www.oxidmodule.com + */ + +/** + * Alle Anforderungen sind über $this->_aCheck konfigurierbar. Manche Anforderungen haben dazu noch weitergehende + * Informationen. Die Struktur dieser Requirementbeschreibungen: + * + * array( + * 'blExec' => 1, // obligatorisch: 0 = keine Prüfung, 1 = Püfung wird ausgeführt + * 'aParams' => array(...), // optional, Inhalt ist von jeweiliger Prüfung abhängig + * ) + * + * "Desc1": Diese Struktur kann allein eine Bedingung beschreiben. Wenn mehrere dieser Bedingungen + * nötig sind (z.B. bei unterschiedlichen Bibliotheksanforderungen), kann diese Struktur als + * Arrayelemente auch mehrfach genannt werden (kaskadierbar). Grundsätzlich sind alle Requirements + * kaskadierbar, jedoch ergibt dies nicht bei allen Sinn. :) Eine Kaskadierung sieht so aus: + * + * array( + * array( + * 'blExec' => 1, + * ... + * ), + * array( + * 'blExec' => 1, + * ... + * ) + * ) + * + * Unbedingt zu vermeiden sind Änderungen in der Scriptlogik, da diese bei Updates nur schwer zu übernehmen sind. + */ + +class requConfig +{ + public $sModName = 'D³ erweiterte Suche / extended search'; + + public $sModId = 'd3extsearch'; + + public $sModVersion = '6.1.0.0'; + + /********************** check configuration section ************************/ + + public $aCheck = array( + // kleinste erlaubte PHP-Version + 'hasMinPhpVersion' => array( + 'blExec' => 0, + 'aParams' => array( + 'version' => '5.2.0' + ) + ), + + // größte erlaubte PHP-Version + 'hasMaxPhpVersion' => array( + 'blExec' => 0, + 'aParams' => array( + 'version' => '5.6.200' + ) + ), + + // PHP-Version zwischen 'from' und 'to' + 'hasFromToPhpVersion' => array( + 'blExec' => 1, + 'aParams' => array( + 'from' => '5.6.0', + 'to' => '7.0.200', + ) + ), + + // benötigt Zend Optimizer (PHP 5.2) bzw. Zend Guard Loader (> PHP 5.2) + 'hasZendLoaderOptimizer' => array( + 'blExec' => 0, + ), + + // benötigt IonCubeLoader + 'hasIonCubeLoader' => array( + 'blExec' => 1, + ), + + // benötigt Zend Decoder oder IonCubeLoader + 'hasIonCubeOrZendLoader' => array( + 'blExec' => 0, + ), + + // benötigte PHP-Extension (kaskadierbar (siehe "Desc1")) + 'hasExtension' => array( + array( + 'blExec' => 0, + 'aParams' => array( + 'type' => 'curl', + ), + ), + array( + 'blExec' => 0, + 'aParams' => array( + 'type' => 'soap' + ), + ), + ), + + // benötigte cURL-Version + 'hasMinCurlVersion' => array( + 'blExec' => 0, + 'aParams' => array( + 'version' => '7.26.0', + ), + ), + + // benötigte OpenSSL-Version (Angabe in Versionsformat) + 'hasMinOpenSSLVersion' => array( + 'blExec' => 0, + 'aParams' => array( + 'version' => '1.0.1.5', + ), + ), + + // minimal benötigte Shopversion (editionsgetrennt), wird (sofern möglich) Remote aktualisiert + 'hasMinShopVersion' => array( + 'blExec' => 1, + 'aParams' => array( + 'PE' => '6.0.0', + 'CE' => '6.0.0', + 'EE' => '6.0.0' + ), + ), + + // maximal verwendbare Shopversion (editionsgetrennt), wird (sofern möglich) Remote aktualisiert + 'hasMaxShopVersion' => array( + 'blExec' => 1, + 'aParams' => array( + 'PE' => '6.0.200', + 'CE' => '6.0.200', + 'EE' => '6.0.200' + ), + ), + + // verfügbar für diese Shopeditionen, wird (sofern möglich) Remote aktualisiert + 'isShopEdition' => array( + 'blExec' => 0, + 'aParams' => array( + array( + 'PE', + 'EE', + 'CE', + ), + ), + ), + + // benötigt Modul-Connector + 'hasModCfg' => array( + 'blExec' => 1 + ), + + // benötigt mindestens diese Erweiterungen / Version lt. d3_cfg_mod (kaskadierbar (siehe "Desc1")) + 'hasMinModCfgVersion' => array( + array( + 'blExec' => 1, + 'aParams' => array( + 'id' => 'd3modcfg_lib', + 'name' => 'Modul-Connector', + 'version' => '5.1.0.0', + ), + ), + ), + + // verwendbar bis zu diesen Erweiterungen / Version lt. d3_cfg_mod (kaskadierbar (siehe "Desc1")) + 'hasMaxModCfgVersion' => array( + array( + 'blExec' => 0, + 'aParams' => array( + 'id' => 'd3modcfg_lib', + 'name' => 'Modul-Connector', + 'version' => '6.0.0.0', + ), + ), + ), + + // benötigt neuen Lizenzschlüssel + 'requireNewLicence' => array( + array( + 'blExec' => 0, + 'aParams' => array( + 'checkVersion' => true, // soll Versionsnummer des installierten Moduls gegengeprüft werden? + 'remainingDigits' => 2, // zu prüfende Stellen für neue Lizenz + ), + ), + ), + ); +} + +/********* don't change content from here **********************/ + +date_default_timezone_set('Europe/Berlin'); + +/** + * Class requcheck + */ +class requCheck +{ + public $sVersion = '4.10.2'; + + protected $_db = false; + + public $dbHost; + + public $dbUser; + + public $dbPwd; + + public $dbName; + + /** @var requConfig */ + public $oConfig; + + /** @var requLayout */ + public $oLayout; + + protected $_sInFolderFileName = 'd3precheckinfolder.php'; + + public $sVersionTag = '@@version@@'; + + /********************** functional section ************************/ + + public $blGlobalResult = true; + + /** + * + */ + public function __construct() + { + $this->oConfig = new requConfig(); + $this->oLayout = new requLayout($this, $this->oConfig); + $this->oRemote = new requRemote(); + } + + /** + * @param string $sName + * @param array $aArguments + */ + public function __call ($sName, $aArguments) + { + $this->oLayout->{$sName}($aArguments); + } + + public function startCheck() + { + $this->oLayout->getHTMLHeader(); + + $oCheckTransformation = new requTransformation($this); + $this->oConfig->aCheck = $oCheckTransformation->transformCheckList($this->oConfig->aCheck); + + $this->_runThroughChecks($this->oConfig->aCheck); + + $this->oLayout->getHTMLFooter(); + } + + /** + * traversable requirement check + * + * @param $aCheckList + * @param string $sForceCheckType + */ + protected function _runThroughChecks($aCheckList, $sForceCheckType = '') + { + foreach ($aCheckList as $sCheckType => $aConf) { + if (array_key_exists('blExec', $aConf)) { + if ($aConf['blExec']) { + if (strlen($sForceCheckType)) { + $sCheckType = $sForceCheckType; + } + $this->displayCheck($sCheckType, $aConf); + } + } else { + $this->_runThroughChecks($aConf, $sCheckType); + } + } + } + + /** + * @param $sMethodName + * @param null $aArguments + * + * @return array + */ + public function checkInSubDirs($sMethodName, $aArguments = null) + { + $sFolder = '.'; + + $aCheckScripts = $this->_walkThroughDirs($sFolder); + $aReturn = $this->_checkScripts($aCheckScripts, $sMethodName, $aArguments); + + return $aReturn; + } + + /** + * @param $sFolder + * + * @return array + */ + protected function _walkThroughDirs($sFolder) + { + $aIgnoreDirItems = array('.', '..'); + $aCheckScripts = array(); + + try { + /** @var SplFileInfo $oFileInfo */ + $oIterator = new RecursiveDirectoryIterator($sFolder); + + foreach ($oIterator as $oFileInfo) { + if (in_array($oFileInfo->getFileName(), $aIgnoreDirItems)) { + continue; + } + if ($oFileInfo->isDir()) { + $aCheckScripts = array_merge($aCheckScripts, $this->_walkThroughDirs($oFileInfo->getRealPath())); + } elseif ($oFileInfo->isFile()) { + if (strtolower($oFileInfo->getFilename()) == $this->_sInFolderFileName) { + $aCheckScripts[] = str_replace('\\', '/', $oFileInfo->getRealPath()); + } + } + } + } catch (UnexpectedValueException $oEx) { + sprintf($this->oLayout->translate('unableExecuteDirectoryIterator'), $oEx->getMessage()); + $this->addMessage( + sprintf($this->oLayout->translate('unableExecuteDirectoryIterator'), $oEx->getMessage()) + ); + } + + return $aCheckScripts; + } + + public function addMessage($sMessage) + { + $this->aMessages[md5($sMessage)] = $sMessage; + } + + public function getMessages() + { + return $this->aMessages; + } + + /** + * @param $aScriptList + * @param $sMethodName + * @param $aArguments + * + * @return array + */ + protected function _checkScripts($aScriptList, $sMethodName, $aArguments) + { + $aReturn = array(); + + foreach ($aScriptList as $sScriptPath) { + $sUrl = $this->_getFolderCheckUrl( + $sScriptPath, + $sMethodName, + $aArguments + ); + + $sVersionUrl = $this->_getFolderCheckUrl( + $sScriptPath, + 'getVersion', + array() + ); + + $sContent = serialize(null); + $sVersion = serialize(null); + + if ($this->_hasCurl()) { + $sContent = $this->_getContentByCurl($sUrl); + $sVersion = $this->_getContentByCurl($sVersionUrl); + } elseif ($this->_hasAllowUrlFopen()) { + $sContent = file_get_contents($sUrl); + $sVersion = file_get_contents($sVersionUrl); + } + + $sBasePath = $this->getBasePath($sScriptPath); + $aReturn[$sBasePath] = unserialize($sContent); + $aReturn[$this->sVersionTag][$sBasePath] = unserialize($sVersion); + } + + return $aReturn; + } + + /** + * @return bool + */ + protected function _hasCurl() + { + if (extension_loaded('curl') && function_exists('curl_init')) { + return true; + } + + return false; + } + + /** + * @return bool + */ + protected function _hasAllowUrlFopen() + { + if (ini_get('allow_url_fopen')) { + return true; + } + + return false; + } + + /** + * @param $sUrl + * + * @return bool|mixed + */ + protected function _getContentByCurl($sUrl) + { + $iTimeOut = 5; + $ch = curl_init(); + $sCurl_URL = preg_replace('@^((http|https)://)@', '', $sUrl); + + curl_setopt($ch, CURLOPT_URL, $sCurl_URL); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $iTimeOut); + curl_setopt($ch, CURLOPT_TIMEOUT, $iTimeOut); + curl_setopt($ch, CURLOPT_POST, 0); + $sContent = curl_exec($ch); + curl_close($ch); + + if (false == $sContent || + strstr(strtolower($sContent), strtolower('Request Entity Too Large')) || + strstr(strtolower($sContent), strtolower('not allow request data with POST requests')) + ) { + return false; + } + + return $sContent; + } + + /** + * @param $sScriptPath + * @param $sMethodName + * @param $aArguments + * + * @return string + */ + protected function _getFolderCheckUrl($sScriptPath, $sMethodName, $aArguments) + { + $sBaseDir = str_replace( + array(basename($_SERVER['SCRIPT_FILENAME']), '\\'), + array('', '/'), + realpath($_SERVER['SCRIPT_FILENAME']) + ); + $sUrlAdd = str_replace($sBaseDir, '', $sScriptPath); + $sBaseUrl = 'http://' . $_SERVER['HTTP_HOST'] . str_replace( + basename($_SERVER['SCRIPT_NAME']), + '', + $_SERVER['SCRIPT_NAME'] + ); + + $sUrl = $sBaseUrl . $sUrlAdd . '?fnc=' . $sMethodName . '¶ms=' . urlencode(serialize($aArguments)); + + return $sUrl; + } + + /** + * @param null $sFolder + * + * @return mixed + */ + public function getBasePath($sFolder = null) + { + if (!$sFolder) { + $sFolder = $_SERVER['SCRIPT_FILENAME']; + } + + $sScriptFileName = str_replace('\\', '/', realpath($_SERVER['SCRIPT_FILENAME'])); + $sSearch = substr(str_replace(basename($sScriptFileName), '', $sScriptFileName), 0, -1); + + $sFolder = str_replace('\\', '/', realpath($sFolder)); + + return str_replace(array(basename($sFolder), $sSearch), '', $sFolder); + } + + /** + * @return string + */ + public function getVersion() + { + return $this->sVersion; + } + + /** + * @param $mResult + * + * @return bool + */ + protected function _hasFalseInResult($mResult) + { + if (is_array($mResult)) { + foreach ($mResult as $blResult) { + if (false === $blResult) { + $this->blGlobalResult = false; + + return true; + } + } + + return false; + } + + if (false === $mResult) { + $this->blGlobalResult = false; + + return true; + } + + return false; + } + + /** + * @param $mResult + * + * @return bool + */ + protected function _hasNullInResult($mResult) + { + if (is_array($mResult)) { + foreach ($mResult as $blResult) { + if ($blResult === null) { + $this->blGlobalResult = false; + + return true; + } + } + + return false; + } + + if ($mResult === null) { + $this->blGlobalResult = false; + return true; + } + + return false; + } + + /** + * @param $mResult + * + * @return bool + */ + protected function _hasNoticeInResult($mResult) + { + if (is_array($mResult)) { + foreach ($mResult as $blResult) { + if ($blResult === 'notice') { + return true; + } + } + + return false; + } + + if ($mResult === 'notice') { + return true; + } + + return false; + } + + /********************** conversion function section ************************/ + + /** + * @param $mParam + */ + public function aTos(&$mParam) + { + if (is_array($mParam)) { + $mParam = implode($this->oLayout->translate('or'), $mParam); + } + } + + /** + * @return string + */ + public function getLang() + { + if (isset($_REQUEST['lang'])) { + return strtolower($_REQUEST['lang']); + } + + return 'de'; + } + + /** + * @return bool|resource + */ + public function getDb() + { + if (!$this->_db) { + if (file_exists('config.inc.php')) { + require_once('config.inc.php'); + ini_set('error_reporting', E_ALL^E_NOTICE); + $this->_db = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPwd, $this->dbName); + } + } + + return $this->_db; + } + + /** + * @param $version + * @param int $iUnsetPart + * + * @return string + */ + public function versionToInt($version, $iUnsetPart = 0) + { + $match = explode('.', $version); + + return sprintf( + '%d%03d%03d%03d', + $this->_getVersionDigit($match[0], $iUnsetPart), + $this->_getVersionDigit($match[1], $iUnsetPart), + $this->_getVersionDigit($match[2], $iUnsetPart), + $this->_getVersionDigit($match[3], $iUnsetPart) + ); + } + + /** + * @param $sMatch + * @param $iUnsetPart + * + * @return int + */ + protected function _getVersionDigit($sMatch, $iUnsetPart) + { + return intval($sMatch !== null ? $sMatch : $iUnsetPart); + } + + /********************** layout function section ************************/ + + public function deleteme() + { + $sFolder = '.'; + + $this->_checkDelFilesInDir($sFolder); + $this->_delFile($_SERVER['SCRIPT_FILENAME']); + + if (is_file($_SERVER['SCRIPT_FILENAME'])) { + exit($this->oLayout->translate('unableDeleteFile')); + } else { + exit($this->oLayout->translate('goodBye')); + } + } + + /** + * @param $sFolder + */ + protected function _checkDelFilesInDir($sFolder) + { + $aIgnoreDirItems = array('.', '..'); + + /** @var SplFileInfo $oFileInfo */ + foreach (new RecursiveDirectoryIterator($sFolder) as $oFileInfo) { + if (!in_array($oFileInfo->getFileName(), $aIgnoreDirItems) && $oFileInfo->isDir()) { + $this->_checkDelFilesInDir($oFileInfo->getRealPath()); + } elseif ($oFileInfo->isFile()) { + if (strtolower($oFileInfo->getFilename()) == $this->_sInFolderFileName) { + $this->_delFile(str_replace('\\', '/', $oFileInfo->getRealPath())); + } + } + } + } + + /** + * @param $sPath + */ + protected function _delFile($sPath) + { + unlink($sPath); + } + + /** + * @param $sCheckType + * @param $aConfiguration + */ + public function displayCheck($sCheckType, &$aConfiguration) + { + $sGenCheckType = preg_replace("@(\_[0-9]$)@", "", $sCheckType); + $oTests = new requTests($this, $this->oConfig, $this->getDb(), $this->oRemote); + if (method_exists($oTests, $sGenCheckType)) { + $this->_checkResult($oTests, $sGenCheckType, $sCheckType, $aConfiguration); + } else { + $this->oLayout->getUncheckableItem($sCheckType, $aConfiguration); + $this->blGlobalResult = false; + } + } + + /** + * @param $oTests + * @param $sGenCheckType + * @param $sCheckType + * @param $aConfiguration + */ + protected function _checkResult($oTests, $sGenCheckType, $sCheckType, $aConfiguration) + { + $mResult = $oTests->{$sGenCheckType}($aConfiguration); + $sElementId = (md5($sGenCheckType . serialize($aConfiguration))); + + if ($this->_hasNoticeInResult($mResult)) { + $this->oLayout->getUnknownItem($mResult, $sElementId, $sCheckType, $aConfiguration); + } elseif ($this->_hasNullInResult($mResult)) { + $this->oLayout->getUnknownItem($mResult, $sElementId, $sCheckType, $aConfiguration); + } elseif ($this->_hasFalseInResult($mResult)) { + $this->oLayout->getNoSuccessItem($mResult, $sElementId, $sCheckType, $aConfiguration); + } else { + $this->oLayout->getSuccessItem($mResult, $sElementId, $sCheckType, $aConfiguration); + } + } + + public function showinfo() + { + phpinfo(); + } +} + +/** + * Class requLayout + */ +class requLayout +{ + public $oBase; + public $oConfig; + + /** + * @param requCheck $oBase + * @param requConfig $oConfig + */ + public function __construct(requCheck $oBase, requConfig $oConfig) + { + $this->oBase = $oBase; + $this->oConfig = $oConfig; + } + + public function getHTMLHeader() + { + $sScriptName = $_SERVER['SCRIPT_NAME']; + $sTranslRequCheck = $this->translate('RequCheck'); + $sModName = $this->oConfig->sModName; + $sModVersion = $this->oConfig->sModVersion; + + echo <<< EOT + + + + + $sTranslRequCheck "$sModName" $sModVersion + + + + + + +
+ + + + + + +
+EOT; + echo "

" . $this->translate('RequCheck') . ' "' . $this->oConfig->sModName . ' ' . $sModVersion . '"

'; + echo '

' . $this->translate('ExecNotice') . '

' . PHP_EOL; + + return; + } + + public function getHTMLFooter() + { + $sScriptName = $_SERVER['SCRIPT_NAME']; + $sTranslShopPhpInfo = $this->translate('showPhpInfo'); + $sTranslDependent = $this->translate('dependentoffurther'); + + if (count($this->oBase->getMessages())) { + echo ''; + } + + if ($this->oBase->blGlobalResult) { + echo '

' . $this->translate('globalSuccess') . '' . + $this->translate('deleteFile1') . $sScriptName . $this->translate('deleteFile2') . '

'; + } else { + echo '

' . $this->translate('globalNotSuccess') . '' . + $this->translate('deleteFile1') . $sScriptName . $this->translate('deleteFile2') . '

'; + } + + echo <<< EOT + $sTranslDependent
+

+ + + $sTranslShopPhpInfo + + +

+ + + +EOT; + + return; + } + + /** + * @param $aResult + * + * @return bool + */ + protected function hasRemoteVersionDiff($aResult) + { + $blDiff = false; + + if (is_array($aResult) + && isset($aResult[$this->oBase->sVersionTag]) + && is_array($aResult[$this->oBase->sVersionTag]) + ) { + foreach ($aResult[$this->oBase->sVersionTag] as $sRemoteVersion) { + if (version_compare($sRemoteVersion, $this->oBase->getVersion(), '!=')) { + $blDiff = true; + } + } + } + + return $blDiff; + } + + /** + * @param $aResult + * @param $sElementId + * @param $sCheckType + * @param $aConfiguration + */ + public function getNoSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration) + { + $sText = ''; + $sDesc = ''; + if ($this->hasRemoteVersionDiff($aResult)) { + $sText = '!'; + $sDesc = strip_tags($this->translate('RemoteVersionDiff')); + } + + echo '
'.$sText.'
' . + $this->_addToggleScript($aResult, $sElementId) . + $this->translate($sCheckType, $aConfiguration) . + $this->_addDescBox($sCheckType.'_DESC', $aConfiguration) . + '
' . PHP_EOL; + + $this->getSubDirItems($aResult, $sElementId); + } + + /** + * @param $aResult + * @param $sElementId + * @param $sCheckType + * @param $aConfiguration + */ + public function getSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration) + { + $sText = ''; + $sDesc = ''; + if ($this->hasRemoteVersionDiff($aResult)) { + $sText = '!'; + $sDesc = strip_tags($this->translate('RemoteVersionDiff')); + } + + echo '
'.$sText.'
' . + $this->_addToggleScript($aResult, $sElementId) . + $this->translate($sCheckType, $aConfiguration) . + $this->_addDescBox($sCheckType.'_DESC', $aConfiguration) . + '
' . PHP_EOL; + + $this->getSubDirItems($aResult, $sElementId); + } + + /** + * @param $aResult + * @param $sElementId + * @param $sCheckType + * @param $aConfiguration + */ + public function getUnknownItem($aResult, $sElementId, $sCheckType, $aConfiguration) + { + $sText = ''; + $sDesc = ''; + if ($this->hasRemoteVersionDiff($aResult)) { + $sText = '!'; + $sDesc = strip_tags($this->translate('RemoteVersionDiff')); + } + + echo '
'.$sText.'
' . + $this->_addToggleScript($aResult, $sElementId) . + $this->translate($sCheckType, $aConfiguration) . + $this->_addDescBox($sCheckType.'_DESC', $aConfiguration) . + '
' . PHP_EOL; + + $this->getSubDirItems($aResult, $sElementId); + } + + /** + * @param $sCheckType + * @param $aConfiguration + */ + public function getUncheckableItem($sCheckType, $aConfiguration) + { + echo '
' . + $this->translate($sCheckType, $aConfiguration) . ' (' . $this->translate('RequNotCheckable') . ')' . + $this->_addDescBox($sCheckType.'_DESC', $aConfiguration) . + '
' . PHP_EOL; + } + + /** + * @param $aResult + * @param $sElementId + */ + public function getSubDirItems($aResult, $sElementId) + { + if (is_array($aResult) && count($aResult)) { + echo '' . PHP_EOL; + } + } + + /** + * @param $aResult + * @param $sElementId + * + * @return string + */ + protected function _addToggleScript($aResult, $sElementId) + { + if (is_array($aResult) && count($aResult)) { + $sScript = "
+
"; + } else { + $sScript = ""; + } + + return $sScript; + } + + /** + * @param $sTextIdent + * @param $aConfiguration + * + * @return string + */ + protected function _addDescBox($sTextIdent, $aConfiguration) + { + $sContent = "
?". + "
". + "
".$this->translate($sTextIdent, $aConfiguration)."
". + "
"; + + return $sContent; + } + + /** + * @param $sIdent + * @param array $aConfiguration + * + * @return mixed|string + */ + public function translate($sIdent, $aConfiguration = array()) + { + $sGenIdent = preg_replace("@(\_[0-9]$)@", "", $sIdent); + $oTranslations = new requTranslations(); + $aTransl = $oTranslations->getTranslations(); + + if (isset($aConfiguration['aParams']) && is_array($aConfiguration['aParams'])) { + array_walk($aConfiguration['aParams'], array($this->oBase, 'aTos'), $sIdent); + } + + if (isset($aTransl[$this->oBase->getLang()][$sGenIdent]) + && ($sTranslation = $aTransl[$this->oBase->getLang()][$sGenIdent]) + ) { + if (isset($aConfiguration['aParams'])) { + return vsprintf($sTranslation, $aConfiguration['aParams']); + } else { + return $sTranslation; + } + } else { + return $sGenIdent; + } + } + + public function getPngButton() + { + $sImg = "iVBORw0KGgoAAAANSUhEUgAABDgAAAAWCAYAAAAl+SzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAB". + "MpJREFUeNrs3Y1O4zgUhuFY4hbb2ZthRjtczOz0Ght7cZwfQ5u2E4K0a55XiNDUXyWcT+ZwfGyHw+HQvZI6AACAT+J0OgW9AAAAtn". + "A8Hh/JWYSnbkxuvAYeeg0AAAAAAPynuJevOB6P+ZKe6sYvLy96DgAA7M7z87NOAAAAm7iVq8gxRs5p5CTH03Tz758/uzAUc7x+Hy4". + "pf71ex9fDj2leyxLG1vnNELpmdJPqo21a7afy+/MIj/AIj7zVhS/seWPD4zoAAIAtxJhW44+cy/jx/ftw/2kRxDEQSd0Uraah/RKV". + "lLfK+/kDS0T7eieGZnTdA33QfeF+CpFHeIRHeORSF1Lw3I0Nd3UAAACbEhwprscfadnma05wpL7v8v0Sh4QiLimREqWEt7mSmK9xn". + "LlrSBe6fdq02k9D1oxHeIRHeORCFz13Y8NtHQAAwNYER+zX44+q3Zzg6GOcbw6haqhmXG5MvuQPiw3q9mrTaj/xCI/wCI9c13juxo". + "Y/0wEAANxNcPTxbvzxLsHRd7mEo8y+pJIFCWEupy2XMTcSxjKQUMqSl1mb/79urzbN9hOP8AiP8MgV3Zf2vLHhIR0AAMBWcr5iNf6". + "o4owlwdGPCY68hiUsZbRh2DGsWkz7/mUaVl83oxu3R/xwm1b7KfEIj/AIj1zRDfc9d2PDTR0AAMA2hgqOtfijWqOybDKaExzj6pVp". + "zWyYG04zdGn5vByohVC924ou7NSm3X7iER7hER55r/P3w9jw6NgAAADwp+SCjPX442oFR5URWeaY5pKPsmNpmI+SnctN5zKRVnR7t". + "Wm1nwKP8AiP8MiKznM3NqzrAAAANic4zuf1+ONaBce576dQZAhMplPepvWzYdn6vSoBCUNJSCkPaUS3V5tm+4lHeIRHeORS97U9b2". + "x4RAcAALA5wZEPRVmJP1K4ckxsPJ/H9SzjOvpuEc11INP805gtWQ6Ka0gXdmrTaD8NGTMe4REe4ZFrOs/d2HBLBwAAsJHzuV+PP6q". + "JlKqCI3ZdvaZliVGm3MiYKZm3EJuvXera0aW0T5tG+2kKYHmER3iER2pdU8/Pc/+0sQEAAGALec/Q9fjjSgVH358v/zFZJNXy6ukY". + "uFQqREZBK7q0U5tm+4lHeIRHeOSqLnnuxoa7YwMAAMAWzvF8M/64THDEOB+xEsYIJlV7d5R1tdNGHsMnlvW2I63opirrj7Zptp86H". + "uERHuGRS92X9ryx4cGxAQAAYBv5mNi1+OP6HhzDMbEVad5JrKoxrdbfzlFa155urzYt9lPgER7hER658bt47saGVR0AAMA28ikqj8". + "QfVQVH3705ceU1KEm5qmM+0y7N8crwOqY5a5Ja0sWd2jTaTykmHuERHuGRS52/H8aGuzoAAIBtxCGIWok/riU4Yl8EZVOwEpSUG9X". + "62XmRS1w+oV5z24RurzaN9tO0QR6P8AiP8MgbnedubLitAwAA2EqfExo34o+LBMevX7+6b9/+KkFItYZlmI0tP1XBS3UE3LhNeju6". + "vdq02k8dj/AIj/DIhW48W8NzNzbcHBsAAAC2MGypsRJ//P7n9/J/yOFwGO6fTie9BgAAPgvrVAAAwFZuzpgcj8fh+jQGHGm6AQAAs". + "DcmUgAAwFYezFeEfwUYAAoCUXB0RZrTAAAAAElFTkSuQmCC"; + header("Content-type: image/png"); + echo base64_decode($sImg); + exit; + } + + public function getPngLogo() + { + $sImg = "iVBORw0KGgoAAAANSUhEUgAAADMAAAA0CAYAAAAnpACSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAE". + "IxJREFUeNq8Wgl4VNXZfu+dLZkkk5BA9kACYQlB2aIga6myuIEtFX+kLW1BJVT/akVrRds+rVqRX2lLRSsal5/nUaCgtmhi8BeaUh". + "Al7EYTIWyGQPZlMsnM3Lnn/865dzJ3biaLVnsfDpk59yzf++3fOSMxxvANPlZqUdQs1FRqXmq+Ac7NpbaI2jxqQ6nZqDVR+z9qr1H". + "71DxB+nfBPHYYSHUCK8fATl+HUZtK7Wpqo1SGeZ0BQCEYFolQETSrhDJ6d4rax9Q+pFa18SQ8HX6aHAcszUUS9T3U0IU1710ASqid". + "dwNuBciMARbSDjcQtDQnnnj7HNYuGvY1gqHnW9RWBBi+f7kT+LwVKG8AjlDj38+0AR1EiJ1kk0XEZFAbO4gQJwOj44F0+m6TsYvWK". + "KKWQOQUvVwFPHCAxNBlZDs1psk30wXsv4XWi8VvqefXXwcYWg6FRPy8racBzsXjjQxtXim4sra5bKCG6X3QCLOR4lxBwGakS1g+Ch". + "hORN5FcttWpSumpCunZADEH5L2iATa71bAaUUW9XzxVcEs4yCq2zD9qaMML1QQXQGdaMmwYW8PM41RQxwvmgu0+yU8Qap7uUMbN59". + "UykUKXF4P0J5hgD4gi5qTjuW6DQkDHehDfMNvLnbgvp/vV7GdpKEGdA5aTMRiAIAQDj6HJHR7rgyHBc+T/a16jaQzNFbYB0FDXa0H". + "C0a+QSrrD82J1qj3G73NQJ6buTT+eppdf+cehuauCCCCLDeDkcwAWM8xjA+T8JcKxp3FKu4oFGLUOZJEpyJNIqKfpP4F/kBI9bLIW". + "UxIErPLvozNFLb5sOmRgwwbj6kaMbIUrjJMJzIIRooAUOpNzwzdAcMX+hfvlFC6UEaCQ8K0N4FGrzbVQuM+InuZNBjruOcLzpL7Ab". + "LSr2LT0lIVG8tpBZnpxDOtwfgX4X2snz5z4y8swaYRfWM2+fhkaS/3gotyqE/RVGnrAgHkz6daQ0D6A8Mlsvm24gDerSYgNhaZiP4". + "avvq4giFCgkdJzZa+MAv442zCQxby9hmgK4C7c+MxZCBgZtJam24tVvBmlS4RhoERaH6nRhpvkg4FKfipKXrj32nPjy+p+NsZ9d4W". + "L16noPvTu/OBuSSt/z1BaUCNoPN2c7phfhJoqbLfk1qVconwEUw3DEm3L1Xq3W0x9Ix0TDLnHTpwzZ5W5MsYP1gCqTSsxN5jFK+KT". + "gbweiW1ChXzhksoXmh7lkx11Vvz8fxsCsaXOsVKI/sD84t3z6pYu5fkaZdCXJUkLSbQd56aWCQz5ZLJ57Juwn3csFV9jaDDCeoEfX". + "+owIbceGmT3qseqmOri44oWjam8vmWoMt4iYJk/Pb5WPdpi/h+vC8wszwKHrpzt08zRE4Ql4LEwqL39httGJckD8in8yleUhs7sfV". + "sG8MFN0PJ2QB2nAp0A/RrXmzrU+VK2YOTrWlXJEmr7y2w4C0ac90wGQ8UWPmwe1+pCCg/GmvZnO7EOovmPZ19gSn8w2E/LraomlRU". + "g6fSmc0lMi1NRopTmjCAeB+UFN80YfQgiUeGoSvzLXMrm9nsxw76sOWYQvmbirxEy3i3j5Vtr1Jqbx1lXbBhtq3wd9Nsi2JteIfmP". + "Per/b53HCKuWZafa2dYuduLD74XtYHo2UKdDeY4c2t1K9s2qsgj7E8I3Kw11AZFEYdXRlOKIZEp4tzsHT4Rdny6vrtINdq8DA76nE". + "BjaygtSaIi4Hu5FhSfU9FFBs6Xeusm+xKyka1PH/LjUJ2KN25w8PlLlhd3bR8WL2Goy4qV4yxxtxd72/laL893pNK0R4/Vq6t/VOL". + "F0Ysqdi6OwndyLb+i/t+ZwXxw127vnBdIMkJXI5kAETwxRcZHy5x8Y/L+8NyyywdKNZBNEfm2kTJON6nYVulHTryMKekyTjWrpGYS". + "8pOtKK9jcJPX4uBHJkhYP8M2nta4Z8Nh/4r9NQG8OM+BeIf0Z+qjZAluPceglBJ5LV62nIeIHxZ3IaDncwUZRMtSJ1dBXn74g2AyP". + "H72Re5LHtS2q707bNLtFRNstGnUe/RtAe96eJ8PWS4Z01IlJJIEslwWzsEMPWequ39P16Wq5gAmJVuQ6LTgIAFqpkienyhhIsWRZW". + "Oskzv87FD28x1IiqHsOd+GkYNkwYxOkmJFYwDnyda2fKrgXLMalkJxs65cGUMZtHw9fS0J2sxtB2oDqG0OaFLpLcOhtaani9WOBrs". + "mEEH5SZoRE5ApRNiHfHOeBA6mdOTpOVH/omGbHz/Q9Wqak+HaDF5sSeRAJMTSmLdPKeWLcq3/s+E6x5of7PTg4fqApgnBPCyo7rJJ". + "9fkQkvLm4z48OSuqkIORdYBPFx33adT2E6XzNS92LLhgLXmnd6sV7D6naA6k3IsrX2xHXlE7xtDfJX/zTP/7aeWVtddEbeK2aJd5c". + "cZQ5w5QUAzgRL1wZe9clWKBhTNS1uOZVU9tJC2ARgzUtNZrn/hBWrWQawOnLLexk2FnpU+P9KrWVL0xHSB9jqINsuPlcP9O72Ta6I". + "GrHXz28rLzCmW8ZOjkEWrIS23/xIuFW9txsFYpXJpnX9alcAdBCkBuKI8YMzpRrFeV5ZIwhNRMeB/VkD2YswlVDX0moLXNCg5fFgy". + "5lq805RSpV1eXakozQh5MW4QhJ0HmBsonng9iibNrHo6e5E4S+4l6xRDhma4aDH85Is4xttwx3i4pKhMSaupUcdktInGHhazYaWEh". + "5jHdylUWYm7QWQXfiX6GDy8KrZjFt5q274ISmsQMC+iDxV/i2NQ0UTy9T3Pag2AoNqDdKzbJqyHCLrUEQioRlC6BO3rJL9IVeuzbK". + "rzYd8GHzFgJmXGCEVHcEfkUfT+oBimo4RIS/dDX1hi274Koz/K5Axj+aYMSLo1IyRZNLEgT/uKk8e2JOiVY3ow7SfrPWITii/ClkA". + "pZtXHKt4dZyVMBu075hI3fMsqeQK6X1C8oDUOKFFbMRfBMNKShQ0xwceoyq5uVUKTv45mcIsB8ZOzjbjR4znW+lajmQUAyJQYEMI3". + "AUHfxmvfdAU5ffLQMa7SkxQyiodFDYDyqyWP1TxN/39wpbIY7R8R+wYmQ+phIxEhESZJTEHnW+CrZKWvSJuY3dhhUwpjpUN+0DMGI". + "E7F2SbzxikyABaU66bNGJZwRPQrSCBWqTm9rl+CIg+9gc3sD4VxgekWJUJYbbZMQL7JoLQ8KPpfd3bXu0MpGv67v4SUCp2/BCB6ks". + "WtyqlW84XbmJ5A6eXNLT3t1G5HCj6UkYwkSQdXoq0870pA5GCWaK7MaiFCHsO4Jg0klXJonazKudY4MftONLhflXNccqfUb0iCdEi". + "L427kOpMeJYHuwneyCM2bEIC2UT820pdPcubsqO00luYEh3bWP2rPaoC82jSMqB+PmXuVMAzOkMSaVI0/GOWrXLLjZCGZ6lk2YTks". + "Xw1kuGWbkHmcbw9oZMVydVq/bx30f6bWdZwxM0EhgZleQO7/YpIiz25DxM5PNs8jaRovEOwThPv5/3XDOpUAf0Z+4Oz5VFEgvw7Cd". + "iHYNQsbjqgiI32+I1Dz4UeBcPT0Gs7MdfMyr1w53YA595mVEdVNASJWeG3dUdA7gnEANxa4wV60iMVqg6+CSqbwy2TpLGxDpiEjrv". + "zpD6Pwhs29QNOv/1t5q0nmeoAU0I3GRY1g3LwF3XhXLpbL4klv1pMVS8kiAp2TYxHYFGfZC8oDLNvyjLfycofusTYrgBGAoxTU3nq". + "w5plYO5vDkdLsehCTzyZwYzA147BBbjxgjDpzH8BsLfD5miBX/PTMOIxKtGE2fx6fakRpneYberW/wqJeaPAGUVXfiDIWBRfkxmDb". + "UMZyEt+mON5vQyYshrviqGgIhzEENnTWHqZehwCKveGWKoO0MB1PGCXGS3/fwRU14eEuLt5BbFnrZ404kWTPs55aMc4LaOPrcoo8r". + "XfxGY+WDM1y42OrDsYteECjUk/smIHzfNa8dcaP0kw5DVduLvZj/Gg2aNGdOjlDjUr7oZ8mxFszKtqOkwoNgmDZG7/GpNsRoLqPRD". + "GZLeTsWXxnbvPGA+4nPyYhvGBklJMklQCUvPr7QiaM1XRgcQw6EjGXr7ckjaNr9JVWdhT/ZWq/t91VvImhabJSM8WnCBMqs+sHR2n". + "uuiXu85AQVdxZTZUa6MGuYgxP4qtn4+fPI2/XYdqwdflKNFkocm1u9WDIhFh2Ur2TGyGij6Gwho+FG/8xNSYXkhje9Wu7Gqh31+jF". + "vX1Ge9X3MQPZ3x4w4Ks/lYl6dBouz12dmRz3u4pt7TekIcW1iukB+JOKC5BaPX/B2B7RaovGmPCc2Lx7CjYnfnUzmHpxaweEa79Sf". + "72rEP6o6Q0cprD+6+5Aa0baiIE4cQRlPZ87EOeR/fndczMxXPmwVV1lBjsmkBukihcN8vYWv91RupN1jKY7MaqE0o5pc9p7TnaRuX". + "uw82aHZRlCVVaPn6hFA+pYKacyEoVEYM0QwusR81PTcfTPjZ76yv8WwicaV1TvqqG6hOtvSvxZwT+4iPa5u8uOzOj/aOgIhB8TVSt". + "bT9+50KZzT3QeO/YmMnFXhVBe3ij/xGGM+neGlkbK2uBG/L2nQ6lvzxVAk8RuPXoMMUAz1u3lymJs1EGrsY4aBkhR+tyOCG9VWOdH". + "YuzqLskspjzsx88F5gKZd//C1gxDH3XBADVV0YOFltKqGru/CxhjuMSVT9A5O6C7F1fCC0Fh4ITzCh0V+vRX9VyoH8mAQSKRbgJJY". + "u/yHjd9NoRw9SDALJ5gZozALVw9jqmGu9LqBm3I/4x1ON1NgcJyGdflDdK2aOQh5yfb3j9d61/d3pfHsD69y4Z7rEvkhsYGDhvMAY". + "3ltrtG736H3iyUjk4xSCkoNxvMIA1hfAFdkReGZRcnCxr1KeKSIBOYUqdt31t+cjGtyozUJhXE/Aje7uWzipvlkxaiW5kOTsLXR82". + "SGCOfZxnuFWbyEeKS6wbeTHyoO5LLpLdLHNcWFw5Cf6dAlFEG/zX2RiOhxCYWBXVIhHAgv6fb8LBtpLutTlXW+x/nhiBLAgMDw5+n". + "4KPnRsp/lYPrIGHHvFvn2DF/t2m+gjVxwOuWGx9fmYmyK49mqOt8veiO4v0uWx0iU979LElo+fZAmIfVrJraPGorvN2loNPbdNxx5". + "KY4n/3nac3dfxA7kxugZCoJLX1qWgUdvTtESTkWNcIJi0vkw2zGU0oz19GbmrEXRwPxgWiL23puDnCT7w6WfuX/Z7y3Ql/i5Cc+vC". + "mta/Mt+vOUCdp9s1wKaBaHAJvXyK4w+k0jDxIBWoU7KceLF72diYmb0Xu61XtjftC070U6GLyMlzhqGe3Sy/d/6VdMqX4A9V/xJO/". + "60pwF7PneD+fXfYMkSvvTDdBA0dSKp1E9IGsunJCIuSv7liwean+QXWLQfvikw4oiZ2l2kCetP13vx+qEWvHygUTvQ0AnrBiYhdDF". + "rVCk9/0uItWJpQYIAcUV6NI/qfxTS+FdTJT+rs1m+eTDBx6ar353tXnXpR2c94O3QeQ9qWv3ooBjVTIkmJ8ZG4FxUzbqiLUgmABMy". + "ojBleAymZDsxJNZayu9wqO3+bfHl1iQq5PgtwX8ajPFJ039IN4faWP36Llb/WaOs5yc+PcNt1a/6+I94PuBnCF8HAf8vwADS7GaT0". + "D4fMwAAAABJRU5ErkJggg=="; + header("Content-type: image/png"); + echo base64_decode($sImg); + exit; + } + + public function getGifBg() + { + $sImg = "R0lGODlhCgAyANUAANHo+pfK85rM8/X6/vb6/v///5jL85bJ8+Hv/KbS9dzt+87m+qTR9fH4/er1/b7e+MTh+P3+/63V9u/3/". + "dfq+rnc97fa96DP9Nns+53N9LLY9tTp+sHg+Mzl+cfi+OPx/Pv9/7DX9p/O9Oz2/bTZ9uXy/KLQ9Pj7/ujz/bzd9/7+//r8//P5/s". + "nj+ZvM897u+6nT9avU9qvU9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAKADIAAAb". + "FwINwSAwYj0iDcskUOJ9Ql3RKzVivWJF2y714v2CTeExmmM/ohHrNhrnf8Jh8PpdJ7vh8aM/va/6AgSSDhIUWh4iJFYuMjSmPkJEP". + "k5SVHJeYmRCbnJ0en6ChLaOkpR2nqKkLq6ytAK+wsRuztLUUt7i5GLu8vQq/wMEvw8TFCMfIyR/LzM0lz9DRKNPU1Q7X2Nkj29zdE". + "9/g4Q3j5OUs5+jpA+vs7QTv8PEn8/T1K/f4+SD7/P0R/wADqhhIsGCBgwgTBgEAOw=="; + header("Content-type: image/Gif"); + echo base64_decode($sImg); + exit; + } + + public function getGifDe() + { + $sImg = "R0lGODlhEgANAIQZAAAAABAFBhEGBhIGBhQHBxUHCCYNDZQqH5QrI9c4M+M4M9w9M+g/MuNDM/BFM99tI+t3H+CyDerIB+zIB". + "uzKBurLCPfcAPfgAPjlAP///////////////////////////ywAAAAAEgANAAAFVaARCGRpmoExAGzrvsBAwHRLFHVdIEfv/8ADou". + "EoGo9IR2PBaDqfUMYioahar1hF4gHper9gyKOCKZvPaExFcmm73/CLZGKp2+94yyRCmfj/gIAUESEAOw=="; + header("Content-type: image/Gif"); + echo base64_decode($sImg); + exit; + } + + public function getGifEn() + { + $sImg = "R0lGODlhEgANAOfRANzd6P9LQP7//93e6ba32v8HB/J4ef//+/85Of8fFVddwP8aFq+13P8aFPr////f3f8XE/n//62s3fQuL". + "AIDj6ys3uHZ5P8uLOjp793f6dbX6uvBxsyasurCx/9fXcadtS88r+Da5EZHr+Hi7A0NlUVGqcjR9MKaunh5x/8REQAAkv9IP/9BPn". + "h6wi4/td3c5uLl7P8PD7vO9aGSw7bM9uDh6UpLsf8hFv/f3PPx9/Dx9DFCuMDE4cHF4/sAANPU3ufp8JSDvuVocf8ODvz8+/xRTPQ". + "gG+PM0ZSWzs/R476+4ujp8v8/PurO0uPZ3//u5fQCAOPj6nFxxf8UE8rM4P/w5YGM18PH4/79/ExUuP3//4CAxqmo3KaZxv7+/Rcs". + "tO3v89XW6fS8waOj2snM7Nra7Ccon+no9v03OFJZvuK2xBEipP89Ov8dE+be4u3u8/w3OOVocv8sKv8EBOjo9+/u+Kap15SFvgwRl". + "ba327uXteHh7tvc5yo3q9XX5SQ4uU5MrtjW5qaVxvDS2f8DA+Tj6vr6/j1FtVlgvL+euvHw9v+rqe7u+XKJ1ebn7p2x7CUmnvb2+d". + "PW8P8cEc/P4efn8/38/5Ws66mYx/ccGNfY5vh0d927zSUlov96ev88OgAAjmmA09rb5v+xsPF5eMnR8i0upuuAgvEyLx0rq97f6cu". + "nwEBIuO/Aw/9/fuTm6vn5+vTEyM7P5rq63BESlf+Fgv8fF8SWsOfp7+2rrvX1+La23RgmqLe43PPV2vdydhcnqIWQ2BEgoube4wAS". + "n82atOHj6uTT2f97etKjuf9dWsSduZyb08fJ4fn5+/z8/f+ZAP///////////////////////////////////////////////////". + "/////////////////////////////////////////////////////////////////////////////////////////////////////". + "///////////////////////////////////ywAAAAAEgANAAAI/gB/YHCkig+AAVGGuSmUAYCoEbpgGXsFY8kWM7T6JEI14QMIEpB". + "aVNIBRBOSOtEqmAK27EabYqk6jYl2hpksKnjSmIgmqdEqWw2ShSITrZQCFXb8IDpkRdGBCLGmpBDj4ECOYKyyXHFyyoCQX8hceShQ". + "QFktT5viGCDV5AgUaHDjypXrI9exIgHYwEHA5MIcQnJYIEDzKcCKVi+63BE0CMeTUTGGLKrywBemIDMCJVnz5ZIWATI4LYCghoaAa". + "I/+EGNAqQQXQ4xQuDiRYBKHHVLoWJIAaFaNZkSU2KAgTI+RTLd4gRKxC0uZPQPAvAnTiwCPEB02WOiRh4CGZ15wAgUEADs="; + header("Content-type: image/Gif"); + echo base64_decode($sImg); + exit; + } +} + +/** + * Class requTranslations + */ +class requTranslations +{ + /** + * @return array + */ + public function getTranslations() + { + return array( + 'de' => array( + 'RequCheck' => 'Mindestanforderungsprüfung', + 'ExecNotice' => 'Führen Sie diese Prüfung immer aus dem Stammverzeichnis '. + 'Ihres Shops aus. Nur dann können die Prüfungen erfolgreich durchgeführt werden.', + 'RequSucc' => 'Bedingung erfüllt', + 'RequNotSucc' => 'Bedingung nicht erfüllt', + 'RequUnknown' => 'Bedingung unklar, siehe Hinweise im Hilfetext', + 'RequNotCheckable' => 'Bedingung nicht prüfbar', + 'hasMinPhpVersion' => 'mindestens PHP Version %1$s', + 'hasMinPhpVersion_DESC' => '
Das Modul erfordert eine PHP-Version die nicht kleiner ist '. + 'als %1$s.
'. + '
Die passende PHP-Version '. + 'ist auf Ihrem Server aktiv.
'. + '
Das Modul kann in '. + 'PHP-Versionen kleiner als %1$s nicht ausgeführt werden. Fragen Sie Ihren Serverprovider '. + 'nach der Anpassung der PHP-Installation oder kontaktieren Sie uns für eine alternative '. + 'Modulversion.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMaxPhpVersion' => 'maximal PHP Version %1$s', + 'hasMaxPhpVersion_DESC' => '
Das Modul erfordert eine PHP-Version die nicht höher ist '. + 'als %1$s.
'. + '
Die passende PHP-Version '. + 'ist auf Ihrem Server aktiv.
'. + '
Das Modul kann in '. + 'PHP-Versionen höher als %1$s nicht ausgeführt werden. Fragen Sie Ihren Serverprovider '. + 'nach der Anpassung der PHP-Installation oder kontaktieren Sie uns für eine alternative '. + 'Modulversion.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasFromToPhpVersion' => 'Server verwendet PHP Version zwischen %1$s und %2$s', + 'hasFromToPhpVersion_DESC' => '
Das Modul erfordert eine PHP-Version zwischen %1$s und %2$s.
'. + '
Die passende PHP-Version '. + 'ist auf Ihrem Server aktiv.
'. + '
Das Modul kann '. + 'außerhalb der PHP-Versionen nicht ausgeführt werden. Fragen Sie Ihren Serverprovider '. + 'nach der Anpassung der PHP-Installation oder kontaktieren Sie uns für eine alternative '. + 'Modulversion.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasExtension' => '%1$s-Erweiterung verfügbar', + 'hasExtension_DESC' => '
Das Modul erfordert die %1$s-Servererweiterung.
'. + '
Die %1$s-Erweiterung ist '. + 'auf Ihrem Server vorhanden.
'. + '
Das Modul kann ohne die '. + '%1$s-Erweiterung nicht ausgeführt werden. Fragen Sie bei Ihrem Serverprovider nach der '. + 'Installation dieser Erweiterung.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMinCurlVersion' => 'mindestens cURL Version %1$s', + 'hasMinCurlVersion_DESC' => '
Das Modul benötigt cURL ab der Version %1$s.
'. + '
cURL ist in '. + 'passender Version installiert.
'. + '
cURL ist nicht oder in einer '. + 'älteren Version installiert. Fragen Sie Ihren Serverprovider nach einer passenden '. + 'cURL-Version.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMinOpenSSLVersion' => 'mindestens OpenSSL Version %1$s', + 'hasMinOpenSSLVersion_DESC' => '
Das Modul benötigt OpenSSL ab der Version %1$s.
'. + '
OpenSSL ist in '. + 'passender Version installiert.
'. + '
OpenSSL ist nicht oder in '. + 'einer älteren Version installiert. Fragen Sie Ihren Serverprovider nach einer passenden '. + 'OpenSSL-Version.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMinShopVersion' => 'mindestens Shop Version %1$s', + 'hasMinShopVersion_DESC' => '
Das Modul ist ab Shopversion %1$s freigegeben.
'. + '
Die Shopsoftware ist in '. + 'passender Version installiert.
'. + '
Das Modul kann in dieser '. + 'Version der Shopsoftware nicht installiert werden. Fragen Sie nach einer früheren '. + 'Modulversion, die für Ihre Shopversion getestet wurde.
'. + '
Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMaxShopVersion' => 'maximal Shop Version %1$s', + 'hasMaxShopVersion_DESC' => '
Das Modul ist bis zur Shopversion %1$s freigegeben.
'. + '
Die Shopsoftware ist in '. + 'passender Version installiert.
'. + '
Wir können nicht '. + 'garantieren, dass das Modul in Ihrer Shopversion funktioniert. Fragen Sie nach einer aktuelleren '. + 'Modulversion, die für Ihren Shop passt.
'. + '
Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMinModCfgVersion' => '%2$s (ModCfg-Eintrag "%1$s") mindestens in Version %3$s', + 'hasMinModCfgVersion_DESC' => '
Das Modul benötigt die Zusatzsoftware "%2$s" mindestens in '. + 'Version %3$s
'. + '
Die Software ist in '. + 'passender Version installiert.
'. + '
Die Zusatzsoftware ist '. + 'möglicherweise gar nicht oder in falscher Version installiert. Bitte installieren Sie die '. + 'Zusatzsoftware, bevor Sie diese Installation fortsetzen.
'. + '
Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMaxModCfgVersion' => '%2$s (ModCfg-Eintrag "%1$s") maximal in Version %3$s', + 'hasMaxModCfgVersion_DESC' => '
Das Modul benötigt die Zusatzsoftware "%2$s" höchstens '. + 'in Version %3$s
'. + '
Die Software ist in '. + 'passender Version installiert.
'. + '
Die Zusatzsoftware ist '. + 'möglicherweise gar nicht oder in falscher Version installiert. Bitte installieren Sie die '. + 'Zusatzsoftware, bevor Sie diese Installation fortsetzen.
'. + '
Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'requireNewLicence' => 'bisheriger Lizenzschlüssel kann verwendet werden', + 'requireNewLicence_DESC' => '
Diese Prüfung versucht zu ermitteln, ob Sie für den '. + 'Einsatz dieses Moduls einen aktuellen Lizenzschlüssel benötigen:
'. + '
Sie haben für dieses '. + 'Modul einen Lizenzschlüssel hinterlegt, der wahrscheinlich auch für die neue '. + 'Modulversion geeignet ist.
'. + '
Sie benötigen '. + 'für dieses Modul wahrscheinlich einen neuen Lizenzschlüssel. Haben Sie diesen schon '. + 'vorliegen, führen Sie die Installation aus und tragen den Lizenzschlüssel dann im '. + 'Adminbereich Ihres Shops ein. Ansonsten können Sie den Lizenzschlüssel in unserem Shop '. + 'www.oxidmodule.com erwerben oder '. + 'sich ebenfalls im Adminbereich Ihres Shops einen kostenfreien Test-Lizenzschlüssel '. + 'erstellen.
'. + '
Für Details wenden Sie sich bitte an '. + 'buchhaltung@shopmodule.com.
', + 'hasModCfg' => 'Modul-'. + 'Connector installiert', + 'hasModCfg_DESC' => '
Das Modul erfordert zwingend den D3 Modul-Connector.
'. + '
Der Modul-Connector ist '. + 'installiert.
'. + '
Das Modul kann ohne den Modul-'. + 'Connector nicht ausgeführt werden. Bitte laden Sie sich diesen kostenfrei aus unserem Shop '. + 'unter www.oxidmodule.com/'. + 'connector/ und installieren diesen vorab.
'. + '
Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'isShopEdition' => 'ist Shopedition %1$s', + 'isShopEdition_DESC' => '
Das Modul erfordert eine dieser Shopeditionen: %1$s
'. + '
Der Shop ist in der '. + 'passenden Edition installiert.
'. + '
Das Modul kann in Ihrer '. + 'Shopedition nicht ausgeführt werden. Bitte fragen Sie nach einer Modulversion für Ihre '. + 'Shopedition.
'. + '
Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) oder Zend Guard Loader (PHP 5.3, 5.4, 5.5, 5.6) '. + 'installiert (auf passendes Zend-Installationspaket achten!)', + 'hasZendLoaderOptimizer_DESC' => '
Das Modul erfordert (je nach PHP-Version) den Zend Optimizer '. + 'bzw. den Zend Guard Loader. Achten Sie darauf, ein für den verfügbaren Decoder '. + 'erstelltes Installationspaket zu verwenden.
'. + '
Der passende Decoder ist '. + 'auf Ihrem Server installiert.
'. + '
Der passende Decoder ist '. + 'auf Ihrem Server installiert. Es ist eine zusätzliche Erweiterungen (Zend OPcache) installiert, '. + 'die im Zusammenspiel mit dem Decoder Fehler verursachen kann.
'. + '
Das Modul kann ohne den '. + 'passenden Decoder nicht ausgeführt werden. Fragen Sie Ihren Serverprovider nach der '. + 'Installation des passenden Zend-Decoders.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasIonCubeLoader' => 'ionCube Loader installiert (auf passendes ionCube-Installationspaket achten!)', + 'hasIonCubeLoader_DESC' => '
Das Modul erfordert den ionCube Loader. Achten Sie darauf, ein '. + 'für den verfügbaren Decoder erstelltes Installationspaket zu verwenden.
'. + '
Der passende Decoder ist '. + 'auf Ihrem Server installiert.
'. + '
Das Modul kann ohne den '. + 'passenden Decoder nicht ausgeführt werden. Fragen Sie Ihren Serverprovider nach der '. + 'Installation des ionCube Loaders.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasIonCubeOrZendLoader' => 'ionCube Loader oder Zend Optimizer / Guard Loader installiert '. + '(%1$s)', + 'hasIonCubeOrZendLoader_DESC' => '
Das Modul erfordert den ionCube Loader oder den Zend '. + 'Optimizer / Guard Loader. Achten Sie darauf, ein für die verfügbaren Decoder erstelltes '. + 'Installationspaket zu verwenden (%1$s).
'. + '
Ein passender Decoder ist '. + 'auf Ihrem Server installiert.
'. + '
Ein passender Decoder ist '. + 'auf Ihrem Server installiert. Es ist jedoch ein Abbruchgrund festgestellt worden, der zu Fehlern '. + 'führen kann. Details entnehmen Sie bitte den folgenden Hinweisen.
'. + '
Das Modul kann ohne einen '. + 'passenden Decoder nicht ausgeführt werden. Fragen Sie Ihren Serverprovider nach der '. + 'Installation des ionCube Loaders oder des Zend Optimizers / Guard Loaders.
'. + '%2$s'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'RemoteVersionDiff' => ' (Remotescript hat abweichende Version oder ist nicht '. + 'prüfbar, Ergebnis mglw. nicht sicher)', + 'globalSuccess' => 'Die technische Prüfung war erfolgreich. Sie können das Modul '. + 'installieren.*

', + 'globalNotSuccess' => 'Die technische Prüfung war nicht erfolgreich. Bitte kontrollieren '. + 'Sie die rot oder orange markierten Bedingungen.

', + 'deleteFile1' => 'Löschen Sie diese Datei nach der Verwendung bitte unbedingt wieder von '. + 'Ihrem Server! Klicken Sie hier, um diese Datei zu löschen.', + 'showPhpInfo' => 'PHPinfo anzeigen', + 'dependentoffurther' => '* abhängig von ungeprüften Voraussetzungen', + 'oneandonedescription' => '** geprüft wurde das Ausführungsverzeichnis, '. + 'providerabhängig müssen Unterverzeichnisse separat geprüft werden (z.B. bei 1&1)', + 'or' => ' oder ', + 'toggleswitch' => 'Klick für Details zur Prüfung', + 'unableDeleteFile' => 'Datei konnte nicht gelöscht werden. Bitte löschen Sie diese '. + 'manuell.', + 'goodBye' => 'Auf Wiedersehen.', + 'unableExecuteDirectoryIterator' => 'Es können nicht alle Unterverzeichnisse auf weitere Prüfungen '. + 'kontrolliert werden. (%1$s)', + 'availableDecoder' => 'verfügbar: %1$s - auf passendes Installationspaket achten!', + 'noDecoderAvailable' => 'kein verwendbarer Decoder verfügbar', + 'availableDecoder_hasZendLoaderOptimizer' => 'Zend Guard Loader / Optimizer', + 'notAvailableDecoder_hasZendLoaderOptimizer' => '
  • Der Zend Guard Loader / Optimizer ist nicht '. + 'installiert.
  • ', + 'decoderIssue_hasZendLoaderOptimizer' => '
  • Der Zend-Decoder ist '. + 'auf Ihrem Server installiert. Es ist jedoch eine zusätzliche Erweiterungen (Zend OPcache) '. + 'installiert, die im Zusammenspiel mit dem Zend-Decoder Fehler verursachen kann.
  • ', + 'availableDecoder_hasIonCubeLoader' => 'ionCube Loader', + 'notAvailableDecoder_hasIonCubeLoader' => '
  • Der ionCube Loader ist nicht installiert.
  • ', + 'decoderIssue_hasIonCubeLoader' => '
  • Es wurde ein nicht definierter Abbruchgrund bei der '. + 'Verwendung des ionCube-Decoders festgestellt.
  • ', + ), + 'en' => array( + 'RequCheck' => 'Requirement check', + 'ExecNotice' => 'Execute this check script in the root directory of your shop. In this '. + 'case only checks can executed succesfully.', + 'RequSucc' => 'condition is fulfilled', + 'RequNotSucc' => 'condition isn\'t fulfilled', + 'RequUnknown' => 'condition unclear, see notes in help text', + 'RequNotCheckable' => 'condition isn\'t checkable', + 'hasMinPhpVersion' => 'at least PHP version %1$s', + 'hasMinPhpVersion_DESC' => '
    The module requires a PHP version at least %1$s
    '. + '
    The appropriate version of PHP '. + 'is activated on your server.
    '. + '
    The module can not be executed within '. + 'the actived PHP version. Ask your server provider for for the adaption of your PHP installation or '. + 'contact us for another module version.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasMaxPhpVersion' => 'not more than PHP version %1$s', + 'hasMaxPhpVersion_DESC' => '
    The module requires a PHP version not more than %1$s
    '. + '
    The appropriate version of PHP '. + 'is activated on your server.
    '. + '
    The module can not be executed within '. + 'the actived PHP version. Ask your server provider for for the adaption of your PHP installation or '. + 'contact us for another module version.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasFromToPhpVersion' => 'server use PHP version between %1$s and %2$s', + 'hasFromToPhpVersion_DESC'=> '
    The module requires a PHP version between %1$s and %2$s
    '. + '
    The appropriate version of PHP '. + 'is activated on your server.
    '. + '
    The module can not be executed within '. + 'the actived PHP version. Ask your server provider for for the adaption of your PHP installation or '. + 'contact us for another module version.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasExtension' => '%1$s extension is available', + 'hasExtension_DESC' => '
    The module requires the %1$s server extension.
    '. + '
    The %1$s server extension is '. + 'available on your server.
    '. + '
    The module can not be executed '. + 'without the %1$s extension. Ask your server provider for installing this extension.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasMinCurlVersion' => 'at least cURL version %1$s', + 'hasMinCurlVersion_DESC' => '
    The module requires at least cURL version %1$s.
    '. + '
    cURL is available '. + 'in a compatible version.
    '. + '
    cURL is not installed or '. + 'installed in an older version. Ask your server provider for an appropriate version.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasMinOpenSSLVersion' => 'at least OpenSSL version %1$s', + 'hasMinOpenSSLVersion_DESC' => '
    The module requires at least OpenSSL version %1$s.
    '. + '
    OpenSSL is availabe '. + 'in a compatible version.
    '. + '
    OpenSSL is not installed or '. + 'installed in an older version. Ask your server provider for an appropriate version.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasMinShopVersion' => 'at least shop version %1$s', + 'hasMinShopVersion_DESC' => '
    The module is released to shop version %1$s
    '. + '
    The shop software is installed '. + 'in a compatible version.
    '. + '
    We can not guarantee, '. + 'that this module works properly in your shop version. Please ask for a matching module version.
    '. + '
    If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasMaxShopVersion' => 'not more than shop version %1$s', + 'hasMaxShopVersion_DESC' => '
    The module is released to shop version %1$s
    '. + '
    The shop software is installed '. + 'in a compatible version.
    '. + '
    We can not guarantee, '. + 'that this module works properly in your shop version. Please ask for a matching module version.
    '. + '
    If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasMinModCfgVersion' => '%2$s (ModCfg item "%1$s") at least in version %3$s', + 'hasMinModCfgVersion_DESC' => '
    The module requires additional software "%2$s" at least '. + 'in version %3$s
    '. + '
    The software is installed '. + 'in a compatible version.
    '. + '
    The additional software is '. + 'not installed or in wrong version available. Please install the additional software before '. + 'proceeding this installation.
    '. + '
    If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasMaxModCfgVersion' => '%2$s (ModCfg item "%1$s") not more than in version %3$s', + 'hasMaxModCfgVersion_DESC' => '
    The module requires additional software "%2$s" not more than '. + 'in version %3$s
    '. + '
    The software is installed '. + 'in a compatible version.
    '. + '
    The additional software is '. + 'be installed or in wrong version available. Please install the additional software before '. + 'proceeding this installation.
    '. + '
    If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'requireNewLicence' => 'former licence key can be used', + 'requireNewLicence_DESC' => '
    This test tries to determine whether you need a new licence key '. + 'for the use of this module
    '. + '
    You have stored a license key '. + 'for this module, which is probably also compatible for the new module version.
    '. + '
    You need likely a new license '. + 'key for this module. Do you have already one, run the installation and then apply the license '. + 'key in the admin panel of your shop. Otherwise, you can purchase it in our shop '. + 'oxidmodule.com or also create a '. + 'free trial license key in the admin panel of your shop.
    '. + '
    If you have any questions, please contact us at '. + 'buchhaltung@shopmodule.com.
    ', + 'hasModCfg' => 'Module '. + 'Connector installed', + 'hasModCfg_DESC' => '
    The module requires necessarily the D3 Module Connector.
    '. + '
    The Module Connector is '. + 'installed.
    '. + '
    The module can not be executed '. + 'without the Module Connector. Please download this free of charge from our shop '. + 'www.oxidmodule.com/'. + 'connector/ and install it beforehand.
    '. + '
    If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'isShopEdition' => 'shop edition is %1$s', + 'isShopEdition_DESC' => '
    The module requires one of these shop editions: %1$s
    '. + '
    The shop is installed '. + 'in the appropriate edition.
    '. + '
    The module can not be executed '. + 'in your shop edition. Please ask for a module version for your shop edition.
    '. + '
    If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) or Zend Guard Loader (PHP 5.3, 5.4, 5.5, 5.6) '. + 'installed (pay attention to the compatible Zend installation package!)', + 'hasZendLoaderOptimizer_DESC' => '
    The module requires (depending on the PHP version) the Zend Guard Optimizer '. + 'or the Zend Guard Loader.
    '. + '
    The appropriate decoder is '. + 'installed on your server.
    '. + '
    The decoder is '. + 'installed on your server. There is an additional installed extension (Zend OPcache), '. + 'which can cause errors in combination with the decoder.
    '. + '
    The decoder isn\'t '. + 'installed on your server. The module can\'t installed or executed. Please contact your server provider.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasIonCubeLoader' => 'ionCube Loader installed (pay attention to the compatible ionCube installation package!)', + 'hasIonCubeLoader_DESC' => '
    The module requires the ionCube Loader.
    '. + '
    The appropriate decoder is '. + 'installed on your server.
    '. + '
    The decoder isn\'t '. + 'installed on your server. The module can\'t installed or executed. Please contact your server provider.
    '. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'hasIonCubeOrZendLoader' => 'ionCube Loader or Zend Optimizer / Guard Loader installed '. + '(%1$s)', + 'hasIonCubeOrZendLoader_DESC' => '
    The module requires the ionCube Loader or the Zend '. + 'Optimizer / Guard Loader. Pay attention to use a compatible installation package (%1$s).
    '. + '
    One of the appropriate '. + 'decoders is installed on your server.
    '. + '
    One of the appropriate '. + 'decoder is installed on your server. An undefined abort reason has been found, which can cause '. + 'to errors. For details, please refer to the following notes.
    '. + '
    None of the decoders is '. + 'installed on your server. The module can\'t installed or executed. Please contact your server provider.
    '. + '%2$s'. + '
    The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories requires adaptation.
    '. + '
    Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
    ', + 'RemoteVersionDiff' => ' (Remote script has different version or isn\'t '. + 'callable, result may not be safe)', + 'globalSuccess' => 'The technical test was successful. Your server is ready for installing '. + 'the module.*

    ', + 'globalNotSuccess' => 'The technical test wasn\'t successfull. Please check the red or orange marked '. + 'conditions.

    ', + 'deleteFile1' => 'Please delete this file after use on your server! Click here, to delete this file.', + 'showPhpInfo' => 'show PHPinfo', + 'dependentoffurther' => '* dependent of further unchecked conditions', + 'oneandonedescription' => '** this check use execution directory only, provider dependend '. + 'subdirectories have to check separately (e.g. at 1&1)', + 'or' => ' or ', + 'toggleswitch' => 'click for details', + 'unableDeleteFile' => 'Unable to delete file. Please delete it manually.', + 'goodBye' => 'Good Bye.', + 'unableExecuteDirectoryIterator' => 'Unable to check subdirectories for further checks. (%1$s)', + 'availableDecoder' => 'available: %1$s - pay attention to the compatible installation package!', + 'noDecoderAvailable' => 'no usable decoder available', + 'availableDecoder_hasZendLoaderOptimizer' => 'Zend Guard Loader / Optimizer', + 'notAvailableDecoder_hasZendLoaderOptimizer' => '
  • Zend Guard Loader / Optimizer isn\'t '. + 'available.
  • ', + 'decoderIssue_hasZendLoaderOptimizer' => '
  • The Zend decoder is '. + 'installed on your server. There is an additional installed extension (Zend OPcache), '. + 'which can cause errors in combination with the decoder.
  • ', + 'availableDecoder_hasIonCubeLoader' => 'ionCube Loader', + 'notAvailableDecoder_hasIonCubeLoader' => '
  • ionCube Loader isn\'t available.
  • ', + 'decoderIssue_hasIonCubeLoader' => '
  • An undefined abort reason has been found when using the '. + 'ionCube decoder.
  • ', + ), + ); + } +} + +/** + * Class requRemote + */ +class requRemote +{ + public $blUseRemote = true; + + public $oModuleData; + + /** + * @param $sModId + * @param $sModVersion + * @param $sShopEdition + * + * @return bool|array + */ + public function getShopEdition($sModId, $sModVersion, $sShopEdition) + { + $sUrl = "moduleversion/"; + $sUrl .= 'modid/' . urlencode($sModId) . '/'; + $sUrl .= 'forcemodversion/' . urlencode($sModVersion) . '/'; + $sUrl .= 'edition/' . urlencode($sShopEdition) . '/'; + + /** @var stdClass $oModuleData */ + $oModuleData = $this->_getRemoteServerData($sUrl); + + if ($oModuleData->status == 'OK' && isset($oModuleData->moduleversion->compatible_release)) { + return explode(',', $oModuleData->moduleversion->compatible_release->shopedition); + } + + return false; + } + + /** + * @param $sModId + * @param $sModVersion + * @param $sShopEdition + * + * @return bool|string + */ + public function getMinShopVersion($sModId, $sModVersion, $sShopEdition) + { + $sUrl = "moduleversion/"; + $sUrl .= 'modid/' . urlencode($sModId) . '/'; + $sUrl .= 'forcemodversion/' . urlencode($sModVersion) . '/'; + $sUrl .= 'edition/' . urlencode($sShopEdition) . '/'; + + /** @var stdClass $oModuleData */ + $oModuleData = $this->_getRemoteServerData($sUrl); + + if ($oModuleData->status == 'OK' && isset($oModuleData->moduleversion->compatible_release)) { + return $this->shortenVersion($oModuleData->moduleversion->compatible_release->fromshopversion); + } + + return false; + } + + /** + * @param $sModId + * @param $sModVersion + * @param $sShopEdition + * + * @return bool|string + */ + public function getMaxShopVersion($sModId, $sModVersion, $sShopEdition) + { + $sUrl = "moduleversion/"; + $sUrl .= 'modid/' . urlencode($sModId) . '/'; + $sUrl .= 'forcemodversion/' . urlencode($sModVersion) . '/'; + $sUrl .= 'edition/' . urlencode($sShopEdition) . '/'; + + /** @var stdClass $oModuleData */ + $oModuleData = $this->_getRemoteServerData($sUrl); + + if ($oModuleData->status == 'OK' && isset($oModuleData->moduleversion->compatible_release)) { + return $this->shortenVersion($oModuleData->moduleversion->compatible_release->toshopversion); + } + + return false; + } + + /** + * @param $sUrl + * + * @return stdClass + */ + protected function _getRemoteServerData($sUrl) + { + if (isset($this->oModuleData[$sUrl])) { + return $this->oModuleData[$sUrl]; + } + + $oFailureData = new stdClass(); + $oFailureData->status = 'NOK'; + + if (false === $this->blUseRemote) { + return $oFailureData; + } + $sHost = "http://update.oxidmodule.com"; + $sData = $this->curlConnect($sHost . '/serialized/' . $sUrl); + $oData = unserialize($sData); + + if (false == $oData) { + return $oFailureData; + } + $this->oModuleData[$sUrl] = $oData; + + return $this->oModuleData[$sUrl]; + } + + /** + * @param $sFilePath + * + * @return string + */ + public function curlConnect($sFilePath) + { + $sContent = ''; + + if (($ch = $this->_hasCurl())) { + $sCurl_URL = preg_replace('@^((http|https)://)@', '', $sFilePath); + curl_setopt($ch, CURLOPT_URL, $sCurl_URL); + if ($_SERVER['HTTP_USER_AGENT']) { + curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); + } + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_TIMEOUT, 1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); + curl_setopt($ch, CURLOPT_POST, 0); + $sContent = curl_exec($ch); + } + + return $sContent; + } + + /** + * @return null|resource + */ + protected function _hasCurl() + { + if (extension_loaded('curl') + && function_exists('curl_init') + && function_exists('curl_exec') + ) { + return curl_init(); + } + + return null; + } + + /** + * @param $sVersion + * + * @return string + */ + public function shortenVersion($sVersion) + { + $aVersion = explode('.', $sVersion); + + unset($aVersion[3]); + + return implode('.', $aVersion); + } +} + +/** + * Class requTests + * contains test functions + */ +class requTests +{ + public $oBase; + public $oDb; + public $oConfig; + public $blGlobalResult = false; + + /** + * @param requCheck $oCheckInstance + * @param requConfig $oConfig + * @param $oDb + * @param requRemote $oRemote + */ + public function __construct(requCheck $oCheckInstance, requConfig $oConfig, $oDb, requRemote $oRemote) + { + $this->oBase = $oCheckInstance; + $this->oConfig = $oConfig; + $this->oDb = $oDb; + $this->oRemote = $oRemote; + } + + /** + * @return requCheck + */ + public function getBase() + { + return $this->oBase; + } + + public function getDb() + { + return $this->oDb; + } + + /** + * @return string + */ + public function getBasePath() + { + return $this->getBase()->getBasePath(); + } + + /** + * @param bool $blResult + */ + public function setGlobalResult($blResult) + { + $this->getBase()->blGlobalResult = $blResult; + } + + /** + * @param $sMethodName + * @param null $aArguments + * + * @return array + */ + public function checkInSubDirs($sMethodName, $aArguments = null) + { + return $this->getBase()->checkInSubDirs($sMethodName, $aArguments); + } + + /** + * @param $aConfiguration + * + * @return array + */ + public function hasMinPhpVersion(&$aConfiguration) + { + $aResult = array($this->getBasePath() => false); + + if (version_compare(phpversion(), $aConfiguration['aParams']['version'], '>=')) { + $aResult[$this->getBasePath()] = true; + } + + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__, $aConfiguration['aParams'])); + + return $aResult; + } + + /** + * @param $aConfiguration + * + * @return array + */ + public function hasFromToPhpVersion(&$aConfiguration) + { + $aResult = array($this->getBasePath() => false); + + if ((version_compare(phpversion(), $aConfiguration['aParams']['from'], '>=')) && + (version_compare(phpversion(), $aConfiguration['aParams']['to'], '<')) + ) { + $aResult[$this->getBasePath()] = true; + } + + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__, $aConfiguration['aParams'])); + + return $aResult; + } + + /** + * @param $aConfiguration + * + * @return array + */ + public function hasMaxPhpVersion(&$aConfiguration) + { + $aResult = array($this->getBasePath() => false); + + if (version_compare(phpversion(), $aConfiguration['aParams']['version'], '<=')) { + $aResult[$this->getBasePath()] = true; + } + + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__, $aConfiguration['aParams'])); + + return $aResult; + } + + /** + * @param $aConfiguration + * + * @return array + */ + public function hasExtension(&$aConfiguration) + { + $aResult = array($this->getBasePath() => false); + + if (extension_loaded($aConfiguration['aParams']['type'])) { + $aResult[$this->getBasePath()] = true; + } + + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__, $aConfiguration['aParams'])); + + return $aResult; + } + + /** + * @param $aConfiguration + * @return array + */ + public function hasMinCurlVersion(&$aConfiguration) + { + $aCurlVersion = curl_version(); + $aResult = array( + $this->getBasePath() => version_compare($aCurlVersion['version'], $aConfiguration['aParams']['version'], '>=') + ); + + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__, $aConfiguration['aParams'])); + + return $aResult; + } + + /** + * @param $aConfiguration + * @return array + */ + public function hasMinOpenSSLVersion(&$aConfiguration) + { + $aResult = array( + $this->getBasePath() => version_compare($this->get_openssl_version_number(true), $aConfiguration['aParams']['version'], '>=') + ); + + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__, $aConfiguration['aParams'])); + + return $aResult; + } + + /** + * @param bool $patch_as_number + * @param null $openssl_version_number + * @return bool|string + */ + protected function get_openssl_version_number($patch_as_number=false,$openssl_version_number=null) { + if (is_null($openssl_version_number)) $openssl_version_number = OPENSSL_VERSION_NUMBER; + $openssl_numeric_identifier = str_pad((string)dechex($openssl_version_number),8,'0',STR_PAD_LEFT); + + $openssl_version_parsed = array(); + $preg = '/(?[[:xdigit:]])(?[[:xdigit:]][[:xdigit:]])(?[[:xdigit:]][[:xdigit:]])'; + $preg.= '(?[[:xdigit:]][[:xdigit:]])(?[[:xdigit:]])/'; + preg_match_all($preg, $openssl_numeric_identifier, $openssl_version_parsed); + $openssl_version = false; + if (!empty($openssl_version_parsed)) { + $alphabet = array(1=>'a',2=>'b',3=>'c',4=>'d',5=>'e',6=>'f',7=>'g',8=>'h',9=>'i',10=>'j',11=>'k', + 12=>'l',13=>'m',14=>'n',15=>'o',16=>'p',17=>'q',18=>'r',19=>'s',20=>'t',21=>'u', + 22=>'v',23=>'w',24=>'x',25=>'y',26=>'z'); + $openssl_version = intval($openssl_version_parsed['major'][0]).'.'; + $openssl_version.= intval($openssl_version_parsed['minor'][0]).'.'; + $openssl_version.= intval($openssl_version_parsed['fix'][0]); + $patchlevel_dec = hexdec($openssl_version_parsed['patch'][0]); + if (!$patch_as_number && array_key_exists($patchlevel_dec, $alphabet)) { + $openssl_version.= $alphabet[$patchlevel_dec]; // ideal for text comparison + } + else { + $openssl_version.= '.'.$patchlevel_dec; // ideal for version_compare + } + } + return $openssl_version; + } + + /** + * @param $aConfiguration + * + * @return bool + */ + public function hasMinShopVersion(&$aConfiguration) + { + if ($this->getDb()) { + $sField = 'oxversion'; + $sSelect = "SELECT " . $sField . " FROM oxshops WHERE 1 ORDER BY oxversion ASC LIMIT 1"; + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); + + $oEditionResult = $this->_getShopEdition(); + $sEdition = strtoupper($oEditionResult->oxedition); + + $mMinRemoteVersion = $this->oRemote->getMinShopVersion( + $this->oConfig->sModId, + $this->oConfig->sModVersion, + $sEdition + ); + + if ($mMinRemoteVersion) { + $aConfiguration['aParams'] = array('version' => $mMinRemoteVersion); + } else { + $aConfiguration['aParams'] = array('version' => $aConfiguration['aParams'][$sEdition]); + } + + if (version_compare($oResult->oxversion, $aConfiguration['aParams']['version'], '>=')) { + return true; + } + } + + return false; + } + + /** + * @param $aConfiguration + * + * @return bool + */ + public function hasMaxShopVersion(&$aConfiguration) + { + if ($this->getDb()) { + $sField = 'oxversion'; + $sSelect = "SELECT " . $sField . " FROM oxshops WHERE 1 ORDER BY oxversion DESC LIMIT 1"; + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); + + $oEditionResult = $this->_getShopEdition(); + $sEdition = strtoupper($oEditionResult->oxedition); + + $mMaxRemoteVersion = $this->oRemote->getMaxShopVersion( + $this->oConfig->sModId, + $this->oConfig->sModVersion, + $sEdition + ); + + if ($mMaxRemoteVersion) { + $aConfiguration['aParams'] = array('version' => $mMaxRemoteVersion); + } else { + $aConfiguration['aParams'] = array('version' => $aConfiguration['aParams'][$sEdition]); + } + + if (version_compare($oResult->oxversion, $aConfiguration['aParams']['version'], '<=')) { + return true; + } + } + + return false; + } + + /** + * @param $aConfiguration + * + * @return bool + */ + public function isShopEdition(&$aConfiguration) + { + if ($this->getDb()) { + $oResult = $this->_getShopEdition(); + + $mRemoteShopEditions = $this->oRemote->getShopEdition( + $this->oConfig->sModId, + $this->oConfig->sModVersion, + $oResult->oxedition + ); + + if (is_array($mRemoteShopEditions)) { + $aConfiguration['aParams'][0] = $mRemoteShopEditions; + } + + if (in_array(strtoupper($oResult->oxedition), $aConfiguration['aParams'][0])) { + $aConfiguration['aParams'][0] = strtoupper($oResult->oxedition); + return true; + } + } + + return false; + } + + /** + * @return bool|object|stdClass + */ + protected function _getShopEdition() + { + if ($this->getDb()) { + $sField = 'oxedition'; + $sSelect = "SELECT " . $sField . " FROM oxshops WHERE 1 LIMIT 1"; + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); + + return $oResult; + } + + return false; + } + + /** + * @return bool + */ + public function hasModCfg() + { + if ($this->getDb()) { + $sModId = 'd3modcfg_lib'; + $sSelect = "SELECT 1 as result FROM d3_cfg_mod WHERE oxmodid = '" . $sModId . "' LIMIT 1"; + $rResult = mysqli_query($this->getDb(), $sSelect); + if (is_object($rResult)) { + $oResult = mysqli_fetch_object($rResult); + + if ((bool) $oResult->result == true) { + return true; + } + } + } + + return false; + } + + /** + * @param $aConfiguration + * + * @return bool|int + */ + public function hasMinModCfgVersion(&$aConfiguration) + { + if ($this->getDb()) { + $sSelect = "SELECT IF ". + "(INET_ATON(oxversion) >= INET_ATON('" . $aConfiguration['aParams']['version'] . "'), 1, 0) AS result ". + "FROM d3_cfg_mod ". + "WHERE + oxmodid = '" . $aConfiguration['aParams']['id'] . "' AND + oxversion != 'basic' + ORDER BY oxversion ASC LIMIT 1"; + + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); + $blReturn = (bool)$oResult->result; + + if (false == $blReturn) { + $this->setGlobalResult(false); + } + + return $blReturn; + } + + $this->setGlobalResult(false); + + return false; + } + + /** + * @param $aConfiguration + * + * @return bool|int + */ + public function hasMaxModCfgVersion(&$aConfiguration) + { + if ($this->getDb()) { + $sSelect = "SELECT + IF (INET_ATON(oxversion) <= INET_ATON('" . $aConfiguration['aParams']['version'] . "'), 1, 0) AS result + FROM d3_cfg_mod WHERE + oxmodid = '" . $aConfiguration['aParams']['id'] . "' AND + oxversion != 'basic' + ORDER BY oxversion ASC LIMIT 1"; + + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); + $blResult = (bool)$oResult->result; + + if (false == $blResult) { + $this->setGlobalResult(false); + } + + return $blResult; + } + + $this->setGlobalResult(false); + + return false; + } + + /** + * @param $aConfiguration + * + * @return bool + */ + public function requireNewLicence(&$aConfiguration) + { + if ($this->getDb()) { + $sSelect = "SELECT + oxversion as oxversion + FROM d3_cfg_mod WHERE + oxmodid = '" . $this->oConfig->sModId . "' + ORDER BY oxversion ASC LIMIT 1"; + + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); + + if (isset($oResult) + && is_object($oResult) + && isset($oResult->oxversion) + && isset($aConfiguration['aParams']['checkVersion']) + ) { + $sInstalledVersion = $this->_getConvertedVersion( + $oResult->oxversion, + $aConfiguration['aParams']['remainingDigits'] + ); + $sNewVersion = $this->_getConvertedVersion( + $this->oConfig->sModVersion, + $aConfiguration['aParams']['remainingDigits'] + ); + if (version_compare($sInstalledVersion, $sNewVersion, '>=')) { + return true; + } + } + } + + return 'notice'; + } + + /** + * cut not used version digits + * @param string $sVersion + * @param int $iRemainingDigits + * + * @return string + */ + protected function _getConvertedVersion($sVersion, $iRemainingDigits) + { + $aInstalledVersion = explode('.', $sVersion); + return implode('.', array_slice($aInstalledVersion, 0, $iRemainingDigits)); + } + + /** + * @return array + */ + public function hasZendLoaderOptimizer(&$aConfiguration, $blCheckBasePathOnly = false) + { + $aResult = array($this->getBasePath() => false); + + if ((version_compare(phpversion(), '5.2.0', '>=') + && version_compare(phpversion(), '5.2.900', '<') + && function_exists('zend_optimizer_version') + ) || ( + version_compare(phpversion(), '5.3.0', '>=') + && version_compare(phpversion(), '5.6.900', '<') + && function_exists('zend_loader_version') + )) { + if (function_exists('opcache_get_status') + && ($aOpCacheStatus = opcache_get_status()) + && $aOpCacheStatus['opcache_enabled'] + ) { + $aResult[$this->getBasePath()] = null; + } else { + $aResult[$this->getBasePath()] = true; + } + } + + if ($blCheckBasePathOnly == false) { + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__)); + } + + return $aResult; + } + + /** + * @return array + */ + public function hasIonCubeLoader(&$aConfiguration, $blCheckBasePathOnly = false) + { + $aResult = array($this->getBasePath() => false); + + if (function_exists('ioncube_loader_version')) { + $aResult[$this->getBasePath()] = true; + } + + if ($blCheckBasePathOnly == false) { + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__)); + } + + return $aResult; + } + + /** + * @return array + */ + public function hasIonCubeOrZendLoader(&$aConfiguration) + { + $oLayout = $this->getBase()->oLayout; + + $aDecoderTexts = array(); + $aDecoderErrorTexts = array(); + foreach (array('hasZendLoaderOptimizer', 'hasIonCubeLoader') as $sDecoderCheck) { + $aReturn = call_user_func_array(array($this, $sDecoderCheck), array($aConfiguration, true)); + if ($aReturn[$this->getBasePath()]) { + $aDecoderTexts[$sDecoderCheck] = $oLayout->translate('availableDecoder_'.$sDecoderCheck); + } elseif ($aReturn[$this->getBasePath()] === null) { + $aDecoderErrorTexts[$sDecoderCheck] = $oLayout->translate('decoderIssue_'.$sDecoderCheck); + } else { + $aDecoderErrorTexts[$sDecoderCheck] = $oLayout->translate('notAvailableDecoder_'.$sDecoderCheck); + } + } + + $sDecoderText = count($aDecoderTexts) ? + sprintf($oLayout->translate('availableDecoder'), implode(' + ', $aDecoderTexts)) : + $oLayout->translate('noDecoderAvailable'); + $aConfiguration['aParams'][1] = $sDecoderText; + + $sDecoderErrorText = count($aDecoderErrorTexts) ? + '
      '.implode('', $aDecoderErrorTexts).'
    ' : + ''; + $aConfiguration['aParams'][2] = $sDecoderErrorText; + + $aZendLoaderResults = $this->hasZendLoaderOptimizer($aConfiguration); + $aIonCubeLoaderResults = $this->hasIonCubeLoader($aConfiguration); + + $aResult = array(); + foreach (array_keys($aZendLoaderResults) as $sPath) { + // transfer meta data + if (strstr($sPath, '@@')) { + $aResult[$sPath] = $aZendLoaderResults[$sPath]; + } elseif ($aIonCubeLoaderResults[$sPath] || $aZendLoaderResults[$sPath]) { + $aResult[$sPath] = true; + } elseif ($aIonCubeLoaderResults[$sPath] === null || $aZendLoaderResults[$sPath] === null) { + $aResult[$sPath] = null; + } else { + $aResult[$sPath] = false; + } + } + + return $aResult; + } +} + +/** + * Class requTransformation + */ +class requTransformation +{ + public $oCheck; + + /** + * @param requCheck $oCheck + */ + public function __construct(requCheck $oCheck) + { + $this->oCheck = $oCheck; + } + + /** + * @param $aCheckList + */ + public function transformCheckList($aCheckList) + { + $this->_removeDeprecatedLibs($aCheckList['hasMinModCfgVersion']); + $this->_removeDeprecatedLibs($aCheckList['hasMaxModCfgVersion']); + + return $aCheckList; + } + + /** + * @param array $aCheck + */ + protected function _removeDeprecatedLibs(&$aCheck) + { + $blDelOldLibs = false; + $sCheckVersion = 0; + + if (is_array($aCheck)) { + $sSelect = "SELECT oxversion as result ". + "FROM d3_cfg_mod ". + "WHERE oxmodid = 'd3modcfg_lib' LIMIT 1"; + $rResult = mysqli_query($this->oCheck->getDb(), $sSelect); + + if (is_object($rResult)) { + $oResult = mysqli_fetch_object($rResult); + if ($oResult->result) { + $sCheckVersion = $oResult->result; + } + } + + foreach ($aCheck as $aModCfgCheck) { + if (isset($aModCfgCheck['aParams']['id']) && + strtolower($aModCfgCheck['aParams']['id']) == 'd3modcfg_lib' && + version_compare($sCheckVersion, '4.0.0.0', '>=') + ) { + $blDelOldLibs = true; + } + } + + reset($aCheck); + + if ($blDelOldLibs) { + $aOldLibs = array('d3install_lib', 'd3log_lib', 'd3clrtmp_lib'); + foreach ($aCheck as $sKey => $aModCfgCheck) { + if (isset($aModCfgCheck['aParams']['id']) && + in_array(strtolower($aModCfgCheck['aParams']['id']), $aOldLibs) + ) { + unset($aCheck[$sKey]); + } + } + } + } + } +} + +/** + * @param $mVar + */ +function dumpvar($mVar) +{ + echo "
    ";
    +    print_r($mVar);
    +    echo "
    "; +} + +$oRequCheck = new requcheck; +if (isset($_REQUEST['fnc']) && $_REQUEST['fnc']) { + $oRequCheck->{$_REQUEST['fnc']}(); +} else { + $oRequCheck->startCheck(); +} diff --git a/docs/Precheck/modules/d3/extsearch/Application/translations/de/d3precheckinfolder.php b/docs/Precheck/modules/d3/extsearch/Application/translations/de/d3precheckinfolder.php index 41cb36b..6b60bcd 100644 --- a/docs/Precheck/modules/d3/extsearch/Application/translations/de/d3precheckinfolder.php +++ b/docs/Precheck/modules/d3/extsearch/Application/translations/de/d3precheckinfolder.php @@ -1,75 +1,146 @@ -1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); -?> -HR+cPu/LIlHlTa/yTXpVr/KdSvs5yeWOn+J4wRcu11iVtQqCgpTWM0iQQYc+jPn6/RP2OcsqjJ4J -/Z8KVf4/TGfD8rap3CPGptlApeNyTFwgo8jNScSvoFfT+cs8ei/9Id42CJvmYF5St1GPvRPcco9n -rylz6JN9DAVly6ieGkGaCa6ge2maMc6GNa81hiX0AVOsVG9lIN282b7ME1geb8I8W9AHpJMGveF4 -BeDgcE529ooDRSNLmlSs6aiVwLxcg9ZYzMZGZ4CotjeBfHY4dfrf3JCBpfbdyLQdbeugRsub+LtD -+XnDWSrwm95CNxqVFYQN31kc/YCWcIVwjkFnWOKN+FdMaLnKkFOCTXl6yVSkX0xNUS53Ut4HkVOV -k7kOC+O0Umgofg0xDUONbT/ubbEzPE7B19ETlQXrjt9rc6thwAUIh7q5xYqX0WNqhc58xdmWNdgq -hV4svtl+QPRKO6ER7DWJT4p4COr/S7ri8cLNu4uh8el5ZHKA5HozIz9nYfjnKfZ7HwwcnTwIs4wP -z7RuDbBkXEr+ebkouK6QZA7GDLrBXUeYghIeL4FD0QhNTji0mDTvpMHoAzpkSOHHY9mpvILXBdZe -UcL+FkaJ79ljA2fxVl15QH8mqFw69DjzRskHElATKTOc3sC7EvzGs6J4/OF4C3kXiGmif42eJS0d -cXe6d227q123atTxXcYJYq/HwFCT3YJG6DbuM6s/rAdaG/bT8/gr86RhxTEvmVA8Uv2YFRk6DaR0 -Hk48uPjN8dvshjZuLsvLVHRq1E4PoHK3fIYFBsg9MNXhLZJLiMTjLEvFLtNZ5EB7S3GP4ZhMzqh8 -6S7e8DeJt5b4ZWtK4IWF0pPzjj8gbyH833QvJRI5QPF8nhaMjioHfh1L8rZTqGoII1IOW6vQoVam -Z0c0vR/MdQFeMSG3NLI8RS/6XtshFy8u38whI8OR+ULcuc75eYCWrB68PzdK5836DA9apDYgi20x -UBSJ9rTwOb9Hww3yEl+ImC3taHsTDultlsRNxOnNHlQtzI3j1Fe5andfi2TkQLCwGbybG47pZrIC -DFYa6EdMAZ5qXx3/P8hgL+4JrgJcdtNzBAs1PiZ4DZVljuTgGNH1IcPO6mMVOx+FmtPmOiW/QBvz -Cao7KeEc63hLxBrPRJXGhkRHOpNxUiDy0OytHLlEkQGpxFPLgLAwfwBbXIXBCQn4a7EMkbEjRfLe -gu577FtaN0EQq7fFZN5MO8tpl7gzGD+rblearaACk8nbEkEJi+Xr4mnRrzU0Qy2vpTnWkrgwnSUb -eIoroJvM9ocG2aF8YT+HrTqv2cqHjLSRjBq+CJuojTxFD6vcuniT3IC/AnlENtwc2w9aVmIVq093 -ry1X55XmjsxdTCD9l261H1ntrRRXTPC54XNM0hUVRLdJgKGo9pMOB0yUIyVIYtn8293GRYRIA3dm -hbByzDdsnh5aHZX6EU2jlDStUgAl9rOtMgK99scuNdAIT+7YS9T88ly7iQtJCH6VT35VXrCSRLAF -7ZcP1VcVMngwsOlz1EcYOnY2IemmxxaEkCDLC9ZK9TUnC9nkeErUE421QHg7YoKFiU0QzHzVLgiZ -8ovPO3+MycsEQNl/knAgLGVPzzyfvWWT1/JVf6FL/pu8gCZ6ab4jgwhXIu9a+jMVj+L3wxlgQQgv -iduWN5rULa9MSDHrBJOU55l/C6RKX97kK27eibqSzr4i4c+4ZObau7zN9o/+eBPDrOPxC4G4+Txl -V8Qf9C+67k8gKeNIvDPCNV8C0vJJfRpu9VMamJidALHnHi5M7KPHfqDQmo0ek3OULxTGNPOT1L3I -G/WPnIaQwC6mxC25jdZKsJAO/wTm/X7+4RRx1xTkhqE9fjydPBtGCc8hwxCR25QUKY5GXz30AnH/ -EpVvl7O6sPf3JITQiPmbpdSCPhJy7jvbHZK/Q/FQ/elbgtRXH6IEj1cyGFog0m0YKJCuUeyPtIeh -pD5zmGq8fQrHKYCu4oNiFOllEx6JpP2kJwlYNheRN6laxMOZAWvLkAua5Uk50qrf0duAvPjRJi5v -Mp9yn/+93jZVfxfQm1R6/6mM5tejTuj/uIXLFLwPw/JS8zTqOSv/0AeHJAAVakk45vIivkvP902f -IfLTGwEh5meQMuDN2B7QQRDPFW/dNsoUn+hSSedFzchPBHTKQwIIQ12gZmku2lmfKrlOaMgRu73l -9UWhsrzS+y0tUv3nWdPC6kaX0qhe2GccBkLEuNtg89R2Z60BvVoEKBCvLzUgnPZXAjG6TxcC3Lje -PkkjXF+6orHUoNRdzgO7T6FLkfX8eAbnlZcxvP/FOs9NFT1omeKuPPzSuzzEKDIVakxQJ8wXEclG -gKLoRMOwm38GXrmLNlJbBl3d4w0/svyJI+BAfwe/jK/RvfTdrbI+VKTDm4KdB/VELbdZIfxsyX2O -dpqQjFB6ZRTVAdckP/6pa+c0xRkqvJfbGkn0Ku8be5UGCDJ4+w7rvzmsgh6PSELvx9Rf5QA3L8Md -aEpbkEzl2bQSti82SGiHvdk9GVwZJrEtndEvb/HAGEiPLxtaSDcVOkwCT06m8Lwla6sIeM8+qkFU -tOW3VOjiqbPqLQ7D9fbVvLHMNOTAHb8kiY5T8WUcvqvG0zS7vJcauobW7H0Xa6FgtFpGLlUA+MrE -mClRHEdHk4FAszVv5vzM0IFQBZ6VpQkCgrwidgyuN/1wIDgfeIL6deiffAMT7oO0bsW1uaL0SaCH -VBuMndb4WGcmGsGhUDpGFO82a0i3+H88Ke8rrpDvpj2w6crWsYrPXtOFqDPyjw/d2RGP9XjMlXq+ -jTg0tuLU0dKUrMOEGd1HZRiU1wpP8aPozPmXAdJVhg2GBZPbVVAMUP32exZaCEM6VK5+MMxRMUNI -1F3cFIsNoRxf/PumMd0sSrqCuwwgtSXkFhOUG+K3LEXf0OlI1LilV3PHWFoX+ok+iO1J9LVan6yu -vg4omMMNLZXz0Ho2+HD8UifKg1PXhdpIyCl6cBUVv8Qm0ZHKz/IFClyrxNaTqX2Af752D8OusFII -Pl5gj9RYYbFia7Jnm1QMUXnCRjVk7Jagi7/hUQZP4l+XbMmZyuBUh8OAco0ORa5Rr9NZagUp2Dhp -4D1z67nrj/kCCfAhDQj/TO9GC7V+3RvpJ/z4NS5tWrEqNpAoJbGvndmxlyftBBiQ5X73ZDsNLkIb -hAQ5h++BQTIk71UVGJLgvfyIBA5dnGFBmI5lyjZktnZ5A4dxuI5MTno6pMYlRED3Q+TW9BnD/Qq2 -j4XdIqcmI51t3UAqS5iwoIOrgNeRXCbKyoLSDEMgf9Xrft3QvFrkwLZjgP+cAp7Aze0BUkspIR0L -pNMsxhMUx+dNSaq2APaNe6k1/0yOPOen3A3zUJgo4DVnW9CmM/qh8H+dNDllDq1u1jp0t0irFSqo -8inY4ArsGClpLEg5OOrza6/xz7Q2rZMUQ/zjsqzBsyyOTTjBvtflwouFI4aOgKxBsOzfwOvSdGop -Qn4sqmLrjfWVP4uMQsUYjMhpP+1VGBZyrJDbce1tCwPuSsXHYMXkAH2V6Urlp91h8IUXJrt/NOcC -shQI69R3/t2DxxTfKYRnMP9mOzNY5U+rGP/ETwfFgCnA/COpR+WN4oRzM5SlkCLxk8MoVom7r6j8 -LLS4WMzHnbRhtbsL1pXFRUnh/Gb1hKTNx1UTaQ6dG8ED3tywnfRp7vzvjVJEvXQolpDNEpqAK9E1 -IEkmJwNIFYBJue2q0wwR15RGR7bnJjMUi6e2KYS0Y+OmpPCkCJzvbAnzjSFKWjV0+RsUGWE9wgXO -0PENDsLYLseJPQQi2l65cp4Wev2oJls7UeZIXwpKf4nwNKfIZUFh6J5N05AvFQZRRgIr5OMa1m9L -3AvMPgaiiNwHhjkQs4oPTJ1S8fE7vvcBpULZGXzX0NzuKEkb4Ckv1FFHb2IINjzx8OLc7ZxQMX9Q -7ReduXrqjvHn1MBozCPH8QbH3J0+WvL6OFSf/zyBhRXmyxnImJOfIGbMjI+D5E+9ZugvTJh6vEFj -S8ifPtV1AOvUtCtkWKNiC/uSTRx/gIjX+u3C6OHyIiqTkC4xSuEAfqrUr7alEwDaVG0rIjGBGO9p -/YNStHEvkJ6/5mc06V//7ok7UwN71Sd+SrieJffN8d4g17ud9Tq0AdNYDxBdXi8/6+OL0A4G5hnW -UOr1cWfKS7nhuHJatFDowkijHaOMPYfqwvKmt/4pkpMKdgNg3fb/gz7hKfdUPmKat1TWkO6zUA3U -TIStU6OkevTBSR9gWQNKITKFdZVHirM1oRxl9f4Rb4Rg5wzpiAXZLIQB1bfBue12H2VrUwqfjI6q -gjTNwd5SP7tISOUUrTOvuZejUiEd4muhKrHwD/THVW1L7iaqvwrSZrIM3Gbe4ictV7R8xh5jtVTW -xKzFyLElo0dS4HgfzSEhaBDTkQlBN82PQGHnyjZFDc2SHxIn6RWTQRWwaWCb098fRwH+9CqHR7rj -iTSSSb+tlF2QAbvq46ns2uOQaq4rCwGE7VH3ESncmZquLNEaJ7bLPFjTflf6xZ6bT5JD4U2frx7J -MisqXOF2LlQvutcuktb4MlRj8AiZibPa5qXorMTw62aawckWgnq5g5YOk3IIOM3tKhNBiVZBBQOO -GgguRwkocJtr8Fyg71H5cz0SchrI0IUIKW5gOFEnIex1H6GeCEpktfxjtp0C+kRhEzErmEbb46iS -j+h+K4Q1kcxUQFoV1X3lYRkfkJsmSVXVfNmObHqTToKUa0RTdr6cHccy9VoVnrgOADWxS4taa+EK -XH6hHZVuyZYGfJWoJetiu//nls4bsKzgEoqiXf60snRsirZO8Nrsn6I4ujNGyLef9/Fhg6C2sw+W -fe6qATdR4EsKOd030zOLhKPmhNd0bkLJQYyr9Hk4xw5yK39XqlEuO7LUsT6NESQh69+k/ZczWo0L -NhOIThGTAeMzOJiBBnlRY84wKRcsEz823Zwzl+QF/n9LOMOJFVjTRcK96gfdI8/x76nFDwYHnDrK -lmrrcu5Efz09sLmf7GqXYB+BdizSHkH5a3Ek8rBAy/z1/+gQnf2BfoP9sMciKvlScxTaRylyjMFQ -PImiiS4xoFm2lqEw0BtDVGHPTx8D6i6j2jxl8fyPG+qNWAvlSK/R28erbptpjbCw/ZGpEUBJldII -ckbJS3cQ6tqvc/8ND+NCd+0HEcUyYovbHT+oah/IgTTNrRT/Bz7xFu1Uuuiv6J+iN40e1YR0ufzy -fXDgpQUINBWoAnuWs1kyfnXZAm6HUGqXBGu8+p1k+X+pJ21HzPaKGFerhJeFSkxjlleVlqFKFvEh -Wl9lhfHwv0MldJacwA4AFfmAe1li5tVoyqtqNpb5DBvX1KnfFyH/8yTCTpbpRElAf7/nZivUOEoQ -x2D4fMDBD6cjSymtxZC77HOtOOCkXd7NC6eNgrmhPIRYG1qm92UvgoDA8oJFwSCpPDgRfYU5aMK= \ No newline at end of file + + * @link http://www.oxidmodule.com + */ + +date_default_timezone_set('Europe/Berlin'); + +/** + * Class d3PreCheckInFolder + */ +class d3PreCheckInFolder +{ + public $sVersion = '4.10.2'; + + /** + * @return string + */ + public function getVersion() + { + return $this->sVersion; + } + + /** + * @return bool + */ + public function hasMinPhpVersion() + { + $aArgs = func_get_args(); + + if (version_compare(phpversion(), $aArgs[0]['version'], '>=')) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasMaxPhpVersion() + { + $aArgs = func_get_args(); + + if (version_compare(phpversion(), $aArgs[0]['version'], '<=')) { + return true; + } + + return false; + } + + /** + * @return array + */ + public function hasFromToPhpVersion() + { + $aArgs = func_get_args(); + + if ((version_compare(phpversion(), $aArgs[0]['from'], '>=')) && (version_compare( + phpversion(), + $aArgs[0]['to'], + '<' + )) + ) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasZendLoaderOptimizer() + { + if ((version_compare(phpversion(), '5.2.0', '>=') + && version_compare(phpversion(), '5.2.900', '<') + && function_exists('zend_optimizer_version') + ) || ( + version_compare(phpversion(), '5.3.0', '>=') + && version_compare(phpversion(), '5.6.900', '<') + && function_exists('zend_loader_version') + )) { + if (function_exists('opcache_get_status') + && ($aOpCacheStatus = opcache_get_status()) + && $aOpCacheStatus['opcache_enabled'] + ) { + return null; + } else { + return true; + } + } + + return false; + } + + /** + * @return bool + */ + public function hasIonCubeLoader() + { + if (function_exists('ioncube_loader_version')) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasExtension() + { + $aArgs = func_get_args(); + + if (extension_loaded($aArgs[0]['type'])) { + return true; + } + + return false; + } +} + +/** + * @param $mVar + */ +function dumpvar($mVar) +{ + echo "
    ";
    +    print_r($mVar);
    +    echo "
    "; +} + +if (!isset($_SERVER['REMOTE_ADDR']) || !isset($_SERVER['HTTP_USER_AGENT'])) { + $oPreCheck = new d3precheckinfolder; + if (isset($_GET['fnc']) && $_GET['fnc']) { + $aParams = isset($_GET['params']) ? unserialize(stripslashes(urldecode($_GET['params']))) : array(); + echo serialize(call_user_func(array($oPreCheck, $_GET['fnc']), $aParams)); + } +} \ No newline at end of file diff --git a/docs/Precheck/modules/d3/extsearch/Application/translations/en/d3precheckinfolder.php b/docs/Precheck/modules/d3/extsearch/Application/translations/en/d3precheckinfolder.php index 5526b20..6b60bcd 100644 --- a/docs/Precheck/modules/d3/extsearch/Application/translations/en/d3precheckinfolder.php +++ b/docs/Precheck/modules/d3/extsearch/Application/translations/en/d3precheckinfolder.php @@ -1,76 +1,146 @@ -1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); -?> -HR+cPmm7iwCRm0UKuiucW0+mrPLqq9nngwFXQ+5dtVkw03REBsG4HNN9pjOZolF4u/GzKFsVXQy8 -o/UNrltWPQ37k/iNKatNNsbp8raJFxTTr2freOVqiyl2PlA/YdU5Bm+1LZRPi4iqfMoWTjJbI9E3 -NAdDtH4dR85i7TLl01bZcdDFxfnG5HTwvkvHZoXMqNXrfdAnPNm6enZi4Mr2npNYTwITveO26+07 -aWZSPp9S1cQlJcVkOPEN4g0LiDOIydgqdnjYoun3CjxQ2wKOX9wTQGqp2yxjQI/ToXOVUhzciUkD -olGS1/zX+wmIGdIK15HTbfADjrYkCFpedqhhq9LsK8u6Sg4wktkG8Lo4BAU83i9ubJr0bBwVwlJV -/nvB3k9GezRInscgK08JCji8XV1yCf0YMz50bW/9CztFvmBjaUbpO9RdzgGczG473wS+GFCgZoiJ -3cJWCV7uWwNxrXvTDio2TUwaQ+UToq/ikpXz4wlHra568Gt5XCnIgaq7c09V9iwla6FX7NnpEAUs -gCtMWCO7D4MpDbwM5KlDJC5Hnfowp/vqRRUk7xI5yzoD5GnFLsX4y6ncAeVq6pQYru4BJ1rkQqHJ -yRozNCuWjQg66IqTOS799J+Su1OOdCTY7IyuETTz+e56cWqicS1RBZYPFrrrUYsMdWZ+013MXeWN -oyPpcUE6QcJ3d7+CFPfzs8fpxSX/8rilx288XwrhwoonbC4t5o8XTG6/UiODZOGarJyGrYYsyz/5 -7aoKMrgowBP3cF+WK7hdc4InbxkRcm/+/McD17fAjHjw2Se5kRs3gZfXLo/TXU6i6jjW0mK7BcCa -S+aqdT+Aeo3i9gRt08n0R0g62nna0ZLTZky8BUBDV5O8/b4vbBPd7Allo49xsl6zrrSwPeVGbqwp -hjatmH1DPz3mM55WmOtWTmeYtIi8gx+OERpgRXPKy7FJmScC0FNaita/TzDFW0228MPeecNHFdOO -ucMc9QyHn6/pv0s3zGI2bz3o/nq8R9YiPtUO+MkHuHQzSj3OQXzLJY3eq1JaNZKtYzbl1eg+GIpr -frsUPw4jpIx2SvtwBhfOEhWWLw1mB35cBtNDPqz9IyXjnVgkJHFdAiWaCAK7osUVVWFiIcRZbU3b -GSqfXGFgM8GVMK/wERCBVGKW8Nc53MkuVCWqHvpd2Tz6u5UI2GAGx/17meUkLp9QE3vqGP4g9Is5 -B4Y4Oh2uCHmWnqiJnvJuf1KS6EWK83iHIjKggZhZNMOhC75lQy2T8VXDceUtNIcF6bKmc+Wbm4O5 -KSPz9NQUiqIpuCRgfyZdrFJLFgFH8TMzZpaF2/30JWPjjD+zsZkSV//vAIMBxl2aB7qc6C6DUJVa -85eW4VmDGLCJFmYBTeBztv2mypAVAZ6sUcAnUv254jclMmuWT8xY0m9CFkWAmyal36/CtoEpb+pm -Sd6g8v+LitvRd1MicvkB0gAzvIN69Rvi/YKgGDcX08ZdavR9rKuFXFTPGJM01hkGGyZeOW1zwtok -qlr8Sn97xsioSs6Xjk6kQt47bDz06ETIlY9qiIxbE8KaOpwuS0Pp5YFo/IAkLYWVyGqWbnSoPcHG -ZgQrNWRUzg3k5bqJH2t1Z60dmTdmjkNAOn6bOglHTDZQs0KqvJ0ePwB3ldX1FRYoc5eoUrywEV4J -5MPrrSzzk4YZHjK9KAC//B0o9BJmqV7C0TxxSnfMWrLHjOyPVlWzZH7s8KfuLQW36+4QSQjEq9As -XrHGMC284c4Ihj5l6V1/qkIdL6AB536jUs7yBK46RRGdo/pBYTafhVbtGXUffXaItOQZ4nygo6TP -Dr4whAStQTRTA6CBN5eARwFxkb0k+pG1pFNv+k+62tIbi6n9xWoOVf4AI+9MkzKW7CkFNpEmjfQk -8xLhiPF3+nRIK6loBjFJMDtMjpxR3XrIkY4x92QRjyFWOJv8Dy9VfKRXB50f5CFQFgBGHFB7ZgFQ -A4qk+EA5qhubLiWDwMqqmYiYp1oGedDhm+MxlLuixJ4j+0LJT6LmmhqXYMHAyaV+l4vscwMTJ+6y -d+HpkCYRTqNPwutiuaI1i25ImTsdmpz8UvR94HqtpQnCCZs4v9Fll3cLvz63EpMZM9LfKbfart30 -1r/LAaaM4TP1Jm98czlGaWSqoT65K4u8a7648wxZ0sphYcse96xiEXBCdGuenRkZofjlACDh/dVk -3LH3Mj29tBuDP+9QN0LtbXHs69+isUUh4un4fPcyAbneCAMIoxtvw3JH6oTa0003hxP2r7Q+j7bi -xBr6cdfeIbSl8R3EcZvCgMhILMui8+NoT+Y7B9FTc10BPxUWRb8/Kxd79WVCOtSjPyPgBQEvY9ov -obbxYWDo3CukZixAfsf+Oe98GY6miUooafwQ4pU2pyEUSXzgALRLxXBDvqWmhE6OR48iP6LoH+Fd -Zusv5K1gHG79qvh4d5oz5iaDkR+QLzFUjTvccwyPGlzPzghj/LtWn8vLGyDJaFKdtsKtIrMVMHZK -28S7MqnCIe+uwXqChEhVfS/oV2C0blLl8M27xN8zANIY8QCXFfbwHyycGsWepWlQam/gToEypvd+ -YWWsAci0CY34qUrwhpYMoB7rc5yzmOyO9pk1EKLEHzsln1FsvayJ88znNm/92ZkNFkVacfoNuLdV -5YMk0MrDiTGRp2dI80sLeJaTslcL9dvhi855jU7ACxuTaI1zkFVOOxsvJONDXG6mbxjZJ42OwwoO -uxxzSAw4/mnDFR3hykYiMmZQOrnpphdhckqOsmhA5PxEIljKX0mkenVT4dZMSgrkd0FGHfHpT6Yk -Mb/HZ5qXlfEr/TelshoUMzXpe7BmhSYkBn8oEqkTDgYtxu0JXL0CgTbcVYtmnNcSNw+iXT05XE7z -QCWPfO95PlPzOPaISLzKdaS35XlTo2PkGW/5fUljWkvIKr2KSPamrdH5xI6D32zLuP8ix3YerqAb -YTQzmQo3y65eW1dWxDY3Fq/H5hAW2dy4rgRyX7ecivErawceeNncsWCmTXTWBHfi305ieMPlfZiY -b79mSvs4sXR8FIgbaok2w8AMvpd7mrTa3iy5BMUs7Sp+gr6xE8gcE9dABNbnAmwo+ShSMHhUFr0g -v0QwGiPFnG6h2Ift0iWKTOLqB6pmFcLh9h3qBJkLd2cLVwcrPZCJJIhvNc+re3g1MyeTSm+h/C8o -GNdWg01B5tK2AsXo4spKOVdaqEn7G/45wBdJC2tu12gsHn3SpcPrIydcylxjOiFlRjuSmn6uiHXL -RLeKjRQ6MJ4Jb4IeesECaLPacoHbg+mnhsFMqKZCCcFZFzd6B5EGxltuGzloYQHK91wZBILauuMW -T5oaE2fjmm0xlkq5jnBNUHDOUYpuUzXkeCZnO4WbgDrGfcjTI0H/nysz6vlEEB5InHPy7hZmn9j9 -6N0kZ6jt2CoV2qHEb2MnJR1DsRnUWbpEqvpX6Q4h7NnaAtWBiBpT58NYaHh0VWvOkH8ehOmBKOH4 -nExVwlO0kTPqZp2sQUczc3KOJkrJ05EMK4JiARqTEQSuYyHbPTeHup7TTRU46BE8cWwGtTLrhpEL -1H3P663wJbiNEuEBXqc7tMOvhDwguj70kDpeCfAK9qUAikHTT5msJms6XVgIe/wSMS5d3vhH4PYb -3hQFnW/n4ao2LbKIDPl8XOyNAhAF5iTat0T7eSKEStXU4JEceBpyPL7QS5AC6MzhP6r83QP0kc7m -LmwqYpzBg1nwBkhFKwdFJGdYa+Sfci4Hx0AiTG5a/PiLa0FePntBp9LwdYwcNLc9z3badexZbYFS -9DYcO5iCNnYbs8TWGNrZZ7STXxPA+znoJaJ0DbaNx6Gwf0/99K8P/tLWloR1kf250QNzYk3CQguz -dT2ouoInvrCzLWZRgylGD2SkuSwlQ+bqmCg0aDX5c3vg+2apCMZKl5jxXVSmij2BezkLzNzsUMTO -78QwU4Mj7OetqBvboKe/H9TFuL1vhoKtQ85L8sD5YVYZrIYyyxJiAf/J28dxq/yIDSZeBWETbtQP -8hq3z4rZXnVxSYnaMXuDZIaZ//hsW5b390NUld5kMrFc8Bk0Pclc1pwF+qJXHGNHM4GZ249wFU3O -Sw6BQMp9gcnWqkQm07e3/zIRh4tx1xN3m041Rpbs8R0unxAnLOVoNwGwems3SBds2R1Os89KedIP -aYYN0/+keC7rqVoyP312MZjS3/0HK444WVsqqN3RLucDzBlxEf6WBM7zOXy+TFo3rAHGUve/lK+i -UeOi6DILxn3OOLVohpCYrphUgjQx34zyfGIWiXu/y2PbnRPztF0IL2GNQbhJU8EwsGy3KAVRJpSX -CUTEQwnolEGlnt+AUmD/qrrUUMZ4yz7nduJxXNL27cqtrA2qaS+gabXRwiGYLaQcHsMXhs8XH9l8 -lcTjX60TUxMBltoiM9S1skFiHEtgRepxgaNhtFOaln7OtLm8DVZ0c6foybSRM2rf8D/Y5R7gl9xr -OasnRwEIvDN+P0Dr8jm0byDduq1ts8CAInMQsg+bhtHRRMjGqe7/JanQAkYcPRKHiqFPVipiwIrs -KRF8YUCBTHX3RySwOVqqcZc+pDxmym8DWMU0ZzWHhcUfvdruiOKUr10q9GroXljtziMYLkNEi87W -eRTI2sIzKzYW9bBqeXfjh5yLTt0WyYuA5qr2QBz0NPWGixl2qDOAW36j3tXFoXz4hz7CstDHzXCc -lzdaY+UZhKJ2KvzkO2Ar0iB5+3WWTdXs/lv1IW6Fzt02K5mk5nm4bOw7tvCV/32CPvZWNkyGdqmZ -RHW6YBdU/Qnfaxy3+7kr4agc6/+y3aLBl9oFIY7jdluhVkhtJnUtaE8z7lemYmhqHq9/VRLSdGxa -BzPcRgFK9L7DzI/D9xN2Af5/mMDYAv7AfqAjXEq4zXcrW1krYJWvR5wYA2AbODimm19nOgKlQoz7 -ln2MdNEidM3lzSHyj1ELfSxgC26SnJ3Gw8Z0FJH4guePhhcrVQeiz28j2x2W/unEUQko9QwlpZUu -Ifrm7IqElrIfOpywYk2YMdC2PIL65AHRuH9MzaPcuTRovzZ9hyjRrngVrZBNlxLham+SJUnkwfOf -N/PFX4/qTRQdanCJ+AlnvKzzRYMN0bixhL2h5RbMzY72gpiYs9OGuKJlHbhILHPxpwfmZKRqzcFA -ZpjcJv2Oisu5/GGE2IV/vYJvTpBDIfwZyflqwB9/82EuzP5aFJrPQbHOYEEZiAoSJQUBoRehYhkS -pdxH7aSk1CCdpiIyPYJS/37dJmS5SYNIxdNRxI0e1XlpsvK2dSwmJMmJ1PwNzA/sIk9kDbjrZ7kj -P4Kq4E/kfEbPVD71lYt6otDAAzRtB9/f0q7Kkv2h/mDlnbl9lGVqUI0SH2etxqPF4wH2+51RPdRP -ym8bC5PL1few5/x3xoJjkSht9d3Cps8C9quCKvjp9Xm1hcIuIeWQFrumMYCO573TQ/h9NavwD1Eq -26UTjenxs8S= \ No newline at end of file + + * @link http://www.oxidmodule.com + */ + +date_default_timezone_set('Europe/Berlin'); + +/** + * Class d3PreCheckInFolder + */ +class d3PreCheckInFolder +{ + public $sVersion = '4.10.2'; + + /** + * @return string + */ + public function getVersion() + { + return $this->sVersion; + } + + /** + * @return bool + */ + public function hasMinPhpVersion() + { + $aArgs = func_get_args(); + + if (version_compare(phpversion(), $aArgs[0]['version'], '>=')) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasMaxPhpVersion() + { + $aArgs = func_get_args(); + + if (version_compare(phpversion(), $aArgs[0]['version'], '<=')) { + return true; + } + + return false; + } + + /** + * @return array + */ + public function hasFromToPhpVersion() + { + $aArgs = func_get_args(); + + if ((version_compare(phpversion(), $aArgs[0]['from'], '>=')) && (version_compare( + phpversion(), + $aArgs[0]['to'], + '<' + )) + ) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasZendLoaderOptimizer() + { + if ((version_compare(phpversion(), '5.2.0', '>=') + && version_compare(phpversion(), '5.2.900', '<') + && function_exists('zend_optimizer_version') + ) || ( + version_compare(phpversion(), '5.3.0', '>=') + && version_compare(phpversion(), '5.6.900', '<') + && function_exists('zend_loader_version') + )) { + if (function_exists('opcache_get_status') + && ($aOpCacheStatus = opcache_get_status()) + && $aOpCacheStatus['opcache_enabled'] + ) { + return null; + } else { + return true; + } + } + + return false; + } + + /** + * @return bool + */ + public function hasIonCubeLoader() + { + if (function_exists('ioncube_loader_version')) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasExtension() + { + $aArgs = func_get_args(); + + if (extension_loaded($aArgs[0]['type'])) { + return true; + } + + return false; + } +} + +/** + * @param $mVar + */ +function dumpvar($mVar) +{ + echo "
    ";
    +    print_r($mVar);
    +    echo "
    "; +} + +if (!isset($_SERVER['REMOTE_ADDR']) || !isset($_SERVER['HTTP_USER_AGENT'])) { + $oPreCheck = new d3precheckinfolder; + if (isset($_GET['fnc']) && $_GET['fnc']) { + $aParams = isset($_GET['params']) ? unserialize(stripslashes(urldecode($_GET['params']))) : array(); + echo serialize(call_user_func(array($oPreCheck, $_GET['fnc']), $aParams)); + } +} \ No newline at end of file diff --git a/docs/Precheck/modules/d3/extsearch/Application/views/admin/de/d3precheckinfolder.php b/docs/Precheck/modules/d3/extsearch/Application/views/admin/de/d3precheckinfolder.php index fe3a470..6b60bcd 100644 --- a/docs/Precheck/modules/d3/extsearch/Application/views/admin/de/d3precheckinfolder.php +++ b/docs/Precheck/modules/d3/extsearch/Application/views/admin/de/d3precheckinfolder.php @@ -1,76 +1,146 @@ -1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); -?> -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 -WghEgwIOfsdkVgFMfVB3Pykje9epa0== \ No newline at end of file + + * @link http://www.oxidmodule.com + */ + +date_default_timezone_set('Europe/Berlin'); + +/** + * Class d3PreCheckInFolder + */ +class d3PreCheckInFolder +{ + public $sVersion = '4.10.2'; + + /** + * @return string + */ + public function getVersion() + { + return $this->sVersion; + } + + /** + * @return bool + */ + public function hasMinPhpVersion() + { + $aArgs = func_get_args(); + + if (version_compare(phpversion(), $aArgs[0]['version'], '>=')) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasMaxPhpVersion() + { + $aArgs = func_get_args(); + + if (version_compare(phpversion(), $aArgs[0]['version'], '<=')) { + return true; + } + + return false; + } + + /** + * @return array + */ + public function hasFromToPhpVersion() + { + $aArgs = func_get_args(); + + if ((version_compare(phpversion(), $aArgs[0]['from'], '>=')) && (version_compare( + phpversion(), + $aArgs[0]['to'], + '<' + )) + ) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasZendLoaderOptimizer() + { + if ((version_compare(phpversion(), '5.2.0', '>=') + && version_compare(phpversion(), '5.2.900', '<') + && function_exists('zend_optimizer_version') + ) || ( + version_compare(phpversion(), '5.3.0', '>=') + && version_compare(phpversion(), '5.6.900', '<') + && function_exists('zend_loader_version') + )) { + if (function_exists('opcache_get_status') + && ($aOpCacheStatus = opcache_get_status()) + && $aOpCacheStatus['opcache_enabled'] + ) { + return null; + } else { + return true; + } + } + + return false; + } + + /** + * @return bool + */ + public function hasIonCubeLoader() + { + if (function_exists('ioncube_loader_version')) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasExtension() + { + $aArgs = func_get_args(); + + if (extension_loaded($aArgs[0]['type'])) { + return true; + } + + return false; + } +} + +/** + * @param $mVar + */ +function dumpvar($mVar) +{ + echo "
    ";
    +    print_r($mVar);
    +    echo "
    "; +} + +if (!isset($_SERVER['REMOTE_ADDR']) || !isset($_SERVER['HTTP_USER_AGENT'])) { + $oPreCheck = new d3precheckinfolder; + if (isset($_GET['fnc']) && $_GET['fnc']) { + $aParams = isset($_GET['params']) ? unserialize(stripslashes(urldecode($_GET['params']))) : array(); + echo serialize(call_user_func(array($oPreCheck, $_GET['fnc']), $aParams)); + } +} \ No newline at end of file diff --git a/docs/Precheck/modules/d3/extsearch/Application/views/admin/en/d3precheckinfolder.php b/docs/Precheck/modules/d3/extsearch/Application/views/admin/en/d3precheckinfolder.php index cef9e66..6b60bcd 100644 --- a/docs/Precheck/modules/d3/extsearch/Application/views/admin/en/d3precheckinfolder.php +++ b/docs/Precheck/modules/d3/extsearch/Application/views/admin/en/d3precheckinfolder.php @@ -1,76 +1,146 @@ -1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); -?> -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 -MgscbE6R \ No newline at end of file + + * @link http://www.oxidmodule.com + */ + +date_default_timezone_set('Europe/Berlin'); + +/** + * Class d3PreCheckInFolder + */ +class d3PreCheckInFolder +{ + public $sVersion = '4.10.2'; + + /** + * @return string + */ + public function getVersion() + { + return $this->sVersion; + } + + /** + * @return bool + */ + public function hasMinPhpVersion() + { + $aArgs = func_get_args(); + + if (version_compare(phpversion(), $aArgs[0]['version'], '>=')) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasMaxPhpVersion() + { + $aArgs = func_get_args(); + + if (version_compare(phpversion(), $aArgs[0]['version'], '<=')) { + return true; + } + + return false; + } + + /** + * @return array + */ + public function hasFromToPhpVersion() + { + $aArgs = func_get_args(); + + if ((version_compare(phpversion(), $aArgs[0]['from'], '>=')) && (version_compare( + phpversion(), + $aArgs[0]['to'], + '<' + )) + ) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasZendLoaderOptimizer() + { + if ((version_compare(phpversion(), '5.2.0', '>=') + && version_compare(phpversion(), '5.2.900', '<') + && function_exists('zend_optimizer_version') + ) || ( + version_compare(phpversion(), '5.3.0', '>=') + && version_compare(phpversion(), '5.6.900', '<') + && function_exists('zend_loader_version') + )) { + if (function_exists('opcache_get_status') + && ($aOpCacheStatus = opcache_get_status()) + && $aOpCacheStatus['opcache_enabled'] + ) { + return null; + } else { + return true; + } + } + + return false; + } + + /** + * @return bool + */ + public function hasIonCubeLoader() + { + if (function_exists('ioncube_loader_version')) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasExtension() + { + $aArgs = func_get_args(); + + if (extension_loaded($aArgs[0]['type'])) { + return true; + } + + return false; + } +} + +/** + * @param $mVar + */ +function dumpvar($mVar) +{ + echo "
    ";
    +    print_r($mVar);
    +    echo "
    "; +} + +if (!isset($_SERVER['REMOTE_ADDR']) || !isset($_SERVER['HTTP_USER_AGENT'])) { + $oPreCheck = new d3precheckinfolder; + if (isset($_GET['fnc']) && $_GET['fnc']) { + $aParams = isset($_GET['params']) ? unserialize(stripslashes(urldecode($_GET['params']))) : array(); + echo serialize(call_user_func(array($oPreCheck, $_GET['fnc']), $aParams)); + } +} \ No newline at end of file diff --git a/docs/Precheck/modules/d3/extsearch/public/d3precheckinfolder.php b/docs/Precheck/modules/d3/extsearch/public/d3precheckinfolder.php index ec9b51f..6b60bcd 100644 --- a/docs/Precheck/modules/d3/extsearch/public/d3precheckinfolder.php +++ b/docs/Precheck/modules/d3/extsearch/public/d3precheckinfolder.php @@ -1,76 +1,146 @@ -1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); -?> -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 -/A3SUPN1R2RCPU+m1jdqRZ/zGpY+Sei+OW== \ No newline at end of file + + * @link http://www.oxidmodule.com + */ + +date_default_timezone_set('Europe/Berlin'); + +/** + * Class d3PreCheckInFolder + */ +class d3PreCheckInFolder +{ + public $sVersion = '4.10.2'; + + /** + * @return string + */ + public function getVersion() + { + return $this->sVersion; + } + + /** + * @return bool + */ + public function hasMinPhpVersion() + { + $aArgs = func_get_args(); + + if (version_compare(phpversion(), $aArgs[0]['version'], '>=')) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasMaxPhpVersion() + { + $aArgs = func_get_args(); + + if (version_compare(phpversion(), $aArgs[0]['version'], '<=')) { + return true; + } + + return false; + } + + /** + * @return array + */ + public function hasFromToPhpVersion() + { + $aArgs = func_get_args(); + + if ((version_compare(phpversion(), $aArgs[0]['from'], '>=')) && (version_compare( + phpversion(), + $aArgs[0]['to'], + '<' + )) + ) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasZendLoaderOptimizer() + { + if ((version_compare(phpversion(), '5.2.0', '>=') + && version_compare(phpversion(), '5.2.900', '<') + && function_exists('zend_optimizer_version') + ) || ( + version_compare(phpversion(), '5.3.0', '>=') + && version_compare(phpversion(), '5.6.900', '<') + && function_exists('zend_loader_version') + )) { + if (function_exists('opcache_get_status') + && ($aOpCacheStatus = opcache_get_status()) + && $aOpCacheStatus['opcache_enabled'] + ) { + return null; + } else { + return true; + } + } + + return false; + } + + /** + * @return bool + */ + public function hasIonCubeLoader() + { + if (function_exists('ioncube_loader_version')) { + return true; + } + + return false; + } + + /** + * @return bool + */ + public function hasExtension() + { + $aArgs = func_get_args(); + + if (extension_loaded($aArgs[0]['type'])) { + return true; + } + + return false; + } +} + +/** + * @param $mVar + */ +function dumpvar($mVar) +{ + echo "
    ";
    +    print_r($mVar);
    +    echo "
    "; +} + +if (!isset($_SERVER['REMOTE_ADDR']) || !isset($_SERVER['HTTP_USER_AGENT'])) { + $oPreCheck = new d3precheckinfolder; + if (isset($_GET['fnc']) && $_GET['fnc']) { + $aParams = isset($_GET['params']) ? unserialize(stripslashes(urldecode($_GET['params']))) : array(); + echo serialize(call_user_func(array($oPreCheck, $_GET['fnc']), $aParams)); + } +} \ No newline at end of file