FIX: [ bug #1494 ] CATEGORY_CREATE and CATEGORY_MODIFY triggers do not intercept trigger action

This commit is contained in:
KreizIT 2014-07-03 15:52:37 +02:00
parent 538cf90f5e
commit 07f2d9474e
2 changed files with 60 additions and 37 deletions

View File

@ -15,6 +15,7 @@ For users:
- Fix: [ bug #1492, #1493 ] Member trigger problem - Fix: [ bug #1492, #1493 ] Member trigger problem
- Fix: [ bug #1474, #1475 ] Contract trigger problem - Fix: [ bug #1474, #1475 ] Contract trigger problem
- Fix: [ bug #1496 ] ACTION_DELETE trigger does not show trigger error - 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
For translators: For translators:

View File

@ -213,15 +213,21 @@ class Categorie extends CommonObject
} }
else if ($reshook < 0) $error++; else if ($reshook < 0) $error++;
// Appel des triggers // Call trigger
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; $result=$this->call_trigger('CATEGORY_CREATE',$user);
$interface=new Interfaces($this->db); if ($result < 0) { $error++; }
$result=$interface->run_triggers('CATEGORY_CREATE',$this,$user,$langs,$conf); // End call triggers
if ($result < 0) { $error++; $this->errors=$interface->errors; }
// Fin appel triggers
if ( ! $error )
{
$this->db->rollback();
return -3;
}
else
{
$this->db->commit(); $this->db->commit();
return $id; return $id;
}
} }
else else
{ {
@ -303,12 +309,10 @@ class Categorie extends CommonObject
$this->db->commit(); $this->db->commit();
// Appel des triggers // Call trigger
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; $result=$this->call_trigger('CATEGORY_MODIFY',$user);
$interface=new Interfaces($this->db); if ($result < 0) { $error++; $this->db->rollback(); return -1; }
$result=$interface->run_triggers('CATEGORY_MODIFY',$this,$user,$langs,$conf); // End call triggers
if ($result < 0) { $error++; $this->errors=$interface->errors; }
// Fin appel triggers
return 1; return 1;
} }
@ -432,12 +436,10 @@ class Categorie extends CommonObject
} }
} }
} }
// Appel des triggers // Call trigger
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; $result=$this->call_trigger('CATEGORY_DELETE',$user);
$interface=new Interfaces($this->db); if ($result < 0) { $error++; }
$result=$interface->run_triggers('CATEGORY_DELETE',$this,$user,$langs,$conf); // End call triggers
if ($result < 0) { $error++; $this->errors=$interface->errors; $this->error=join(',',$this->errors); }
// Fin appel triggers
} }
} }
@ -477,6 +479,8 @@ class Categorie extends CommonObject
if ($type=='contact') $column_name='socpeople'; if ($type=='contact') $column_name='socpeople';
if ($type=='fournisseur') $column_name='societe'; if ($type=='fournisseur') $column_name='societe';
$this->db->begin();
$sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie_".$type." (fk_categorie, fk_".$column_name.")"; $sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie_".$type." (fk_categorie, fk_".$column_name.")";
$sql .= " VALUES (".$this->id.", ".$obj->id.")"; $sql .= " VALUES (".$this->id.", ".$obj->id.")";
@ -517,6 +521,7 @@ class Categorie extends CommonObject
if ($error) if ($error)
{ {
$this->db->rollback();
return -1; return -1;
} }
} }
@ -524,18 +529,26 @@ class Categorie extends CommonObject
// Save object we want to link category to into category instance to provide information to trigger // Save object we want to link category to into category instance to provide information to trigger
$this->linkto=$obj; $this->linkto=$obj;
// Appel des triggers // Call trigger
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; $result=$this->call_trigger('CATEGORY_LINK',$user);
$interface=new Interfaces($this->db); if ($result < 0) { $error++; }
$result=$interface->run_triggers('CATEGORY_LINK',$this,$user,$langs,$conf); // End call triggers
if ($result < 0) { $error++; $this->errors=$interface->errors; $this->error=$interface->error; }
// Fin appel triggers
if (! $error) return 1; if (! $error)
else return -2; {
$this->db->commit();
return 1;
} }
else else
{ {
$this->db->rollback();
return -2;
}
}
else
{
$this->db->rollback();
if ($this->db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') if ($this->db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS')
{ {
$this->error=$this->db->lasterrno(); $this->error=$this->db->lasterrno();
@ -571,6 +584,8 @@ class Categorie extends CommonObject
if ($type=='contact') $column_name='socpeople'; if ($type=='contact') $column_name='socpeople';
if ($type=='fournisseur') $column_name='societe'; if ($type=='fournisseur') $column_name='societe';
$this->db->begin();
$sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_".$type; $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_".$type;
$sql .= " WHERE fk_categorie = ".$this->id; $sql .= " WHERE fk_categorie = ".$this->id;
$sql .= " AND fk_".$column_name." = ".$obj->id; $sql .= " AND fk_".$column_name." = ".$obj->id;
@ -581,18 +596,25 @@ class Categorie extends CommonObject
// Save object we want to unlink category off into category instance to provide information to trigger // Save object we want to unlink category off into category instance to provide information to trigger
$this->unlinkoff=$obj; $this->unlinkoff=$obj;
// Appel des triggers // Call trigger
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; $result=$this->call_trigger('CATEGORY_UNLINK',$user);
$interface=new Interfaces($this->db); if ($result < 0) { $error++; }
$result=$interface->run_triggers('CATEGORY_UNLINK',$this,$user,$langs,$conf); // End call triggers
if ($result < 0) { $error++; $this->errors=$interface->errors; }
// Fin appel triggers
if (! $error) return 1; if (! $error)
else return -2; {
$this->db->commit();
return 1;
} }
else else
{ {
$this->db->rollback();
return -2;
}
}
else
{
$this->db->rollback();
$this->error=$this->db->lasterror(); $this->error=$this->db->lasterror();
return -1; return -1;
} }