From d7edb59b09f4330f870a5233b04ffbecf4cc4752 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 24 Dec 2006 15:11:56 +0000 Subject: [PATCH] =?UTF-8?q?Fix:=20Echec=20des=20triggers=20quand=20il=20y?= =?UTF-8?q?=20a=202=20triggers=20avec=20meme=20nom=20Fix:=20Mauvais=20trig?= =?UTF-8?q?gers=20appel=E9=20quand=20creation=20user.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/interfaces.class.php | 122 +++++++++++++++++++----------------- htdocs/user.class.php | 5 +- htdocs/user/fiche.php | 2 +- 3 files changed, 69 insertions(+), 60 deletions(-) diff --git a/htdocs/interfaces.class.php b/htdocs/interfaces.class.php index a35824db64d..fcbc6b7f76d 100644 --- a/htdocs/interfaces.class.php +++ b/htdocs/interfaces.class.php @@ -35,62 +35,70 @@ class Interfaces { - //! Repertoire contenant les definitions des triggers - var $dir; - - /** - * \brief Constructeur. - * \param DB handler d'accès base - */ - function Interfaces($DB) - { - $this->db = $DB ; - $this->dir = DOL_DOCUMENT_ROOT . "/includes/triggers"; - } - - /** - * \brief Fonction appelée lors du déclenchement d'un évènement Dolibarr. - * Cette fonction déclenche tous les triggers trouvés - * \param action Code de l'evenement - * \param object Objet concern - * \param user Objet user - * \param lang Objet lang - * \param conf Objet conf - * \return int Nbre de triggers déclenchés si pas d'erreurs. Nb en erreur sinon. - */ - function run_triggers($action,$object,$user,$lang,$conf) - { - - $handle=opendir($this->dir); - $modules = array(); - $nbok = $nbko = 0; - - while (($file = readdir($handle))!==false) - { - if (is_readable($this->dir."/".$file) && eregi('interface_(.*).class.php$',$file,$reg)) - { - $modName = "Interface".ucfirst($reg[1]); - //print "file=$file"; print "modName=$modName"; exit; - if ($modName) - { - include_once($this->dir."/".$file); - $objMod = new $modName($this->db); - if ($objMod) - { - if ($objMod->run_trigger($action,$object,$user,$lang,$conf) > 0) - { - $nbok++; - } - else - { - $nbko++; - } - } - } - } - } - if ($nbko) return $nbko; - return $nbok; - } + var $dir; // Repertoire contenant les fichiers triggers + + /** + * \brief Constructeur. + * \param DB handler d'accès base + */ + function Interfaces($DB) + { + $this->db = $DB ; + $this->dir = DOL_DOCUMENT_ROOT . "/includes/triggers"; + } + + /** + * \brief Fonction appelée lors du déclenchement d'un évènement Dolibarr. + * Cette fonction déclenche tous les triggers trouvés + * \param action Code de l'evenement + * \param object Objet concern + * \param user Objet user + * \param lang Objet lang + * \param conf Objet conf + * \return int Nbre de triggers déclenchés si pas d'erreurs. Nb en erreur sinon. + */ + function run_triggers($action,$object,$user,$lang,$conf) + { + + $handle=opendir($this->dir); + $modules = array(); + $nbok = $nbko = 0; + + while (($file = readdir($handle))!==false) + { + if (is_readable($this->dir."/".$file) && eregi('interface_(.*).class.php$',$file,$reg)) + { + $modName = "Interface".ucfirst($reg[1]); + //print "file=$file"; print "modName=$modName"; exit; + if ($modName) + { + if (in_array($modName,$modules)) + { + dolibarr_syslog("Error: Trigger file with name '$modName' already launched. Remove duplicate file."); + } + else + { + include_once($this->dir."/".$file); + $objMod = new $modName($this->db); + if ($objMod) + { + $modules[$i] = $modName; + if ($objMod->run_trigger($action,$object,$user,$lang,$conf) > 0) + { + $nbok++; + } + else + { + $nbko++; + } + $i++; + } + } + } + } + } + if ($nbko) return $nbko; + return $nbok; + } } ?> diff --git a/htdocs/user.class.php b/htdocs/user.class.php index 92975e24577..f9bf0e0ce1c 100644 --- a/htdocs/user.class.php +++ b/htdocs/user.class.php @@ -651,7 +651,8 @@ class User { $sql = "INSERT INTO ".MAIN_DB_PREFIX."user (datec,login,ldap_sid) VALUES(now(),'".addslashes($this->login)."','".$this->ldap_sid."')"; $result=$this->db->query($sql); - + + dolibarr_syslog("User.class::create sql=".$sql); if ($result) { $table = "".MAIN_DB_PREFIX."user"; @@ -666,7 +667,7 @@ class User } // Update minor fields - if ($this->update() < 0) + if ($this->update(1) < 0) { $this->error=$this->db->error(); $this->db->rollback(); diff --git a/htdocs/user/fiche.php b/htdocs/user/fiche.php index d9fe387e8d8..070caf838ed 100644 --- a/htdocs/user/fiche.php +++ b/htdocs/user/fiche.php @@ -166,7 +166,7 @@ if ($_POST["action"] == 'add' && $canadduser) $db->rollback(); //$message='
'.$langs->trans("ErrorLoginAlreadyExists",$edituser->login).'
'; - $message='
'.$edituser->error.$id.'
'; + $message='
'.$edituser->error.'
'; $action="create"; // Go back to create page }