diff --git a/htdocs/install/repair.php b/htdocs/install/repair.php index 143798b168b..8403bd44321 100644 --- a/htdocs/install/repair.php +++ b/htdocs/install/repair.php @@ -389,11 +389,80 @@ if ($ok && GETPOST('standard', 'alpha')) { $db->query($sqldelete); - print 'Constant '.$obj->name.' set in entity '.$obj->entity.' with value '.$obj->value.' -> Module not enabled in entity '.$obj->entity.', we delete record'; + print 'Widget '.$obj->name.' set in entity '.$obj->entity.' with value '.$obj->value.' -> Module not enabled in entity '.$obj->entity.', we delete record'; } else { - print 'Constant '.$obj->name.' set in entity '.$obj->entity.' with value '.$obj->value.' -> Module not enabled in entity '.$obj->entity.', we should delete record (not done, mode test)'; + print 'Widget '.$obj->name.' set in entity '.$obj->entity.' with value '.$obj->value.' -> Module not enabled in entity '.$obj->entity.', we should delete record (not done, mode test)'; + } + } + else + { + //print 'Constant '.$obj->name.' set in entity '.$obj->entity.' with value '.$obj->value.' -> Module found in entity '.$obj->entity.', we keep record'; + } + } + } + + $i++; + } + + $db->commit(); + } + } +} + + +// clean box of not enabled modules +if ($ok && GETPOST('standard', 'alpha')) +{ + print '
*** Clean definition of boxes of modules not enabled'; + + $sql ="SELECT file, entity FROM ".MAIN_DB_PREFIX."boxes_def"; + $sql.=" WHERE file like '%@%'"; + + $resql = $db->query($sql); + if ($resql) + { + $num = $db->num_rows($resql); + + if ($num) + { + $db->begin(); + + $i = 0; + while ($i < $num) + { + $obj=$db->fetch_object($resql); + + $reg = array(); + if (preg_match('/^(.+)@(.+)$/i', $obj->file, $reg)) + { + $name=$reg[1]; + $module=$reg[2]; + + $sql2 ="SELECT COUNT(*) as nb"; + $sql2.=" FROM ".MAIN_DB_PREFIX."const as c"; + $sql2.=" WHERE name = 'MAIN_MODULE_".strtoupper($module)."'"; + $sql2.=" AND entity = ".$obj->entity; + $sql2.=" AND value <> 0"; + $resql2 = $db->query($sql2); + if ($resql2) + { + $obj2 = $db->fetch_object($resql2); + if ($obj2 && $obj2->nb == 0) + { + // Module not found, so we canremove entry + $sqldelete = "DELETE FROM ".MAIN_DB_PREFIX."boxes_def WHERE file = '".$obj->file."' AND entity = ".$obj->entity; + + if (GETPOST('standard', 'alpha') == 'confirmed') + { + $db->query($sqldelete); + + print 'Constant '.$obj->file.' set in llx_boxes for entity '.$obj->entity.' but MAIN_MODULE_'.strtoupper($module).' not defined in entity '.$obj->entity.', we delete record'; + } + else + { + print 'Constant '.$obj->file.' set in llx_boxes for entity '.$obj->entity.' but MAIN_MODULE_'.strtoupper($module).' not defined in entity '.$obj->entity.', we should delete record (not done, mode test)'; } } else