Fix: Better error management

This commit is contained in:
Laurent Destailleur 2012-03-03 13:42:27 +01:00
parent cb3104220e
commit 8cf008c10b

View File

@ -40,6 +40,7 @@ class ExtraFields
var $attribute_size; var $attribute_size;
var $error; var $error;
var $errno;
/** /**
@ -74,10 +75,17 @@ class ExtraFields
if (empty($label)) return -1; if (empty($label)) return -1;
$result=$this->create($attrname,$type,$size,$elementtype); $result=$this->create($attrname,$type,$size,$elementtype);
if ($result > 0) $err1=$this->errno;
if ($result > 0 || $err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS')
{ {
$result2=$this->create_label($attrname,$label,$type,$pos,$size,$elementtype); $result2=$this->create_label($attrname,$label,$type,$pos,$size,$elementtype);
if ($result2 > 0) return 1; $err2=$this->errno;
if ($result2 > 0 || ($err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' && $err2 == 'DB_ERROR_RECORD_ALREADY_EXISTS'))
{
$this->error='';
$this->errno=0;
return 1;
}
else return -2; else return -2;
} }
else else
@ -119,6 +127,7 @@ class ExtraFields
else else
{ {
$this->error=$this->db->lasterror(); $this->error=$this->db->lasterror();
$this->errno=$this->db->lasterrno();
return -1; return -1;
} }
} }
@ -166,8 +175,9 @@ class ExtraFields
} }
else else
{ {
print dol_print_error($this->db); $this->error=$this->db->lasterror();
return 0; $this->errno=$this->db->lasterrno();
return -1;
} }
} }
} }