diff --git a/htdocs/boxes.php b/htdocs/boxes.php
index b34e5873d1a..a9c86b1e778 100644
--- a/htdocs/boxes.php
+++ b/htdocs/boxes.php
@@ -51,45 +51,87 @@ class InfoBox
/**
- * \brief Retourne tableau des boites elligibles pour la zone
+ * \brief Retourne tableau des boites elligibles pour la zone et le user
* \param $zone ID de la zone (0 pour la Homepage, ...)
+ * \param $user Objet user
* \return array Tableau d'objet box
*/
- function listBoxes($zone)
- {
- $boxes=array();
-
- $sql = "SELECT b.rowid, b.box_id,";
- $sql.= " d.file, d.note";
- $sql.= " FROM ".MAIN_DB_PREFIX."boxes as b, ".MAIN_DB_PREFIX."boxes_def as d";
- $sql.= " WHERE b.box_id = d.rowid";
- $sql.= " AND position = ".$zone;
- $sql.= " ORDER BY box_order";
-
- dolibarr_syslog("InfoBox::listBoxes sql=$sql");
-
- $result = $this->db->query($sql);
- if ($result)
- {
- $num = $this->db->num_rows($result);
- $j = 0;
- while ($j < $num)
- {
- $obj = $this->db->fetch_object($result);
- $boxname=eregi_replace('.php$','',$obj->file);
+ function listBoxes($zone,$user)
+ {
+ global $conf;
+
+ $boxes=array();
- include_once(DOL_DOCUMENT_ROOT."/includes/boxes/".$boxname.".php");
- $box=new $boxname($this->db,$obj->note);
- $boxes[$j]=$box;
+ $confuserzone='MAIN_BOXES_'.$zone;
+ if ($user->id && $user->conf->$confuserzone)
+ {
+ // Recupere liste des boites d'un user si ce dernier a sa propre liste
+ $sql = "SELECT b.rowid, b.box_id,";
+ $sql.= " d.file, d.note";
+ $sql.= " FROM ".MAIN_DB_PREFIX."boxes as b, ".MAIN_DB_PREFIX."boxes_def as d";
+ $sql.= " WHERE b.box_id = d.rowid";
+ $sql.= " AND b.position = ".$zone;
+ $sql.= " AND b.fk_user = ".$user->id;
+ $sql.= " ORDER BY b.box_order";
+
+ dolibarr_syslog("InfoBox::listBoxes sql=$sql");
+ $result = $this->db->query($sql);
+ if ($result)
+ {
+ $num = $this->db->num_rows($result);
+ $j = 0;
+ while ($j < $num)
+ {
+ $obj = $this->db->fetch_object($result);
+ $boxname=eregi_replace('\.php$','',$obj->file);
+ include_once(DOL_DOCUMENT_ROOT."/includes/boxes/".$boxname.".php");
+ $box=new $boxname($this->db,$obj->note);
+ $boxes[$j]=$box;
+ $j++;
+ }
+ }
+ else {
+ $this->error=$this->db->error();
+ dolibarr_syslog("InfoBox::listBoxes Error ".$this->error);
+ return array();
+ }
+ }
+ else
+ {
+ // Recupere liste des boites active par defaut pour tous
+ $sql = "SELECT b.rowid, b.box_id,";
+ $sql.= " d.file, d.note";
+ $sql.= " FROM ".MAIN_DB_PREFIX."boxes as b, ".MAIN_DB_PREFIX."boxes_def as d";
+ $sql.= " WHERE b.box_id = d.rowid";
+ $sql.= " AND b.position = ".$zone;
+ $sql.= " AND b.fk_user = 0";
+ $sql.= " ORDER BY b.box_order";
- $j++;
- }
- }
- else {
- return array();
- }
- return $boxes;
- }
+ dolibarr_syslog("InfoBox::listBoxes sql=$sql");
+ $result = $this->db->query($sql);
+ if ($result)
+ {
+ $num = $this->db->num_rows($result);
+ $j = 0;
+ while ($j < $num)
+ {
+ $obj = $this->db->fetch_object($result);
+ $boxname=eregi_replace('\.php$','',$obj->file);
+ include_once(DOL_DOCUMENT_ROOT."/includes/boxes/".$boxname.".php");
+ $box=new $boxname($this->db,$obj->note);
+ $boxes[$j]=$box;
+ $j++;
+ }
+ }
+ else {
+ $this->error=$this->db->error();
+ dolibarr_syslog("InfoBox::listBoxes Error ".$this->error);
+ return array();
+ }
+ }
+
+ return $boxes;
+ }
}
?>
diff --git a/htdocs/includes/boxes/box_external_rss.php b/htdocs/includes/boxes/box_external_rss.php
index 436f52ae17f..3ef2a13e9d3 100644
--- a/htdocs/includes/boxes/box_external_rss.php
+++ b/htdocs/includes/boxes/box_external_rss.php
@@ -74,7 +74,14 @@ class box_external_rss extends ModeleBoxes {
$site=$reg[1];
// Recupere flux RSS definie dans EXTERNAL_RSS_URLRSS_$site
- $rss = fetch_rss( @constant("EXTERNAL_RSS_URLRSS_".$site) );
+ $url=@constant("EXTERNAL_RSS_URLRSS_".$site);
+ $rss=fetch_rss($url);
+ if (! is_object($rss))
+ {
+ dolibarr_syslog("FETCH_RSS site=".$site);
+ dolibarr_syslog("FETCH_RSS url=".$url);
+ return -1;
+ }
// INFO sur le channel
$description=$rss->channel['tagline'];
@@ -135,7 +142,6 @@ class box_external_rss extends ModeleBoxes {
$this->info_box_contents[$i][1] = array('align' => 'right',
'text' => $date,
'td' => 'nowrap="1"');
-
}
}
diff --git a/htdocs/includes/modules/DolibarrModules.class.php b/htdocs/includes/modules/DolibarrModules.class.php
index 34dcc6fc1c3..4422c80cf2b 100644
--- a/htdocs/includes/modules/DolibarrModules.class.php
+++ b/htdocs/includes/modules/DolibarrModules.class.php
@@ -420,10 +420,18 @@ class DolibarrModules
//$titre = $this->boxes[$key][0];
$file = $this->boxes[$key][1];
//$note = $this->boxes[$key][2];
-
- $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes_def ";
- $sql.= "WHERE file = '".$file."'";
- if (! $this->db->query($sql) )
+
+ $sql = "DELETE ".MAIN_DB_PREFIX."boxes";
+ $sql.= " FROM ".MAIN_DB_PREFIX."boxes, ".MAIN_DB_PREFIX."boxes_def";
+ $sql.= " WHERE ".MAIN_DB_PREFIX."boxes.box_id = ".MAIN_DB_PREFIX."boxes_def.rowid";
+ $sql.= " AND ".MAIN_DB_PREFIX."boxes_def.file = '".$file."'";
+ dolibarr_syslog("DolibarrModules::delete_boxes sql=".$sql);
+ $this->db->query($sql);
+
+ $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes_def";
+ $sql.= " WHERE file = '".$file."'";
+ dolibarr_syslog("DolibarrModules::delete_boxes sql=".$sql);
+ if (! $this->db->query($sql))
{
$err++;
}
diff --git a/htdocs/index.php b/htdocs/index.php
index 44ee5296510..ed0d0042b94 100644
--- a/htdocs/index.php
+++ b/htdocs/index.php
@@ -27,13 +27,21 @@
*/
require("./pre.inc.php");
+require_once(DOL_DOCUMENT_ROOT."/boxes.php");
$user->getrights('');
-
// Simule le menu par défaut sur Home
if (! isset($_GET["mainmenu"])) $_GET["mainmenu"]="home";
+$infobox=new InfoBox($db);
+
+
+
+
+/*
+* Affichage page
+*/
llxHeader();
@@ -480,11 +488,17 @@ print '';
* Affichage des boites
*
*/
-include_once("./boxes.php");
-$infobox=new InfoBox($db);
-$boxarray=$infobox->listboxes("0"); // 0 = valeur pour la page accueil
+$boxarray=$infobox->listboxes("0",$user); // 0=valeur pour la page accueil
$boxjavascriptids=array();
+if (eregi('boxobject_([0-9]+)',$_GET["switchfrom"],$regfrom)
+ && eregi('boxto_([0-9]+)',$_GET["switchto"],$regto))
+{
+ //print "Modif ordre box: ".$regfrom[1]." <-> ".$regto[1];
+// print_r($boxarray);
+}
+
+
$NBCOLS=2; // Nombre de colonnes pour les boites
if (sizeof($boxarray))
@@ -492,42 +506,40 @@ if (sizeof($boxarray))
print '
';
print_fiche_titre($langs->trans("OtherInformationsBoxes"));
print '
| ';
+ print ' ';
+
+ if ($conf->use_ajax && $conf->browser->firefox)
+ {
+ print ' ';
+ print "
| ";
+ if ($ii % $NBCOLS == ($NBCOLS-1)) print "
| ';
- print ' ';
-
- if ($conf->use_ajax && $conf->browser->firefox)
- {
- print ' ';
- print "
| ";
- if ($ii % $NBCOLS == ($NBCOLS-1)) print "