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