* @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³ Google Services';
public $sModId = 'd3_googleanalytics';
public $sModVersion = '3.3.0.1';
/********************** 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.4.200'
)
),
// PHP-Version zwischen 'from' und 'to'
'hasFromToPhpVersion' => array(
'blExec' => 1,
'aParams' => array(
'from' => '5.2.0',
'to' => '5.4.200',
)
),
// benötigt Zend Optimizer (PHP 5.2) bzw. Zend Guard Loader (> PHP 5.2)
'hasZendLoaderOptimizer' => array(
'blExec' => 1,
),
// benötigt IonCubeLoader
'hasIonCubeLoader' => array(
'blExec' => 0,
),
// benötigt PHP-Extension (kaskadierbar (siehe "Desc1"))
'hasExtension' => array(
array(
'blExec' => 0,
'aParams' => array(
'type' => 'curl',
),
),
array(
'blExec' => 0,
'aParams' => array(
'type' => 'soap'
),
),
),
// minimal benötigte Shopversion (editionsgetrennt), wird (sofern möglich) Remote aktualisiert
'hasMinShopVersion' => array(
'blExec' => 1,
'aParams' => array(
'PE' => '4.7.0',
'CE' => '4.7.0',
'EE' => '5.0.0'
),
),
// maximal verwendbare Shopversion (editionsgetrennt), wird (sofern möglich) Remote aktualisiert
'hasMaxShopVersion' => array(
'blExec' => 1,
'aParams' => array(
'PE' => '4.9.0',
'CE' => '4.9.0',
'EE' => '5.2.0'
),
),
// verfügbar für diese Shopeditionen, wird (sofern möglich) Remote aktualisiert
'isShopEdition' => array(
'blExec' => 1,
'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' => '4.0.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' => '3.9.0.5',
),
),
),
// 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.3';
protected $_db = false;
public $dbHost;
public $dbUser;
public $dbPwd;
public $dbName;
/** @var requConfig */
public $oConfig;
/** @var requLayout */
public $oLayout;
protected $_sInFolderFileName = 'd3precheckinfolder.php';
/********************** 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();
/** @var SplFileInfo $oFileInfo */
foreach (new RecursiveDirectoryIterator($sFolder) as $oFileInfo) {
if (!in_array($oFileInfo->getFileName(), $aIgnoreDirItems) && $oFileInfo->isDir()) {
$aCheckScripts = array_merge($aCheckScripts, $this->_walkThroughDirs($oFileInfo->getRealPath()));
} elseif ($oFileInfo->isFile()) {
if (strtolower($oFileInfo->getFilename()) == $this->_sInFolderFileName) {
$aCheckScripts[] = str_replace('\\', '/', $oFileInfo->getRealPath());
}
}
}
return $aCheckScripts;
}
/**
* @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
);
$sContent = serialize(null);
if ($this->_hasCurl()) {
$sContent = $this->_getContentByCurl($sUrl);
} elseif ($this->_hasAllowUrlFopen()) {
$sContent = file_get_contents($sUrl);
}
$aReturn[$this->getBasePath($sScriptPath)] = unserialize($sContent);
}
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)
{
$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, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
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);
}
/**
* @param $aResult
*
* @return bool
*/
protected function _hasFalseInResult($aResult)
{
if (is_array($aResult)) {
foreach ($aResult as $blResult) {
if (false === $blResult) {
$this->blGlobalResult = false;
return true;
}
}
return false;
}
if (false === $aResult) {
$this->blGlobalResult = false;
}
return !$aResult;
}
/**
* @param $aResult
*
* @return bool
*/
protected function _hasNullInResult($aResult)
{
if (is_array($aResult)) {
foreach ($aResult as $blResult) {
if ($blResult === null) {
$this->blGlobalResult = false;
return true;
}
}
return false;
}
if ($aResult === null) {
$this->blGlobalResult = false;
}
return !$aResult;
}
/**
* @param $aResult
*
* @return bool
*/
protected function _hasNoticeInResult($aResult)
{
if (is_array($aResult)) {
foreach ($aResult as $blResult) {
if ($blResult === 'notice') {
return true;
}
}
return false;
}
if ($aResult === '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');
$this->_db = mysql_connect($this->dbHost, $this->dbUser, $this->dbPwd);
mysql_select_db($this->dbName, $this->_db);
}
}
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)
{
$aResult = $oTests->{$sGenCheckType}($aConfiguration);
$sElementId = (md5($sGenCheckType . serialize($aConfiguration)));
if ($this->_hasNoticeInResult($aResult)) {
$this->oLayout->getUnknownItem($aResult, $sElementId, $sCheckType, $aConfiguration);
} elseif ($this->_hasNullInResult($aResult)) {
$this->oLayout->getUnknownItem($aResult, $sElementId, $sCheckType, $aConfiguration);
} elseif ($this->_hasFalseInResult($aResult)) {
$this->oLayout->getNoSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration);
} else {
$this->oLayout->getSuccessItem($aResult, $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 ($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
* @param $sElementId
* @param $sCheckType
* @param $aConfiguration
*/
public function getNoSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration)
{
echo "" .
$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)
{
echo "" .
$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)
{
echo "" .
$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 "";
foreach ($aResult as $sPath => $blResult) {
if (false === $blResult) {
echo "
" . $sPath . "
";
} elseif (null === $blResult) {
echo "
" . $sPath . "
";
} else {
echo "
" . $sPath . "
";
}
}
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 nicht prüfbar',
'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.
'.
'Ü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".'.
'
',
'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.
'.
'Ü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".'.
'
',
'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.
'.
'Ü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".'.
'
',
'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".'.
'
',
'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.
'.
'',
'hasMaxShopVersion' => 'maximal Shop Version %1$s',
'hasMaxShopVersion_DESC' => 'Das Modul ist bis zur 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 aktuelleren '.
'Modulversion, die für Ihren Shop passt.
'.
'',
'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.
'.
'',
'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.
'.
'',
'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.
'.
'',
'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.
'.
'',
'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.
'.
'',
'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) oder Zend Guard Loader (PHP 5.3, 5.4) '.
'installiert',
'hasZendLoaderOptimizer_DESC' => 'Das Modul erfordert (je nach PHP-Version) den Zend Optimizer '.
'bzw. den Zend Guard Loader.
'.
' 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 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".'.
'
',
'hasIonCubeLoader' => 'ionCube Loader installiert',
'hasIonCubeLoader_DESC' => 'Das Modul erfordert den IonCube Loader.
'.
' 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".'.
'
',
'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 '.
'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.',
),
'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 isn\'t checkable',
'RequNotCheckable' => 'condition isn\'t checkable',
'hasMinPhpVersion' => 'at least PHP version %1$s',
'hasMinPhpVersion_DESC' => 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. If you have any questions, please '.
'contact us at support@shopmodule.com.
',
'hasMaxPhpVersion' => 'not more than PHP version %1$s',
'hasMaxPhpVersion_DESC' => 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. 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'=> 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. If you have any questions, please '.
'contact us at support@shopmodule.com.
',
'hasExtension' => '%1$s extension is available',
'hasExtension_DESC' => 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. If you have any questions, please '.
'contact us at support@shopmodule.com.
',
'hasMinShopVersion' => 'at least shop version %1$s',
'hasMinShopVersion_DESC' => 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. If you have any questions, please '.
'contact us at support@shopmodule.com.
',
'hasMaxShopVersion' => 'not more than shop version %1$s',
'hasMaxShopVersion_DESC' => 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. If you have any questions, please '.
'contact us at support@shopmodule.com.
',
'hasMinModCfgVersion' => '%2$s (ModCfg item "%1$s") has at least version %3$s',
'hasMinModCfgVersion_DESC' => 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. If you have any questions, please '.
'contact us at support@shopmodule.com.
',
'hasMaxModCfgVersion' => '%2$s (ModCfg item "%1$s") has not more than version %3$s',
'hasMaxModCfgVersion_DESC' => 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. If you have any questions, please '.
'contact us at support@shopmodule.com.
',
'requireNewLicence' => 'former licence key can be used',
'requireNewLicence_DESC' => 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. If you have any questions, please '.
'contact us at support@shopmodule.com.
',
'hasModCfg' => 'Module '.
'Connector installed',
'hasModCfg_DESC' => 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. If you have any questions, please '.
'contact us at support@shopmodule.com.
',
'isShopEdition' => 'shop edition is %1$s',
'isShopEdition_DESC' => 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. 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) installed',
'hasZendLoaderOptimizer_DESC' => 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. If you have any questions, please '.
'contact us at support@shopmodule.com.
',
'hasIonCubeLoader' => 'ionCube loader installed',
'hasonCubeLoader_DESC' => 'requirement check result
'.
' This requirement is '.
'fulfilled.
'.
' This requirement isn\'t '.
'fulfilled. The module can\'t installed or executed.
'.
'The [+] button show details for all tested directories. If you have any questions, please '.
'contact us at support@shopmodule.com.
',
'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 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.',
),
);
}
}
/**
* 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[$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[$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[$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[$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 bool
*/
public function hasMinShopVersion(&$aConfiguration)
{
if ($this->getDb()) {
$sField = 'oxversion';
$sSelect = "SELECT " . $sField . " FROM oxshops WHERE 1 ORDER BY oxversion ASC LIMIT 1";
$rResult = mysql_query($sSelect, $this->getDb());
$oResult = mysql_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 = mysql_query($sSelect, $this->getDb());
$oResult = mysql_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 = mysql_query($sSelect, $this->getDb());
$oResult = mysql_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 = mysql_query($sSelect, $this->getDb());
if (is_resource($rResult)) {
$oResult = mysql_fetch_object($rResult);
if ($oResult->result) {
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 = mysql_query($sSelect, $this->getDb());
$aResult = mysql_fetch_assoc($rResult);
if (!(int)$aResult['result']) {
$this->setGlobalResult(false);
}
return (int)$aResult['result'];
}
$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 = mysql_query($sSelect, $this->getDb());
$aResult = mysql_fetch_assoc($rResult);
if (!(int)$aResult['result']) {
$this->setGlobalResult(false);
}
return (int)$aResult['result'];
}
$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 = mysql_query($sSelect, $this->getDb());
$aResult = mysql_fetch_assoc($rResult);
if (isset($aResult)
&& is_array($aResult)
&& count($aResult)
&& isset($aResult['oxversion'])
&& $aConfiguration['aParams']['checkVersion']
) {
$sInstalledVersion = $this->_getConvertedVersion(
$aResult['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()
{
$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.4.900', '<') &&
function_exists('zend_loader_version')
)
) {
$aResult[$this->getBasePath()] = true;
}
$aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__));
return $aResult;
}
/**
* @return array
*/
public function hasIonCubeLoader()
{
$aResult = array($this->getBasePath() => false);
if (function_exists('ioncube_loader_version')) {
$aResult[$this->getBasePath()] = true;
}
$aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__));
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 = mysql_query($sSelect, $this->oCheck->getDb());
if (is_resource($rResult)) {
$oResult = mysql_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();
}