diff --git a/.gitattributes b/.gitattributes index 60f4d3a..d8c517b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,19 +1,18 @@ * text=auto !eol /Doxyfile -text copy_this/.noencode -text +copy_this/modules/d3/d3geoip/IntelliSenseHelper.php -text +copy_this/modules/d3/d3geoip/components/d3cmp_geoip.php -text copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset.php -text copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_licence.php -text copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_list.php -text copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_main.php -text copy_this/modules/d3/d3geoip/controllers/admin/d3_country_geoip.php -text -copy_this/modules/d3/d3geoip/d3_geoip_stub.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/models/d3geoip_update.php -text -copy_this/modules/d3/d3geoip/modules/components/d3_oxcmp_cur_geoip.php -text -copy_this/modules/d3/d3geoip/modules/components/d3_oxcmp_lang_geoip.php -text copy_this/modules/d3/d3geoip/picture.png -text +copy_this/modules/d3/d3geoip/setup/d3geoip_update.php -text copy_this/modules/d3/d3geoip/views/admin/de/d3_geoip_lang.php -text copy_this/modules/d3/d3geoip/views/admin/tpl/d3_cfg_geoipset_main.tpl -text copy_this/modules/d3/d3geoip/views/admin/tpl/d3_country_geoip.tpl -text diff --git a/copy_this/.noencode b/copy_this/.noencode index 2cecf09..852e36b 100644 --- a/copy_this/.noencode +++ b/copy_this/.noencode @@ -1 +1 @@ -copyAsIsFiles = modules/d3/d3geoip/controllers, modules/d3/d3geoip/models/d3geoip_update.php, modules/d3/d3geoip/modules/components, modules/d3/d3geoip/views, modules/d3/d3geoip/d3_geoip_stub.php, modules/d3/d3geoip/metadata.php \ No newline at end of file +copyAsIsFiles = modules/d3/d3geoip/components, modules/d3/d3geoip/controllers, modules/d3/d3geoip/models/d3geoip_update.php, modules/d3/d3geoip/views, modules/d3/d3geoip/IntelliSenseHelper.php, modules/d3/d3geoip/metadata.php \ No newline at end of file diff --git a/copy_this/modules/d3/d3geoip/d3_geoip_stub.php b/copy_this/modules/d3/d3geoip/IntelliSenseHelper.php similarity index 100% rename from copy_this/modules/d3/d3geoip/d3_geoip_stub.php rename to copy_this/modules/d3/d3geoip/IntelliSenseHelper.php diff --git a/copy_this/modules/d3/d3geoip/modules/components/d3_oxcmp_cur_geoip.php b/copy_this/modules/d3/d3geoip/components/d3cmp_geoip.php similarity index 67% rename from copy_this/modules/d3/d3geoip/modules/components/d3_oxcmp_cur_geoip.php rename to copy_this/modules/d3/d3geoip/components/d3cmp_geoip.php index 2f088d2..6cfd75f 100644 --- a/copy_this/modules/d3/d3geoip/modules/components/d3_oxcmp_cur_geoip.php +++ b/copy_this/modules/d3/d3geoip/components/d3cmp_geoip.php @@ -1,5 +1,4 @@ + * @copyright © D³ Data Development, Thomas Dartsch + * @author D³ Data Development - Daniel Seifert * @link http://www.oxidmodule.com */ -class d3_oxcmp_cur_geoip extends d3_oxcmp_cur_geoip_parent + +class d3cmp_geoip extends oxView { - private $_sModId = 'd3_geoip'; + /** + * Marking object as component + * + * @var bool + */ + protected $_blIsComponent = true; + + private $_sModId = 'd3_geoip'; /** * @return null */ public function init() { - if (d3_cfg_mod::get($this->_sModId)->isActive()) - { - if (d3_cfg_mod::get($this->_sModId)->hasDebugMode()) - { + if (d3_cfg_mod::get($this->_sModId)->isActive()) { + if (d3_cfg_mod::get($this->_sModId)->hasDebugMode()) { /** @var $oGeoIp d3geoip */ $oGeoIp = oxNew('d3geoip'); echo $oGeoIp->getIP(); @@ -35,9 +40,9 @@ class d3_oxcmp_cur_geoip extends d3_oxcmp_cur_geoip_parent /** @var $oLocation d3geoip */ $oLocation = oxNew('d3geoip'); $oLocation->setCountryCurrency(); - } + $oLocation->setCountryLanguage(); + } - return parent::init(); + parent::init(); } - } \ No newline at end of file diff --git a/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset.php b/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset.php index cbd15ea..61ec21e 100644 --- a/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset.php +++ b/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset.php @@ -28,4 +28,4 @@ class d3_cfg_geoipset extends d3_cfg_mod_ return parent::render(); } -} \ No newline at end of file +} diff --git a/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_licence.php b/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_licence.php index fd10925..7535c00 100644 --- a/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_licence.php +++ b/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_licence.php @@ -21,4 +21,4 @@ class d3_cfg_geoipset_licence extends d3_cfg_mod_licence protected $_hasNewsletterForm = false; protected $_sMenuItemTitle = 'd3mxgeoip'; protected $_sMenuSubItemTitle = 'd3mxgeoip_settings'; -} \ No newline at end of file +} diff --git a/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_list.php b/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_list.php index 94b9f83..250bb00 100644 --- a/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_list.php +++ b/copy_this/modules/d3/d3geoip/controllers/admin/d3_cfg_geoipset_list.php @@ -38,4 +38,4 @@ class d3_cfg_geoipset_list extends d3_cfg_mod_list return $sRet; } -} \ No newline at end of file +} 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 f5cf3ca..47390bd 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 @@ -18,7 +18,7 @@ class d3_cfg_geoipset_main extends d3_cfg_mod_main { protected $_sModId = 'd3_geoip'; protected $_sThisTemplate = "d3_cfg_geoipset_main.tpl"; - protected $_blHasDebugSwitch = TRUE; + protected $_blHasDebugSwitch = true; protected $_sDebugHelpTextIdent = 'D3_GEOIP_SET_DEBUG_DESC'; /** @@ -33,12 +33,9 @@ class d3_cfg_geoipset_main extends d3_cfg_mod_main $oD3GeoIP = oxNew('d3geoip'); $oCountry = $oD3GeoIP->getUserLocationCountryObject($sIP); - if ($oCountry->getId()) - { + if ($oCountry->getId()) { $sTitle = $oCountry->getFieldData('oxtitle'); - } - else - { + } else { $sTitle = oxRegistry::getLang()->translateString('D3_GEOIP_SET_IP_CHECKIP_NOTSET'); } @@ -79,7 +76,9 @@ class d3_cfg_geoipset_main extends d3_cfg_mod_main $oCountryList = oxNew('oxcountrylist'); $oListObject = $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(); + $sQ = "select (SELECT d3startip FROM ".$oGeoIp->getViewName(). + " WHERE D3ISO = " .$oListObject->getViewName(). ". + oxisoalpha2 LIMIT 1) as IP, $sFieldList from " . $oListObject->getViewName(); $oCountryList->selectString($sQ); @@ -87,4 +86,4 @@ class d3_cfg_geoipset_main extends d3_cfg_mod_main return $oCountryList; } -} \ No newline at end of file +} diff --git a/copy_this/modules/d3/d3geoip/controllers/admin/d3_country_geoip.php b/copy_this/modules/d3/d3geoip/controllers/admin/d3_country_geoip.php index 63c25dd..1f00486 100644 --- a/copy_this/modules/d3/d3geoip/controllers/admin/d3_country_geoip.php +++ b/copy_this/modules/d3/d3geoip/controllers/admin/d3_country_geoip.php @@ -31,9 +31,8 @@ class d3_country_geoip extends oxAdminView */ public function render() { - if ( !oxRegistry::getConfig()->getConfigParam( 'blAllowSharedEdit' ) ) - { - $this->addTplParam('readonly', TRUE); + if (false == oxRegistry::getConfig()->getConfigParam('blAllowSharedEdit')) { + $this->addTplParam('readonly', true); } $ret = parent::render(); @@ -41,59 +40,49 @@ class d3_country_geoip extends oxAdminView $soxId = oxRegistry::getConfig()->getRequestParameter("oxid"); // check if we right now saved a new entry $sSavedID = oxRegistry::getConfig()->getRequestParameter("saved_oxid"); - if ( ($soxId == "-1" || !isset( $soxId)) && isset( $sSavedID) ) - { + if (($soxId == "-1" || !isset($soxId)) && isset($sSavedID)) { $soxId = $sSavedID; oxRegistry::getSession()->deleteVariable("saved_oxid"); - $this->addTplParam("oxid",$soxId); + $this->addTplParam("oxid", $soxId); // for reloading upper frame $this->addTplParam("updatelist", "1"); } - if ( $soxId != "-1" && isset( $soxId)) - { + if ($soxId != "-1" && isset($soxId)) { // load object /** @var $oCountry oxcountry */ - $oCountry = oxNew( "oxcountry" ); - $oCountry->loadInLang( $this->_iEditLang, $soxId ); - - if ($oCountry->isForeignCountry()) - { - $this->addTplParam("blForeignCountry", TRUE); - } - else - { - $this->addTplParam("blForeignCountry", FALSE); + $oCountry = oxNew("oxcountry"); + $oCountry->loadInLang($this->_iEditLang, $soxId); + + if ($oCountry->isForeignCountry()) { + $this->addTplParam("blForeignCountry", true); + } else { + $this->addTplParam("blForeignCountry", false); } $oOtherLang = $oCountry->getAvailableInLangs(); - if (!isset($oOtherLang[$this->_iEditLang])) - { - $oCountry->loadInLang( key($oOtherLang), $soxId ); + if (!isset($oOtherLang[$this->_iEditLang])) { + $oCountry->loadInLang(key($oOtherLang), $soxId); } $this->oCountry = $oCountry; $this->addTplParam("edit", $oCountry); // remove already created languages - $aLang = array_diff (oxRegistry::getLang()->getLanguageNames(), $oOtherLang ); + $aLang = array_diff(oxRegistry::getLang()->getLanguageNames(), $oOtherLang); - if ( count( $aLang)) - { + if (count($aLang)) { $this->addTplParam("posslang", $aLang); } - foreach ( $oOtherLang as $id => $language) - { + foreach ($oOtherLang as $id => $language) { $oLang= new stdClass(); $oLang->sLangDesc = $language; $oLang->selected = ($id == $this->_iEditLang); $this->_aViewData["otherlang"][$id] = clone $oLang; } - } - else - { - $this->addTplParam("blForeignCountry", TRUE); + } else { + $this->addTplParam("blForeignCountry", true); } $this->oShopList = oxNew('oxshoplist'); @@ -128,38 +117,33 @@ class d3_country_geoip extends oxAdminView public function save() { //allow malladmin only to perform this action - if ( !oxRegistry::getConfig()->getConfigParam( 'blAllowSharedEdit' ) ) - { + if (false == oxRegistry::getConfig()->getConfigParam('blAllowSharedEdit')) { return; } $soxId = oxRegistry::getConfig()->getRequestParameter("oxid"); - $aParams = oxRegistry::getConfig()->getRequestParameter("editval" ); + $aParams = oxRegistry::getConfig()->getRequestParameter("editval"); /** @var $oCountry oxcountry */ - $oCountry = oxNew( "oxcountry" ); + $oCountry = oxNew("oxcountry"); - if ( $soxId != "-1") - { - $oCountry->loadInLang( $this->_iEditLang, $soxId ); - } - else - { - $aParams['oxcountry__oxid'] = NULL; + if ($soxId != "-1") { + $oCountry->loadInLang($this->_iEditLang, $soxId); + } else { + $aParams['oxcountry__oxid'] = null; } $oCountry->setLanguage(0); - $oCountry->assign( $aParams ); + $oCountry->assign($aParams); $oCountry->setLanguage($this->_iEditLang); - $oCountry = oxRegistry::get('oxUtilsFile')->processFiles( $oCountry ); + $oCountry = oxRegistry::get('oxUtilsFile')->processFiles($oCountry); $oCountry->save(); $this->addTplParam("updatelist", "1"); // set oxid if inserted - if ( $soxId == "-1") - { - oxRegistry::getSession()->setVariable( "saved_oxid", $oCountry->getId()); + if ($soxId == "-1") { + oxRegistry::getSession()->setVariable("saved_oxid", $oCountry->getId()); } } @@ -176,25 +160,31 @@ class d3_country_geoip extends oxAdminView */ public function getCurList() { - $aCurrencies = array(); - - if ($this->getModCfgValue('blChangeShop') && $this->oCountry->getFieldData('d3geoipshop')) - { + if ($this->getModCfgValue('blChangeShop') && $this->oCountry->getFieldData('d3geoipshop')) { $sShopId = $this->oCountry->getFieldData('d3geoipshop'); - } - else - { + } else { $sShopId = oxRegistry::getConfig()->getActiveView()->getViewConfig()->getActiveShopId(); } - $sQ = "select DECODE( oxvarvalue, '".$this->getConfig()->getConfigParam( 'sConfigKey' )."') as oxvarvalue from oxconfig where oxshopid = '".$sShopId."' AND oxvarname = 'aCurrencies'"; + $sQ = "select DECODE( oxvarvalue, '".oxRegistry::getConfig()->getConfigParam('sConfigKey'). + "') as oxvarvalue from oxconfig where oxshopid = '".$sShopId."' AND oxvarname = 'aCurrencies'"; $sCurs = oxDb::getDb(oxDb::FETCH_MODE_ASSOC)->getOne($sQ); - if ($sCurs) - { - foreach (unserialize($sCurs) as $sKey => $sValue) - { + return $this->d3ExtractCurList($sCurs); + } + + /** + * @param $sCurrencies + * + * @return array + */ + public function d3ExtractCurList($sCurrencies) + { + $aCurrencies = array(); + + if ($sCurrencies) { + foreach (unserialize($sCurrencies) as $sKey => $sValue) { $aFields = explode('@', $sValue); $aCurrencies[$sKey]->id = $sKey; $aCurrencies[$sKey]->name = $aFields[0]; @@ -211,12 +201,9 @@ class d3_country_geoip extends oxAdminView */ public function getLangList() { - if ($this->getModCfgValue('blChangeShop') && $this->oCountry->getFieldData('d3geoipshop')) - { + if ($this->getModCfgValue('blChangeShop') && $this->oCountry->getFieldData('d3geoipshop')) { $sShopId = $this->oCountry->getFieldData('d3geoipshop'); - } - else - { + } else { $sShopId = oxRegistry::getConfig()->getActiveView()->getViewConfig()->getActiveShopId(); } @@ -224,60 +211,50 @@ class d3_country_geoip extends oxAdminView $aLangParams = oxRegistry::getConfig()->getShopConfVar('aLanguageParams', $sShopId); $aConfLanguages = oxRegistry::getConfig()->getShopConfVar('aLanguages', $sShopId); - if ( is_array( $aConfLanguages ) ) - { + if (is_array($aConfLanguages)) { $i = 0; - reset( $aConfLanguages ); - while ( list( $key, $val ) = each( $aConfLanguages ) ) - { - if (is_array($aLangParams) ) - { + reset($aConfLanguages); + while ((list($key, $val) = each($aConfLanguages))) { + if (is_array($aLangParams)) { //skipping non active languages - if ( !$aLangParams[$key]['active'] ) - { + if (false == $aLangParams[$key]['active']) { $i++; - continue; + continue; } } - if ( $val) - { + if ($val) { $oLang = new stdClass(); - if ( isset($aLangParams[$key]['baseId']) ) - { + if (isset($aLangParams[$key]['baseId'])) { $oLang->id = $aLangParams[$key]['baseId']; - } - else - { + } else { $oLang->id = $i; } $oLang->oxid = $key; $oLang->abbr = $key; $oLang->name = $val; - if ( is_array($aLangParams) ) - { + if (is_array($aLangParams)) { $oLang->active = $aLangParams[$key]['active']; $oLang->sort = $aLangParams[$key]['sort']; } - if ( isset( $iLanguage ) && $oLang->id == $iLanguage ) - { + if (isset($iLanguage) && $oLang->id == $iLanguage) { $oLang->selected = 1; - } - else - { + } else { $oLang->selected = 0; } - if ($oLang->active) + + if ($oLang->active) { $aLanguages[$oLang->id] = $oLang; + } } ++$i; } } - if (is_array($aLangParams) ) { - uasort( $aLanguages, array($this, '_sortLanguagesCallback') ); + if (is_array($aLangParams)) { + uasort($aLanguages, array($this, '_sortLanguagesCallback')); } return $aLanguages; @@ -288,20 +265,16 @@ class d3_country_geoip extends oxAdminView * @param $oLang2 * @return int */ - protected function _sortLanguagesCallback( $oLang1, $oLang2 ) + protected function _sortLanguagesCallback($oLang1, $oLang2) { $sSortParam = $this->_sDefSort; - $sVal1 = is_string($oLang1->$sSortParam) ? strtolower( $oLang1->$sSortParam ) : $oLang1->$sSortParam; - $sVal2 = is_string($oLang2->$sSortParam) ? strtolower( $oLang2->$sSortParam ) : $oLang2->$sSortParam; + $sVal1 = is_string($oLang1->$sSortParam) ? strtolower($oLang1->$sSortParam) : $oLang1->$sSortParam; + $sVal2 = is_string($oLang2->$sSortParam) ? strtolower($oLang2->$sSortParam) : $oLang2->$sSortParam; - if ( $this->_sDefSortOrder == 'asc' ) - { + if ($this->_sDefSortOrder == 'asc') { return ($sVal1 < $sVal2) ? -1 : 1; - } - else - { + } else { return ($sVal1 > $sVal2) ? -1 : 1; } } - -} \ No newline at end of file +} diff --git a/copy_this/modules/d3/d3geoip/metadata.php b/copy_this/modules/d3/d3geoip/metadata.php index e8faecf..7cabca1 100644 --- a/copy_this/modules/d3/d3geoip/metadata.php +++ b/copy_this/modules/d3/d3geoip/metadata.php @@ -15,30 +15,33 @@ $aModule = array( 'en' => '', ), 'thumbnail' => 'picture.png', - 'version' => '3.0.0.2', + 'version' => '3.0.1.0', 'author' => 'D³ Data Development (Inh.: Thomas Dartsch)', 'email' => 'support@shopmodule.com', 'url' => 'http://www.oxidmodule.com/', - 'extend' => array( - 'oxcmp_cur' => 'd3/d3geoip/modules/components/d3_oxcmp_cur_geoip', - 'oxcmp_lang' => 'd3/d3geoip/modules/components/d3_oxcmp_lang_geoip', - ), + 'extend' => array(), 'files' => array( - 'd3_cfg_geoipset' => 'd3/d3geoip/controllers/admin/d3_cfg_geoipset.php', - 'd3_cfg_geoipset_list' => 'd3/d3geoip/controllers/admin/d3_cfg_geoipset_list.php', - 'd3_cfg_geoipset_main' => 'd3/d3geoip/controllers/admin/d3_cfg_geoipset_main.php', + 'd3cmp_geoip' => 'd3/d3geoip/components/d3cmp_geoip.php', + 'd3_cfg_geoipset' => 'd3/d3geoip/controllers/admin/d3_cfg_geoipset.php', + 'd3_cfg_geoipset_list' => 'd3/d3geoip/controllers/admin/d3_cfg_geoipset_list.php', + 'd3_cfg_geoipset_main' => 'd3/d3geoip/controllers/admin/d3_cfg_geoipset_main.php', 'd3_cfg_geoipset_licence' => 'd3/d3geoip/controllers/admin/d3_cfg_geoipset_licence.php', - 'd3_country_geoip' => 'd3/d3geoip/controllers/admin/d3_country_geoip.php', - 'd3geoip' => 'd3/d3geoip/models/d3geoip.php', - 'd3geoip_update' => 'd3/d3geoip/models/d3geoip_update.php', + 'd3_country_geoip' => 'd3/d3geoip/controllers/admin/d3_country_geoip.php', + 'd3geoip' => 'd3/d3geoip/models/d3geoip.php', + 'd3geoip_update' => 'd3/d3geoip/setup/d3geoip_update.php', ), 'templates' => array( - 'd3_cfg_geoipset_main.tpl' => 'd3/d3geoip/views/admin/tpl/d3_cfg_geoipset_main.tpl', - 'd3_country_geoip.tpl' => 'd3/d3geoip/views/admin/tpl/d3_country_geoip.tpl', + 'd3_cfg_geoipset_main.tpl' => 'd3/d3geoip/views/admin/tpl/d3_cfg_geoipset_main.tpl', + 'd3_country_geoip.tpl' => 'd3/d3geoip/views/admin/tpl/d3_country_geoip.tpl', ), 'events' => array( 'onActivate' => 'd3install::checkUpdateStart', ), 'blocks' => array( ), + 'd3FileRegister' => array( + 'd3/d3geoip/IntelliSenseHelper.php', + 'd3/d3geoip/metadata.php', + 'd3/d3geoip/views/admin/de/d3_geoip_lang.php', + ), ); \ No newline at end of file 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 deleted file mode 100644 index b585a5b..0000000 --- a/copy_this/modules/d3/d3geoip/modules/components/d3_oxcmp_lang_geoip.php +++ /dev/null @@ -1,35 +0,0 @@ - - * @link http://www.oxidmodule.com - */ -class d3_oxcmp_lang_geoip extends d3_oxcmp_lang_geoip_parent -{ - private $_sModId = "d3_geoip"; - - /** - * @return null - */ - public function init() - { - if (d3_cfg_mod::get($this->_sModId)->isActive()) - { - /** @var $oLocation d3geoip */ - $oLocation = oxNew('d3geoip'); - $oLocation->setCountryLanguage(); - } - - return parent::init(); - } -} \ No newline at end of file diff --git a/copy_this/modules/d3/d3geoip/models/d3geoip_update.php b/copy_this/modules/d3/d3geoip/setup/d3geoip_update.php similarity index 58% rename from copy_this/modules/d3/d3geoip/models/d3geoip_update.php rename to copy_this/modules/d3/d3geoip/setup/d3geoip_update.php index 7249015..6dc06bd 100644 --- a/copy_this/modules/d3/d3geoip/models/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.0.2'; - public $sModRevision = '52'; - public $sBaseConf = 'DSdWUJnZzd3RTd4aStQNjFBVnBkK3NFUmwzY2tiNHllWmFjSUZZOS9USTAzbHpHb241YWZTNThRWnpCV -XBnQ2J0STVReGNTQmVJQ0h3aXVYWVBKcWFuVzM2WVNwdld0cXZ3bEYzTWJRMnJTN2ZYMGFNMkFxT2VQe -CsxNzVVaytabkRBbCtJWnE1Y3lKZWdmaC9XNDhkZzhhQXhHc2FaZHlyejlSMFE1ZUJjNzA1M1dzSEJPQ -0NBNGZJbEpZNFVuMG1STEtQRkx1WDZZZzRndXF2OW1oUGdGb2tJZW1lQ09waE5FK29PYmpML2pRVkNaS -EdaS3RXUW5NZzJhUUF5ZlNIZ1h3MUo3QVpIeFUwL0lmajRTbWw2cmNsckpJVnFYQjFKWTd3RXUrMlhHK -zQ9'; + public $sModVersion = '3.0.1.0'; + public $sModRevision = '67'; + public $sBaseConf = '5FibjlIQlRvbWMzY29mVi85RXFxbkc5bFI3R24rNkd5Y0lEcXJFOGhtaGExRVcyaEF6a281cVhRUXFMU +0d6dnNDbCtLRVdObFh3bnVEdUNRTFJrVlE5VGtsRkF3Tyt4TU1Pd290WDliOTQ2SUE5Skk0eTcxTGdlT +XZna0dhS2ZOekJUSC94ZUd5YmxXZzRXcG5QSWcvZnFJa1l0N1MrdWRZaFU1VG5nUGFwNEF1WTh6azNja +Gs3SmtzQ05SVjROSGdSZ2N0S3Q1TTV1RGlCSU5RZnh1dGVNNVd6bTBzMU1FdHFiNytJQldBRjRTNmx3U +VVlRkhrRzYxYUtpaWNBOUUrLzZ2YjN5SDM1cllVMTIrYUFPRnRYcFpibHVBQytEQVFnNFV0RWpFZXAwd +FE9'; public $sRequirements = ''; public $sBaseValue = ''; @@ -40,6 +40,10 @@ zQ9'; 'do' => 'fixGeoIpFields'), array('check' => 'checkIndizes', 'do' => 'fixIndizes'), + array('check' => 'hasUnregisteredFiles', + 'do' => 'showUnregisteredFiles'), + array('check' => 'checkRegisteredComponent', + 'do' => 'registerComponent'), array('check' => 'checkModCfgSameRevision', 'do' => 'updateModCfgSameRevision'), ); @@ -52,101 +56,101 @@ zQ9'; 'sTableName' => 'oxcountry', 'sFieldName' => 'D3GEOIPSHOP', 'sType' => 'VARCHAR(10)', - 'blNull' => FALSE, + 'blNull' => false, 'sDefault' => 'oxbaseshop', 'sComment' => '', 'sExtra' => '', - 'blMultilang' => FALSE, + 'blMultilang' => false, ), 'D3GEOIPLANG' => array( 'sTableName' => 'oxcountry', 'sFieldName' => 'D3GEOIPLANG', 'sType' => 'TINYINT(2)', - 'blNull' => FALSE, + 'blNull' => false, 'sDefault' => '-1', 'sComment' => '', 'sExtra' => '', - 'blMultilang' => FALSE, + 'blMultilang' => false, ), 'D3GEOIPCUR' => array( 'sTableName' => 'oxcountry', 'sFieldName' => 'D3GEOIPCUR', 'sType' => 'TINYINT(2)', - 'blNull' => FALSE, + 'blNull' => false, 'sDefault' => '-1', 'sComment' => '', 'sExtra' => '', - 'blMultilang' => FALSE, + 'blMultilang' => false, ), 'D3GEOIPURL' => array( 'sTableName' => 'oxcountry', 'sFieldName' => 'D3GEOIPURL', 'sType' => 'VARCHAR(255)', - 'blNull' => FALSE, - 'sDefault' => FALSE, + 'blNull' => false, + 'sDefault' => false, 'sComment' => '', 'sExtra' => '', - 'blMultilang' => FALSE, + 'blMultilang' => false, ), 'D3STARTIP' => array( 'sTableName' => 'd3geoip', 'sFieldName' => 'D3STARTIP', 'sType' => 'VARCHAR(39)', - 'blNull' => FALSE, - 'sDefault' => FALSE, + 'blNull' => false, + 'sDefault' => false, 'sComment' => '', 'sExtra' => '', - 'blMultilang' => FALSE, + 'blMultilang' => false, ), 'D3ENDIP' => array( 'sTableName' => 'd3geoip', 'sFieldName' => 'D3ENDIP', 'sType' => 'VARCHAR(39)', - 'blNull' => FALSE, - 'sDefault' => FALSE, + 'blNull' => false, + 'sDefault' => false, 'sComment' => '', 'sExtra' => '', - 'blMultilang' => FALSE, + 'blMultilang' => false, ), 'D3STARTIPNUM' => array( 'sTableName' => 'd3geoip', 'sFieldName' => 'D3STARTIPNUM', 'sType' => 'DECIMAL(38,0)', - 'blNull' => FALSE, - 'sDefault' => FALSE, + 'blNull' => false, + 'sDefault' => false, 'sComment' => '', 'sExtra' => '', - 'blMultilang' => FALSE, + 'blMultilang' => false, ), 'D3ENDIPNUM' => array( 'sTableName' => 'd3geoip', 'sFieldName' => 'D3ENDIPNUM', 'sType' => 'DECIMAL(38,0)', - 'blNull' => FALSE, - 'sDefault' => FALSE, + 'blNull' => false, + 'sDefault' => false, 'sComment' => '', 'sExtra' => '', - 'blMultilang' => FALSE, + 'blMultilang' => false, ), 'D3ISO' => array( 'sTableName' => 'd3geoip', 'sFieldName' => 'D3ISO', 'sType' => 'CHAR(2)', - 'blNull' => FALSE, - 'sDefault' => FALSE, + 'blNull' => false, + 'sDefault' => false, 'sComment' => '', 'sExtra' => '', - 'blMultilang' => FALSE, + 'blMultilang' => false, ), 'D3COUNTRYNAME' => array( 'sTableName' => 'd3geoip', 'sFieldName' => 'D3COUNTRYNAME', 'sType' => 'VARCHAR(50)', - 'blNull' => FALSE, - 'sDefault' => FALSE, + 'blNull' => false, + 'sDefault' => false, 'sComment' => '', 'sExtra' => '', - 'blMultilang' => FALSE, + 'blMultilang' => false, ), ); @@ -175,7 +179,7 @@ zQ9'; */ public function checkGeoIpTableExist() { - return $this->_checkTableExist('d3geoip'); + return $this->_checkTableNotExist('d3geoip'); } /** @@ -183,13 +187,9 @@ zQ9'; */ public function updateGeoIpTableExist() { - $blRet = FALSE; - if ($this->checkGeoIpTableExist()) - { - $aRet = $this->_addTable('d3geoip', $this->aFields, $this->aIndizes, 'GeoIP', 'MyISAM'); - $blRet = $aRet['blRet']; - $this->_setActionLog('SQL', $aRet['sql'], __METHOD__); - $this->_setUpdateBreak(TRUE); + $blRet = false; + if ($this->checkGeoIpTableExist()) { + $blRet = $this->_addTable2('d3geoip', $this->aFields, $this->aIndizes, 'GeoIP', 'MyISAM'); } return $blRet; @@ -223,9 +223,8 @@ zQ9'; */ public function checkModCfgItemExist() { - $blRet = FALSE; - foreach ($this->_getShopList() as $oShop) - { + $blRet = false; + foreach ($this->getShopList() as $oShop) { /** @var $oShop oxshop */ $aWhere = array( 'oxmodid' => $this->sModKey, @@ -235,8 +234,7 @@ zQ9'; $blRet = $this->_checkTableItemNotExist('d3_cfg_mod', $aWhere); - if ($blRet) - { + if ($blRet) { return $blRet; } } @@ -249,12 +247,10 @@ zQ9'; */ public function updateModCfgItemExist() { - $blRet = FALSE; + $blRet = false; - if ($this->checkModCfgItemExist()) - { - foreach ($this->_getShopList() as $oShop) - { + if ($this->checkModCfgItemExist()) { + foreach ($this->getShopList() as $oShop) { /** @var $oShop oxshop */ $aWhere = array( 'oxmodid' => $this->sModKey, @@ -262,8 +258,7 @@ zQ9'; 'oxnewrevision' => $this->sModRevision, ); - if ($this->_checkTableItemNotExist('d3_cfg_mod', $aWhere)) - { + if ($this->_checkTableItemNotExist('d3_cfg_mod', $aWhere)) { // update don't use this property unset($aWhere['oxnewrevision']); @@ -271,103 +266,98 @@ zQ9'; array ( 'fieldname' => 'OXID', 'content' => "md5('" . $this->sModKey . " " . $oShop->getId() . " de')", - 'force_update' => TRUE, - 'use_quote' => FALSE, - 'use_multilang' => FALSE, + 'force_update' => true, + 'use_quote' => false, + 'use_multilang' => false, ), array ( 'fieldname' => 'OXSHOPID', 'content' => $oShop->getId(), - 'force_update' => TRUE, - 'use_quote' => TRUE, - 'use_multilang' => FALSE, + 'force_update' => true, + 'use_quote' => true, + 'use_multilang' => false, ), array ( 'fieldname' => 'OXMODID', 'content' => $this->sModKey, - 'force_update' => TRUE, - 'use_quote' => TRUE, - 'use_multilang' => FALSE, + 'force_update' => true, + 'use_quote' => true, + 'use_multilang' => false, ), array ( 'fieldname' => 'OXNAME', 'content' => $this->sModName, - 'force_update' => TRUE, - 'use_quote' => TRUE, - 'use_multilang' => FALSE, + 'force_update' => true, + 'use_quote' => true, + 'use_multilang' => false, ), array ( 'fieldname' => 'OXACTIVE', 'content' => "0", - 'force_update' => FALSE, - 'use_quote' => FALSE, - 'use_multilang' => FALSE, + 'force_update' => false, + 'use_quote' => false, + 'use_multilang' => false, ), array ( 'fieldname' => 'OXBASECONFIG', 'content' => $this->sBaseConf, - 'force_update' => TRUE, - 'use_quote' => TRUE, - 'use_multilang' => FALSE, + 'force_update' => true, + 'use_quote' => true, + 'use_multilang' => false, ), array ( 'fieldname' => 'OXSERIAL', 'content' => "", - 'force_update' => FALSE, - 'use_quote' => TRUE, - 'use_multilang' => FALSE, + 'force_update' => false, + 'use_quote' => true, + 'use_multilang' => false, ), array ( 'fieldname' => 'OXINSTALLDATE', 'content' => "NOW()", - 'force_update' => TRUE, - 'use_quote' => FALSE, - 'use_multilang' => FALSE, + 'force_update' => true, + 'use_quote' => false, + 'use_multilang' => false, ), array ( 'fieldname' => 'OXVERSION', 'content' => $this->sModVersion, - 'force_update' => TRUE, - 'use_quote' => TRUE, - 'use_multilang' => FALSE, + 'force_update' => true, + 'use_quote' => true, + 'use_multilang' => false, ), array ( 'fieldname' => 'OXSHOPVERSION', 'content' => oxRegistry::getConfig()->getEdition(), - 'force_update' => TRUE, - 'use_quote' => TRUE, - 'use_multilang' => FALSE, + 'force_update' => true, + 'use_quote' => true, + 'use_multilang' => false, ), array ( 'fieldname' => 'OXREQUIREMENTS', 'content' => $this->sRequirements, - 'force_update' => TRUE, - 'use_quote' => TRUE, - 'use_multilang' => FALSE, + 'force_update' => true, + 'use_quote' => true, + 'use_multilang' => false, ), array( 'fieldname' => 'OXVALUE', 'content' => $this->sBaseValue, - 'force_update' => FALSE, - 'use_quote' => TRUE, - 'use_multilang' => FALSE, + 'force_update' => false, + 'use_quote' => true, + 'use_multilang' => false, ), array( 'fieldname' => 'OXNEWREVISION', 'content' => $this->sModRevision, - 'force_update' => TRUE, - 'use_quote' => TRUE, - 'use_multilang' => FALSE, + 'force_update' => true, + 'use_quote' => true, + 'use_multilang' => false, ) ); - $aRet = $this->_updateTableItem('d3_cfg_mod', $aInsertFields, $aWhere); - $blRet = $aRet['blRet']; + $blRet = $this->_updateTableItem2('d3_cfg_mod', $aInsertFields, $aWhere); - $this->_setActionLog('SQL', $aRet['sql'], __METHOD__); - $this->_setUpdateBreak(FALSE); - - if ($this->getStepByStepMode()) - { + if ($this->getStepByStepMode()) { break; } } @@ -383,7 +373,7 @@ zQ9'; public function checkGeoIpFields() { /** @var $oShop oxshop */ - $oShop = $this->_getShopList()->current(); + $oShop = $this->getShopList()->current(); $this->aFields['D3GEOIPSHOP']['sDefault'] = $oShop->getId(); return $this->checkFields(); @@ -396,9 +386,73 @@ zQ9'; public function fixGeoIpFields() { /** @var $oShop oxshop */ - $oShop = $this->_getShopList()->current(); + $oShop = $this->getShopList()->current(); $this->aFields['D3GEOIPSHOP']['sDefault'] = $oShop->getId(); return $this->fixFields(); } -} \ No newline at end of file + + /** + * @return bool + */ + public function hasUnregisteredFiles() + { + return $this->_hasUnregisteredFiles('d3geoip', array('d3FileRegister')); + } + + /** + * @return bool + */ + public function showUnregisteredFiles() + { + return $this->_showUnregisteredFiles('d3geoip', array('d3FileRegister')); + } + + /** + * @return bool + */ + public function checkRegisteredComponent() + { + $sVarName = 'aUserComponentNames'; + $sModuleId = ''; + /** @var $oShop oxshop */ + foreach ($this->getShopListByActiveModule('d3geoip') as $oShop) { + /** @var array $aUserComponents */ + $aUserComponents = oxRegistry::getConfig()->getShopConfVar($sVarName, $oShop->getId(), $sModuleId); + + if (false == $aUserComponents + || false == $aUserComponents['d3cmp_geoip'] + ) { + return true; + } + } + + return false; + } + + /** + * @return bool + */ + public function registerComponent() + { + $blRet = true; + $sVarName = 'aUserComponentNames'; + $sModuleId = ''; + + /** @var $oShop oxshop */ + foreach ($this->getShopList() as $oShop) { + $aUserComponents = oxRegistry::getConfig()->getShopConfVar($sVarName, $oShop->getId(), $sModuleId); + if (false == $aUserComponents) { + $aUserComponents = array(); + } + + if (false == $aUserComponents['d3cmp_geoip']) { + $blDontUseCache = 1; + $aUserComponents['d3cmp_geoip'] = $blDontUseCache; + $this->fixOxconfigVariable($sVarName, $oShop->getId(), '', $aUserComponents, 'arr'); + } + } + + return $blRet; + } +} 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 7bf8a34..0420065 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 @@ -20,48 +20,54 @@ $iLangNr = 0; // RESOURCE IDENTITFIER = STRING // ------------------------------- $aLang = array( + 'charset' => 'ISO-8859-15', + 'd3mxgeoip' => 'GeoIP', + 'd3mxgeoip_settings' => 'Einstellungen', + 'd3tbclgeoip_settings_main' => 'Grundeinstellungen', + 'tbclcountry_geoip' => 'GeoIP-Kundenumleitungen', -'charset' => 'ISO-8859-15', -'d3mxgeoip' => 'GeoIP', -'d3mxgeoip_settings' => 'Einstellungen', -'d3tbclgeoip_settings_main' => 'Grundeinstellungen', -'tbclcountry_geoip' => 'GeoIP-Kundenumleitungen', + 'D3_GEOIP_TRANSL' => 'GeoIP-Kundenumleitungen', -'D3_GEOIP_TRANSL' => 'GeoIP-Kundenumleitungen', + 'D3_GEOIP_SET_DEBUG_DESC' => 'Mit aktiviertem Debug-Modus wird im Frontend die aktuelle '. + 'IP-Adresse des Shopbesuchers gezeigt. Beachten Sie, dass Umleitungen, die auf Weiterleitungen basieren, dann '. + 'nicht ausgeführt werden können.', + 'D3_GEOIP_SET_OPTIONS' => 'Optionen', + 'D3_GEOIP_SET_OPTIONS_CHANGESHOP' => 'Mandant wechseln, wenn eingestellt (nur EE)', + 'D3_GEOIP_SET_OPTIONS_CHANGECURR' => 'Währung wechseln, wenn eingestellt', + 'D3_GEOIP_SET_OPTIONS_CHANGELANG' => 'Sprache wechseln, wenn eingestellt', + 'D3_GEOIP_SET_OPTIONS_CHANGEURL' => 'URL wechseln, wenn eingestellt', + 'D3_GEOIP_SET_OPTIONS_NOCOUNTRY' => 'Shop verwendet die Einstellung dieses Landes, wenn IP nicht '. + 'zuzuordnen ist', + 'D3_GEOIP_SET_IP' => 'IP-Einstellungen', + 'D3_GEOIP_SET_IP_TESTIP' => 'statt Kunden-IP immer diese IP-Adresse verwenden', + 'D3_GEOIP_SET_IP_TESTCOUNTRY' => 'statt Kunden-IP immer eine IP-Adresse dieses Landes verwenden', + 'D3_GEOIP_SET_IP_TESTCOUNTRY_INACTIVE' => '(inaktiv)', + 'D3_GEOIP_SET_IP_CHECKIP' => 'diese IP-Adresse prüfen', + 'D3_GEOIP_SET_IP_CHECKIP_NOTSET' => 'IP nicht zugewiesen oder Land nicht aktiv', + 'D3_GENERAL_GEOIP_SAVE' => 'Speichern', -'D3_GEOIP_SET_DEBUG_DESC' => 'Mit aktiviertem Debug-Modus wird im Frontend die aktuelle IP-Adresse des Shopbesuchers gezeigt. Beachten Sie, dass Umleitungen, die auf Weiterleitungen basieren, dann nicht ausgeführt werden können.', -'D3_GEOIP_SET_OPTIONS' => 'Optionen', -'D3_GEOIP_SET_OPTIONS_CHANGESHOP' => 'Mandant wechseln, wenn eingestellt (nur EE)', -'D3_GEOIP_SET_OPTIONS_CHANGECURR' => 'Währung wechseln, wenn eingestellt', -'D3_GEOIP_SET_OPTIONS_CHANGELANG' => 'Sprache wechseln, wenn eingestellt', -'D3_GEOIP_SET_OPTIONS_CHANGEURL' => 'URL wechseln, wenn eingestellt', -'D3_GEOIP_SET_OPTIONS_NOCOUNTRY' => 'Shop verwendet die Einstellung dieses Landes, wenn IP nicht zuzuordnen ist', -'D3_GEOIP_SET_IP' => 'IP-Einstellungen', -'D3_GEOIP_SET_IP_TESTIP' => 'statt Kunden-IP immer diese IP-Adresse verwenden', -'D3_GEOIP_SET_IP_TESTCOUNTRY' => 'statt Kunden-IP immer eine IP-Adresse dieses Landes verwenden', -'D3_GEOIP_SET_IP_TESTCOUNTRY_INACTIVE' => '(inaktiv)', -'D3_GEOIP_SET_IP_CHECKIP' => 'diese IP-Adresse prüfen', -'D3_GEOIP_SET_IP_CHECKIP_NOTSET' => 'IP nicht zugewiesen oder Land nicht aktiv', -'D3_GENERAL_GEOIP_SAVE' => 'Speichern', + 'D3_GEOIP_SELSHOP' => 'zuständiger Shop', + 'D3_GEOIP_SELLANG' => 'vorgewählte Sprache', + 'D3_GEOIP_SELCUR' => 'vorgewählte Währung', + 'D3_GEOIP_CUSTSELSHOP' => ' - vom Kunden gewählter Shop - ', + 'D3_GEOIP_CUSTSELLANG' => ' - vom Kunden gewählte Sprache - ', + 'D3_GEOIP_CUSTSELCUR' => ' - vom Kunden gewählte Währung - ', + 'D3_GEOIP_OR' => 'oder', + 'D3_GEOIP_DISABLED' => '(deaktiviert)', + 'D3_GEOIP_SELURL' => 'zu wechselnde URL', + 'D3_GEOIP_SELURL_DESC' => 'Sobald im URL-Feld eine Eingabe vorhanden ist, wird bei '. + 'passenden Kunden versucht, zur hinterlegten URL zu wechseln. Möchten Sie den Mandanten, die Währung und / '. + 'oder die Sprache einstellen, entfernen Sie die URL.

