diff --git a/.gitattributes b/.gitattributes index 73b98c1..bf1e33e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -11,6 +11,7 @@ copy_this/modules/d3/d3geoip/controllers/admin/d3_country_geoip.php -text copy_this/modules/d3/d3geoip/menu.xml -text copy_this/modules/d3/d3geoip/metadata.php -text copy_this/modules/d3/d3geoip/models/d3geoip.php -text +copy_this/modules/d3/d3geoip/modules/components/d3_oxcmp_lang_geoip.php -text copy_this/modules/d3/d3geoip/modules/controllers/d3_oxshopcontrol_geoip.php -text copy_this/modules/d3/d3geoip/picture.png -text copy_this/modules/d3/d3geoip/setup/d3geoip_update.php -text diff --git a/copy_this/modules/d3/d3geoip/components/d3cmp_geoip.php b/copy_this/modules/d3/d3geoip/components/d3cmp_geoip.php index 6cbc9d8..b9f0d2a 100644 --- a/copy_this/modules/d3/d3geoip/components/d3cmp_geoip.php +++ b/copy_this/modules/d3/d3geoip/components/d3cmp_geoip.php @@ -25,9 +25,6 @@ class d3cmp_geoip extends oxView private $_sModId = 'd3_geoip'; - /** - * @return null - */ public function init() { if (d3_cfg_mod::get($this->_sModId)->isActive()) { @@ -40,7 +37,8 @@ class d3cmp_geoip extends oxView /** @var $oLocation d3geoip */ $oLocation = oxNew('d3geoip'); $oLocation->setCountryCurrency(); - $oLocation->setCountryLanguage(); + // moved to oxcmp_lang extension because here it's to late + // $oLocation->setCountryLanguage(); if (!isset($oBasket)) { $oBasket = $this->getSession()->getBasket(); diff --git a/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_main.php b/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_main.php index 47390bd..9da9299 100644 --- a/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_main.php +++ b/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_main.php @@ -20,6 +20,9 @@ class d3_cfg_geoipset_main extends d3_cfg_mod_main protected $_sThisTemplate = "d3_cfg_geoipset_main.tpl"; protected $_blHasDebugSwitch = true; protected $_sDebugHelpTextIdent = 'D3_GEOIP_SET_DEBUG_DESC'; + protected $_sMenuItemTitle = 'd3mxgeoip'; + protected $_sMenuSubItemTitle = 'd3mxgeoip_settings'; + public $oCountryList; /** * @param $sIP @@ -44,46 +47,30 @@ class d3_cfg_geoipset_main extends d3_cfg_mod_main return $sTitle; } - /** - * @return oxcountrylist - */ - public function getCountryList() - { - startProfile(__METHOD__); - - /** @var $oCountryList oxcountrylist */ - $oCountryList = oxNew('oxcountrylist'); - $oListObject = $oCountryList->getBaseObject(); - $sFieldList = $oListObject->getSelectFields(); - $sQ = "select $sFieldList from " . $oListObject->getViewName(); - $oCountryList->selectString($sQ); - - stopProfile(__METHOD__); - - return $oCountryList; - } - /** * @return oxcountrylist */ public function getIPCountryList() { - startProfile(__METHOD__); + if ($this->oCountryList) { + return $this->oCountryList; + } + startProfile(__METHOD__); /** @var $oGeoIp d3geoip */ $oGeoIp = oxNew('d3geoip'); /** @var $oCountryList oxcountrylist */ - $oCountryList = oxNew('oxcountrylist'); - $oListObject = $oCountryList->getBaseObject(); + $this->oCountryList = oxNew('oxcountrylist'); + $oListObject = $this->oCountryList->getBaseObject(); $sFieldList = $oListObject->getSelectFields(); $sQ = "select (SELECT d3startip FROM ".$oGeoIp->getViewName(). " WHERE D3ISO = " .$oListObject->getViewName(). ". oxisoalpha2 LIMIT 1) as IP, $sFieldList from " . $oListObject->getViewName(); - $oCountryList->selectString($sQ); + $this->oCountryList->selectString($sQ); stopProfile(__METHOD__); - return $oCountryList; + return $this->oCountryList; } } diff --git a/copy_this/modules/d3/d3geoip/metadata.php b/copy_this/modules/d3/d3geoip/metadata.php index b904507..6ade871 100644 --- a/copy_this/modules/d3/d3geoip/metadata.php +++ b/copy_this/modules/d3/d3geoip/metadata.php @@ -15,11 +15,12 @@ $aModule = array( 'en' => '', ), 'thumbnail' => 'picture.png', - 'version' => '3.0.2.1', + 'version' => '3.0.2.2', 'author' => 'D³ Data Development (Inh.: Thomas Dartsch)', 'email' => 'support@shopmodule.com', 'url' => 'http://www.oxidmodule.com/', 'extend' => array( + 'oxcmp_lang' => 'd3/d3geoip/modules/components/d3_oxcmp_lang_geoip', 'oxshopcontrol' => 'd3/d3geoip/modules/controllers/d3_oxshopcontrol_geoip', ), 'files' => array( diff --git a/copy_this/modules/d3/d3geoip/models/d3geoip.php b/copy_this/modules/d3/d3geoip/models/d3geoip.php index 96296cf..2e8ef23 100644 --- a/copy_this/modules/d3/d3geoip/models/d3geoip.php +++ b/copy_this/modules/d3/d3geoip/models/d3geoip.php @@ -15,7 +15,7 @@ * @link http://www.oxidmodule.com */ -class d3GeoIP extends oxbase +class d3GeoIP extends oxBase { protected $_sClassName = 'd3geoip'; private $_sModId = 'd3_geoip'; @@ -47,9 +47,7 @@ class d3GeoIP extends oxbase } $iIPNum = $this->_getNumIp( - oxRegistry::getConfig()->checkParamSpecialChars( - str_replace(' ', '', $sIP) - ) + oxRegistry::getConfig()->checkParamSpecialChars($sIP) ); $sISOAlpha = $this->loadByIPNum($iIPNum); @@ -120,10 +118,11 @@ class d3GeoIP extends oxbase $sIP = 'UNKNOWN'; } } + $sIP = str_replace(' ', '', $sIP); stopProfile(__METHOD__); - return oxRegistry::getConfig()->checkParamSpecialChars(str_replace(' ', '', $sIP)); + return oxRegistry::getConfig()->checkParamSpecialChars($sIP); } /** @@ -251,6 +250,7 @@ class d3GeoIP extends oxbase if (!$this->isAdmin() && oxRegistry::getUtils()->isSearchEngine() === false + && oxRegistry::getSession()->getId() && oxRegistry::getSession()->getVariable('d3isSetLang') === null && $oCountry->getId() && $oCountry->getFieldData('d3geoiplang') > -1 ) { diff --git a/copy_this/modules/d3/d3geoip/modules/components/d3_oxcmp_lang_geoip.php b/copy_this/modules/d3/d3geoip/modules/components/d3_oxcmp_lang_geoip.php new file mode 100644 index 0000000..6793c39 --- /dev/null +++ b/copy_this/modules/d3/d3geoip/modules/components/d3_oxcmp_lang_geoip.php @@ -0,0 +1,17 @@ +_sModId)->isActive()) { + /** @var $oLocation d3geoip */ + $oLocation = oxNew('d3geoip'); + $oLocation->setCountryLanguage(); + } + + parent::init(); + } +} \ No newline at end of file diff --git a/copy_this/modules/d3/d3geoip/modules/controllers/d3_oxshopcontrol_geoip.php b/copy_this/modules/d3/d3geoip/modules/controllers/d3_oxshopcontrol_geoip.php index bf17d26..7954aee 100644 --- a/copy_this/modules/d3/d3geoip/modules/controllers/d3_oxshopcontrol_geoip.php +++ b/copy_this/modules/d3/d3geoip/modules/controllers/d3_oxshopcontrol_geoip.php @@ -22,7 +22,6 @@ class d3_oxshopcontrol_geoip extends d3_oxshopcontrol_geoip_parent * @param null $sFunction * @param null $aParams * @param null $aViewsChain - * @return null */ public function start ($sClass = null, $sFunction = null, $aParams = null, $aViewsChain = null) { @@ -33,8 +32,6 @@ class d3_oxshopcontrol_geoip extends d3_oxshopcontrol_geoip_parent /** * check, if developer mode has to be enabled - * - * @return bool */ protected function _d3AddGeoIpComponent() { diff --git a/copy_this/modules/d3/d3geoip/setup/d3geoip_update.php b/copy_this/modules/d3/d3geoip/setup/d3geoip_update.php index 8daea5e..86df8fa 100644 --- a/copy_this/modules/d3/d3geoip/setup/d3geoip_update.php +++ b/copy_this/modules/d3/d3geoip/setup/d3geoip_update.php @@ -18,14 +18,14 @@ class d3geoip_update extends d3install_updatebase { public $sModKey = 'd3_geoip'; public $sModName = 'GeoIP'; - public $sModVersion = '3.0.2.1'; - public $sModRevision = '75'; - public $sBaseConf = 'sw2M1p3STcxMXh0eDhyR1A3YUJDMDVDakZUM2FnakVDOWdwRm9SQzFiMzhqUEtNTTFXK2ZmSlhqd1k2a -DJiSi9QSjRTQUhwOXgrMzVOOVRKRWM1c1FUci9OMUtJR2xxQ0JUTzd3V3FaSEFneGRRL3FOOU1sS09ib -FpDSjBrTUJDQTh6R2pScnZpOXphaUtlZUovQ1UzNlN5di9LeXBIYmlTQzRTRlA0czRBRmVibzZOY1R1V -lNZVUE1R3hTa2drOGx0a09HN3JhMkx1OVJvcnN5OHUvbVhqWUVURVhGanBva29GOUY3amNTcXhsTVdRM -W8vRWJtYW9IY0NqdDBlSEtwOFRJMGQ1OElxeG13bDVySGFub1ovYkkrWEtvSm1HY3RMVXlPd0pJU2dmW -Vk9'; + public $sModVersion = '3.0.2.2'; + public $sModRevision = '81'; + public $sBaseConf = 'G1oR3FtR0ZJMXNwbXNjQ0Q2WnNsdGtmU2FGVCt5NEY3MEozb2hwRnV4b2JPdXljQUFEbDJRSzFadjF6Y +nZWbEVDallzY1I0b0J5Tm9wU1IyakNPbXNkb2ZnU0J0ZzJZUnN0cEtNM3BSbjQ5NGxRTWR5THNkVDcvZ +UNuMklya3ZsUHlNeUxGeE9UYStwY3NIYTE2YVZzOHF1dFpBRTNMZU5CQ2JMTXdYOUFXSEtQRGQ2OWJmZ +VpReFVJWDBPMHQ5d2VpZTFwMXVXV1FyK1JhNVljWVJmaTNKUGV1ZjlnRFNsditKOFc4aTU1d2J1ZHlTT +U8vM0lHaCtkaHhvdGtQa1NaWWZlYklmRUpKcURmYmowVVdZN3JONENSaGdKWXh6WFMwaUlvUVlEQ3ZEW +lVKOGhMaUd4c2s2am5HUnEyWFpUeHQ='; public $sRequirements = ''; public $sBaseValue = ''; diff --git a/copy_this/modules/d3/d3geoip/views/admin/de/d3_geoip_lang.php b/copy_this/modules/d3/d3geoip/views/admin/de/d3_geoip_lang.php index 0420065..f7feaac 100644 --- a/copy_this/modules/d3/d3geoip/views/admin/de/d3_geoip_lang.php +++ b/copy_this/modules/d3/d3geoip/views/admin/de/d3_geoip_lang.php @@ -21,7 +21,7 @@ $iLangNr = 0; // ------------------------------- $aLang = array( 'charset' => 'ISO-8859-15', - 'd3mxgeoip' => 'GeoIP', + 'd3mxgeoip' => " GeoIP", 'd3mxgeoip_settings' => 'Einstellungen', 'd3tbclgeoip_settings_main' => 'Grundeinstellungen', 'tbclcountry_geoip' => 'GeoIP-Kundenumleitungen', diff --git a/copy_this/modules/d3/d3geoip/views/admin/tpl/d3_cfg_geoipset_main.tpl b/copy_this/modules/d3/d3geoip/views/admin/tpl/d3_cfg_geoipset_main.tpl index e0cf578..530068d 100644 --- a/copy_this/modules/d3/d3geoip/views/admin/tpl/d3_cfg_geoipset_main.tpl +++ b/copy_this/modules/d3/d3geoip/views/admin/tpl/d3_cfg_geoipset_main.tpl @@ -126,7 +126,6 @@ td.edittext { getValue('blChangeShop') == 1}]checked[{/if}]> [{oxinputhelp ident="D3_GEOIP_SET_OPTIONS_CHANGESHOP_DESC"}] -
@@ -137,7 +136,6 @@ td.edittext { getValue('blChangeCurr') == 1}]checked[{/if}]> [{oxinputhelp ident="D3_GEOIP_SET_OPTIONS_CHANGECURR_DESC"}] -
@@ -148,7 +146,6 @@ td.edittext { getValue('blChangeLang') == 1}]checked[{/if}]> [{oxinputhelp ident="D3_GEOIP_SET_OPTIONS_CHANGELANG_DESC"}] -
@@ -159,7 +156,6 @@ td.edittext { getValue('blChangeURL') == 1}]checked[{/if}]> [{oxinputhelp ident="D3_GEOIP_SET_OPTIONS_CHANGEURL_DESC"}] -
@@ -169,13 +165,12 @@ td.edittext {
[{oxinputhelp ident="D3_GEOIP_SET_OPTIONS_NOCOUNTRY_DESC"}]
-
@@ -197,7 +192,6 @@ td.edittext { [{oxinputhelp ident="D3_GEOIP_SET_IP_TESTIP_DESC"}] -
@@ -213,7 +207,6 @@ td.edittext { [{oxinputhelp ident="D3_GEOIP_SET_IP_TESTCOUNTRY_DESC"}] -
@@ -227,7 +220,6 @@ td.edittext { [{$oView->getIpCountry($edit->getValue('sCheckIp'))}] [{/if}] -
@@ -247,14 +239,4 @@ td.edittext { -[{include file="d3_cfg_mod_inc.tpl"}] - - \ No newline at end of file +[{include file="d3_cfg_mod_inc.tpl"}] \ No newline at end of file diff --git a/setup+doku/Installation.pdf b/setup+doku/Installation.pdf index 014640b..5cec254 100644 Binary files a/setup+doku/Installation.pdf and b/setup+doku/Installation.pdf differ diff --git a/setup+doku/Precheck/d3precheck.php b/setup+doku/Precheck/d3precheck.php index f8b5bae..696dece 100644 --- a/setup+doku/Precheck/d3precheck.php +++ b/setup+doku/Precheck/d3precheck.php @@ -39,11 +39,11 @@ class requConfig { - public $sModName = 'D³ GeoIP'; + public $sModName = 'D³ GeoIP'; public $sModId = 'd3_geoip'; - public $sModVersion = '3.0.2.1'; + public $sModVersion = '3.0.2.2'; /********************** check configuration section ************************/ @@ -75,7 +75,7 @@ class requConfig // benötigt Zend Optimizer (PHP 5.2) bzw. Zend Guard Loader (> PHP 5.2) 'hasZendLoaderOptimizer' => array( - 'blExec' => 1, + 'blExec' => 0, ), // benötigt IonCubeLoader @@ -83,7 +83,12 @@ class requConfig 'blExec' => 0, ), - // benötigt PHP-Extension (kaskadierbar (siehe "Desc1")) + // benötigt Zend Decoder oder IonCubeLoader + 'hasIonCubeOrZendLoader' => array( + 'blExec' => 1, + ), + + // benötigte PHP-Extension (kaskadierbar (siehe "Desc1")) 'hasExtension' => array( array( 'blExec' => 1, @@ -99,13 +104,29 @@ class requConfig ), ), + // 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' => '4.8.0', - 'CE' => '4.8.0', - 'EE' => '5.1.0' + 'PE' => '4.9.0', + 'CE' => '4.9.0', + 'EE' => '5.2.0' ), ), @@ -113,9 +134,9 @@ class requConfig 'hasMaxShopVersion' => array( 'blExec' => 1, 'aParams' => array( - 'PE' => '4.9.7', - 'CE' => '4.9.7', - 'EE' => '5.2.7' + 'PE' => '4.10.3', + 'CE' => '4.10.3', + 'EE' => '5.3.3' ), ), @@ -182,7 +203,7 @@ date_default_timezone_set('Europe/Berlin'); */ class requCheck { - public $sVersion = '4.7.1'; + public $sVersion = '4.10.2'; protected $_db = false; @@ -827,6 +848,9 @@ class requLayout width: 400px; z-index: 2500; } + .squ_desc li { + line-height: normal; + } .squ_desc:hover div, .squ_desc div:hover { display: block; @@ -1363,6 +1387,32 @@ class requTranslations '
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 '. @@ -1437,9 +1487,10 @@ class requTranslations '
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', + 'installiert (auf passendes Zend-Installationspaket achten!)', 'hasZendLoaderOptimizer_DESC' => '
Das Modul erfordert (je nach PHP-Version) den Zend Optimizer '. - 'bzw. den Zend Guard Loader.
'. + '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 '. @@ -1454,8 +1505,9 @@ class requTranslations '
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', - 'hasIonCubeLoader_DESC' => '
Das Modul erfordert den ionCube Loader.
'. + '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 '. @@ -1467,8 +1519,28 @@ class requTranslations '
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, Ergebnis mglw.'. - 'nicht sicher)', + '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 '. @@ -1485,8 +1557,20 @@ class requTranslations '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 '. + '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', @@ -1504,7 +1588,7 @@ class requTranslations '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 require adaptation.
    '. + '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.
    ', @@ -1516,7 +1600,7 @@ class requTranslations '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 require adaptation.
    '. + '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.
    ', @@ -1528,7 +1612,7 @@ class requTranslations '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 require adaptation.
    '. + '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.
    ', @@ -1539,14 +1623,36 @@ class requTranslations '
    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 require adaptation.
    '. + '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 suitable version.
    '. + '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 '. @@ -1554,7 +1660,7 @@ class requTranslations '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 suitable version.
    '. + '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 '. @@ -1563,9 +1669,9 @@ class requTranslations 'hasMinModCfgVersion_DESC' => '
    The module requires additional software "%2$s" at least '. 'in version %3$s
    '. '
    The software is installed '. - 'in a suitable version.
    '. + 'in a compatible version.
    '. '
    The additional software is '. - 'be installed or in wrong version available. Please install the additional software before '. + '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.
    ', @@ -1573,7 +1679,7 @@ class requTranslations 'hasMaxModCfgVersion_DESC' => '
    The module requires additional software "%2$s" not more than '. 'in version %3$s
    '. '
    The software is installed '. - 'in a suitable version.
    '. + 'in a compatible version.'. '
    The additional software is '. 'be installed or in wrong version available. Please install the additional software before '. 'proceeding this installation.
    '. @@ -1583,7 +1689,7 @@ class requTranslations '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 suitable for the new module version.
    '. + '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 '. @@ -1610,7 +1716,8 @@ class requTranslations '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', + '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 '. @@ -1621,23 +1728,40 @@ class requTranslations '
    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 require adaptation.
    '. + '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', + '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 require adaptation.
    '. + '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, result may not '. - 'be safe)', + '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 '. @@ -1653,6 +1777,18 @@ class requTranslations '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.
  • ', ), ); } @@ -1898,7 +2034,7 @@ class requTests */ public function hasMinPhpVersion(&$aConfiguration) { - $aResult[$this->getBasePath()] = false; + $aResult = array($this->getBasePath() => false); if (version_compare(phpversion(), $aConfiguration['aParams']['version'], '>=')) { $aResult[$this->getBasePath()] = true; @@ -1916,7 +2052,7 @@ class requTests */ public function hasFromToPhpVersion(&$aConfiguration) { - $aResult[$this->getBasePath()] = false; + $aResult = array($this->getBasePath() => false); if ((version_compare(phpversion(), $aConfiguration['aParams']['from'], '>=')) && (version_compare(phpversion(), $aConfiguration['aParams']['to'], '<')) @@ -1936,7 +2072,7 @@ class requTests */ public function hasMaxPhpVersion(&$aConfiguration) { - $aResult[$this->getBasePath()] = false; + $aResult = array($this->getBasePath() => false); if (version_compare(phpversion(), $aConfiguration['aParams']['version'], '<=')) { $aResult[$this->getBasePath()] = true; @@ -1954,7 +2090,7 @@ class requTests */ public function hasExtension(&$aConfiguration) { - $aResult[$this->getBasePath()] = false; + $aResult = array($this->getBasePath() => false); if (extension_loaded($aConfiguration['aParams']['type'])) { $aResult[$this->getBasePath()] = true; @@ -1965,6 +2101,69 @@ class requTests 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 * @@ -2222,7 +2421,7 @@ class requTests /** * @return array */ - public function hasZendLoaderOptimizer() + public function hasZendLoaderOptimizer(&$aConfiguration, $blCheckBasePathOnly = false) { $aResult = array($this->getBasePath() => false); @@ -2244,7 +2443,9 @@ class requTests } } - $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__)); + if ($blCheckBasePathOnly == false) { + $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__)); + } return $aResult; } @@ -2252,7 +2453,7 @@ class requTests /** * @return array */ - public function hasIonCubeLoader() + public function hasIonCubeLoader(&$aConfiguration, $blCheckBasePathOnly = false) { $aResult = array($this->getBasePath() => false); @@ -2260,7 +2461,59 @@ class requTests $aResult[$this->getBasePath()] = true; } - $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__)); + 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; } diff --git a/setup+doku/changelog.txt b/setup+doku/changelog.txt index d9f51d3..ffabda2 100644 --- a/setup+doku/changelog.txt +++ b/setup+doku/changelog.txt @@ -1,3 +1,7 @@ +=> 3.0.2.2 +- Fehler bei der "Abfragegenerierung während des Sprachwechsels" behoben (#6133) +- Strict Standard Messages korrigiert (#5772) + => 3.0.2.1 - Sprachumschalter wird sofort bei erstem Shopaufruf umgesetzt diff --git a/sources/GeoIP-Installation.docx b/sources/GeoIP-Installation.docx index d1ccf4e..7506ea9 100644 Binary files a/sources/GeoIP-Installation.docx and b/sources/GeoIP-Installation.docx differ