Système de Triggers: Difference between revisions

No edit summary
Line 8: Line 8:
Donc, pour ajouter son propre code qui sera déclenché par trigger, la procédure est la suivante:
Donc, pour ajouter son propre code qui sera déclenché par trigger, la procédure est la suivante:


 
1) Copier le fichier '''htdocs/core/triggers/interface_all_Demo.class.php''' sous le nom:
1) (uniquement pour Dolibarr >= v3.2.0) dans le fichier descripteur de votre module (ex: '''/monmodule/core/modules/modMonModule.class.php'''), ajouter triggers->1 dans le tableau module_parts:
<source lang="php">
// Defined all module parts (triggers, login, substitutions, menus, etc...) (0=disable,1=enable)
  $this->module_parts = array('triggers' => 1);
  //$this->module_parts = array('triggers' => 1,
  //              'login' => 0,
  //              'substitutions' => 0,
  //              'menus' => 0);
</source>
Puis désactiver et réactiver le module. Ceci aura pour effet d'ajouter une ligne dans la [[Table llx_const]] pour indiquer à Dolibarr qu'il faut recherch un trigger dans le répertoire de votre module '''htdocs/monmodule/core/triggers'''.
 
 
2) Copier le fichier '''htdocs/core/triggers/interface_all_Demo.class.php''' sous le nom:
* '''interface_all_''Xxx''.class.php'''
* '''interface_all_''Xxx''.class.php'''
ou bien
ou bien
Line 28: Line 15:
Il faut laisser ce nouveau fichier dans le même répertoire.
Il faut laisser ce nouveau fichier dans le même répertoire.
Rem: Les valeurs utilisable pour modMonModule sont visibles dans le répertoire
Rem: Les valeurs utilisable pour modMonModule sont visibles dans le répertoire
''htdocs/includes/modules''.
''htdocs/core/modules''.


Par exemple, on pourra nommer notre nouveau trigger:  
Par exemple, on pourra nommer notre nouveau trigger:  
''htdocs/includes/triggers/interface_modFacture_Monworkflow.class.php''
''htdocs/core/triggers/interface_modFacture_Monworkflow.class.php''


En créant un fichier nommé comme dans cet exemple, notre nouveau trigger sera déclenché à chaque évènement métier Dolibarr et à condition que le module Facture soit actif.
En créant un fichier nommé comme dans cet exemple, notre nouveau trigger sera déclenché à chaque évènement métier Dolibarr et à condition que le module Facture soit actif.


'''Note''': à partir de Dolibarr v3.2.x, il est nécessaire de placer les fichiers triggers dans le dossier '''core/''' au lieu de includes/ (eg: htdocs/core/triggers/interface_modMyModule_Xxx.class.php).
'''Note''': avant Dolibarr v3.2.x, il était nécessaire de placer les fichiers triggers dans le dossier '''includes/triggers''' au lieu de '''core/triggers''' (eg: htdocs/core/triggers/interface_modMyModule_Xxx.class.php).
 
'''Note2''': Il est aussi possible de placer les fichiers triggers dans un sous-dossier du module. Eg: si le module réside dans htdocs/mymodule/, alors il est possible de placer les triggers dans htdocs/mymodule/core/triggers/


'''Note2''': Avec la 3.2+, il est aussi possible de placer les fichiers triggers dans un sous-dossier de module. Ex: si le module réside dans htdocs/mymodule/, alors il est possible de placer les triggers dans htdocs/mymodule/core/triggers/.
Mais dans ce cas, le trigger ne sera trouvé que si vous le déclarer dans le fichier descripteur de votre module. Pour cela, ajouter ajouter triggers->1 dans le tableau module_parts (ex: '''/monmodule/core/modules/modMonModule.class.php'''):
<source lang="php">
// Defined all module parts (triggers, login, substitutions, menus, etc...) (0=disable,1=enable)
  $this->module_parts = array('triggers' => 1);
  //$this->module_parts = array('triggers' => 1,
  //              'login' => 0,
  //              'substitutions' => 0,
  //              'menus' => 0);
</source>
Puis désactiver et réactiver le module. Ceci aura pour effet d'ajouter une ligne dans la [[Table llx_const]] pour indiquer à Dolibarr qu'il faut recherch un trigger dans le répertoire de votre module '''htdocs/monmodule/core/triggers'''.


3) Editer ce fichier ''interface_modMonModule_Monworkflow.class.php'' afin de renommer la classe ''InterfaceDemo'' par ''InterfaceMonworkflow''
2) Editer ce fichier ''interface_modMonModule_Monworkflow.class.php'' afin de renommer la classe ''InterfaceDemo'' par ''InterfaceMonworkflow''


Ensuite, accéder à la page Accueil-> Infos Systèmes -> Dolibarr -> Triggers.
Ensuite, accéder à la page Accueil-> Infos Systèmes -> Dolibarr -> Triggers.