diff --git a/htdocs/admin/boxes.php b/htdocs/admin/boxes.php
index b5fd35fe3ad..7e092c56abd 100644
--- a/htdocs/admin/boxes.php
+++ b/htdocs/admin/boxes.php
@@ -211,8 +211,6 @@ if ($action == 'switch')
*/
$form=new Form($db);
-$emptyuser=new User($db);
-//$infobox=new InfoBox($db);
llxHeader('',$langs->trans("Boxes"));
@@ -316,7 +314,7 @@ if ($resql)
// Available boxes
-$boxtoadd=InfoBox::listBoxes($db,'available',-1,$emptyuser,$actives);
+$boxtoadd=InfoBox::listBoxes($db,'available',-1,null,$actives);
print "
\n";
print_titre($langs->trans("BoxesAvailable"));
@@ -366,7 +364,7 @@ print '';
// Activated boxes
-$boxactivated=InfoBox::listBoxes($db,'activated',-1,$emptyuser);
+$boxactivated=InfoBox::listBoxes($db,'activated',-1,null);
print "
\n\n";
print_titre($langs->trans("BoxesActivated"));
diff --git a/htdocs/core/boxes/box_clients.php b/htdocs/core/boxes/box_clients.php
index 2d87db14a50..e30523660f3 100644
--- a/htdocs/core/boxes/box_clients.php
+++ b/htdocs/core/boxes/box_clients.php
@@ -83,8 +83,8 @@ class box_clients extends ModeleBoxes
$sql.= " ORDER BY s.tms DESC";
$sql.= $db->plimit($max, 0);
+ dol_syslog(get_class($this)."::loadBox sql=".$sql,LOG_DEBUG);
$result = $db->query($sql);
-
if ($result)
{
$num = $db->num_rows($result);
diff --git a/htdocs/core/boxes/box_prospect.php b/htdocs/core/boxes/box_prospect.php
index 12724d0bd33..3b5356a7285 100644
--- a/htdocs/core/boxes/box_prospect.php
+++ b/htdocs/core/boxes/box_prospect.php
@@ -88,7 +88,7 @@ class box_prospect extends ModeleBoxes
$sql.= " ORDER BY s.tms DESC";
$sql.= $db->plimit($max, 0);
- dol_syslog("box_prospect::loadBox sql=".$sql,LOG_DEBUG);
+ dol_syslog(get_class($this)."::loadBox sql=".$sql,LOG_DEBUG);
$resql = $db->query($sql);
if ($resql)
{
diff --git a/htdocs/core/boxes/modules_boxes.php b/htdocs/core/boxes/modules_boxes.php
index e0b2efd7489..0c6bf08830d 100644
--- a/htdocs/core/boxes/modules_boxes.php
+++ b/htdocs/core/boxes/modules_boxes.php
@@ -123,7 +123,7 @@ class ModeleBoxes // Can't be abtract as it is instanciated to build "empty"
$bcx[1] = 'class="box_impair"';
$var = false;
- dol_syslog(get_Class($this));
+ dol_syslog(get_class($this).'::showBox');
// Define nbcol and nblines of the box to show
$nbcol=0;
diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php
index 55fd08ab493..2a409374f2c 100644
--- a/htdocs/core/class/html.formother.class.php
+++ b/htdocs/core/class/html.formother.class.php
@@ -808,24 +808,27 @@ class FormOther
include_once DOL_DOCUMENT_ROOT.'/core/class/infobox.class.php';
- //$infobox=new InfoBox($db);
- $boxactivated=InfoBox::listBoxes($db,'activated',$areacode,$user);
- $arrayboxactivatedid=array();
- foreach($boxactivated as $box) $arrayboxactivatedid[$box->id]=$box->id;
-
- $selectboxlist='';
- if (! empty($conf->use_javascript_ajax))
+ $confuserzone='MAIN_BOXES_'.$areacode;
+
+ $boxactivated=InfoBox::listBoxes($db,'activated',$areacode,(empty($user->conf->$confuserzone)?null:$user)); // Search boxes of user (or everybody if user has no specific setup)
+
+ $boxidactivatedforuser=array();
+ foreach($boxactivated as $box)
{
- $emptyuser=new User($db);
- $boxavailable=InfoBox::listBoxes($db,'activated',$areacode,$emptyuser,$arrayboxactivatedid); // Get list of box available for empty user (minus already activated for user)
-
- $arrayboxtoactivatelabel=array();
- foreach($boxavailable as $box)
- {
- $arrayboxtoactivatelabel[$box->id]=$box->boxlabel;
- }
- $form=new Form($db);
+ if (empty($user->conf->$confuserzone) || $box->fk_user == $user->id) $boxidactivatedforuser[$box->id]=$box->id; // We keep only boxes to show for user
+ }
+
+ $selectboxlist='';
+ $arrayboxtoactivatelabel=array();
+ if (! empty($user->conf->$confuserzone))
+ {
+ foreach($boxactivated as $box)
+ {
+ if (! empty($boxidactivatedforuser[$box->id])) continue; // Already visible for user
+ $arrayboxtoactivatelabel[$box->id]=$box->boxlabel; // We keep only boxes not shown for user, to show into combo list
+ }
+ $form=new Form($db);
$selectboxlist=$form->selectarray('boxcombo', $arrayboxtoactivatelabel,'',1);
}
@@ -852,12 +855,14 @@ class FormOther
';
}
- $nbboxactivated=count($boxactivated);
+ $nbboxactivated=count($boxidactivatedforuser);
print load_fiche_titre(($nbboxactivated?$langs->trans("OtherInformationsBoxes"):''),$selectboxlist,'','','otherboxes');
if ($nbboxactivated)
{
+ $emptybox=new ModeleBoxes($db);
+
print '
| '."\n"; @@ -873,6 +878,7 @@ class FormOther $ii=0; foreach ($boxactivated as $key => $box) { + if ((! empty($user->conf->$confuserzone) && $box->fk_user == 0) || (empty($user->conf->$confuserzone) && $box->fk_user != 0)) continue; if (empty($box->box_order) && $ii < ($nbboxactivated / 2)) $box->box_order='A'.sprintf("%02d",($ii+1)); // When box_order was not yet set to Axx or Bxx and is still 0 if (preg_match('/^A/i',$box->box_order)) // column A { @@ -885,7 +891,6 @@ class FormOther } } - $emptybox=new ModeleBoxes($db); $emptybox->box_id='A'; $emptybox->info_box_head=array(); $emptybox->info_box_contents=array(); @@ -902,7 +907,8 @@ class FormOther $ii=0; foreach ($boxactivated as $key => $box) { - if (empty($box->box_order) && $ii < ($nbboxactivated / 2)) $box->box_order='B'.sprintf("%02d",($ii+1)); // When box_order was not yet set to Axx or Bxx and is still 0 + if ((! empty($user->conf->$confuserzone) && $box->fk_user == 0) || (empty($user->conf->$confuserzone) && $box->fk_user != 0)) continue; + if (empty($box->box_order) && $ii < ($nbboxactivated / 2)) $box->box_order='B'.sprintf("%02d",($ii+1)); // When box_order was not yet set to Axx or Bxx and is still 0 if (preg_match('/^B/i',$box->box_order)) // colonne B { $ii++; @@ -914,7 +920,6 @@ class FormOther } } - $emptybox=new ModeleBoxes($db); $emptybox->box_id='B'; $emptybox->info_box_head=array(); $emptybox->info_box_contents=array(); diff --git a/htdocs/core/class/infobox.class.php b/htdocs/core/class/infobox.class.php index ce961a5868c..b5a0e3ad7d0 100644 --- a/htdocs/core/class/infobox.class.php +++ b/htdocs/core/class/infobox.class.php @@ -33,7 +33,7 @@ class InfoBox * @param DoliDB $db Database handler * @param string $mode 'available' or 'activated' * @param string $zone Name or area (-1 for all, 0 for Homepage, 1 for xxx, ...) - * @param User $user Objet user to filter (used only if $zone >= 0) + * @param User $user Objet user to filter * @param array $excludelist Array of box id (box.box_id = boxes_def.rowid) to exclude * @return array Array of boxes */ @@ -52,7 +52,7 @@ class InfoBox $sql.= " WHERE b.box_id = d.rowid"; $sql.= " AND b.entity = ".$conf->entity; if ($zone >= 0) $sql.= " AND b.position = ".$zone; - if ($user->id && ! empty($user->conf->$confuserzone)) $sql.= " AND b.fk_user = ".$user->id; + if (is_object($user)) $sql.= " AND b.fk_user IN (0,".$user->id.")"; else $sql.= " AND b.fk_user = 0"; $sql.= " ORDER BY b.box_order"; } @@ -71,7 +71,7 @@ class InfoBox } } - dol_syslog(get_class()."::listBoxes get default box list sql=".$sql, LOG_DEBUG); + dol_syslog(get_class()."::listBoxes get default box list for mode=".$mode." userid=".(is_object($user)?$user->id:'')." sql=".$sql, LOG_DEBUG); $resql = $db->query($sql); if ($resql) { @@ -101,13 +101,13 @@ class InfoBox $box=new $boxname($db,$obj->note); // box properties - $box->rowid = (! empty($obj->rowid) ? $obj->rowid : ''); - $box->id = (! empty($obj->box_id) ? $obj->box_id : ''); - $box->position = (! empty($obj->position) ? $obj->position : ''); - $box->box_order = (! empty($obj->box_order) ? $obj->box_order : ''); - $box->fk_user = (! empty($obj->fk_user) ? $obj->fk_user : ''); + $box->rowid = (empty($obj->rowid) ? '' : $obj->rowid); + $box->id = (empty($obj->box_id) ? '' : $obj->box_id); + $box->position = (empty($obj->position) ? '' : $obj->position); + $box->box_order = (empty($obj->box_order) ? '' : $obj->box_order); + $box->fk_user = (empty($obj->fk_user) ? 0 : $obj->fk_user); $box->sourcefile=$relsourcefile; - if ($mode == 'activated' && (! $user->id || empty($user->conf->$confuserzone))) // List of activated box was not yet personalized into database + if ($mode == 'activated' && ! is_object($user)) // List of activated box was not yet personalized into database { if (is_numeric($box->box_order)) { @@ -116,8 +116,8 @@ class InfoBox } } // box_def properties - $box->box_id = (! empty($obj->box_id) ? $obj->box_id : ''); - $box->note = (! empty($obj->note) ? $obj->note : ''); + $box->box_id = (empty($obj->box_id) ? '' : $obj->box_id); + $box->note = (empty($obj->note) ? '' : $obj->note); $enabled=$box->enabled; if (isset($box->depends) && count($box->depends) > 0) @@ -128,6 +128,7 @@ class InfoBox if (empty($conf->$module->enabled)) $enabled=0; } } + //print 'xx module='.$module.' enabled='.$enabled; if ($enabled) $boxes[]=$box; } @@ -138,9 +139,8 @@ class InfoBox else { //dol_print_error($db); - $error=$db->error(); + $error=$db->lasterror(); dol_syslog(get_class()."::listBoxes Error ".$error, LOG_ERR); - return array(); } return $boxes; diff --git a/htdocs/core/class/menubase.class.php b/htdocs/core/class/menubase.class.php index ada707fe11f..24427f6b3c2 100644 --- a/htdocs/core/class/menubase.class.php +++ b/htdocs/core/class/menubase.class.php @@ -434,7 +434,7 @@ class Menubase $this->newmenu = $newmenu; // Load datas from database into $tabMenu, later we will complete this->newmenu with values into $tabMenu - if (count($tabMenu) == 0) + if (count($tabMenu) == 0) // To avoid to read into database a second time { $this->menuLoad($mainmenu, $leftmenu, $type_user, $menu_handler, $tabMenu); } @@ -535,7 +535,7 @@ class Menubase // If type_user == 2, no test required $sql.= " ORDER BY m.position, m.rowid"; - dol_syslog(get_class($this)."::menuLeftCharger sql=".$sql); + dol_syslog(get_class($this)."::menuLoad mymainmenu=".$mymainmenu." myleftmenu=".$myleftmenu." type_user=".$type_user." menu_handler=".$menu_handler." tabMenu size=".count($tabMenu)." sql=".$sql); $resql = $this->db->query($sql); if ($resql) { diff --git a/htdocs/core/menus/standard/auguria_frontoffice.php b/htdocs/core/menus/standard/auguria_frontoffice.php index 7d095d8e6d4..8432a29e9af 100644 --- a/htdocs/core/menus/standard/auguria_frontoffice.php +++ b/htdocs/core/menus/standard/auguria_frontoffice.php @@ -98,6 +98,8 @@ class MenuLeft */ function showmenu() { + global $conf; + require_once DOL_DOCUMENT_ROOT.'/core/menus/standard/auguria.lib.php'; $res=print_left_auguria_menu($this->db,$this->menu_array,$this->menu_array_after); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index bb47d82fd9b..fed1dc70155 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -444,7 +444,7 @@ function print_eldy_menu($db,$atarget,$type_user) $tabMenu=array(); $menuArbo = new Menubase($db,'eldy','top'); - $newTabMenu = $menuArbo->menuTopCharger('','',$type_user,'eldy',$tabMenu); + $newTabMenu = $menuArbo->menuTopCharger('','',$type_user,'eldy',$tabMenu); // Return tabMenu with only top entries $num = count($newTabMenu); for($i = 0; $i < $num; $i++) diff --git a/htdocs/core/menus/standard/eldy_frontoffice.php b/htdocs/core/menus/standard/eldy_frontoffice.php index 355619e6832..9aec7ac62a4 100644 --- a/htdocs/core/menus/standard/eldy_frontoffice.php +++ b/htdocs/core/menus/standard/eldy_frontoffice.php @@ -96,6 +96,8 @@ class MenuLeft */ function showmenu() { + global $conf; + require_once DOL_DOCUMENT_ROOT.'/core/menus/standard/eldy.lib.php'; $res=print_left_eldy_menu($this->db,$this->menu_array,$this->menu_array_after); |