diff --git a/datamodels/2.x/combodo-db-tools/db_analyzer.class.inc.php b/datamodels/2.x/combodo-db-tools/db_analyzer.class.inc.php index d59ee7e7d5..29772994ea 100644 --- a/datamodels/2.x/combodo-db-tools/db_analyzer.class.inc.php +++ b/datamodels/2.x/combodo-db-tools/db_analyzer.class.inc.php @@ -57,6 +57,7 @@ class DatabaseAnalyzer if (!empty($sFixItRequest)) { $aErrorsAndFixes[$sClass][$sErrorDesc]['fixit'] = array($sFixItRequest); + $aErrorsAndFixes[$sClass][$sErrorDesc]['cleanup'] = array($sFixItRequest); } } else @@ -376,8 +377,18 @@ SQL; { $aFixIt = array(); $aFixIt[] = "-- Remove inconsistant entries:"; - $sIds = implode(', ', array_keys($aErrorsAndFixes[$sClass][$sErrorDesc]['values'])); - $aFixIt[] = "DELETE `$sTable` FROM `$sTable` WHERE `$sTable`.`$sExtKeyField` IN ($sIds)"; + $iOffset = 0; + $iStep = 100; + do + { + $aIds = array_slice(array_keys($aErrorsAndFixes[$sClass][$sErrorDesc]['values']), $iOffset, $iStep); + $sIds = implode(', ', $aIds); + $sDelete = "DELETE `$sTable` FROM `$sTable` WHERE `$sTable`.`$sExtKeyField` IN ($sIds)"; + $aFixIt[] = $sDelete; + $aErrorsAndFixes[$sClass][$sErrorDesc]['cleanup'][] = $sDelete; + $iOffset += $iStep; + } + while (count($aIds) == $iStep); $aFixIt[] = ""; $aFixIt[] = "-- Or fix inconsistant values: Replace XXX with the appropriate value"; foreach (array_keys($aErrorsAndFixes[$sClass][$sErrorDesc]['values']) as $sKey) @@ -483,13 +494,15 @@ SQL; */ private function CheckUsers(&$aErrorsAndFixes) { - $sUserTable = MetaModel::DBGetTable('User'); + $sClass = 'User'; + $sUserTable = MetaModel::DBGetTable($sClass); $sLinkTable = MetaModel::DBGetTable('URP_UserProfile'); $sSelect = "SELECT DISTINCT u.id AS id, u.`login` AS value"; $sFilter = "FROM `$sUserTable` AS u LEFT JOIN `$sLinkTable` AS l ON l.userid = u.id WHERE l.id IS NULL"; $sSelWrongRecs = "$sSelect $sFilter"; $sFixit = "-- Remove the corresponding user(s)"; - $this->ExecQuery($sSelWrongRecs, $sFixit, Dict::S('DBAnalyzer-Integrity-UsersWithoutProfile'), 'User', $aErrorsAndFixes); + $sErrorDesc = Dict::S('DBAnalyzer-Integrity-UsersWithoutProfile'); + $this->ExecQuery($sSelWrongRecs, $sFixit, $sErrorDesc, $sClass, $aErrorsAndFixes); } diff --git a/datamodels/2.x/combodo-db-tools/dbtools.php b/datamodels/2.x/combodo-db-tools/dbtools.php index 72eaad23e8..9a80d2f555 100644 --- a/datamodels/2.x/combodo-db-tools/dbtools.php +++ b/datamodels/2.x/combodo-db-tools/dbtools.php @@ -201,8 +201,10 @@ function DisplayInconsistenciesReport($aResults) { $sDBToolsFolder = str_replace("\\", '/', APPROOT.'log/'); $sReportFile = 'dbtools-report-'.date('Y-m-d-H-i-s'); + $sCleanupFile = 'dbtools-cleanup-'.date('Y-m-d-H-i-s'); $fReport = fopen($sDBToolsFolder.$sReportFile.'.txt', 'w'); + $fCleanUp = fopen($sDBToolsFolder.$sCleanupFile.'.txt', 'w'); fwrite($fReport, 'Database Maintenance tools: '.date('Y-m-d H:i:s')."\r\n"); foreach($aResults as $sClass => $aErrorList) { @@ -228,6 +230,15 @@ function DisplayInconsistenciesReport($aResults) fwrite($fReport, "\r\n"); } + if (isset($aError['cleanup'])) + { + $aQueries = $aError['cleanup']; + foreach($aQueries as $sQuery) + { + fwrite($fCleanUp, "$sQuery;\r\n"); + } + } + $sQueryResult = ''; $aIdList = array(); foreach($aError['res'] as $aRes) @@ -249,12 +260,15 @@ function DisplayInconsistenciesReport($aResults) } } fclose($fReport); + fclose($fCleanUp); $oArchive = new ZipArchive(); $oArchive->open($sDBToolsFolder.$sReportFile.'.zip', ZipArchive::CREATE); $oArchive->addFile($sDBToolsFolder.$sReportFile.'.txt', $sReportFile.'.txt'); + $oArchive->addFile($sDBToolsFolder.$sCleanupFile.'.txt', $sCleanupFile.'.txt'); $oArchive->close(); unlink($sDBToolsFolder.$sReportFile.'.txt'); + unlink($sDBToolsFolder.$sCleanupFile.'.txt'); $sReportFile = $sDBToolsFolder.$sReportFile.'.zip'; diff --git a/datamodels/2.x/combodo-db-tools/de.dict.combodo-db-tools.php b/datamodels/2.x/combodo-db-tools/de.dict.combodo-db-tools.php index e1f466b74b..08ccfcdc60 100644 --- a/datamodels/2.x/combodo-db-tools/de.dict.combodo-db-tools.php +++ b/datamodels/2.x/combodo-db-tools/de.dict.combodo-db-tools.php @@ -22,7 +22,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( // Dictionary entries go here 'Menu:DBToolsMenu' => 'DB Tools', 'DBTools:Class' => 'Klasse', - 'DBTools:Title' => 'Datenbank-Pflege-Tools', + 'DBTools:Title' => 'Datenbank-Pflege-Tools~~', 'DBTools:ErrorsFound' => 'Fehler gefunden', 'DBTools:Error' => 'Fehler', 'DBTools:Count' => 'Anzahl', diff --git a/datamodels/2.x/combodo-db-tools/en.dict.combodo-db-tools.php b/datamodels/2.x/combodo-db-tools/en.dict.combodo-db-tools.php index 4ea35ab197..84add3c256 100644 --- a/datamodels/2.x/combodo-db-tools/en.dict.combodo-db-tools.php +++ b/datamodels/2.x/combodo-db-tools/en.dict.combodo-db-tools.php @@ -26,7 +26,7 @@ Dict::Add('EN US', 'English', 'English', array( // Dictionary entries go here 'Menu:DBToolsMenu' => 'Database integrity', 'DBTools:Class' => 'Class', - 'DBTools:Title' => 'Database Maintenance Tools', + 'DBTools:Title' => 'Database integrity check', 'DBTools:ErrorsFound' => 'Errors Found', 'DBTools:Error' => 'Error', 'DBTools:Count' => 'Count', diff --git a/datamodels/2.x/combodo-db-tools/es_cr.dict.combodo-db-tools.php b/datamodels/2.x/combodo-db-tools/es_cr.dict.combodo-db-tools.php index 50c5977de1..46be627242 100644 --- a/datamodels/2.x/combodo-db-tools/es_cr.dict.combodo-db-tools.php +++ b/datamodels/2.x/combodo-db-tools/es_cr.dict.combodo-db-tools.php @@ -25,7 +25,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellaño', array( // Dictionary entries go here 'Menu:DBToolsMenu' => 'Herramientas de bases de datos', 'DBTools:Class' => 'Clase', - 'DBTools:Title' => 'Herramientas de mantenimiento de base de datos', + 'DBTools:Title' => 'Herramientas de mantenimiento de base de datos~~', 'DBTools:ErrorsFound' => 'Errores encontrados', 'DBTools:Error' => 'Error', 'DBTools:Count' => 'Cantidad', diff --git a/datamodels/2.x/combodo-db-tools/fr.dict.combodo-db-tools.php b/datamodels/2.x/combodo-db-tools/fr.dict.combodo-db-tools.php index bc683642cd..5f3c31859d 100644 --- a/datamodels/2.x/combodo-db-tools/fr.dict.combodo-db-tools.php +++ b/datamodels/2.x/combodo-db-tools/fr.dict.combodo-db-tools.php @@ -21,7 +21,7 @@ Dict::Add('FR FR', 'French', 'Français', array( // Dictionary entries go here 'Menu:DBToolsMenu' => 'Intégrité base de données', 'DBTools:Class' => 'Classe', - 'DBTools:Title' => 'Outils maintenance base de données', + 'DBTools:Title' => 'Contrôle de l\'intégrité de la base de données', 'DBTools:ErrorsFound' => 'Erreurs trouvées', 'DBTools:Error' => 'Erreur', 'DBTools:Count' => 'Nombre', diff --git a/datamodels/2.x/combodo-db-tools/nl.dict.combodo-db-tools.php b/datamodels/2.x/combodo-db-tools/nl.dict.combodo-db-tools.php index d2b8e36045..6dda4a00d9 100644 --- a/datamodels/2.x/combodo-db-tools/nl.dict.combodo-db-tools.php +++ b/datamodels/2.x/combodo-db-tools/nl.dict.combodo-db-tools.php @@ -27,7 +27,7 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array( // Dictionary entries go here 'Menu:DBToolsMenu' => 'Databasetools', 'DBTools:Class' => 'Klasse', - 'DBTools:Title' => 'Onderhoudstools voor de database', + 'DBTools:Title' => 'Onderhoudstools voor de database~~', 'DBTools:ErrorsFound' => 'Fouten gevonden', 'DBTools:Error' => 'Fout', 'DBTools:Count' => 'Aantal', diff --git a/datamodels/2.x/combodo-db-tools/ru.dict.combodo-db-tools.php b/datamodels/2.x/combodo-db-tools/ru.dict.combodo-db-tools.php index fc92a62cf5..0ad4ac74f5 100644 --- a/datamodels/2.x/combodo-db-tools/ru.dict.combodo-db-tools.php +++ b/datamodels/2.x/combodo-db-tools/ru.dict.combodo-db-tools.php @@ -12,7 +12,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array( // Dictionary entries go here 'Menu:DBToolsMenu' => 'Инструменты БД', 'DBTools:Class' => 'Класс', - 'DBTools:Title' => 'Инструменты обслуживания базы данных', + 'DBTools:Title' => 'Инструменты обслуживания базы данных~~', 'DBTools:ErrorsFound' => 'Найденные ошибки', 'DBTools:Error' => 'Ошибка', 'DBTools:Count' => 'Количество', diff --git a/datamodels/2.x/combodo-db-tools/zh_cn.dict.combodo-db-tools.php b/datamodels/2.x/combodo-db-tools/zh_cn.dict.combodo-db-tools.php index 0fab185204..6eecf149a3 100644 --- a/datamodels/2.x/combodo-db-tools/zh_cn.dict.combodo-db-tools.php +++ b/datamodels/2.x/combodo-db-tools/zh_cn.dict.combodo-db-tools.php @@ -25,7 +25,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array( // Dictionary entries go here 'Menu:DBToolsMenu' => 'DB 工具', 'DBTools:Class' => 'Class~~', - 'DBTools:Title' => '数据库维护工具', + 'DBTools:Title' => '数据库维护工具~~', 'DBTools:ErrorsFound' => '发现错误', 'DBTools:Error' => '错误', 'DBTools:Count' => '个数',