New: When a module with boxes is activated, box is also activated by

default for everybody, except for users that had personlized their box
view.
This commit is contained in:
Laurent Destailleur 2012-03-17 14:29:48 +01:00
parent 1d51ee3aab
commit da94f76364
2 changed files with 43 additions and 15 deletions

View File

@ -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);

View File

@ -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();
}
}
}