diff --git a/htdocs/core/class/infobox.class.php b/htdocs/core/class/infobox.class.php index 5b3881e06e4..622cc757983 100644 --- a/htdocs/core/class/infobox.class.php +++ b/htdocs/core/class/infobox.class.php @@ -127,18 +127,30 @@ class InfoBox $box->box_id = (empty($obj->box_id) ? '' : $obj->box_id); $box->note = (empty($obj->note) ? '' : $obj->note); - // Filter on box->enabled (used for example by box_comptes) and box->depends + // Filter on box->enabled (used for example by box_comptes) + // Filter also on box->depends. Example: array("product|service") or array("contrat", "service") $enabled=$box->enabled; if (isset($box->depends) && count($box->depends) > 0) { - foreach($box->depends as $module) + foreach($box->depends as $moduleelem) { - //print $boxname.'-'.$module.'
'; - $tmpmodule=preg_replace('/@[^@]+/','',$module); - if (empty($conf->$tmpmodule->enabled)) $enabled=0; + $arrayelem=explode('|',$moduleelem); + $tmpenabled=0; // $tmpenabled is used for the '|' test (OR) + foreach($arrayelem as $module) + { + $tmpmodule=preg_replace('/@[^@]+/','',$module); + if (! empty($conf->$tmpmodule->enabled)) $tmpenabled=1; + //print $boxname.'-'.$module.'-module enabled='.(empty($conf->$tmpmodule->enabled)?0:1).'
'; + } + if (empty($tmpenabled)) // We found at least one module required that disabled + { + $enabled=0; + break; + } } } - + //print '=>'.$boxname.'-enabled='.$enabled.'
'; + //print 'xx module='.$module.' enabled='.$enabled; if ($enabled) $boxes[]=$box; else unset($box);