Aktivieren / deaktivieren Sie den URL-Wechsel '. + 'zusätzlich in den Modul-Grundeinstellungen.', -'D3_GEOIP_SELSHOP' => 'zuständiger Shop', -'D3_GEOIP_SELLANG' => 'vorgewählte Sprache', -'D3_GEOIP_SELCUR' => 'vorgewählte Währung', -'D3_GEOIP_CUSTSELSHOP' => ' - vom Kunden gewählter Shop - ', -'D3_GEOIP_CUSTSELLANG' => ' - vom Kunden gewählte Sprache - ', -'D3_GEOIP_CUSTSELCUR' => ' - vom Kunden gewählte Währung - ', -'D3_GEOIP_OR' => 'oder', -'D3_GEOIP_DISABLED' => '(deaktiviert)', -'D3_GEOIP_SELURL' => 'zu wechselnde URL', -'D3_GEOIP_SELURL_DESC' => 'Sobald im URL-Feld eine Eingabe vorhanden ist, wird bei passenden Kunden versucht, zur hinterlegten URL zu wechseln. Möchten Sie den Mandanten, die Währung und / oder die Sprache einstellen, entfernen Sie die URL.

Aktivieren / deaktivieren Sie den URL-Wechsel zusätzlich in den Modul-Grundeinstellungen.', - -'D3_GEOIP_METADATA_TITLE' => 'D³ GeoIP Vorauswahl', -'D3_GEOIP_METADATA_DESC' => 'Begrüßen Sie Ihre Kunden in seiner Landessprache.', - -'D3_GEOIP_UPDATE_ITEMINSTALL' => 'Die umfangreiche IP-Liste kann leider nicht über die automatische Installation eingebunden werden. Bitte installieren Sie diese manuell. '.PHP_EOL.PHP_EOL.'Die erforderlichen Daten finden Sie im Installationspaket des Moduls unter "setup+doku/geoip-Data_IPv4_*.sql" ("setup+doku/geoip-Data_IPv6_*.sql" für IPv6-Adressen) oder als handlichere SQL-Dateien unter "setup+doku/geoip_data_parts/". '.PHP_EOL.PHP_EOL.'Sie benötigen entweder die Komplettdateien oder die Sammlung kleinerer Daten. Führen Sie die SQL-Datei(en) bitte in Ihrer Datenbank aus.', + 'D3_GEOIP_METADATA_TITLE' => 'D³ GeoIP Vorauswahl', + 'D3_GEOIP_METADATA_DESC' => 'Begrüßen Sie Ihre Kunden in seiner Landessprache.', + 'D3_GEOIP_UPDATE_ITEMINSTALL' => 'Die umfangreiche IP-Liste kann leider nicht über die '. + 'automatische Installation eingebunden werden. Bitte installieren Sie diese manuell. '.PHP_EOL.PHP_EOL. + 'Die erforderlichen Daten finden Sie im Installationspaket des Moduls unter '. + '"setup+doku/geoip-Data_IPv4_*.sql" ("setup+doku/geoip-Data_IPv6_*.sql" für IPv6-Adressen) oder als '. + 'handlichere SQL-Dateien unter "setup+doku/geoip_data_parts/". '.PHP_EOL.PHP_EOL. + 'Sie benötigen entweder die Komplettdateien oder die Sammlung kleinerer Daten. Führen Sie die SQL-Datei(en) '. + 'bitte in Ihrer Datenbank aus.', ); - -/* -[{ oxmultilang ident='ACTIONS_MAIN_YOUWANTTODELETE' }] -*/ \ No newline at end of file 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 d7c1309..e0cf578 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 @@ -2,9 +2,9 @@ -[{ if $readonly }] +[{if $readonly}] [{assign var="readonly" value="readonly disabled"}] [{else}] [{assign var="readonly" value=""}] [{/if}] -
- [{ $oViewConf->getHiddenSid() }] - - + + [{$oViewConf->getHiddenSid()}] + + - +
-
- [{ $oViewConf->getHiddenSid() }] + + [{$oViewConf->getHiddenSid()}] - - - - - + + + + + @@ -44,10 +44,10 @@ window.onload = function ()
- [{oxmultilang ident="D3_GEOIP_SELSHOP"}]: + - getModCfgValue('blChangeShop')}]disabled[{/if}]> [{foreach from=$oView->getShopList() item=shop}] @@ -57,10 +57,10 @@ window.onload = function ()
- [{oxmultilang ident="D3_GEOIP_SELLANG"}]: + - getModCfgValue('blChangeLang')}]disabled[{/if}]> [{foreach from=$oView->getLangList() item=lang}] @@ -70,10 +70,10 @@ window.onload = function ()
- [{oxmultilang ident="D3_GEOIP_SELCUR"}]: + - getModCfgValue('blChangeCurr')}]disabled[{/if}]> [{foreach from=$oView->getCurList() item=cur}] @@ -85,7 +85,7 @@ window.onload = function ()



