From 7d3fff5255e573dde8ec256100bcdd7e710dd379 Mon Sep 17 00:00:00 2001 From: DanielSeifert Date: Sat, 26 Apr 2014 11:54:46 +0000 Subject: [PATCH] adjust precheck for combined module connector --- setup+doku/Precheck/d3precheck.php | 234 +++++++++++++++++++---------- 1 file changed, 158 insertions(+), 76 deletions(-) diff --git a/setup+doku/Precheck/d3precheck.php b/setup+doku/Precheck/d3precheck.php index fec45dc..900f3c5 100644 --- a/setup+doku/Precheck/d3precheck.php +++ b/setup+doku/Precheck/d3precheck.php @@ -177,7 +177,7 @@ date_default_timezone_set('Europe/Berlin'); */ class requCheck { - public $sVersion = '4.0'; + public $sVersion = '4.1'; protected $_db = false; @@ -224,6 +224,9 @@ class requCheck { $this->oLayout->getHTMLHeader(); + $oCheckTransformation = new requTransformation($this); + $this->oConfig->aCheck = $oCheckTransformation->transformCheckList($this->oConfig->aCheck); + $this->_runThroughChecks($this->oConfig->aCheck); $this->oLayout->getHTMLFooter(); @@ -331,10 +334,10 @@ class requCheck ); $sUrlAdd = str_replace($sBaseDir, '', $sScriptPath); $sBaseUrl = 'http://' . $_SERVER['HTTP_HOST'] . str_replace( - basename($_SERVER['SCRIPT_NAME']), - '', - $_SERVER['SCRIPT_NAME'] - ); + basename($_SERVER['SCRIPT_NAME']), + '', + $_SERVER['SCRIPT_NAME'] + ); $sUrl = $sBaseUrl . $sUrlAdd . '?fnc=' . $sMethodName . '¶ms=' . urlencode(serialize($aArguments)); @@ -413,7 +416,7 @@ class requCheck /** * @return bool|resource */ - protected function _getDb() + public function getDb() { if (!$this->_db) { if (file_exists('config.inc.php')) { @@ -473,7 +476,7 @@ class requCheck $aIgnoreDirItems = array('.', '..'); /** @var SplFileInfo $oFileInfo */ - foreach (new RecursiveDirectoryIterator($sFolder) AS $oFileInfo) { + foreach (new RecursiveDirectoryIterator($sFolder) as $oFileInfo) { if (!in_array($oFileInfo->getFileName(), $aIgnoreDirItems) && $oFileInfo->isDir()) { $this->_checkDelFilesInDir($oFileInfo->getRealPath()); } elseif ($oFileInfo->isFile()) { @@ -499,7 +502,7 @@ class requCheck public function displayCheck($sCheckType, &$aConfiguration) { $sGenCheckType = preg_replace("@(\_[0-9]$)@", "", $sCheckType); - $oTests = new requTests($this, $this->oConfig, $this->_getDb(), $this->oRemote); + $oTests = new requTests($this, $this->oConfig, $this->getDb(), $this->oRemote); if (method_exists($oTests, $sGenCheckType)) { $aResult = $oTests->{$sGenCheckType}($aConfiguration); @@ -585,13 +588,11 @@ EOT; $sTranslDependent = $this->translate('dependentoffurther'); if ($this->oBase->blGlobalResult) { - echo '

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

'; + echo '

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

'; } else { - echo '

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

'; + echo '

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

'; } echo <<< EOT @@ -617,12 +618,9 @@ EOT; */ public function getNoSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration) { - echo "
" . $this->_addToggleScript($aResult, $sElementId) . $this->translate( - $sCheckType, - $aConfiguration - ) . "
" . PHP_EOL; + echo "
" . $this->_addToggleScript($aResult, $sElementId) . + $this->translate($sCheckType, $aConfiguration) . "
" . PHP_EOL; $this->getSubDirItems($aResult, $sElementId); } @@ -638,10 +636,7 @@ EOT; echo "
" . $this->_addToggleScript($aResult, $sElementId) . - $this->translate( - $sCheckType, - $aConfiguration - ) . "
" . PHP_EOL; + $this->translate($sCheckType, $aConfiguration) . "
" . PHP_EOL; $this->getSubDirItems($aResult, $sElementId); } @@ -654,9 +649,7 @@ EOT; { echo "
" . - $this->translate($sCheckType, $aConfiguration) . " (" . $this->translate( - 'RequNotCheckable' - ) . ")
"; + $this->translate($sCheckType, $aConfiguration) . " (" . $this->translate('RequNotCheckable') . ")
"; } /** @@ -669,13 +662,11 @@ EOT; echo "" . PHP_EOL; @@ -782,7 +773,8 @@ class requTranslations 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.', + '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', 'RequNotCheckable' => 'Bedingung nicht prüfbar', @@ -796,17 +788,22 @@ class requTranslations 'hasMaxShopVersion' => 'maximal Shop Version %s', 'hasMinModCfgVersion' => 'ModCfg-Eintrag "%s" (%s) mit mindestens Version %s', 'hasMaxModCfgVersion' => 'ModCfg-Eintrag "%s" (%s) mit maximal Version %s', - 'hasModCfg' => 'Modul-Connector installiert', + 'hasModCfg' => 'Modul-'. + 'Connector installiert', 'isShopEdition' => 'ist Shopedition %s', - 'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) oder Zend Guard Loader (PHP 5.3, 5.4) installiert', + 'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) oder Zend Guard Loader (PHP 5.3, 5.4) '. + 'installiert', 'hasIonCubeLoader' => 'ionCube loader installiert', 'globalSuccess' => 'Die Prüfung war erfolgreich. Sie können das Modul installieren.*

', - 'globalNotSuccess' => 'Die 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 '?fnc=deleteme">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)', + '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.', @@ -814,7 +811,8 @@ class requTranslations ), '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.', + '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', 'RequNotCheckable' => 'condition isn\'t checkable', @@ -828,17 +826,21 @@ class requTranslations 'hasMaxShopVersion' => 'not more than shop version %s', 'hasMinModCfgVersion' => 'ModCfg item "%s" (%s) has at least version %s', 'hasMaxModCfgVersion' => 'ModCfg item "%s" (%s) has not more than version %s', - 'hasModCfg' => 'Module Connector installed', + 'hasModCfg' => 'Module '. + 'Connector installed', 'isShopEdition' => 'shop edition is %s', 'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) or Zend Guard Loader (PHP 5.3, 5.4) installed', 'hasIonCubeLoader' => 'ionCube loader installed', - 'globalSuccess' => 'The test was successful. Your server is ready for installing the module.*

', - 'globalNotSuccess' => 'The test wasn\'t successfull. Please check the red marked conditions.

', + 'globalSuccess' => 'The test was successful. Your server is ready for installing the '. + 'module.*

', + 'globalNotSuccess' => 'The 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)', + '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.', @@ -874,8 +876,7 @@ class requRemote /** @var stdClass $oModuleData */ $oModuleData = $this->_getRemoteServerData($sUrl); - if ($oModuleData->status == 'OK' && isset($oModuleData->moduleversion->compatible_release)) - { + if ($oModuleData->status == 'OK' && isset($oModuleData->moduleversion->compatible_release)) { return explode(',', $oModuleData->moduleversion->compatible_release->shopedition); } @@ -899,8 +900,7 @@ class requRemote /** @var stdClass $oModuleData */ $oModuleData = $this->_getRemoteServerData($sUrl); - if ($oModuleData->status == 'OK' && isset($oModuleData->moduleversion->compatible_release)) - { + if ($oModuleData->status == 'OK' && isset($oModuleData->moduleversion->compatible_release)) { return $this->shortenVersion($oModuleData->moduleversion->compatible_release->fromshopversion); } @@ -924,8 +924,7 @@ class requRemote /** @var stdClass $oModuleData */ $oModuleData = $this->_getRemoteServerData($sUrl); - if ($oModuleData->status == 'OK' && isset($oModuleData->moduleversion->compatible_release)) - { + if ($oModuleData->status == 'OK' && isset($oModuleData->moduleversion->compatible_release)) { return $this->shortenVersion($oModuleData->moduleversion->compatible_release->toshopversion); } @@ -970,8 +969,8 @@ class requRemote if (extension_loaded('curl') && function_exists('curl_init') && function_exists('curl_exec') && - $ch = curl_init()) - { + $ch = curl_init() + ) { $sCurl_URL = preg_replace('@^((http|https)://)@', '', $sFilePath); curl_setopt($ch, CURLOPT_URL, $sCurl_URL); if ($_SERVER['HTTP_USER_AGENT']) { @@ -1097,11 +1096,8 @@ class requTests { $aResult[$this->getBasePath()] = false; - if ((version_compare(phpversion(), $aConfiguration['aParams']['from'], '>=')) && (version_compare( - phpversion(), - $aConfiguration['aParams']['to'], - '<' - )) + if ((version_compare(phpversion(), $aConfiguration['aParams']['from'], '>=')) && + (version_compare(phpversion(), $aConfiguration['aParams']['to'], '<')) ) { $aResult[$this->getBasePath()] = true; } @@ -1163,10 +1159,15 @@ class requTests $oEditionResult = $this->_getShopEdition(); $sEdition = strtoupper($oEditionResult->oxedition); - $mMinRemoteVersion = $this->oRemote->getMinShopVersion($this->oConfig->sModId, $this->oConfig->sModVersion, $sEdition); + $mMinRemoteVersion = $this->oRemote->getMinShopVersion( + $this->oConfig->sModId, + $this->oConfig->sModVersion, + $sEdition + ); + if ($mMinRemoteVersion) { $aConfiguration['aParams'] = array('version' => $mMinRemoteVersion); - } else { + } else { $aConfiguration['aParams'] = array('version' => $aConfiguration['aParams'][$sEdition]); } @@ -1194,10 +1195,15 @@ class requTests $oEditionResult = $this->_getShopEdition(); $sEdition = strtoupper($oEditionResult->oxedition); - $mMaxRemoteVersion = $this->oRemote->getMaxShopVersion($this->oConfig->sModId, $this->oConfig->sModVersion, $sEdition); + $mMaxRemoteVersion = $this->oRemote->getMaxShopVersion( + $this->oConfig->sModId, + $this->oConfig->sModVersion, + $sEdition + ); + if ($mMaxRemoteVersion) { $aConfiguration['aParams'] = array('version' => $mMaxRemoteVersion); - } else { + } else { $aConfiguration['aParams'] = array('version' => $aConfiguration['aParams'][$sEdition]); } @@ -1219,7 +1225,12 @@ class requTests if ($this->getDb()) { $oResult = $this->_getShopEdition(); - $mRemoteShopEditions = $this->oRemote->getShopEdition($this->oConfig->sModId, $this->oConfig->sModVersion, $oResult->oxedition); + $mRemoteShopEditions = $this->oRemote->getShopEdition( + $this->oConfig->sModId, + $this->oConfig->sModVersion, + $oResult->oxedition + ); + if (is_array($mRemoteShopEditions)) { $aConfiguration['aParams'][0] = $mRemoteShopEditions; } @@ -1279,11 +1290,13 @@ class requTests 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"; + $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); @@ -1309,11 +1322,11 @@ class requTests { 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"; + 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); @@ -1337,9 +1350,7 @@ class requTests { $aResult = array($this->getBasePath() => false); - if ( - ( - version_compare(phpversion(), '5.2.0', '>=') && + if ((version_compare(phpversion(), '5.2.0', '>=') && version_compare(phpversion(), '5.2.900', '<') && function_exists('zend_optimizer_version') ) || ( @@ -1347,7 +1358,7 @@ class requTests version_compare(phpversion(), '5.4.900', '<') && function_exists('zend_loader_version') ) - ){ + ) { $aResult[$this->getBasePath()] = true; } @@ -1373,6 +1384,77 @@ class requTests } } +/** + * 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 */