From 8196abfb64afc2a811ebb9d7bc418d99e204a280 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 24 Jun 2011 07:10:55 +0000 Subject: [PATCH] Mutualize code --- htdocs/adherents/class/adherent.class.php | 72 +++++++---------------- htdocs/admin/societe_extrafields.php | 4 +- htdocs/core/class/commonobject.class.php | 54 +++++++++++++++++ 3 files changed, 76 insertions(+), 54 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index f00eac17f9a..a92d3ca7d5a 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -421,48 +421,14 @@ class Adherent extends CommonObject { $nbrowsaffected+=$this->db->affected_rows($resql); - // Add/Update extra fields - // TODO Run a method into commonobject - if (sizeof($this->array_options) > 0) + $result=$this->insertExtraFields(); + if ($result < 0) { - $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."adherent_extrafields WHERE fk_object = ".$this->id; - dol_syslog(get_class($this)."::update sql=".$sql_del); - $this->db->query($sql_del); - - $sql = "INSERT INTO ".MAIN_DB_PREFIX."adherent_extrafields (fk_object"; - foreach($this->array_options as $key => $value) - { - // Add field of attribut - $sql.=",".substr($key,8); // Remove 'options_' prefix - } - $sql .= ") VALUES (".$this->id; - foreach($this->array_options as $key => $value) - { - // Add field o fattribut - if ($this->array_options[$key] != '') - { - $sql.=",'".$this->array_options[$key]."'"; - } - else - { - $sql.=",null"; - } - } - $sql.=")"; - - dol_syslog(get_class($this)."::update update option sql=".$sql); - $resql = $this->db->query($sql); - if (! $resql) - { - $this->error=$this->db->error(); - dol_syslog(get_class($this)."::update ".$this->error,LOG_ERR); - $this->db->rollback(); - return -2; - } + $error++; } // Update password - if ($this->pass) + if (! $error && $this->pass) { dol_syslog(get_class($this)."::update update password"); if ($this->pass != $this->pass_indatabase && $this->pass != $this->pass_indatabase_crypted) @@ -474,21 +440,24 @@ class Adherent extends CommonObject } // Remove link to user - dol_syslog(get_class($this)."::update update link to user"); - $sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = NULL WHERE fk_member = ".$this->id; - dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG); - $resql = $this->db->query($sql); - if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -5; } - // If there is a user linked to this member - if ($this->user_id > 0) + if (! $error) { - $sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = ".$this->id." WHERE rowid = ".$this->user_id; + dol_syslog(get_class($this)."::update update link to user"); + $sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = NULL WHERE fk_member = ".$this->id; dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG); $resql = $this->db->query($sql); if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -5; } + // If there is a user linked to this member + if ($this->user_id > 0) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = ".$this->id." WHERE rowid = ".$this->user_id; + dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG); + $resql = $this->db->query($sql); + if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -5; } + } } - if ($nbrowsaffected) // If something has change in data + if (! $error && $nbrowsaffected) // If something has change in main data { if ($this->user_id > 0 && ! $nosyncuser) { @@ -549,21 +518,20 @@ class Adherent extends CommonObject if (! $error) { $this->db->commit(); + return $nbrowsaffected; } else { $this->db->rollback(); + return -1; } - - return $nbrowsaffected; } else { $this->db->rollback(); - $this->error=$this->db->lasterror(); - dol_syslog(get_class($this)."::update ".$this->error,LOG_ERR); - return -1; + dol_syslog(get_class($this)."::Update ".$this->error,LOG_ERR); + return -2; } } diff --git a/htdocs/admin/societe_extrafields.php b/htdocs/admin/societe_extrafields.php index 6dbf21ee3c1..ac6b0a8374a 100755 --- a/htdocs/admin/societe_extrafields.php +++ b/htdocs/admin/societe_extrafields.php @@ -40,8 +40,8 @@ $type2label=array( 'varchar'=>$langs->trans('String'), 'text'=>$langs->trans('Text'), 'int'=>$langs->trans('Int'), -'date'=>$langs->trans('Date'), -'datetime'=>$langs->trans('DateAndTime') +//'date'=>$langs->trans('Date'), +//'datetime'=>$langs->trans('DateAndTime') ); $action=GETPOST("action"); diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index c552d4557b8..a2ef308ba91 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -1946,6 +1946,60 @@ class CommonObject include(DOL_DOCUMENT_ROOT.'/core/tpl/originproductline.tpl.php'); } + + + /** + * Add/Update extra fields + * TODO Use also type of field to do manage date fields + */ + function insertExtraFields() + { + if (sizeof($this->array_options) > 0) + { + $this->db->begin(); + + $sql_del = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element."_extrafields WHERE fk_object = ".$this->id; + dol_syslog(get_class($this)."::insertExtraFields delete sql=".$sql_del); + $this->db->query($sql_del); + + $sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element."_extrafields (fk_object"; + foreach($this->array_options as $key => $value) + { + // Add field of attribut + $sql.=",".substr($key,8); // Remove 'options_' prefix + } + $sql .= ") VALUES (".$this->id; + foreach($this->array_options as $key => $value) + { + // Add field o fattribut + if ($this->array_options[$key] != '') + { + $sql.=",'".$this->array_options[$key]."'"; + } + else + { + $sql.=",null"; + } + } + $sql.=")"; + + dol_syslog(get_class($this)."::insertExtraFields insert sql=".$sql); + $resql = $this->db->query($sql); + if (! $resql) + { + $this->error=$this->db->lasterror(); + dol_syslog(get_class($this)."::update ".$this->error,LOG_ERR); + $this->db->rollback(); + return -1; + } + else + { + $this->db->commit(); + return 1; + } + } + else return 0; + } } ?>