- oxcountry__oxtitle->value && !$oxparentid }]disabled[{/if}]>
+ oxcountry__oxtitle->value && !$oxparentid}]disabled[{/if}]>
@@ -96,13 +96,12 @@ window.onload = function () - @@ -112,7 +111,6 @@ window.onload = function ()
- [{oxmultilang ident="D3_GEOIP_SELURL"}]: + - getModCfgValue('blChangeURL')}]disabled[{/if}]> [{if !$oView->getModCfgValue('blChangeURL')}] [{oxmultilang ident="D3_GEOIP_DISABLED"}][{/if}] + getModCfgValue('blChangeURL')}]disabled[{/if}]> [{if !$oView->getModCfgValue('blChangeURL')}] [{oxmultilang ident="D3_GEOIP_DISABLED"}][{/if}] [{oxinputhelp ident="D3_GEOIP_SELURL_DESC"}]
-
[{include file="bottomnaviitem.tpl"}] diff --git a/setup+doku/Installation.pdf b/setup+doku/Installation.pdf index 47f3157..ce74526 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 900f3c5..5e1bcbc 100644 --- a/setup+doku/Precheck/d3precheck.php +++ b/setup+doku/Precheck/d3precheck.php @@ -39,11 +39,11 @@ class requConfig { - protected $_sModName = 'D³ GeoIP'; + public $sModName = 'D³ GeoIP'; public $sModId = 'd3_geoip'; - protected $_sModVersion = '3.0.0.X'; + public $sModVersion = '3.0.1.0'; /********************** check configuration section ************************/ @@ -60,7 +60,7 @@ class requConfig 'hasMaxPhpVersion' => array( 'blExec' => 0, 'aParams' => array( - 'version' => '5.4.200' + 'version' => '5.6.200' ) ), @@ -69,7 +69,7 @@ class requConfig 'blExec' => 1, 'aParams' => array( 'from' => '5.2.0', - 'to' => '5.4.200', + 'to' => '5.6.200', ) ), @@ -86,9 +86,9 @@ class requConfig // benötigt PHP-Extension (kaskadierbar (siehe "Desc1")) 'hasExtension' => array( array( - 'blExec' => 0, + 'blExec' => 1, 'aParams' => array( - 'type' => 'curl', + 'type' => 'bcmath', ), ), array( @@ -113,9 +113,9 @@ class requConfig 'hasMaxShopVersion' => array( 'blExec' => 1, 'aParams' => array( - 'PE' => '4.8.3', - 'CE' => '4.8.3', - 'EE' => '5.1.3' + 'PE' => '4.9.6', + 'CE' => '4.9.6', + 'EE' => '5.2.6' ), ), @@ -132,7 +132,9 @@ class requConfig ), // benötigt Modul-Connector - 'hasModCfg' => array('blExec' => 1), + 'hasModCfg' => array( + 'blExec' => 1 + ), // benötigt mindestens diese Erweiterungen / Version lt. d3_cfg_mod (kaskadierbar (siehe "Desc1")) 'hasMinModCfgVersion' => array( @@ -141,15 +143,7 @@ class requConfig 'aParams' => array( 'id' => 'd3modcfg_lib', 'name' => 'Modul-Connector', - 'version' => '3.9.0.0', - ), - ), - array( - 'blExec' => 1, - 'aParams' => array( - 'id' => 'd3install_lib', - 'name' => 'Installationsautomatik', - 'version' => '2.5.0.0', + 'version' => '4.3.3.6', ), ), ), @@ -161,7 +155,18 @@ class requConfig 'aParams' => array( 'id' => 'd3modcfg_lib', 'name' => 'Modul-Connector', - 'version' => '3.9.0.5', + 'version' => '5.0.0.0', + ), + ), + ), + + // benötigt neuen Lizenzschlüssel + 'requireNewLicence' => array( + array( + 'blExec' => 1, + 'aParams' => array( + 'checkVersion' => true, // soll Versionsnummer des installierten Moduls gegengeprüft werden? + 'remainingDigits' => 2, // zu prüfende Stellen für neue Lizenz ), ), ), @@ -177,7 +182,7 @@ date_default_timezone_set('Europe/Berlin'); */ class requCheck { - public $sVersion = '4.1'; + public $sVersion = '4.6.2'; protected $_db = false; @@ -197,6 +202,8 @@ class requCheck protected $_sInFolderFileName = 'd3precheckinfolder.php'; + public $sVersionTag = '@@version@@'; + /********************** functional section ************************/ public $blGlobalResult = true; @@ -281,8 +288,11 @@ class requCheck $aCheckScripts = array(); /** @var SplFileInfo $oFileInfo */ - foreach (new RecursiveDirectoryIterator($sFolder) AS $oFileInfo) { - if (!in_array($oFileInfo->getFileName(), $aIgnoreDirItems) && $oFileInfo->isDir()) { + foreach (new RecursiveDirectoryIterator($sFolder) as $oFileInfo) { + if (in_array($oFileInfo->getFileName(), $aIgnoreDirItems)) { + continue; + } + if ($oFileInfo->isDir()) { $aCheckScripts = array_merge($aCheckScripts, $this->_walkThroughDirs($oFileInfo->getRealPath())); } elseif ($oFileInfo->isFile()) { if (strtolower($oFileInfo->getFilename()) == $this->_sInFolderFileName) { @@ -312,12 +322,85 @@ class requCheck $aArguments ); - $aReturn[$this->getBasePath($sScriptPath)] = unserialize(file_get_contents($sUrl)); + $sVersionUrl = $this->_getFolderCheckUrl( + $sScriptPath, + 'getVersion', + array() + ); + + $sContent = serialize(null); + $sVersion = serialize(null); + + if ($this->_hasCurl()) { + $sContent = $this->_getContentByCurl($sUrl); + $sVersion = $this->_getContentByCurl($sVersionUrl); + } elseif ($this->_hasAllowUrlFopen()) { + $sContent = file_get_contents($sUrl); + $sVersion = file_get_contents($sVersionUrl); + } + + $sBasePath = $this->getBasePath($sScriptPath); + $aReturn[$sBasePath] = unserialize($sContent); + $aReturn[$this->sVersionTag][$sBasePath] = unserialize($sVersion); } return $aReturn; } + /** + * @return bool + */ + protected function _hasCurl() + { + if (extension_loaded('curl') && function_exists('curl_init')) { + return true; + } + + return false; + } + + /** + * @return bool + */ + protected function _hasAllowUrlFopen() + { + if (ini_get('allow_url_fopen')) { + return true; + } + + return false; + } + + /** + * @param $sUrl + * + * @return bool|mixed + */ + protected function _getContentByCurl($sUrl) + { + $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 @@ -364,15 +447,23 @@ class requCheck } /** - * @param $aResult + * @return string + */ + public function getVersion() + { + return $this->sVersion; + } + + /** + * @param $mResult * * @return bool */ - protected function _hasFalseInResult($aResult) + protected function _hasFalseInResult($mResult) { - if (is_array($aResult)) { - foreach ($aResult as $blResult) { - if (!$blResult) { + if (is_array($mResult)) { + foreach ($mResult as $blResult) { + if (false === $blResult) { $this->blGlobalResult = false; return true; @@ -380,13 +471,66 @@ class requCheck } return false; - } else { - if (!$aResult) { - $this->blGlobalResult = false; + } + + if (false === $mResult) { + $this->blGlobalResult = false; + + return true; + } + + return false; + } + + /** + * @param $mResult + * + * @return bool + */ + protected function _hasNullInResult($mResult) + { + if (is_array($mResult)) { + foreach ($mResult as $blResult) { + if ($blResult === null) { + $this->blGlobalResult = false; + + return true; + } } - return !$aResult; + return false; } + + if ($mResult === null) { + $this->blGlobalResult = false; + return true; + } + + return false; + } + + /** + * @param $mResult + * + * @return bool + */ + protected function _hasNoticeInResult($mResult) + { + if (is_array($mResult)) { + foreach ($mResult as $blResult) { + if ($blResult === 'notice') { + return true; + } + } + + return false; + } + + if ($mResult === 'notice') { + return true; + } + + return false; } /********************** conversion function section ************************/ @@ -421,8 +565,8 @@ class requCheck 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); + ini_set('error_reporting', E_ALL^E_NOTICE); + $this->_db = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPwd, $this->dbName); } } @@ -441,17 +585,24 @@ class requCheck return sprintf( '%d%03d%03d%03d', - intval($match[0] !== null ? $match[0] : $iUnsetPart), - intval( - $match[1] !== null ? $match[1] : $iUnsetPart - ), - intval($match[2] !== null ? $match[2] : $iUnsetPart), - intval( - $match[3] !== null ? $match[3] : $iUnsetPart - ) + $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() @@ -503,22 +654,36 @@ class requCheck { $sGenCheckType = preg_replace("@(\_[0-9]$)@", "", $sCheckType); $oTests = new requTests($this, $this->oConfig, $this->getDb(), $this->oRemote); - if (method_exists($oTests, $sGenCheckType)) { - $aResult = $oTests->{$sGenCheckType}($aConfiguration); - $sElementId = (md5($sGenCheckType . serialize($aConfiguration))); - - if ($this->_hasFalseInResult($aResult)) { - $this->oLayout->getNoSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration); - } else { - $this->oLayout->getSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration); - } + $this->_checkResult($oTests, $sGenCheckType, $sCheckType, $aConfiguration); } else { $this->oLayout->getUncheckableItem($sCheckType, $aConfiguration); $this->blGlobalResult = false; } } + /** + * @param $oTests + * @param $sGenCheckType + * @param $sCheckType + * @param $aConfiguration + */ + protected function _checkResult($oTests, $sGenCheckType, $sCheckType, $aConfiguration) + { + $mResult = $oTests->{$sGenCheckType}($aConfiguration); + $sElementId = (md5($sGenCheckType . serialize($aConfiguration))); + + if ($this->_hasNoticeInResult($mResult)) { + $this->oLayout->getUnknownItem($mResult, $sElementId, $sCheckType, $aConfiguration); + } elseif ($this->_hasNullInResult($mResult)) { + $this->oLayout->getUnknownItem($mResult, $sElementId, $sCheckType, $aConfiguration); + } elseif ($this->_hasFalseInResult($mResult)) { + $this->oLayout->getNoSuccessItem($mResult, $sElementId, $sCheckType, $aConfiguration); + } else { + $this->oLayout->getSuccessItem($mResult, $sElementId, $sCheckType, $aConfiguration); + } + } + public function showinfo() { phpinfo(); @@ -559,21 +724,137 @@ class requLayout - - + +
+ + + + + + +
EOT; echo "

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

