2
0
forked from Wavyzz/dolibarr

Fix: Avoid pgsql error of duplicate record making rollback.

This commit is contained in:
Laurent Destailleur
2014-07-27 23:52:42 +02:00
parent 25d18f225f
commit 355ec7fd27

View File

@@ -852,6 +852,7 @@ abstract class DolibarrModules
dol_syslog(get_class($this)."::insert_permissions", LOG_DEBUG);
$resql=$this->db->query($sql_del);
if ($resql)
{
$obj=$this->db->fetch_object($resql);
@@ -870,6 +871,14 @@ abstract class DolibarrModules
if (empty($r_type)) $r_type='w';
// Search if perm already present
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."rights_def";
$sql.= " WHERE id = ".$r_id." AND entity = ".$entity;
$resqlselect=$this->db->query($sql);
$obj = $this->db->fetch_object($resqlselect);
if ($obj->nb == 0)
{
if (dol_strlen($r_perms) )
{
if (dol_strlen($r_subperms) )
@@ -895,8 +904,8 @@ abstract class DolibarrModules
$sql .= "(".$r_id.",".$entity.",'".$this->db->escape($r_desc)."','".$r_modul."','".$r_type."',".$r_def.")";
}
dol_syslog(get_class($this)."::insert_permissions", LOG_DEBUG);
$resqlinsert=$this->db->query($sql,1);
if (! $resqlinsert)
{
if ($this->db->errno() != "DB_ERROR_RECORD_ALREADY_EXISTS")
@@ -908,7 +917,11 @@ abstract class DolibarrModules
else dol_syslog(get_class($this)."::insert_permissions record already exists", LOG_INFO);
}
$this->db->free($resqlinsert);
}
$this->db->free($resqlselect);
// If we want to init permissions on admin users
if ($reinitadminperms)