diff --git a/htdocs/admin/boxes.php b/htdocs/admin/boxes.php index 41272fa8e87..3651a98857b 100644 --- a/htdocs/admin/boxes.php +++ b/htdocs/admin/boxes.php @@ -84,8 +84,11 @@ if ($action == 'add') $resql = $db->query($sql); // Remove all personalized setup when a box is activated or disabled (to be sure user see new box) - $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param"; - $sql.= " WHERE param LIKE 'MAIN_BOXES_%'"; + // TODO Disable this when adding combo will be available on home page for each user. + $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param WHERE param LIKE 'MAIN_BOXES_%'"; + dol_syslog("boxes.php delete user_param sql=".$sql); + $resql = $db->query($sql); + $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes WHERE fk_user != 0"; dol_syslog("boxes.php delete user_param sql=".$sql); $resql = $db->query($sql); diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index 5858241752a..8dddbd2c2a1 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -582,28 +582,53 @@ abstract class DolibarrModules $file = isset($this->boxes[$key][1])?$this->boxes[$key][1]:''; $note = isset($this->boxes[$key][2])?$this->boxes[$key][2]:''; - $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."boxes_def"; - $sql.= " WHERE file = '".$file."'"; + $sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."boxes_def"; + $sql.= " WHERE file = '".$this->db->escape($file)."'"; $sql.= " AND entity = ".$conf->entity; - if ($note) $sql.=" AND note ='".$this->db->escape($note)."'"; $result=$this->db->query($sql); if ($result) { - $row = $this->db->fetch_row($result); - if ($row[0] == 0) + $obj = $this->db->fetch_object($result); + if ($obj->nb == 0) { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes_def (file,entity,note)"; - $sql.= " VALUES ('".$this->db->escape($file)."',"; - $sql.= $conf->entity.","; - $sql.= $note?"'".$this->db->escape($note)."'":"null"; - $sql.= ")"; + $this->db->begin(); - dol_syslog(get_class($this)."::insert_boxes sql=".$sql); - if (! $this->db->query($sql)) + if (! $err) { - $err++; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes_def (file,entity,note)"; + $sql.= " VALUES ('".$this->db->escape($file)."',"; + $sql.= $conf->entity.","; + $sql.= $note?"'".$this->db->escape($note)."'":"null"; + $sql.= ")"; + + dol_syslog(get_class($this)."::insert_boxes sql=".$sql); + $resql=$this->db->query($sql); + if (! $resql) $err++; + + } + if (! $err) + { + $lastid=$this->db->last_insert_id(MAIN_DB_PREFIX."boxes_def","rowid"); + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes (box_id,position,box_order,fk_user)"; + $sql.= " VALUES (".$lastid.", 0, 0, 0)"; + + dol_syslog(get_class($this)."::insert_boxes sql=".$sql); + $resql=$this->db->query($sql); + if (! $resql) $err++; + } + + if (! $err) + { + $this->db->commit(); + } + else + { + $this->error=$this->db->lasterror(); + dol_syslog(get_class($this)."::insert_boxes ".$this->error, LOG_ERR); + $this->db->rollback(); } } }