'; echo '

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

' . PHP_EOL; @@ -599,10 +880,15 @@ EOT; $sTranslDependent

- $sTranslShopPhpInfo + + $sTranslShopPhpInfo +

- + EOT; @@ -610,6 +896,29 @@ EOT; return; } + /** + * @param $aResult + * + * @return bool + */ + protected function hasRemoteVersionDiff($aResult) + { + $blDiff = false; + + if (is_array($aResult) + && isset($aResult[$this->oBase->sVersionTag]) + && is_array($aResult[$this->oBase->sVersionTag]) + ) { + foreach ($aResult[$this->oBase->sVersionTag] as $sRemoteVersion) { + if (version_compare($sRemoteVersion, $this->oBase->getVersion(), '!=')) { + $blDiff = true; + } + } + } + + return $blDiff; + } + /** * @param $aResult * @param $sElementId @@ -618,9 +927,19 @@ EOT; */ public function getNoSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration) { - echo "
" . $this->_addToggleScript($aResult, $sElementId) . - $this->translate($sCheckType, $aConfiguration) . "
" . PHP_EOL; + $sText = ''; + $sDesc = ''; + if ($this->hasRemoteVersionDiff($aResult)) { + $sText = '!'; + $sDesc = strip_tags($this->translate('RemoteVersionDiff')); + } + + echo '
'.$sText.'
' . + $this->_addToggleScript($aResult, $sElementId) . + $this->translate($sCheckType, $aConfiguration) . + $this->_addDescBox($sCheckType.'_DESC', $aConfiguration) . + '
' . PHP_EOL; $this->getSubDirItems($aResult, $sElementId); } @@ -633,10 +952,44 @@ EOT; */ public function getSuccessItem($aResult, $sElementId, $sCheckType, $aConfiguration) { - echo "
" . + $sText = ''; + $sDesc = ''; + if ($this->hasRemoteVersionDiff($aResult)) { + $sText = '!'; + $sDesc = strip_tags($this->translate('RemoteVersionDiff')); + } + + echo '
'.$sText.'
' . $this->_addToggleScript($aResult, $sElementId) . - $this->translate($sCheckType, $aConfiguration) . "
" . PHP_EOL; + $this->translate($sCheckType, $aConfiguration) . + $this->_addDescBox($sCheckType.'_DESC', $aConfiguration) . + '
' . PHP_EOL; + + $this->getSubDirItems($aResult, $sElementId); + } + + /** + * @param $aResult + * @param $sElementId + * @param $sCheckType + * @param $aConfiguration + */ + public function getUnknownItem($aResult, $sElementId, $sCheckType, $aConfiguration) + { + $sText = ''; + $sDesc = ''; + if ($this->hasRemoteVersionDiff($aResult)) { + $sText = '!'; + $sDesc = strip_tags($this->translate('RemoteVersionDiff')); + } + + echo '
'.$sText.'
' . + $this->_addToggleScript($aResult, $sElementId) . + $this->translate($sCheckType, $aConfiguration) . + $this->_addDescBox($sCheckType.'_DESC', $aConfiguration) . + '
' . PHP_EOL; $this->getSubDirItems($aResult, $sElementId); } @@ -647,9 +1000,11 @@ EOT; */ public function getUncheckableItem($sCheckType, $aConfiguration) { - echo "
" . - $this->translate($sCheckType, $aConfiguration) . " (" . $this->translate('RequNotCheckable') . ")
"; + echo '
' . + $this->translate($sCheckType, $aConfiguration) . ' (' . $this->translate('RequNotCheckable') . ')' . + $this->_addDescBox($sCheckType.'_DESC', $aConfiguration) . + '
' . PHP_EOL; } /** @@ -659,17 +1014,33 @@ EOT; public function getSubDirItems($aResult, $sElementId) { if (is_array($aResult) && count($aResult)) { - echo "' . PHP_EOL; } } @@ -682,9 +1053,13 @@ EOT; protected function _addToggleScript($aResult, $sElementId) { if (is_array($aResult) && count($aResult)) { - $sScript = "
+
"; + $sScript = "
+
"; } else { $sScript = ""; } @@ -692,6 +1067,22 @@ EOT; 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 @@ -708,7 +1099,9 @@ EOT; array_walk($aConfiguration['aParams'], array($this->oBase, 'aTos'), $sIdent); } - if (($sTranslation = $aTransl[$this->oBase->getLang()][$sGenIdent])) { + if (isset($aTransl[$this->oBase->getLang()][$sGenIdent]) + && ($sTranslation = $aTransl[$this->oBase->getLang()][$sGenIdent]) + ) { if (isset($aConfiguration['aParams'])) { return vsprintf($sTranslation, $aConfiguration['aParams']); } else { @@ -721,7 +1114,24 @@ EOT; public function getPngButton() { - $sImg = "iVBORw0KGgoAAAANSUhEUgAABDgAAAAWCAYAAAAl+SzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABMpJREFUeNrs3Y1O4zgUhuFY4hbb2ZthRjtczOz0Ght7cZwfQ5u2E4K0a55XiNDUXyWcT+ZwfGyHw+HQvZI6AACAT+J0OgW9AAAAtnA8Hh/JWYSnbkxuvAYeeg0AAAAAAPynuJevOB6P+ZKe6sYvLy96DgAA7M7z87NOAAAAm7iVq8gxRs5p5CTH03Tz758/uzAUc7x+Hy4pf71ex9fDj2leyxLG1vnNELpmdJPqo21a7afy+/MIj/AIj7zVhS/seWPD4zoAAIAtxJhW44+cy/jx/ftw/2kRxDEQSd0Uraah/RKVlLfK+/kDS0T7eieGZnTdA33QfeF+CpFHeIRHeORSF1Lw3I0Nd3UAAACbEhwprscfadnma05wpL7v8v0Sh4QiLimREqWEt7mSmK9xnLlrSBe6fdq02k9D1oxHeIRHeORCFz13Y8NtHQAAwNYER+zX44+q3Zzg6GOcbw6haqhmXG5MvuQPiw3q9mrTaj/xCI/wCI9c13juxoY/0wEAANxNcPTxbvzxLsHRd7mEo8y+pJIFCWEupy2XMTcSxjKQUMqSl1mb/79urzbN9hOP8AiP8MgV3Zf2vLHhIR0AAMBWcr5iNf6o4owlwdGPCY68hiUsZbRh2DGsWkz7/mUaVl83oxu3R/xwm1b7KfEIj/AIj1zRDfc9d2PDTR0AAMA2hgqOtfijWqOybDKaExzj6pVpzWyYG04zdGn5vByohVC924ou7NSm3X7iER7hER55r/P3w9jw6NgAAADwp+SCjPX442oFR5URWeaY5pKPsmNpmI+SnctN5zKRVnR7tWm1nwKP8AiP8MiKznM3NqzrAAAANic4zuf1+ONaBce576dQZAhMplPepvWzYdn6vSoBCUNJSCkPaUS3V5tm+4lHeIRHeORS97U9b2x4RAcAALA5wZEPRVmJP1K4ckxsPJ/H9SzjOvpuEc11INP805gtWQ6Ka0gXdmrTaD8NGTMe4REe4ZFrOs/d2HBLBwAAsJHzuV+PP6qJlKqCI3ZdvaZliVGm3MiYKZm3EJuvXera0aW0T5tG+2kKYHmER3iER2pdU8/Pc/+0sQEAAGALec/Q9fjjSgVH358v/zFZJNXy6ukYuFQqREZBK7q0U5tm+4lHeIRHeOSqLnnuxoa7YwMAAMAWzvF8M/64THDEOB+xEsYIJlV7d5R1tdNGHsMnlvW2I63opirrj7Zptp86HuERHuGRS92X9ryx4cGxAQAAYBv5mNi1+OP6HhzDMbEVad5JrKoxrdbfzlFa155urzYt9lPgER7hER658bt47saGVR0AAMA28ikqj8QfVQVH3705ceU1KEm5qmM+0y7N8crwOqY5a5Ja0sWd2jTaTykmHuERHuGRS52/H8aGuzoAAIBtxCGIWok/riU4Yl8EZVOwEpSUG9X62XmRS1w+oV5z24RurzaN9tO0QR6P8AiP8MgbnedubLitAwAA2EqfExo34o+LBMevX7+6b9/+KkFItYZlmI0tP1XBS3UE3LhNeju6vdq02k8dj/AIj/DIhW48W8NzNzbcHBsAAAC2MGypsRJ//P7n9/J/yOFwGO6fTie9BgAAPgvrVAAAwFZuzpgcj8fh+jQGHGm6AQAAsDcmUgAAwFYezFeEfwUYAAoCUXB0RZrTAAAAAElFTkSuQmCC"; + $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; @@ -729,7 +1139,64 @@ EOT; public function getPngLogo() { - $sImg = "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"; + $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; @@ -737,7 +1204,12 @@ EOT; 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/snj+ZvM897u+6nT9avU9qvU9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAKADIAAAbFwINwSAwYj0iDcskUOJ9Ql3RKzVivWJF2y714v2CTeExmmM/ohHrNhrnf8Jh8PpdJ7vh8aM/va/6AgSSDhIUWh4iJFYuMjSmPkJEPk5SVHJeYmRCbnJ0en6ChLaOkpR2nqKkLq6ytAK+wsRuztLUUt7i5GLu8vQq/wMEvw8TFCMfIyR/LzM0lz9DRKNPU1Q7X2Nkj29zdE9/g4Q3j5OUs5+jpA+vs7QTv8PEn8/T1K/f4+SD7/P0R/wADqhhIsGCBgwgTBgEAOw=="; + $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; @@ -745,7 +1217,9 @@ EOT; public function getGifDe() { - $sImg = "R0lGODlhEgANAIQZAAAAABAFBhEGBhIGBhQHBxUHCCYNDZQqH5QrI9c4M+M4M9w9M+g/MuNDM/BFM99tI+t3H+CyDerIB+zIBuzKBurLCPfcAPfgAPjlAP///////////////////////////ywAAAAAEgANAAAFVaARCGRpmoExAGzrvsBAwHRLFHVdIEfv/8ADouEoGo9IR2PBaDqfUMYioahar1hF4gHper9gyKOCKZvPaExFcmm73/CLZGKp2+94yyRCmfj/gIAUESEAOw=="; + $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; @@ -753,7 +1227,20 @@ EOT; public function getGifEn() { - $sImg = "R0lGODlhEgANAOfRANzd6P9LQP7//93e6ba32v8HB/J4ef//+/85Of8fFVddwP8aFq+13P8aFPr////f3f8XE/n//62s3fQuLAIDj6ys3uHZ5P8uLOjp793f6dbX6uvBxsyasurCx/9fXcadtS88r+Da5EZHr+Hi7A0NlUVGqcjR9MKaunh5x/8REQAAkv9IP/9BPnh6wi4/td3c5uLl7P8PD7vO9aGSw7bM9uDh6UpLsf8hFv/f3PPx9/Dx9DFCuMDE4cHF4/sAANPU3ufp8JSDvuVocf8ODvz8+/xRTPQgG+PM0ZSWzs/R476+4ujp8v8/PurO0uPZ3//u5fQCAOPj6nFxxf8UE8rM4P/w5YGM18PH4/79/ExUuP3//4CAxqmo3KaZxv7+/RcstO3v89XW6fS8waOj2snM7Nra7Ccon+no9v03OFJZvuK2xBEipP89Ov8dE+be4u3u8/w3OOVocv8sKv8EBOjo9+/u+Kap15SFvgwRlba327uXteHh7tvc5yo3q9XX5SQ4uU5MrtjW5qaVxvDS2f8DA+Tj6vr6/j1FtVlgvL+euvHw9v+rqe7u+XKJ1ebn7p2x7CUmnvb2+dPW8P8cEc/P4efn8/38/5Ws66mYx/ccGNfY5vh0d927zSUlov96ev88OgAAjmmA09rb5v+xsPF5eMnR8i0upuuAgvEyLx0rq97f6cunwEBIuO/Aw/9/fuTm6vn5+vTEyM7P5rq63BESlf+Fgv8fF8SWsOfp7+2rrvX1+La23RgmqLe43PPV2vdydhcnqIWQ2BEgoube4wASn82atOHj6uTT2f97etKjuf9dWsSduZyb08fJ4fn5+/z8/f+ZAP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAAEgANAAAI/gB/YHCkig+AAVGGuSmUAYCoEbpgGXsFY8kWM7T6JEI14QMIEpBaVNIBRBOSOtEqmAK27EabYqk6jYl2hpksKnjSmIgmqdEqWw2ShSITrZQCFXb8IDpkRdGBCLGmpBDj4ECOYKyyXHFyyoCQX8hceShQQFktT5viGCDV5AgUaHDjypXrI9exIgHYwEHA5MIcQnJYIEDzKcCKVi+63BE0CMeTUTGGLKrywBemIDMCJVnz5ZIWATI4LYCghoaAaI/+EGNAqQQXQ4xQuDiRYBKHHVLoWJIAaFaNZkSU2KAgTI+RTLd4gRKxC0uZPQPAvAnTiwCPEB02WOiRh4CGZ15wAgUEADs="; + $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; @@ -772,41 +1259,191 @@ 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.', - 'RequSucc' => 'Bedingung erfüllt', - 'RequNotSucc' => 'Bedingung nicht erfüllt', - 'RequNotCheckable' => 'Bedingung nicht prüfbar', - 'hasMinPhpVersion' => 'mindestens PHP Version %s', - 'hasMaxPhpVersion' => 'maximal PHP Version %s', - 'hasFromToPhpVersion' => 'Server verwendet PHP Version zwischen %s und %s', - 'hasSoap' => 'SOAP-Erweiterung verfügbar', - 'hasCurl' => 'Curl-Erweiterung verfügbar', - 'hasExtension' => '%s-Erweiterung verfügbar', - 'hasMinShopVersion' => 'mindestens Shop Version %s', - 'hasMaxShopVersion' => 'maximal Shop Version %s', - 'hasMinModCfgVersion' => 'ModCfg-Eintrag "%s" (%s) mit mindestens Version %s', - 'hasMaxModCfgVersion' => 'ModCfg-Eintrag "%s" (%s) mit maximal Version %s', + 'RequCheck' => 'Mindestanforderungsprüfung', + 'ExecNotice' => 'Führen Sie diese Prüfung immer aus dem Stammverzeichnis '. + 'Ihres Shops aus. Nur dann können die Prüfungen erfolgreich durchgeführt werden.', + 'RequSucc' => 'Bedingung erfüllt', + 'RequNotSucc' => 'Bedingung nicht erfüllt', + 'RequUnknown' => 'Bedingung unklar, siehe Hinweise im Hilfetext', + 'RequNotCheckable' => 'Bedingung nicht prüfbar', + 'hasMinPhpVersion' => 'mindestens PHP Version %1$s', + 'hasMinPhpVersion_DESC' => '
Das Modul erfordert eine PHP-Version die nicht kleiner ist '. + 'als %1$s.
'. + '
Die passende PHP-Version '. + 'ist auf Ihrem Server aktiv.
'. + '
Das Modul kann in '. + 'PHP-Versionen kleiner als %1$s nicht ausgeführt werden. Fragen Sie Ihren Serverprovider '. + 'nach der Anpassung der PHP-Installation oder kontaktieren Sie uns für eine alternative '. + 'Modulversion.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMaxPhpVersion' => 'maximal PHP Version %1$s', + 'hasMaxPhpVersion_DESC' => '
Das Modul erfordert eine PHP-Version die nicht höher ist '. + 'als %1$s.
'. + '
Die passende PHP-Version '. + 'ist auf Ihrem Server aktiv.
'. + '
Das Modul kann in '. + 'PHP-Versionen höher als %1$s nicht ausgeführt werden. Fragen Sie Ihren Serverprovider '. + 'nach der Anpassung der PHP-Installation oder kontaktieren Sie uns für eine alternative '. + 'Modulversion.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasFromToPhpVersion' => 'Server verwendet PHP Version zwischen %1$s und %2$s', + 'hasFromToPhpVersion_DESC' => '
Das Modul erfordert eine PHP-Version zwischen %1$s und %2$s.
'. + '
Die passende PHP-Version '. + 'ist auf Ihrem Server aktiv.
'. + '
Das Modul kann '. + 'außerhalb der PHP-Versionen nicht ausgeführt werden. Fragen Sie Ihren Serverprovider '. + 'nach der Anpassung der PHP-Installation oder kontaktieren Sie uns für eine alternative '. + 'Modulversion.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasExtension' => '%1$s-Erweiterung verfügbar', + 'hasExtension_DESC' => '
Das Modul erfordert die %1$s-Servererweiterung.
'. + '
Die %1$s-Erweiterung ist '. + 'auf Ihrem Server vorhanden.
'. + '
Das Modul kann ohne die '. + '%1$s-Erweiterung nicht ausgeführt werden. Fragen Sie bei Ihrem Serverprovider nach der '. + 'Installation dieser Erweiterung.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMinShopVersion' => 'mindestens Shop Version %1$s', + 'hasMinShopVersion_DESC' => '
Das Modul ist ab Shopversion %1$s freigegeben.
'. + '
Die Shopsoftware ist in '. + 'passender Version installiert.
'. + '
Das Modul kann in dieser '. + 'Version der Shopsoftware nicht installiert werden. Fragen Sie nach einer früheren '. + 'Modulversion, die für Ihre Shopversion getestet wurde.
'. + '
Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMaxShopVersion' => 'maximal Shop Version %1$s', + 'hasMaxShopVersion_DESC' => '
Das Modul ist bis zur Shopversion %1$s freigegeben.
'. + '
Die Shopsoftware ist in '. + 'passender Version installiert.
'. + '
Wir können nicht '. + 'garantieren, dass das Modul in Ihrer Shopversion funktioniert. Fragen Sie nach einer aktuelleren '. + 'Modulversion, die für Ihren Shop passt.
'. + '
Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMinModCfgVersion' => '%2$s (ModCfg-Eintrag "%1$s") mindestens in Version %3$s', + 'hasMinModCfgVersion_DESC' => '
Das Modul benötigt die Zusatzsoftware "%2$s" mindestens in '. + 'Version %3$s
'. + '
Die Software ist in '. + 'passender Version installiert.
'. + '
Die Zusatzsoftware ist '. + 'möglicherweise gar nicht oder in falscher Version installiert. Bitte installieren Sie die '. + 'Zusatzsoftware, bevor Sie diese Installation fortsetzen.
'. + '
Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasMaxModCfgVersion' => '%2$s (ModCfg-Eintrag "%1$s") maximal in Version %3$s', + 'hasMaxModCfgVersion_DESC' => '
Das Modul benötigt die Zusatzsoftware "%2$s" höchstens '. + 'in Version %3$s
'. + '
Die Software ist in '. + 'passender Version installiert.
'. + '
Die Zusatzsoftware ist '. + 'möglicherweise gar nicht oder in falscher Version installiert. Bitte installieren Sie die '. + 'Zusatzsoftware, bevor Sie diese Installation fortsetzen.
'. + '
Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'requireNewLicence' => 'bisheriger Lizenzschlüssel kann verwendet werden', + 'requireNewLicence_DESC' => '
Diese Prüfung versucht zu ermitteln, ob Sie für den '. + 'Einsatz dieses Moduls einen aktuellen Lizenzschlüssel benötigen:
'. + '
Sie haben für dieses '. + 'Modul einen Lizenzschlüssel hinterlegt, der wahrscheinlich auch für die neue '. + 'Modulversion geeignet ist.
'. + '
Sie benötigen '. + 'für dieses Modul wahrscheinlich einen neuen Lizenzschlüssel. Haben Sie diesen schon '. + 'vorliegen, führen Sie die Installation aus und tragen den Lizenzschlüssel dann im '. + 'Adminbereich Ihres Shops ein. Ansonsten können Sie den Lizenzschlüssel in unserem Shop '. + 'www.oxidmodule.com erwerben oder '. + 'sich ebenfalls im Adminbereich Ihres Shops einen kostenfreien Test-Lizenzschlüssel '. + 'erstellen.
'. + '
Für Details wenden Sie sich bitte an '. + 'buchhaltung@shopmodule.com.
', 'hasModCfg' => 'Modul-'. 'Connector installiert', - 'isShopEdition' => 'ist Shopedition %s', - 'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) oder Zend Guard Loader (PHP 5.3, 5.4) '. + 'hasModCfg_DESC' => '
Das Modul erfordert zwingend den D3 Modul-Connector.
'. + '
Der Modul-Connector ist '. + 'installiert.
'. + '
Das Modul kann ohne den Modul-'. + 'Connector nicht ausgeführt werden. Bitte laden Sie sich diesen kostenfrei aus unserem Shop '. + 'unter www.oxidmodule.com/'. + 'connector/ und installieren diesen vorab.
'. + '
Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'isShopEdition' => 'ist Shopedition %1$s', + 'isShopEdition_DESC' => '
Das Modul erfordert eine dieser Shopeditionen: %1$s
'. + '
Der Shop ist in der '. + 'passenden Edition installiert.
'. + '
Das Modul kann in Ihrer '. + 'Shopedition nicht ausgeführt werden. Bitte fragen Sie nach einer Modulversion für Ihre '. + 'Shopedition.
'. + '
Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) oder Zend Guard Loader (PHP 5.3, 5.4, 5.5, 5.6) '. 'installiert', - '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 '. + '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.
'. + '
Der passende Decoder ist '. + 'auf Ihrem Server installiert. Es ist eine zusätzliche Erweiterungen (Zend OPcache) installiert, '. + 'die im Zusammenspiel mit dem Decoder Fehler verursachen kann.
'. + '
Das Modul kann ohne den '. + 'passenden Decoder nicht ausgeführt werden. Fragen Sie Ihren Serverprovider nach der '. + 'Installation des passenden Zend-Decoders.
'. + '
Über den [+]-Button können Sie Ergebnisse zu den getesteten Verzeichnissen '. + 'abrufen. Je nach Servereinstellung können die Ergebnisse abweichen. Nur die rot markierten '. + 'Verzeichnisse erfordern eine Anpassung.
'. + '
Details zu Ihrer Serverinstallation sehen Sie durch Klick auf den Button "PHPInfo anzeigen". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'hasIonCubeLoader' => 'ionCube Loader installiert', + '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". '. + 'Bei Fragen kontaktieren Sie uns bitte über '. + 'support@shopmodule.com.
', + 'RemoteVersionDiff' => ' (Remotescript hat abweichende Version, Ergebnis mglw.'. + 'nicht sicher)', + 'globalSuccess' => 'Die technische Prüfung war erfolgreich. Sie können das Modul '. + 'installieren.*

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

