From c18fed7e4c1ac8707accce38af5d690b1ac4862b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 2 Aug 2013 14:54:22 +0200 Subject: [PATCH] New: A box can use a "or" on module conditions --- htdocs/core/class/infobox.class.php | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) 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);