Interfaces Dolibarr vers exterieur: Difference between revisions

no edit summary
No edit summary
Line 1: Line 1:
----
<div style="background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;">
----
=[http://ogetehuvo.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=
----
=[http://ogetehuvo.co.cc CLICK HERE]=
----
</div>
{{TemplateDocDev}}
{{TemplateDocDev}}
Dolibarr fournit un mécanisme simple pour permettre d'agir dans un application extérieur suite à un évênement interne de Dolibarr (Pour des informations sur l'autre sens et permettre à un système extérieur de faire agir Dolibarr, voir plutôt la page [[Interfaces Exterieur vers Dolibarr]]).
Dolibarr fournit un mécanisme simple pour permettre d'agir dans un application extérieur suite à un évênement interne de Dolibarr (Pour des informations sur l'autre sens et permettre à un système extérieur de faire agir Dolibarr, voir plutôt la page [[Interfaces Exterieur vers Dolibarr]]).
Line 35: Line 43:
Cette fonction est appelée à chaque évènement Dolibarr. Placer votre code en fonction du ou des évènements sur lesquels vous voulez réagir, chaque évènement étant identifié par un code (voir chapitres suivant pour la liste des codes), on peut réagir ou non à un évènement donnée par un test sur la variable '''$action''':
Cette fonction est appelée à chaque évènement Dolibarr. Placer votre code en fonction du ou des évènements sur lesquels vous voulez réagir, chaque évènement étant identifié par un code (voir chapitres suivant pour la liste des codes), on peut réagir ou non à un évènement donnée par un test sur la variable '''$action''':


<source lang="php">
&lt;source lang="php">
function run_trigger($action,$object,$user,$lang,$conf)
function run_trigger($action,$object,$user,$lang,$conf)
{
{
Line 53: Line 61:
       ...
       ...
}
}
</source>
&lt;/source>


Vous pouvez faire ce que vous voulez dans cette portion de code du moment que la fonction run_trigger renvoi un code retour sur le principe suivant:
Vous pouvez faire ce que vous voulez dans cette portion de code du moment que la fonction run_trigger renvoi un code retour sur le principe suivant:


<0 si ko, 0 si aucune action faite, >0 si ok
&lt;0 si ko, 0 si aucune action faite, >0 si ok


Vous pouvez de plus dans cette fonction utiliser les objets suivant:
Vous pouvez de plus dans cette fonction utiliser les objets suivant:
Line 149: Line 157:
Pour gérer d'autre évènements que ceux ci-dessus, il faut modifier le code Dolibarr pour y ajouter la séquence suivante dans les méthodes métiers des classes utilisées pour gérer les évenements:
Pour gérer d'autre évènements que ceux ci-dessus, il faut modifier le code Dolibarr pour y ajouter la séquence suivante dans les méthodes métiers des classes utilisées pour gérer les évenements:


<source lang="php">
&lt;source lang="php">
// Appel des triggers
// Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
$interface=new Interfaces($this->db);
$interface=new Interfaces($this->db);
$result=$interface->run_triggers('XXXXX_YYYYY',$this,$user,$langs,$conf);
$result=$interface->run_triggers('XXXXX_YYYYY',$this,$user,$langs,$conf);
if ($result < 0) { $error++; $this->errors=$interface->errors; }
if ($result &lt; 0) { $error++; $this->errors=$interface->errors; }
// Fin appel triggers
// Fin appel triggers
</source>
&lt;/source>


Ici, $this doit être l'objet de la classe métier qui contient toutes les informations à passer au trigger. Remplacer, de plus, le 'XXXXX_YYYYY' par un code évènement non déjà utilisé.
Ici, $this doit être l'objet de la classe métier qui contient toutes les informations à passer au trigger. Remplacer, de plus, le 'XXXXX_YYYYY' par un code évènement non déjà utilisé.
Il sera alors possible d'ajouter dans la méthode run_trigger, un if qui permet de gérer ce code. La méthode run_trigger serait alors de la forme :
Il sera alors possible d'ajouter dans la méthode run_trigger, un if qui permet de gérer ce code. La méthode run_trigger serait alors de la forme :


<source lang="php">
&lt;source lang="php">
function run_trigger($action,$object,$user,$lang,$conf)
function run_trigger($action,$object,$user,$lang,$conf)
{
{
Line 168: Line 176:
       // Les données de l'action sont stockées dans $object
       // Les données de l'action sont stockées dans $object
       // La configuration, utilisateur et langage sont dans $conf,$user et $lang
       // La configuration, utilisateur et langage sont dans $conf,$user et $lang
       <b>
       &lt;b>
       if ($action == 'XXXXX_YYYYY')
       if ($action == 'XXXXX_YYYYY')
       {
       {
           dol_syslog("Trigger for action '$action' launched. id=".$object->id);
           dol_syslog("Trigger for action '$action' launched. id=".$object->id);
       }
       }
       </b>
       &lt;/b>
       elseif ($action == 'COMPANY_CREATE')
       elseif ($action == 'COMPANY_CREATE')
       {
       {
Line 185: Line 193:
       ...
       ...
}
}
</source>
&lt;/source>


= Conclusion =
= Conclusion =
Vous pouvez donc en quelques minutes, ajouter une interface Dolibarr vers exterieur sans risque puisqu'on ne touche pas au code Dolibarr, on s'est contenté de placer un nouveau fichier trigger dans le répertoire des triggers.
Vous pouvez donc en quelques minutes, ajouter une interface Dolibarr vers exterieur sans risque puisqu'on ne touche pas au code Dolibarr, on s'est contenté de placer un nouveau fichier trigger dans le répertoire des triggers.
Si cette interface peut être utile à d'autre, n'hésitez pas à la packager en tgz (voir la page [[Développement_module#Cr.C3.A9er_un_package_pour_livrer_et_installer_votre_module]]) et de la soumettre dans l'espace des téléchargement-contributions sur le site de Dolibarr.
Si cette interface peut être utile à d'autre, n'hésitez pas à la packager en tgz (voir la page [[Développement_module#Cr.C3.A9er_un_package_pour_livrer_et_installer_votre_module]]) et de la soumettre dans l'espace des téléchargement-contributions sur le site de Dolibarr.
27

edits