diff --git a/copy_this/modules/d3/d3geoip/setup/d3geoip_update.php b/copy_this/modules/d3/d3geoip/setup/d3geoip_update.php index 079cbcf..fc75687 100644 --- a/copy_this/modules/d3/d3geoip/setup/d3geoip_update.php +++ b/copy_this/modules/d3/d3geoip/setup/d3geoip_update.php @@ -38,6 +38,8 @@ UUrZ3pOeW9TUmo3MDg4dGx0RkRUK0wzb2k='; 'do' => 'updateModCfgItemExist'), array('check' => 'hasDeleteGeoIpTableFields', 'do' => 'deleteGeoIpTableFields'), + array('check' => 'checkPrimaryIndexFieldExist', + 'do' => 'addPrimaryIndexField'), array('check' => 'checkGeoIpFields', 'do' => 'fixGeoIpFields'), array('check' => 'checkIndizes', @@ -46,6 +48,8 @@ UUrZ3pOeW9TUmo3MDg4dGx0RkRUK0wzb2k='; 'do' => 'updateGeoIpTableEngine'), array('check' => 'checkGeoIpItems', 'do' => 'updateGeoIpItems'), + array('check' => 'checkUnvalidGeoIpItems', + 'do' => 'updateUnvalidGeoIpItems'), array('check' => 'hasUnregisteredFiles', 'do' => 'showUnregisteredFiles'), array('check' => 'checkRegisteredComponent', @@ -253,6 +257,54 @@ UUrZ3pOeW9TUmo3MDg4dGx0RkRUK0wzb2k='; return $oInstallDbField->checkDeleteFields(); } + /** + * @return bool + * @throws oxSystemComponentException + */ + public function checkPrimaryIndexFieldExist() + { + $aCurrFields = $this->aFields; + + $this->aFields = array( + 'D3IP' => $this->aFields['D3IP'] + ); + + $oDbFields = oxNew('d3installdbfield', $this); + $blRet = $oDbFields->checkFields(); + + $this->aFields = $aCurrFields; + + return $blRet; + } + + /** + * @return bool + * @throws oxSystemComponentException + */ + public function addPrimaryIndexField() + { + $aCurrFields = $this->aFields; + + $aIpFieldData = $this->aFields['D3IP']; + $this->aFields = array( + 'D3IP' => $aIpFieldData + ); + + $oDbFields = oxNew('d3installdbfield', $this); + $blRet1 = $oDbFields->fixFields(); + + $sQuery = "UPDATE `".$aIpFieldData['sTableName']."` set `".$aIpFieldData['sFieldName']."` = MD5(D3STARTIP) WHERE `".$aIpFieldData['sFieldName']."` = '';"; + + $this->setInitialExecMethod(__METHOD__); + /** @var d3installdbcommon $oDbCommon */ + $oDbCommon = oxNew('d3installdbcommon', $this); + $blRet2 = $oDbCommon->tableSqlExecute($sQuery, $aIpFieldData['sTableName']); + + $this->aFields = $aCurrFields; + + return $blRet1 && $blRet2; + } + /** * @return bool * @throws oxSystemComponentException @@ -320,6 +372,27 @@ UUrZ3pOeW9TUmo3MDg4dGx0RkRUK0wzb2k='; return $this->_confirmMessage('D3_GEOIP_UPDATE_ITEMINSTALL'); } + /** + * @return bool + * @throws oxConnectionException + */ + public function checkUnvalidGeoIpItems() + { + $sCheckQuery = 'SELECT COUNT(*) FROM ( + SELECT d3ip FROM d3geoip WHERE d3ip NOT LIKE "%.%" OR d3ip NOT LIKE "%:%" OR D3STARTIPBIN = "" LIMIT 1 + ) AS iptmp;'; + + return (bool) oxDb::getDb()->getOne($sCheckQuery); + } + + /** + * @return bool + */ + public function updateUnvalidGeoIpItems() + { + return $this->_confirmMessage('D3_GEOIP_UPDATE_ITEMUPDATE'); + } + /** * @return bool */ 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 7baa5d4..c6a7ae8 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 @@ -66,6 +66,12 @@ $aLang = array( '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. 'Laden Sie bitte die aktuellen CSV-Daten des Anbieters Maxmind. In "setup+doku/importCSVtoMySQL" des Modulpaketes finden Sie weitere Informationen und die erforderlichen Datenbank-Befehle, um die nötigen Daten zu generieren.'.PHP_EOL.PHP_EOL. - 'Alternativ finden Sie die erforderlichen Daten im Installationspaket des Moduls unter "setup+doku/geoip-data_*". '.PHP_EOL.PHP_EOL. - 'Führen Sie die SQL-Datei(en) bitte in Ihrer Datenbank aus.', + 'Alternativ finden Sie die erforderlichen Daten im Installationspaket des Moduls unter "setup+doku/geoip-data_*.sql" 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_UPDATE_ITEMUPDATE' => 'Durch die Datenbankaktualisieren ist es notwendig geworden, die IP-Liste zu aktualisieren. Die umfangreiche IP-Liste kann leider nicht über die '. + 'automatische Installation eingebunden werden. Bitte installieren Sie diese manuell. '.PHP_EOL.PHP_EOL. + 'Laden Sie bitte die aktuellen CSV-Daten des Anbieters Maxmind. In "setup+doku/importCSVtoMySQL" des Modulpaketes finden Sie weitere Informationen und die erforderlichen Datenbank-Befehle, um die nötigen Daten zu generieren.'.PHP_EOL.PHP_EOL. + 'Alternativ finden Sie die erforderlichen Daten im Installationspaket des Moduls unter "setup+doku/geoip-data_*.sql" 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.', );