', + 'deleteFile1' => 'Löschen Sie diese Datei nach der Verwendung bitte unbedingt wieder von '. 'Ihrem Server! Klicken Sie hier, um diese Datei zu löschen.', + 'deleteFile2' => '?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)', + '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.', + '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( @@ -815,25 +1452,153 @@ class requTranslations 'case only checks can executed succesfully.', 'RequSucc' => 'condition is fulfilled', 'RequNotSucc' => 'condition isn\'t fulfilled', + 'RequUnknown' => 'condition unclear, see notes in help text', 'RequNotCheckable' => 'condition isn\'t checkable', - 'hasMinPhpVersion' => 'at least PHP version %s', - 'hasMaxPhpVersion' => 'not more than PHP version %s', - 'hasFromToPhpVersion' => 'server use PHP version between %s and %s', - 'hasSoap' => 'SOAP extension available', - 'hasCurl' => 'curl extension available', - 'hasExtension' => '%s extension is available', - 'hasMinShopVersion' => 'at least shop version %s', - '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', + 'hasMinPhpVersion' => 'at least PHP version %1$s', + 'hasMinPhpVersion_DESC' => '
The module requires a PHP version at least %1$s
'. + '
The appropriate version of PHP '. + 'is activated on your server.
'. + '
The module can not be executed within '. + 'the actived PHP version. Ask your server provider for for the adaption of your PHP installation or '. + 'contact us for another module version.
'. + '
The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories require adaptation.
'. + '
Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
', + 'hasMaxPhpVersion' => 'not more than PHP version %1$s', + 'hasMaxPhpVersion_DESC' => '
The module requires a PHP version not more than %1$s
'. + '
The appropriate version of PHP '. + 'is activated on your server.
'. + '
The module can not be executed within '. + 'the actived PHP version. Ask your server provider for for the adaption of your PHP installation or '. + 'contact us for another module version.
'. + '
The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories require adaptation.
'. + '
Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
', + 'hasFromToPhpVersion' => 'server use PHP version between %1$s and %2$s', + 'hasFromToPhpVersion_DESC'=> '
The module requires a PHP version between %1$s and %2$s
'. + '
The appropriate version of PHP '. + 'is activated on your server.
'. + '
The module can not be executed within '. + 'the actived PHP version. Ask your server provider for for the adaption of your PHP installation or '. + 'contact us for another module version.
'. + '
The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories require adaptation.
'. + '
Details about your server installation you can see by clicking on the button "show PHPinfo". '. + 'If you have any questions, please contact us at '. + 'support@shopmodule.com.
', + 'hasExtension' => '%1$s extension is available', + 'hasExtension_DESC' => '
The module requires the %1$s server extension.
'. + '
The %1$s server extension is '. + 'available on your server.
'. + '
The module can not be executed '. + 'without the %1$s extension. Ask your server provider for installing this extension.
'. + '
The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories require 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.
'. + '
We can not guarantee, '. + 'that this module works properly in your shop version. Please ask for a matching module version.
'. + '
If you have any questions, please contact us at '. + 'support@shopmodule.com.
', + 'hasMaxShopVersion' => 'not more than shop version %1$s', + 'hasMaxShopVersion_DESC' => '
The module is released to shop version %1$s
'. + '
The shop software is installed '. + 'in a suitable version.
'. + '
We can not guarantee, '. + 'that this module works properly in your shop version. Please ask for a matching module version.
'. + '
If you have any questions, please contact us at '. + 'support@shopmodule.com.
', + 'hasMinModCfgVersion' => '%2$s (ModCfg item "%1$s") at least in version %3$s', + 'hasMinModCfgVersion_DESC' => '
The module requires additional software "%2$s" at least '. + 'in version %3$s
'. + '
The software is installed '. + 'in a suitable version.
'. + '
The additional software is '. + 'be installed or in wrong version available. Please install the additional software before '. + 'proceeding this installation.
'. + '
If you have any questions, please contact us at '. + 'support@shopmodule.com.
', + 'hasMaxModCfgVersion' => '%2$s (ModCfg item "%1$s") not more than in version %3$s', + 'hasMaxModCfgVersion_DESC' => '
The module requires additional software "%2$s" not more than '. + 'in version %3$s
'. + '
The software is installed '. + 'in a suitable version.
'. + '
The additional software is '. + 'be installed or in wrong version available. Please install the additional software before '. + 'proceeding this installation.
'. + '
If you have any questions, please contact us at '. + 'support@shopmodule.com.
', + 'requireNewLicence' => 'former licence key can be used', + 'requireNewLicence_DESC' => '
This test tries to determine whether you need a new licence key '. + 'for the use of this module
'. + '
You have stored a license key '. + 'for this module, which is probably also suitable for the new module version.
'. + '
You need likely a new license '. + 'key for this module. Do you have already one, run the installation and then apply the license '. + 'key in the admin panel of your shop. Otherwise, you can purchase it in our shop '. + 'oxidmodule.com or also create a '. + 'free trial license key in the admin panel of your shop.
'. + '
If you have any questions, please contact us at '. + 'buchhaltung@shopmodule.com.
', 'hasModCfg' => 'Module '. 'Connector installed', - 'isShopEdition' => 'shop edition is %s', - 'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) or Zend Guard Loader (PHP 5.3, 5.4) installed', + 'hasModCfg_DESC' => '
The module requires necessarily the D3 Module Connector.
'. + '
The Module Connector is '. + 'installed.
'. + '
The module can not be executed '. + 'without the Module Connector. Please download this free of charge from our shop '. + 'www.oxidmodule.com/'. + 'connector/ and install it beforehand.
'. + '
If you have any questions, please contact us at '. + 'support@shopmodule.com.
', + 'isShopEdition' => 'shop edition is %1$s', + 'isShopEdition_DESC' => '
The module requires one of these shop editions: %1$s
'. + '
The shop is installed '. + 'in the appropriate edition.
'. + '
The module can not be executed '. + 'in your shop edition. Please ask for a module version for your shop edition.
'. + '
If you have any questions, please contact us at '. + 'support@shopmodule.com.
', + 'hasZendLoaderOptimizer' => 'Zend Optimizer (PHP 5.2) or Zend Guard Loader (PHP 5.3, 5.4, 5.5, 5.6) installed', + 'hasZendLoaderOptimizer_DESC' => '
The module requires (depending on the PHP version) the Zend Guard Optimizer '. + 'or the Zend Guard Loader.
'. + '
The appropriate decoder is '. + 'installed on your server.
'. + '
The decoder is '. + 'installed on your server. There is an additional installed extension (Zend OPcache), '. + 'which can cause errors in combination with the decoder.
'. + '
The decoder isn\'t '. + 'installed on your server. The module can\'t installed or executed. Please contact your server provider.
'. + '
The [+] button show details for all tested directories. Depending on the server settings, '. + 'the results may vary. Only the red marked directories require 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', - 'globalSuccess' => 'The test was successful. Your server is ready for installing the '. - 'module.*

