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 4d62f453d..d59ee7e7d 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 @@ -121,24 +121,6 @@ class DatabaseAnalyzer $aClassSelection = array_unique($aClassSelection); } - // First loop for root classes (other classes are based on root classes) - foreach ($aClassSelection as $sClass) - { - if (!MetaModel::HasTable($sClass)) - { - continue; - } - - if (MetaModel::IsRootClass($sClass) && !MetaModel::IsStandaloneClass($sClass)) - { - $sRootClass = MetaModel::GetRootClass($sClass); - $sRootTable = MetaModel::DBGetTable($sRootClass); - $sRootKey = MetaModel::DBGetKey($sRootClass); - // Control that the finalclass is a leaf child class - $this->CheckRootFinalClass($sRootClass, $sRootTable, $sRootKey, $aErrorsAndFixes); - } - } - foreach ($aClassSelection as $sClass) { // Check uniqueness rules @@ -327,51 +309,6 @@ class DatabaseAnalyzer $this->ExecQuery($sSelWrongRecs, $sFixItRequest, Dict::Format('DBAnalyzer-Integrity-OrphanRecord', $sRootTable, $sTable), $sRootClass, $aErrorsAndFixes); } - /** - * Check that the "finalclass" field is correct for all the classes of the hierarchy - * - * @param $sRootClass - * @param $sRootTable - * @param $sRootKey - * @param $aErrorsAndFixes - * - * @throws \CoreException - */ - private function CheckRootFinalClass($sRootClass, $sRootTable, $sRootKey, &$aErrorsAndFixes) - { - $aLeafClasses = array(); - $aAllowedValues = MetaModel::EnumChildClasses($sRootClass, ENUM_CHILD_CLASSES_ALL); - foreach ($aAllowedValues as $sAllowedClass) - { - if (!MetaModel::IsAbstract($sAllowedClass)) - { - $aLeafClasses[] = $sAllowedClass; - } - } - if (empty($aLeafClasses)) - { - return; - } - $sLeafClasses = implode(",", CMDBSource::Quote($aLeafClasses, true)); - $sRootField = MetaModel::DBGetClassField($sRootClass); - $sSelect = "SELECT DISTINCT `$sRootTable`.`$sRootKey` AS id"; - $sDelete = "DELETE `$sRootTable`"; - $sFilter = "FROM `$sRootTable` WHERE `$sRootTable`.`$sRootField` NOT IN ($sLeafClasses)"; - $sSelWrongRecs = "$sSelect $sFilter"; - $sFixItRequest = ''; - foreach ($aLeafClasses as $sLeafClass) - { - $sTable = MetaModel::DBGetTable($sLeafClass); - $sKey = MetaModel::DBGetKey($sLeafClass); - $sFixItRequest .= <<ExecQuery($sSelWrongRecs, $sFixItRequest, Dict::Format('DBAnalyzer-Integrity-RootFinalClass', $sRootField, $sRootTable), $sRootClass, $aErrorsAndFixes); - } - /** * Check that the "finalclass" field is correct for all the classes of the hierarchy *