Triggers system: Difference between revisions

Jump to navigation Jump to search
No edit summary
Line 7: Line 7:
So, to add your own code that will be triggered by a Dolibarr trigger, this is the way to process:
So, to add your own code that will be triggered by a Dolibarr trigger, this is the way to process:


 
1) Copy the trigger file '''htdocs/core/triggers/interface_all_Demo.class.php''' under the new name:
1) (only for Dolibarr >= v3.2.0) in your module descriptor file (eg: '''/mymodule/core/modules/modMyModule.class.php'''), add triggers->1 into module_parts array:
<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>
Then disable and reenable your module. This will add a record into [[Table llx_const]] to say Dolibarr a trigger file must be searched into module directory '''htdocs/mymodule/core/triggers/'''
 
 
2) Copy the trigger file '''htdocs/core/triggers/interface_all_Demo.class.php''' under the new name:
* '''interface_all_''Xxx''.class.php'''
* '''interface_all_''Xxx''.class.php'''
or
or
Line 34: Line 21:
By creating such a file with name as in the example, your new trigger file will be executed each time a Dolibarr business event occurs but only if the module Facture is enabled.
By creating such a file with name as in the example, your new trigger file will be executed each time a Dolibarr business event occurs but only if the module Facture is enabled.


'''Note''': starting from Dolibarr v3.2.x, you have to place triggers inside the '''core/''' folder instead of includes/ (eg: htdocs/core/triggers/interface_modMyModule_Xxx.class.php).
'''Note''': Before Dolibarr 3.2, you have to place triggers inside the '''includes/triggers/''' folder instead of '''core/triggers/''' (eg: htdocs/includes/triggers/interface_modMyModule_Xxx.class.php).


'''Note2''': You can also place the triggers in your own module's subdirectly. Eg: if your module resides in htdocs/mymodule/, then you can place your triggers inside htdocs/mymodule/core/triggers/
'''Note2''': With Dolibarr 3.2+, you can also place the triggers in your own module's subdirectly. Eg: if your module resides in htdocs/mymodule/, then you can place your triggers inside htdocs/mymodule/core/triggers/. But for this, you must declare the trigger into your module descriptor file (eg: '''/mymodule/core/modules/modMyModule.class.php'''). For this, add into this file triggers->1 into module_parts array:
<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>
Then disable and reenable your module. This will add a record into [[Table llx_const]] to say Dolibarr a trigger file must be searched into module directory '''htdocs/mymodule/core/triggers/'''




3) Edit the file ''interface_modMyModule_Myworkflow.class.php'' to rename class ''InterfaceDemo'' by ''InterfaceMyworkflow''
2) Edit the file ''interface_modMyModule_Myworkflow.class.php'' to rename class ''InterfaceDemo'' by ''InterfaceMyworkflow''


Then go on page Home-> System Infos -> Dolibarr -> Triggers.
Then go on page Home-> System Infos -> Dolibarr -> Triggers.
Line 45: Line 41:




4) Return now to edition of file to add your own code inside function  ''run_trigger''.
3) Return now to edition of file to add your own code inside function  ''run_trigger''.
This function is called at each Dolibarr business event. Put your code according to events on which you want to run. Each event is identified by a code (see following chapter to get full list of codes). So you can react or no after an event by doing just a test on variable '''$action''':
This function is called at each Dolibarr business event. Put your code according to events on which you want to run. Each event is identified by a code (see following chapter to get full list of codes). So you can react or no after an event by doing just a test on variable '''$action''':


Line 78: Line 74:
* '''$conf''' is the object that contains all the Dolibarr configuration.
* '''$conf''' is the object that contains all the Dolibarr configuration.


5) Once your trigger file has been developed, last action is to test by using Dolibarr to execute the business event that should trigger your code. Warning, call of function '''run_trigger''' is encapsulated into a transaction. If your code return a KO code, the calling function may rollback the transaction (this depends on calling function).
 
4) Once your trigger file has been developed, last action is to test by using Dolibarr to execute the business event that should trigger your code. Warning, call of function '''run_trigger''' is encapsulated into a transaction. If your code return a KO code, the calling function may rollback the transaction (this depends on calling function).
Add log information inside your function '''run_trigger''' to know if your code is correctly triggered and runs correctly. For this, you can use the function
Add log information inside your function '''run_trigger''' to know if your code is correctly triggered and runs correctly. For this, you can use the function
dol_syslog("my log message", LOG_DEBUG);
dol_syslog("my log message", LOG_DEBUG);

Navigation menu