Difference between revisions of "Interfaces Dolibarr vers exterieur"
(Ajout explication sur création d'une interface Dolibarr vers exterieur) |
|||
Line 23: | Line 23: | ||
} | } | ||
− | Les évenements Dolibarr qui provoquent un appel de triggers sont, pour l'instant, les suivants: | + | Les évenements Dolibarr qui provoquent un appel de triggers sont, pour l'instant, identifiés par les codes évenements suivants: |
* COMPANY_CREATE | * COMPANY_CREATE | ||
* COMPANY_MODIFY | * COMPANY_MODIFY | ||
* COMPANY_DELETE | * COMPANY_DELETE | ||
+ | |||
+ | |||
+ | Pour gérer d'autre évenements 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: | ||
+ | |||
+ | // Appel des triggers | ||
+ | include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); | ||
+ | $interface=new Interfaces($this->db); | ||
+ | $interface->run_triggers('XXXXX_YYYYYY',$this,$user,$lang,$conf); | ||
+ | // Fin appel triggers | ||
+ | |||
+ | En remplaçant le XXXXX_YYYYYY par un code évenement non déjà utilisé. | ||
+ | Il sera alors possible d'ajouter dans la methode run_trigger, un if qui permet de gérer ce code. La methode run_trigger serait alors de la forme : | ||
+ | |||
+ | function run_trigger($action,$object,$user,$lang,$conf) | ||
+ | { | ||
+ | // Mettre ici le code à exécuter en réaction de l'action | ||
+ | // Le type de l'évenement Dolibarr est stocké dans $action | ||
+ | // Les données de l'action sont stockées dans $object | ||
+ | // La configuration, utilisateur et langage sont dans $conf,$user et $lang | ||
+ | <b> | ||
+ | if ($action == 'XXXXX_YYYYY') | ||
+ | { | ||
+ | dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); | ||
+ | } | ||
+ | </b> | ||
+ | elseif ($action == 'COMPANY_CREATE') | ||
+ | { | ||
+ | dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); | ||
+ | } | ||
+ | elseif ($action == 'COMPANY_MODIFY') | ||
+ | { | ||
+ | dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); | ||
+ | } | ||
+ | elseif ($action == 'COMPANY_DELETE') | ||
+ | ... | ||
+ | } |
Revision as of 19:25, 21 April 2005
Pour permettre de déclencher du code personalisé en réaction à un évenement Dolibarr (création/modification/suppression d'une société/facture/produit), Dolibarr propose un mécanisme de triggers.
Pour ajouter son propre code à déclencher par trigger, la procédure est la suivante:
- Copier le fichier includes/triggers/interface_demo.class.php sous le nom interface_xxx.class.php (ou xxx est une chaine de votre choix), en le laissant dans le meme répertoire. Par exemple includes/triggers/interface_monworkflow.class.php
- Editer ce fichier interface_monworkflow.class.php afin d'ajouter votre code dans la fonction run_trigger. Cette fonction est appelée à chaque évennement Dolibarr. Placer votre code en fonction du ou des évenements sur lesquels vous voulez réagir, chaque évenement étant identifié par un test sur la variable $action:
function run_trigger($action,$object,$user,$lang,$conf) { // Mettre ici le code à exécuter en réaction de l'action // Le type de l'évenement Dolibarr est stocké dans $action // Les données de l'action sont stockées dans $object // La configuration, utilisateur et langage sont dans $conf,$user et $lang if ($action == 'COMPANY_CREATE') { dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); } elseif ($action == 'COMPANY_MODIFY') { dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); } elseif ($action == 'COMPANY_DELETE') ... }
Les évenements Dolibarr qui provoquent un appel de triggers sont, pour l'instant, identifiés par les codes évenements suivants:
- COMPANY_CREATE
- COMPANY_MODIFY
- COMPANY_DELETE
Pour gérer d'autre évenements 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:
// Appel des triggers include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); $interface=new Interfaces($this->db); $interface->run_triggers('XXXXX_YYYYYY',$this,$user,$lang,$conf); // Fin appel triggers
En remplaçant le XXXXX_YYYYYY par un code évenement non déjà utilisé. Il sera alors possible d'ajouter dans la methode run_trigger, un if qui permet de gérer ce code. La methode run_trigger serait alors de la forme :
function run_trigger($action,$object,$user,$lang,$conf) { // Mettre ici le code à exécuter en réaction de l'action // Le type de l'évenement Dolibarr est stocké dans $action // Les données de l'action sont stockées dans $object // La configuration, utilisateur et langage sont dans $conf,$user et $lang if ($action == 'XXXXX_YYYYY') { dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); } elseif ($action == 'COMPANY_CREATE') { dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); } elseif ($action == 'COMPANY_MODIFY') { dolibarr_syslog("Trigger for action '$action' launched. id=".$object->id); } elseif ($action == 'COMPANY_DELETE') ... }