', - 'globalNotSuccess' => 'The test wasn\'t successfull. Please check the red marked '. + '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.
'. + '
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)', + 'globalSuccess' => 'The technical test was successful. Your server is ready for installing '. + 'the module.*

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

', 'deleteFile1' => 'Please delete this file after use on your server! Click here, to delete this file.', @@ -934,28 +1699,30 @@ class requRemote /** * @param $sUrl * - * @return string + * @return stdClass */ protected function _getRemoteServerData($sUrl) { - if ($this->oModuleData) { - return $this->oModuleData; + if (isset($this->oModuleData[$sUrl])) { + return $this->oModuleData[$sUrl]; } - if ($this->blUseRemote) { - $sUrl = '/serialized/' . $sUrl; + $oFailureData = new stdClass(); + $oFailureData->status = 'NOK'; - $sHost = "http://update.oxidmodule.com"; - $sData = $this->curlConnect($sHost . $sUrl); - $oData = unserialize($sData); - - $this->oModuleData = $oData; - } else { - $oData = new stdClass(); - $oData->status = 'NOK'; + if (false === $this->blUseRemote) { + return $oFailureData; } + $sHost = "http://update.oxidmodule.com"; + $sData = $this->curlConnect($sHost . '/serialized/' . $sUrl); + $oData = unserialize($sData); - return $oData; + if (false == $oData) { + return $oFailureData; + } + $this->oModuleData[$sUrl] = $oData; + + return $this->oModuleData[$sUrl]; } /** @@ -967,10 +1734,7 @@ class requRemote { $sContent = ''; - if (extension_loaded('curl') && - function_exists('curl_init') && function_exists('curl_exec') && - $ch = curl_init() - ) { + if (($ch = $this->_hasCurl())) { $sCurl_URL = preg_replace('@^((http|https)://)@', '', $sFilePath); curl_setopt($ch, CURLOPT_URL, $sCurl_URL); if ($_SERVER['HTTP_USER_AGENT']) { @@ -989,6 +1753,21 @@ class requRemote 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 * @@ -1153,8 +1932,8 @@ class requTests 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); + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); $oEditionResult = $this->_getShopEdition(); $sEdition = strtoupper($oEditionResult->oxedition); @@ -1189,8 +1968,8 @@ class requTests 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); + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); $oEditionResult = $this->_getShopEdition(); $sEdition = strtoupper($oEditionResult->oxedition); @@ -1252,8 +2031,8 @@ class requTests 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); + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); return $oResult; } @@ -1269,11 +2048,11 @@ class requTests 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); + $rResult = mysqli_query($this->getDb(), $sSelect); + if (is_object($rResult)) { + $oResult = mysqli_fetch_object($rResult); - if ($oResult->result) { + if ((bool) $oResult->result == true) { return true; } } @@ -1298,14 +2077,15 @@ class requTests oxversion != 'basic' ORDER BY oxversion ASC LIMIT 1"; - $rResult = mysql_query($sSelect, $this->getDb()); - $aResult = mysql_fetch_assoc($rResult); + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); + $blReturn = (bool)$oResult->result; - if (!(int)$aResult['result']) { + if (false == $blReturn) { $this->setGlobalResult(false); } - return (int)$aResult['result']; + return $blReturn; } $this->setGlobalResult(false); @@ -1328,14 +2108,15 @@ class requTests oxversion != 'basic' ORDER BY oxversion ASC LIMIT 1"; - $rResult = mysql_query($sSelect, $this->getDb()); - $aResult = mysql_fetch_assoc($rResult); + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); + $blResult = (bool)$oResult->result; - if (!(int)$aResult['result']) { + if (false == $blResult) { $this->setGlobalResult(false); } - return (int)$aResult['result']; + return $blResult; } $this->setGlobalResult(false); @@ -1343,6 +2124,58 @@ class requTests return false; } + /** + * @param $aConfiguration + * + * @return bool + */ + public function requireNewLicence(&$aConfiguration) + { + if ($this->getDb()) { + $sSelect = "SELECT + oxversion as oxversion + FROM d3_cfg_mod WHERE + oxmodid = '" . $this->oConfig->sModId . "' + ORDER BY oxversion ASC LIMIT 1"; + + $rResult = mysqli_query($this->getDb(), $sSelect); + $oResult = mysqli_fetch_object($rResult); + + if (isset($oResult) + && is_object($oResult) + && isset($oResult->oxversion) + && isset($aConfiguration['aParams']['checkVersion']) + ) { + $sInstalledVersion = $this->_getConvertedVersion( + $oResult->oxversion, + $aConfiguration['aParams']['remainingDigits'] + ); + $sNewVersion = $this->_getConvertedVersion( + $this->oConfig->sModVersion, + $aConfiguration['aParams']['remainingDigits'] + ); + if (version_compare($sInstalledVersion, $sNewVersion, '>=')) { + return true; + } + } + } + + return 'notice'; + } + + /** + * cut not used version digits + * @param string $sVersion + * @param int $iRemainingDigits + * + * @return string + */ + protected function _getConvertedVersion($sVersion, $iRemainingDigits) + { + $aInstalledVersion = explode('.', $sVersion); + return implode('.', array_slice($aInstalledVersion, 0, $iRemainingDigits)); + } + /** * @return array */ @@ -1350,16 +2183,22 @@ class requTests { $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; + if ((version_compare(phpversion(), '5.2.0', '>=') + && version_compare(phpversion(), '5.2.900', '<') + && function_exists('zend_optimizer_version') + ) || ( + version_compare(phpversion(), '5.3.0', '>=') + && version_compare(phpversion(), '5.6.900', '<') + && function_exists('zend_loader_version') + )) { + if (function_exists('opcache_get_status') + && ($aOpCacheStatus = opcache_get_status()) + && $aOpCacheStatus['opcache_enabled'] + ) { + $aResult[$this->getBasePath()] = null; + } else { + $aResult[$this->getBasePath()] = true; + } } $aResult = array_merge($aResult, $this->checkInSubDirs(__FUNCTION__)); @@ -1422,9 +2261,10 @@ class requTransformation $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); + $rResult = mysqli_query($this->oCheck->getDb(), $sSelect); + + if (is_object($rResult)) { + $oResult = mysqli_fetch_object($rResult); if ($oResult->result) { $sCheckVersion = $oResult->result; } @@ -1470,4 +2310,4 @@ if (isset($_REQUEST['fnc']) && $_REQUEST['fnc']) { $oRequCheck->{$_REQUEST['fnc']}(); } else { $oRequCheck->startCheck(); -} \ No newline at end of file +} diff --git a/sources/GeoIP-Installation.docx b/sources/GeoIP-Installation.docx index 0381719..9278cbf 100644 Binary files a/sources/GeoIP-Installation.docx and b/sources/GeoIP-Installation.docx differ