diff --git a/ChangeLog b/ChangeLog index 26ded2e941d..b6c474f6f92 100644 --- a/ChangeLog +++ b/ChangeLog @@ -17,6 +17,7 @@ For users: - Fix: [ bug #1496 ] ACTION_DELETE trigger does not show trigger error - Fix: [ bug #1494 ] CATEGORY_CREATE and CATEGORY_MODIFY triggers do not intercept trigger action - Fix: [ bug #1502 ] DON_CREATE trigger does not intercept trigger action +- Fix: [ bug #1505, #1504] Project trigger problem For translators: diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index c2b8b95f608..82e9dd72874 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -130,15 +130,9 @@ class Project extends CommonObject if (!$notrigger) { - // Call triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface = new Interfaces($this->db); - $result = $interface->run_triggers('PROJECT_CREATE', $this, $user, $langs, $conf); - if ($result < 0) - { - $error++; - $this->errors = $interface->errors; - } + // Call trigger + $result=$this->call_trigger('PROJECT_CREATE',$user); + if ($result < 0) { $error++; } // End call triggers } } @@ -199,6 +193,8 @@ class Project extends CommonObject if (dol_strlen(trim($this->ref)) > 0) { + $this->db->begin(); + $sql = "UPDATE " . MAIN_DB_PREFIX . "projet SET"; $sql.= " ref='" . $this->db->escape($this->ref) . "'"; $sql.= ", title = '" . $this->db->escape($this->title) . "'"; @@ -216,15 +212,9 @@ class Project extends CommonObject { if (!$notrigger) { - // Call triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface = new Interfaces($this->db); - $result = $interface->run_triggers('PROJECT_MODIFY', $this, $user, $langs, $conf); - if ($result < 0) - { - $error++; - $this->errors = $interface->errors; - } + // Call trigger + $result=$this->call_trigger('PROJECT_MODIFY',$user); + if ($result < 0) { $error++; } // End call triggers } @@ -259,13 +249,24 @@ class Project extends CommonObject } } } + if (! $error ) + { + $this->db->commit(); + $result = 1; + } + else + { + $this->db->rollback(); + $result = -1; + } - $result = 1; + } else { $this->error = $this->db->lasterror(); dol_syslog(get_class($this)."::Update error -2 " . $this->error, LOG_ERR); + $this->db->rollback(); $result = -2; } } @@ -528,17 +529,18 @@ class Project extends CommonObject 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); + // Call trigger + $result=$this->call_trigger('PROJECT_DELETE',$user); if ($result < 0) { $error++; - foreach ($interface->errors as $errmsg ) { - dol_syslog(get_class($this) . "::delete " . $errmsg, LOG_ERR); - $this->errors[] =$errmsg; - } + if (! empty($interface->errors)) + { + foreach ($interface->errors as $errmsg ) { + dol_syslog(get_class($this) . "::delete " . $errmsg, LOG_ERR); + $this->errors[] =$errmsg; + } + } } // End call triggers } @@ -587,16 +589,10 @@ class Project extends CommonObject $resql = $this->db->query($sql); if ($resql) { - // Appel des triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface = new Interfaces($this->db); - $result = $interface->run_triggers('PROJECT_VALIDATE', $this, $user, $langs, $conf); - if ($result < 0) - { - $error++; - $this->errors = $interface->errors; - } - // Fin appel triggers + // Call trigger + $result=$this->call_trigger('PROJECT_VALIDATE',$user); + if ($result < 0) { $error++; } + // End call triggers if (!$error) { @@ -648,16 +644,10 @@ class Project extends CommonObject $resql = $this->db->query($sql); if ($resql) { - // Appel des triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface = new Interfaces($this->db); - $result = $interface->run_triggers('PROJECT_CLOSE', $this, $user, $langs, $conf); - if ($result < 0) - { - $error++; - $this->errors = $interface->errors; - } - // Fin appel triggers + // Call trigger + $result=$this->call_trigger('PROJECT_CLOSE',$user); + if ($result < 0) { $error++; } + // End call triggers if (!$error) { diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 697d773f02c..5dc3a6fd52e 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -133,11 +133,9 @@ class Task extends CommonObject if (! $notrigger) { - // Call triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('TASK_CREATE',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Call trigger + $result=$this->call_trigger('TASK_CREATE',$user); + if ($result < 0) { $error++; } // End call triggers } } @@ -303,11 +301,9 @@ class Task extends CommonObject { if (! $notrigger) { - // Call triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('TASK_MODIFY',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Call trigger + $result=$this->call_trigger('TASK_MODIFY',$user); + if ($result < 0) { $error++; } // End call triggers } } @@ -394,11 +390,9 @@ class Task extends CommonObject { if (! $notrigger) { - // Call triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('TASK_DELETE',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Call trigger + $result=$this->call_trigger('TASK_DELETE',$user); + if ($result < 0) { $error++; } // End call triggers } } @@ -744,11 +738,12 @@ class Task extends CommonObject { global $conf,$langs; - $error=0; $ret = 0; // Clean parameters if (isset($this->timespent_note)) $this->timespent_note = trim($this->timespent_note); + + $this->db->begin(); $sql = "INSERT INTO ".MAIN_DB_PREFIX."projet_task_time ("; $sql.= "fk_task"; @@ -772,11 +767,9 @@ class Task extends CommonObject if (! $notrigger) { - // Call triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('TASK_TIMESPENT_CREATE',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Call trigger + $result=$this->call_trigger('TASK_TIMESPENT_CREATE',$user); + if ($result < 0) { $this->db->rollback(); $ret=-1; } // End call triggers } } @@ -784,6 +777,7 @@ class Task extends CommonObject { $this->error=$this->db->lasterror(); dol_syslog(get_class($this)."::addTimeSpent error -1 ".$this->error,LOG_ERR); + $this->db->rollback(); $ret = -1; } @@ -798,6 +792,7 @@ class Task extends CommonObject { $this->error=$this->db->lasterror(); dol_syslog(get_class($this)."::addTimeSpent error -2 ".$this->error, LOG_ERR); + $this->db->rollback(); $ret = -2; } } @@ -813,10 +808,12 @@ class Task extends CommonObject { $this->error=$this->db->lasterror(); dol_syslog(get_class($this)."::addTimeSpent error -2 ".$this->error, LOG_ERR); + $this->db->rollback(); $ret = -2; } } + if ($ret >=0) $this->db->commit(); return $ret; } @@ -879,11 +876,12 @@ class Task extends CommonObject { global $conf,$langs; - $error=0; $ret = 0; // Clean parameters if (isset($this->timespent_note)) $this->timespent_note = trim($this->timespent_note); + + $this->db->begin(); $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task_time SET"; $sql.= " task_date = '".$this->db->idate($this->timespent_date)."',"; @@ -897,19 +895,23 @@ class Task extends CommonObject { if (! $notrigger) { - // Call triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('TASK_TIMESPENT_MODIFY',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Call trigger + $result=$this->call_trigger('TASK_TIMESPENT_MODIFY',$user); + if ($result < 0) + { + $this->db->rollback(); + $ret = -1; + } + else $ret = 1; // End call triggers } - $ret = 1; + else $ret = 1; } else { $this->error=$this->db->lasterror(); dol_syslog(get_class($this)."::updateTimeSpent error -1 ".$this->error,LOG_ERR); + $this->db->rollback(); $ret = -1; } @@ -925,11 +927,13 @@ class Task extends CommonObject if (! $this->db->query($sql) ) { $this->error=$this->db->lasterror(); + $this->db->rollback(); dol_syslog(get_class($this)."::addTimeSpent error -2 ".$this->error, LOG_ERR); $ret = -2; } } + if ($ret >= 0) $this->db->commit(); return $ret; } @@ -959,11 +963,9 @@ class Task extends CommonObject { if (! $notrigger) { - // Call triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('TASK_TIMESPENT_DELETE',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Call trigger + $result=$this->call_trigger('TASK_TIMESPENT_DELETE',$user); + if ($result < 0) { $error++; } // End call triggers } } diff --git a/htdocs/projet/fiche.php b/htdocs/projet/fiche.php index 123b4a611b4..00fdf65d15a 100644 --- a/htdocs/projet/fiche.php +++ b/htdocs/projet/fiche.php @@ -340,7 +340,8 @@ if (empty($reshook)) else { dol_syslog($object->error,LOG_DEBUG); - $mesg='