Grazie ai Logic Hook, possiamo andare ad intervenire sul funzionamento dei moduli senza riscrivere nessuna classe specifica del modulo, ma andando ad agire sugli eventi.
I Logic Hook ci permettono di dire a SuiteCRM che al verificarsi di un determinato evento, relativo a quel modulo, deve essere compiuta una azione specifica.
Come anticipato in un altro articolo di introduzione ai logic hooks dobbiamo dire al sistema, quando intervenire e cosa fare. Per fare questo si utilizza un file di nome logic_hooks.php, dove vengono inserite le informazioni utili al CRM per individuare l’evento.
Di seguito gli eventi sui quali possiamo andare ad intervenire tramite i Logic Hooks relativi ai moduli:
- after_delete, dopo la cancellazione di un record del modulo;
- after_relationship_add, dopo la creazione di una relazione tra un record del modulo ed il record di un altro modulo;
- after_relationship_delete, dopo la cancellazione di una relazione tra un record del modulo ed il record di un altro modulo;
- after_restore, dopo il recupero di un record del modulo dallo stato cancellato;
- after_retrieve, dopo il caricamento di un record del modulo dal database;
- after_save, dopo il salvataggio di un record del modulo;
- before_delete, prima della cancellazione di un record del modulo;
- before_relationship_add, prima della creazione di una relazione tra un record del modulo ed il record di un altro modulo;
- before_relationship_delete, prima della cancellazione di una relazione tra un record del modulo ed il record di un altro modulo;
- before_restore, prima del recupero di un record del modulo dallo stato cancellato;
- before_save, prima del salvataggio di un record del modulo;
- process_record, nel momento in cui un record del modulo viene processato per la visualizzazione in una lista.
Il file logic_hooks.php conterrà, oltre all’indicazione dell’evento, le informazioni sulla azione da compiere al verificarsi dell’evento. Si specifica in questo file la classe ed il metodo da richiamare che rappresentano l’azione che si intromette nel normale funzionamento di SuiteCRM.
Al metodo richiamato saranno passati i 3 parametri $bean, $event, $arguments, che conterranno:
- $bean – oggetto – l’oggetto relativo a quel modulo
- $event – stringa – con indicato l’evento corrente
- $arguments – array – informazioni extra relativamente all’evento
Vediamo un piccolo esempio. Supponiamo di voler modificare il nome di tutti i prodotti che vengono inseriti, aggiungendogli una stringa standard.
custom/modules/AOS_Products/logic_hooks.php
1 2 3 4 5 6 7 8 9 10 |
$hook_version = 1; $hook_array['before_save'][] = array( 1, 'Modifica del nome del prodotto', 'custom/modules/AOS_Products/SIT_customLogicHook.php', '', 'cambiaNome' ); |
custom/modules/AOS_Products/SIT_customLogicHook.php
1 2 3 4 5 6 7 8 9 |
class SIT_customLogicHook { function cambiaNome($bean, $event, $arguments) { $bean->name = '[SIT_PREFISSO] '.$bean->name } } |