From e6708a50724132234f17f4aa1253e59c09d80338 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Wed, 7 May 2014 15:05:40 +0200 Subject: [PATCH 1/3] Fix error return project deletion --- htdocs/projet/class/project.class.php | 28 +++++++++++++++++++++++++-- htdocs/projet/fiche.php | 2 +- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index f8f92dbaf60..f3d29ccf7f8 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -481,26 +481,47 @@ class Project extends CommonObject dol_syslog(get_class($this) . "::delete sql=" . $sql, LOG_DEBUG); $resql = $this->db->query($sql); + if (!$resql) + { + $this->errors[] = $this->db->lasterror(); + $error++; + } $sql = "DELETE FROM " . MAIN_DB_PREFIX . "projet_task"; $sql.= " WHERE fk_projet=" . $this->id; dol_syslog(get_class($this) . "::delete sql=" . $sql, LOG_DEBUG); $resql = $this->db->query($sql); + if (!$resql) + { + $this->errors[] = $this->db->lasterror(); + $error++; + } $sql = "DELETE FROM " . MAIN_DB_PREFIX . "projet"; $sql.= " WHERE rowid=" . $this->id; dol_syslog(get_class($this) . "::delete sql=" . $sql, LOG_DEBUG); $resql = $this->db->query($sql); + if (!$resql) + { + $this->errors[] = $this->db->lasterror(); + $error++; + } $sql = "DELETE FROM " . MAIN_DB_PREFIX . "projet_extrafields"; $sql.= " WHERE fk_object=" . $this->id; + dol_syslog(get_class($this) . "::delete sql=" . $sql, LOG_DEBUG); $resql = $this->db->query($sql); + if (!$resql) + { + $this->errors[] = $this->db->lasterror(); + $error++; + } - if ($resql) + if (empty($error)) { // We remove directory $projectref = dol_sanitizeFileName($this->ref); @@ -539,7 +560,10 @@ class Project extends CommonObject } else { - $this->error = $this->db->lasterror(); + foreach ( $this->errors as $errmsg ) { + dol_syslog(get_class($this) . "::delete " . $errmsg, LOG_ERR); + $this->error .= ($this->error ? ', ' . $errmsg : $errmsg); + } dol_syslog(get_class($this) . "::delete " . $this->error, LOG_ERR); $this->db->rollback(); return -1; diff --git a/htdocs/projet/fiche.php b/htdocs/projet/fiche.php index cefa422c4ad..0e5b2cc26a7 100644 --- a/htdocs/projet/fiche.php +++ b/htdocs/projet/fiche.php @@ -64,7 +64,7 @@ $result = restrictedArea($user, 'projet', $object->id); $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); $date_start=dol_mktime(0,0,0,GETPOST('projectmonth','int'),GETPOST('projectday','int'),GETPOST('projectyear','int')); -$date_end=dol_mktime(0,0,0,GETPOST('projectendmonth','int'),GETPOST('projectendday','int'),GETPOST('projectendyear','int'));; +$date_end=dol_mktime(0,0,0,GETPOST('projectendmonth','int'),GETPOST('projectendday','int'),GETPOST('projectendyear','int')); /* From 3f22bc70095e47af406b9b408bf5ec936169dc46 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Wed, 7 May 2014 15:08:44 +0200 Subject: [PATCH 2/3] Better error management in delete project method --- htdocs/projet/class/project.class.php | 33 +++++++++++++++------------ 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index f3d29ccf7f8..43e2137715c 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -533,28 +533,31 @@ class Project extends CommonObject $res = @dol_delete_dir_recursive($dir); if (!$res) { - $this->error = 'ErrorFailToDeleteDir'; - $this->db->rollback(); - return 0; + $this->errors[] = 'ErrorFailToDeleteDir'; + $error++; } } } if (!$notrigger) { - // Call triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface = new Interfaces($this->db); - $result = $interface->run_triggers('PROJECT_DELETE', $this, $user, $langs, $conf); - if ($result < 0) - { - $error++; - $this->errors = $interface->errors; - } - // End call triggers + // Call triggers + include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; + $interface = new Interfaces($this->db); + $result = $interface->run_triggers('PROJECT_DELETE', $this, $user, $langs, $conf); + if ($result < 0) + { + $error++; + foreach ($interface->errors as $errmsg ) { + dol_syslog(get_class($this) . "::delete " . $errmsg, LOG_ERR); + $this->errors[] =$errmsg; + } + } + // End call triggers } - - dol_syslog(get_class($this) . "::delete sql=" . $sql, LOG_DEBUG); + } + + if (empty($error)) { $this->db->commit(); return 1; } From 0e2497e7108bc65b89ee143ad9c33f5ba7a5ddf8 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Wed, 7 May 2014 18:19:46 +0200 Subject: [PATCH 3/3] [ bug #1377 ] Warning: get_class() called without object from outside a class --- htdocs/core/lib/functions2.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index 256dc205dd0..1a090087bb4 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -1286,7 +1286,7 @@ function getListOfModels($db,$type,$maxfilenamelength=0) $sql.= " WHERE type = '".$type."'"; $sql.= " AND entity IN (0,".(! empty($conf->multicompany->enabled) && ! empty($conf->multicompany->transverse_mode)?"1,":"").$conf->entity.")"; - dol_syslog(get_class($this).'::getListOfModels sql='.$sql, LOG_DEBUG); + dol_syslog('/core/lib/function2.lib.php::getListOfModels sql='.$sql, LOG_DEBUG); $resql = $db->query($sql); if ($resql) {