- Uniformize Extrafield deletion for adherent,user,product,societe by

using commonobject method
 - Add convertion of tms timestamp special case in mysql for pgsql
This commit is contained in:
fhenry 2012-12-08 14:23:52 +01:00
parent defdc863d4
commit 1d6bc23f4d
5 changed files with 110 additions and 79 deletions

View File

@ -701,75 +701,101 @@ class Adherent extends CommonObject
$result = 0; $result = 0;
$error=0; $error=0;
$errorflag=0;
$this->db->begin(); $this->db->begin();
// Remove extrafields // Remove category
$sql = "DELETE FROM ".MAIN_DB_PREFIX."adherent_extrafields WHERE fk_object = ".$rowid; $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_member WHERE fk_member = ".$rowid;
dol_syslog(get_class($this)."::delete sql=".$sql); dol_syslog(get_class($this)."::delete sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if (! $resql)
{ {
$sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_member WHERE fk_member = ".$rowid; $error++;
dol_syslog(get_class($this)."::delete sql=".$sql); $this->error .= $this->db->lasterror();
$resql=$this->db->query($sql); $errorflag=-1;
dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR);
$sql = "DELETE FROM ".MAIN_DB_PREFIX."cotisation WHERE fk_adherent = ".$rowid; }
dol_syslog(get_class($this)."::delete sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
// Remove linked user
$ret=$this->setUserId(0);
if ($ret > 0)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."adherent WHERE rowid = ".$rowid;
dol_syslog(get_class($this)."::delete sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
if ($this->db->affected_rows($resql))
{
// Appel des triggers
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
$interface=new Interfaces($this->db);
$result=$interface->run_triggers('MEMBER_DELETE',$this,$user,$langs,$conf);
if ($result < 0) {
$error++; $this->errors=$interface->errors;
}
// Fin appel triggers
$this->db->commit(); // Remove cotisation
return 1; if (! $error)
} {
else $sql = "DELETE FROM ".MAIN_DB_PREFIX."cotisation WHERE fk_adherent = ".$rowid;
{ dol_syslog(get_class($this)."::delete sql=".$sql);
// Rien a effacer $resql=$this->db->query($sql);
$this->db->rollback(); if (! $resql)
return 0; {
} $error++;
} $this->error .= $this->db->lasterror();
else $errorflag=-2;
{ dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR);
$this->error=$this->db->error(); }
$this->db->rollback(); }
return -3;
} // Remove linked user
} if (! $error)
} {
else $ret=$this->setUserId(0);
{ if ($ret < 0)
$this->error=$this->db->error(); {
$this->db->rollback(); $error++;
return -2; $this->error .= $this->db->lasterror();
} $errorflag=-3;
dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR);
}
}
// Removed extrafields
if (! $error)
{
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
{
$result=$this->deleteExtraFields($this);
if ($result < 0) {
$error++;
$errorflag=-4;
dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR);
}
}
}
// Remove adherent
if (! $error)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."adherent WHERE rowid = ".$rowid;
dol_syslog(get_class($this)."::delete sql=".$sql);
$resql=$this->db->query($sql);
if (! $resql)
{
$error++;
$this->error .= $this->db->lasterror();
$errorflag=-5;
dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR);
}
}
if (! $error)
{
// Appel des triggers
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
$interface=new Interfaces($this->db);
$result=$interface->run_triggers('MEMBER_DELETE',$this,$user,$langs,$conf);
if ($result < 0) {$error++; $this->errors=$interface->errors;}
// Fin appel triggers
}
if (! $error)
{
$this->db->commit();
return 1;
} }
else else
{ {
$this->error=$this->db->error(); $this->db->rollback();
$this->db->rollback(); return $errorflag;
return -1;
} }
} }

View File

@ -6,6 +6,7 @@
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
* Copyright (C) 2005-2012 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2012 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2012 Yann Droneaud <yann@droneaud.fr> * Copyright (C) 2012 Yann Droneaud <yann@droneaud.fr>
* Copyright (C) 2012 Florian Henry <florian.henry@open-concept.pro>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -225,6 +226,10 @@ class DoliDBPgsql
$line=preg_replace('/^float/i','numeric',$line); $line=preg_replace('/^float/i','numeric',$line);
$line=preg_replace('/(\s*)float/i','\\1numeric',$line); $line=preg_replace('/(\s*)float/i','\\1numeric',$line);
//Check tms timestamp field case (in Mysql this field is defautled to now and
// on update defaulted by now
$line=preg_replace('/(\s*)tms(\s*)timestamp/i','\\1tms timestamp without time zone DEFAULT now() NOT NULL',$line);
// unique index(field1,field2) // unique index(field1,field2)
if (preg_match('/unique index\s*\((\w+\s*,\s*\w+)\)/i',$line)) if (preg_match('/unique index\s*\((\w+\s*,\s*\w+)\)/i',$line))
{ {

View File

@ -626,6 +626,16 @@ class Product extends CommonObject
} }
} }
// Removed extrafields
if ((! $error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used
{
$result=$this->deleteExtraFields($this);
if ($result < 0) {
$error++;
dol_syslog(get_class($this).'::delete error '.$this->error, LOG_ERR);
}
}
// Delete product // Delete product
if (! $error) if (! $error)
{ {

View File

@ -1022,10 +1022,6 @@ class Societe extends CommonObject
} }
} }
// Removed extrafields
//$result=$this->deleteExtraFields($this);
//if ($result < 0) $error++;
if (! $error) if (! $error)
{ {
// Additionnal action by hooks // Additionnal action by hooks
@ -1041,16 +1037,13 @@ class Societe extends CommonObject
} }
} }
// Remove extrafields // Removed extrafields
if (! $error) if ((! $error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used
{ {
$sql = "DELETE FROM ".MAIN_DB_PREFIX."societe_extrafields WHERE fk_object = ".$id; $result=$this->deleteExtraFields($this);
dol_syslog(get_class($this)."::delete sql=".$sql); if ($result < 0) {
if (! $this->db->query($sql))
{
$error++; $error++;
$this->error = $this->db->lasterror(); dol_syslog(get_class($this)."::delete error -3 ".$this->error, LOG_ERR);
dol_syslog(get_class($this)."::delete error -3 ".$this->error, LOG_ERR);
} }
} }

View File

@ -717,15 +717,12 @@ class User extends CommonObject
} }
} }
// Remove extrafields // Removed extrafields
if (! $error) if ((! $error) && (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED))) // For avoid conflicts if trigger used
{ {
$sql = "DELETE FROM ".MAIN_DB_PREFIX."user_extrafields WHERE fk_object = ".$this->id; $result=$this->deleteExtraFields($this);
dol_syslog(get_class($this)."::delete sql=".$sql); if ($result < 0) {
if (! $this->db->query($sql))
{
$error++; $error++;
$this->error = $this->db->lasterror();
dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR);
} }
} }