API du gestionnaire d'événement : Différence entre versions
(→Gestion des priorités) |
(→API) |
||
| (44 révisions intermédiaires par 4 utilisateurs non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
| − | + | [[Catégorie:Développement de modules]] | |
| + | == Table des listeners == | ||
| + | |||
| + | Les ''listeners'' sont stockés dans la table bab_event_listeners : | ||
* id | * id | ||
* event_class_name | * event_class_name | ||
| Ligne 6 : | Ligne 9 : | ||
* require_file | * require_file | ||
* addon_name | * addon_name | ||
| + | * priority | ||
event_class_name est le nom d'une classe héritée de bab_event | event_class_name est le nom d'une classe héritée de bab_event | ||
| Ligne 13 : | Ligne 17 : | ||
le paramètre require_file est le chemin relatif au noyau d'ovidentia d'un fichier php | le paramètre require_file est le chemin relatif au noyau d'ovidentia d'un fichier php | ||
| − | + | le paramètre priority (optionnel) permet de régler l'ordre d'appel des fonctions enregistrés pour un même événement | |
| − | < | + | == API == |
| + | |||
| + | Les fonctions de l'API sont définies dans utilit/eventincl.php qu'il faudra inclure : | ||
| + | <source lang="php"> | ||
| + | global $babInstallPath; | ||
| + | include_once $babInstallPath.'utilit/eventincl.php'; | ||
| + | </source> | ||
| + | |||
| + | |||
| + | Ajouter un ''listener'' : | ||
| + | |||
| + | <source lang="php"> | ||
bab_addEventListener('event_class_name', 'function_name', 'require_file', 'addon_name'); | bab_addEventListener('event_class_name', 'function_name', 'require_file', 'addon_name'); | ||
| − | </ | + | </source> |
| − | |||
| − | < | + | Enlever un ''listener'' : |
| + | |||
| + | <source lang="php"> | ||
bab_removeEventListener('event_class_name', 'function_name', 'require_file', 'addon_name'); | bab_removeEventListener('event_class_name', 'function_name', 'require_file', 'addon_name'); | ||
| − | </ | + | </source> |
| + | |||
| + | |||
| + | Enlever tous les ''listeners'' associés à un addon (Ovidentia >= 8.2.0) : | ||
| + | <source lang="php"> | ||
| + | bab_removeAddonEventListeners($addon_name) | ||
| + | </source> | ||
La fonction inscrite dans la colonne function_name sera délarée dans le fichier 'require_file' comme ceci : | La fonction inscrite dans la colonne function_name sera délarée dans le fichier 'require_file' comme ceci : | ||
| − | < | + | <source lang="php"> |
function ats_onBabPasswordModified(&$event) { | function ats_onBabPasswordModified(&$event) { | ||
} | } | ||
| − | </ | + | </source> |
| − | == | + | == Déclenchement un événement == |
| − | + | Lorsqu'un événement est déclenché, toutes les fonctions enregistrées dans la table des ''listener'' qui ont pour '''event_class_name''' le nom de l'objet ou le nom d'un des parents de l'objet sont appelés ; pour chaque enregistrement, on effectue les actions suivantes : | |
| − | # si 'addon_name' est un nom de module valide, le contexte du module est créé | + | # si '''addon_name''' est un nom de module valide, le contexte du module est créé |
| − | # le nom du fichier contenu dans 'require_file' est | + | # le nom du fichier contenu dans '''require_file''' est inclus avec la fonction require_once |
| − | # la fonction 'function_name' est appelée avec un seul paramètre qui est l'instance de l'événement | + | # la fonction '''function_name''' est appelée avec un seul paramètre qui est l'instance de l'événement |
| − | < | + | <source lang="php"> |
class bab_userModified extends bab_event { | class bab_userModified extends bab_event { | ||
| Ligne 57 : | Ligne 79 : | ||
bab_fireEvent($event_obj); | bab_fireEvent($event_obj); | ||
| − | </ | + | </source> |
| − | L'ordre d'appel des | + | L'ordre d'appel des fonctions enregistrées dans le listener est indéterminé (le premier enregistré est le premier appelé). |
=== Gestion des priorités === | === Gestion des priorités === | ||
| − | |||
| − | + | Afin de gérer l'ordre dans lequel les fonction sont appelées, il est possible d'ajouter une priorité au moment de l'enregistrement dans l'événement | |
| + | |||
| + | par exemple dans ce cas, la fonction 2 sera appelée avant la fonction 1. | ||
| + | |||
| + | <source lang="php"> | ||
| + | |||
| + | bab_addEventListener('event_class_name', 'function_1', 'require_file', 'addon_name', 50); | ||
| + | bab_addEventListener('event_class_name', 'function_2', 'require_file', 'addon_name', 100); | ||
| + | |||
| + | </source> | ||
| + | |||
| + | Par défaut, la priorité est à la valeur 0, les appels sont traités dans un ordre indéterminé (qui est probablement l'ordre de l'enregistrement. | ||
== Tous les événements disponibles == | == Tous les événements disponibles == | ||
| Ligne 72 : | Ligne 104 : | ||
=== Ovidentia === | === Ovidentia === | ||
| − | {| | + | {|class="prettytable" |
| − | | | + | |'''Événement''' |
| − | |Parent | + | |'''Parent''' |
| − | |Description | + | |'''Description''' |
|- | |- | ||
|bab_eventBeforePeriodsCreated | |bab_eventBeforePeriodsCreated | ||
| Ligne 84 : | Ligne 116 : | ||
|bab_event | |bab_event | ||
|Événement appelé lors de la modification d'un ou plusieurs événements sur une période donnée | |Événement appelé lors de la modification d'un ou plusieurs événements sur une période donnée | ||
| + | |- | ||
| + | |bab_eventCollectCalendarsBeforeDisplay | ||
| + | |bab_event | ||
| + | |Événement appelé lors de la récupération de la liste des agendas visibles pour un utilisateur, il permet d'enregistrer des nouveaux agendas | ||
|- | |- | ||
|bab_eventBeforeWaitingItemsDisplayed | |bab_eventBeforeWaitingItemsDisplayed | ||
| Ligne 120 : | Ligne 156 : | ||
|bab_event | |bab_event | ||
|Événement appelé lors de la suppression d'un groupe | |Événement appelé lors de la suppression d'un groupe | ||
| + | |- | ||
| + | |bab_eventEditorContentToEditor | ||
| + | |bab_event | ||
| + | |Événement appelé lors de l'affichage d'un éditeur de contenu | ||
| + | |- | ||
| + | |bab_eventEditorRequestToContent | ||
| + | |bab_event | ||
| + | |Événement appelé pour récupérer le contenu enregistré par un éditeur de contenu | ||
| + | |- | ||
| + | |bab_eventEditorContentToHtml | ||
| + | |bab_event | ||
| + | |Événement appelé pour afficher du contenu saisi par un éditeur de contenu | ||
| + | |- | ||
| + | |bab_eventEditors | ||
| + | |bab_event | ||
| + | |Événement appelé pour afficher la liste des implémentations de l'éditeur de contenu | ||
| + | |- | ||
| + | |bab_eventEditorFunctions | ||
| + | |bab_event | ||
| + | |Événement appelé lors de l'affichage de la liste des fonctionnalités d'ovidentia qui peuvent insérer des fragments de html dans un éditeur de contenu | ||
| + | |- | ||
| + | |bab_eventUserAttachedToGroup | ||
| + | |bab_eventDirectory | ||
| + | |Un utilisateur est ajouté dans un groupe | ||
| + | |- | ||
| + | |bab_eventUserDetachedFromGroup | ||
| + | |bab_eventDirectory | ||
| + | |Un utilisateur est enlevé d'un groupe | ||
| + | |- | ||
| + | |bab_eventPageRefreshed | ||
| + | |bab_event | ||
| + | |La page a été rafraîchie, l'événement intervient après l'inclusion de la page php en cours et avant le traitement du template page.html | ||
| + | |- | ||
| + | |bab_eventBeforePageCreated | ||
| + | |bab_event | ||
| + | |L'événement intervient juste avant l'inclusion du code PHP qui gère la page en cours : le corps de la page n'est pas préparé, le template de la page n'est pas traité. | ||
| + | |- | ||
| + | |bab_eventFunctionalityRegistered | ||
| + | |bab_event | ||
| + | |Une fonctionnalité a été ajoutée | ||
| + | |- | ||
| + | |bab_eventFunctionalityUnregistered | ||
| + | |bab_event | ||
| + | |Une fonctionnalité a été supprimée | ||
| + | |- | ||
| + | |bab_eventBeforeSiteMapCreated | ||
| + | |bab_event | ||
| + | |Avant la création du plan de site, c'est un événement qui sert a collecter tout les liens nécessaires à la création du plan de site, voir l'article [[Gestion des nœuds du plan du site]] | ||
| + | |- | ||
| + | |bab_eventSearchRealms | ||
| + | |bab_event | ||
| + | |Événement utilisé par l'API de recherche pour collecter tout les environnements de recherche | ||
| + | |- | ||
| + | |bab_eventMail | ||
| + | |bab_event | ||
| + | |Événement principal utilisé dans l'API de la messagerie, il regroupe tout les événements appelés lors de l'envoi des emails | ||
| + | |- | ||
| + | |bab_eventBeforeMailSent | ||
| + | |bab_eventMail | ||
| + | |Événement déclenché avant l'envoi d'un email, il permet d'annuler l'envoi avec la méthode <code>cancel()</code> | ||
| + | |- | ||
| + | |bab_eventAfterMailSent | ||
| + | |bab_eventMail | ||
| + | |Événement déclenché après l'envoi d'un email, il permet de récupérer en plus le statut de l'envoi | ||
| + | |- | ||
| + | |bab_eventFmAfterFileUpload | ||
| + | |bab_eventFmFile | ||
| + | |Événement déclenché lorsqu'un nouveau fichier devient disponible pour les utilisateurs ayant accès, cet événement respecte l'interface [[bab_eventNotifyRecipients]] | ||
| + | |- | ||
| + | |bab_eventFmAfterFileUpdate | ||
| + | |bab_eventFmFile | ||
| + | |Événement déclenché lorsqu'un fichier a été modifié, cet événement respecte l'interface [[bab_eventNotifyRecipients]] | ||
| + | |- | ||
| + | |bab_eventFmAfterAddVersion | ||
| + | |bab_eventFmAfterFileUpdate | ||
| + | |Événement déclenché lorsqu'une nouvelle version d'un fichier a été ajoutée, cet événement respecte l'interface [[bab_eventNotifyRecipients]] | ||
| + | |- | ||
| + | |bab_eventCalendarEvent | ||
| + | |bab_event | ||
| + | |Événement déclenché lors du traitement d'un événement d'agenda (création, modification, suppression), cet événement respecte l'interface [[bab_eventNotifyRecipients]] | ||
| + | |- | ||
| + | |bab_eventAfterEventAdd | ||
| + | |bab_eventCalendarEvent | ||
| + | |Événement déclenché lorsqu'un agenda à été ajouté sur un événement en tant qu'invité ou en tant organisateur , cet événement respecte l'interface [[bab_eventNotifyRecipients]] | ||
| + | |- | ||
| + | |bab_eventAfterEventUpdate | ||
| + | |bab_eventCalendarEvent | ||
| + | |Événement déclenché lorsqu'un événement à été modifié, cet événement respecte l'interface [[bab_eventNotifyRecipients]] | ||
| + | |- | ||
| + | |bab_eventAfterEventDelete | ||
| + | |bab_eventCalendarEvent | ||
| + | |Événement déclenché lorsqu'un agenda à été retiré sur un événement en tant qu'invité ou que l'événement à été supprimé, cet événement respecte l'interface [[bab_eventNotifyRecipients]] | ||
| + | |- | ||
| + | |bab_eventForumPost | ||
| + | |bab_event | ||
| + | |Événement déclenché après la création d'une contribution de forum, cet événement respecte l'interface [[bab_eventNotifyRecipients]] | ||
| + | |- | ||
| + | |bab_eventForumAfterThreadAdd | ||
| + | |bab_eventForumPost | ||
| + | |Événement déclenché après la création d'une réponse à un sujet de forum, cet événement respecte l'interface [[bab_eventNotifyRecipients]] | ||
| + | |- | ||
| + | |bab_eventForumAfterPostAdd | ||
| + | |bab_eventForumPost | ||
| + | |Événement déclenché après la création d'un sujet de forum, cet événement respecte l'interface [[bab_eventNotifyRecipients]] | ||
| + | |- | ||
| + | |bab_eventAfterArticleAdd | ||
| + | |bab_eventArticle | ||
| + | |Événement déclenché après la publication d'un article, cet événement respecte l'interface [[bab_eventNotifyRecipients]] | ||
| + | |- | ||
| + | |bab_eventAfterUserLoggedIn | ||
| + | |bab_eventPortalAuthentication | ||
| + | |Événement déclenché après la connexion d'un utilisateur | ||
| + | |- | ||
| + | |bab_eventAfterUserLoggedOut | ||
| + | |bab_eventPortalAuthentication | ||
| + | |Événement déclenché après la déconnexion d'un utilisateur | ||
| + | |- | ||
| + | |bab_eventAddon | ||
| + | |bab_event | ||
| + | |Événement de base dont héritent tous les événements concernant la gestion des addons. (Ovidentia >= 8.2.0) | ||
| + | |- | ||
| + | |bab_eventAddonInstalled | ||
| + | |bab_eventAddon | ||
| + | |Événement déclenché après l'installation d'un addon. (Ovidentia >= 8.2.0) | ||
| + | |- | ||
| + | |bab_eventAddonUpgraded | ||
| + | |bab_eventAddon | ||
| + | |Événement déclenché après la mise à jour d'un addon. (Ovidentia >= 8.2.0) | ||
| + | |- | ||
| + | |bab_eventAddonBeforeDeleted | ||
| + | |bab_eventAddon | ||
| + | |Événement déclenché avant la suppression d'un addon. (Ovidentia >= 8.2.0) | ||
| + | |- | ||
| + | |bab_eventAddonDeleted | ||
| + | |bab_eventAddon | ||
| + | |Événement déclenché après la suppression d'un addon. (Ovidentia >= 8.2.0) | ||
| + | |- | ||
| + | |bab_eventAddonDisabled | ||
| + | |bab_eventAddon | ||
| + | |Événement déclenché après la désactivation d'un addon. (Ovidentia >= 8.2.0) | ||
|} | |} | ||
| − | |||
| − | |||
Version actuelle en date du 20 juin 2014 à 10:23
Sommaire
Table des listeners
Les listeners sont stockés dans la table bab_event_listeners :
- id
- event_class_name
- function_name
- require_file
- addon_name
- priority
event_class_name est le nom d'une classe héritée de bab_event
function_name est le nom d'une fonction déclarée dans le ficher spécifié dans la colonne require_file
le paramètre require_file est le chemin relatif au noyau d'ovidentia d'un fichier php
le paramètre priority (optionnel) permet de régler l'ordre d'appel des fonctions enregistrés pour un même événement
API
Les fonctions de l'API sont définies dans utilit/eventincl.php qu'il faudra inclure : <source lang="php"> global $babInstallPath; include_once $babInstallPath.'utilit/eventincl.php'; </source>
Ajouter un listener :
<source lang="php"> bab_addEventListener('event_class_name', 'function_name', 'require_file', 'addon_name'); </source>
Enlever un listener :
<source lang="php"> bab_removeEventListener('event_class_name', 'function_name', 'require_file', 'addon_name'); </source>
Enlever tous les listeners associés à un addon (Ovidentia >= 8.2.0) :
<source lang="php">
bab_removeAddonEventListeners($addon_name)
</source>
La fonction inscrite dans la colonne function_name sera délarée dans le fichier 'require_file' comme ceci :
<source lang="php"> function ats_onBabPasswordModified(&$event) {
} </source>
Déclenchement un événement
Lorsqu'un événement est déclenché, toutes les fonctions enregistrées dans la table des listener qui ont pour event_class_name le nom de l'objet ou le nom d'un des parents de l'objet sont appelés ; pour chaque enregistrement, on effectue les actions suivantes :
- si addon_name est un nom de module valide, le contexte du module est créé
- le nom du fichier contenu dans require_file est inclus avec la fonction require_once
- la fonction function_name est appelée avec un seul paramètre qui est l'instance de l'événement
<source lang="php">
class bab_userModified extends bab_event {
}
class bab_passwordModified extends bab_userModified {
}
$event_obj = new bab_passwordModified();
bab_fireEvent($event_obj);
</source>
L'ordre d'appel des fonctions enregistrées dans le listener est indéterminé (le premier enregistré est le premier appelé).
Gestion des priorités
Afin de gérer l'ordre dans lequel les fonction sont appelées, il est possible d'ajouter une priorité au moment de l'enregistrement dans l'événement
par exemple dans ce cas, la fonction 2 sera appelée avant la fonction 1.
<source lang="php">
bab_addEventListener('event_class_name', 'function_1', 'require_file', 'addon_name', 50); bab_addEventListener('event_class_name', 'function_2', 'require_file', 'addon_name', 100);
</source>
Par défaut, la priorité est à la valeur 0, les appels sont traités dans un ordre indéterminé (qui est probablement l'ordre de l'enregistrement.
Tous les événements disponibles
Ovidentia
| Événement | Parent | Description |
| bab_eventBeforePeriodsCreated | bab_event | Événement appelé au moment de la création d'un planning (agenda, planning de congés...), il est utilisé pour collecter les événements à afficher pour une période donnée |
| bab_eventPeriodModified | bab_event | Événement appelé lors de la modification d'un ou plusieurs événements sur une période donnée |
| bab_eventCollectCalendarsBeforeDisplay | bab_event | Événement appelé lors de la récupération de la liste des agendas visibles pour un utilisateur, il permet d'enregistrer des nouveaux agendas |
| bab_eventBeforeWaitingItemsDisplayed | bab_event | Événement appelé lors de l'affichage des instances d'approbation en attente sur la page "approbations" |
| bab_eventDirectory | bab_event | Événement appelé lors d'une intervention sur une fiche d'annuaire ou d'un utilisateur d'ovidentia |
| bab_eventDirectoryEntryCreated | bab_eventDirectory | Événement appelé lors de la création d'une fiche d'annuaire |
| bab_eventDirectoryEntryModified | bab_eventDirectory | Événement appelé lors de la modification d'une fiche d'annuaire |
| bab_eventDirectoryEntryDeleted | bab_eventDirectory | Événement appelé lors de la suppression d'une fiche d'annuaire |
| bab_eventUserCreated | bab_eventDirectory | Événement appelé lors de la création d'un utilisateur |
| bab_eventUserModified | bab_eventDirectory | Événement appelé lors de la modification d'un utilisateur |
| bab_eventUserDeleted | bab_eventDirectory | Événement appelé lors de la suppression d'un utilisateur |
| bab_eventGroupDeleted | bab_event | Événement appelé lors de la suppression d'un groupe |
| bab_eventEditorContentToEditor | bab_event | Événement appelé lors de l'affichage d'un éditeur de contenu |
| bab_eventEditorRequestToContent | bab_event | Événement appelé pour récupérer le contenu enregistré par un éditeur de contenu |
| bab_eventEditorContentToHtml | bab_event | Événement appelé pour afficher du contenu saisi par un éditeur de contenu |
| bab_eventEditors | bab_event | Événement appelé pour afficher la liste des implémentations de l'éditeur de contenu |
| bab_eventEditorFunctions | bab_event | Événement appelé lors de l'affichage de la liste des fonctionnalités d'ovidentia qui peuvent insérer des fragments de html dans un éditeur de contenu |
| bab_eventUserAttachedToGroup | bab_eventDirectory | Un utilisateur est ajouté dans un groupe |
| bab_eventUserDetachedFromGroup | bab_eventDirectory | Un utilisateur est enlevé d'un groupe |
| bab_eventPageRefreshed | bab_event | La page a été rafraîchie, l'événement intervient après l'inclusion de la page php en cours et avant le traitement du template page.html |
| bab_eventBeforePageCreated | bab_event | L'événement intervient juste avant l'inclusion du code PHP qui gère la page en cours : le corps de la page n'est pas préparé, le template de la page n'est pas traité. |
| bab_eventFunctionalityRegistered | bab_event | Une fonctionnalité a été ajoutée |
| bab_eventFunctionalityUnregistered | bab_event | Une fonctionnalité a été supprimée |
| bab_eventBeforeSiteMapCreated | bab_event | Avant la création du plan de site, c'est un événement qui sert a collecter tout les liens nécessaires à la création du plan de site, voir l'article Gestion des nœuds du plan du site |
| bab_eventSearchRealms | bab_event | Événement utilisé par l'API de recherche pour collecter tout les environnements de recherche |
| bab_eventMail | bab_event | Événement principal utilisé dans l'API de la messagerie, il regroupe tout les événements appelés lors de l'envoi des emails |
| bab_eventBeforeMailSent | bab_eventMail | Événement déclenché avant l'envoi d'un email, il permet d'annuler l'envoi avec la méthode cancel()
|
| bab_eventAfterMailSent | bab_eventMail | Événement déclenché après l'envoi d'un email, il permet de récupérer en plus le statut de l'envoi |
| bab_eventFmAfterFileUpload | bab_eventFmFile | Événement déclenché lorsqu'un nouveau fichier devient disponible pour les utilisateurs ayant accès, cet événement respecte l'interface bab_eventNotifyRecipients |
| bab_eventFmAfterFileUpdate | bab_eventFmFile | Événement déclenché lorsqu'un fichier a été modifié, cet événement respecte l'interface bab_eventNotifyRecipients |
| bab_eventFmAfterAddVersion | bab_eventFmAfterFileUpdate | Événement déclenché lorsqu'une nouvelle version d'un fichier a été ajoutée, cet événement respecte l'interface bab_eventNotifyRecipients |
| bab_eventCalendarEvent | bab_event | Événement déclenché lors du traitement d'un événement d'agenda (création, modification, suppression), cet événement respecte l'interface bab_eventNotifyRecipients |
| bab_eventAfterEventAdd | bab_eventCalendarEvent | Événement déclenché lorsqu'un agenda à été ajouté sur un événement en tant qu'invité ou en tant organisateur , cet événement respecte l'interface bab_eventNotifyRecipients |
| bab_eventAfterEventUpdate | bab_eventCalendarEvent | Événement déclenché lorsqu'un événement à été modifié, cet événement respecte l'interface bab_eventNotifyRecipients |
| bab_eventAfterEventDelete | bab_eventCalendarEvent | Événement déclenché lorsqu'un agenda à été retiré sur un événement en tant qu'invité ou que l'événement à été supprimé, cet événement respecte l'interface bab_eventNotifyRecipients |
| bab_eventForumPost | bab_event | Événement déclenché après la création d'une contribution de forum, cet événement respecte l'interface bab_eventNotifyRecipients |
| bab_eventForumAfterThreadAdd | bab_eventForumPost | Événement déclenché après la création d'une réponse à un sujet de forum, cet événement respecte l'interface bab_eventNotifyRecipients |
| bab_eventForumAfterPostAdd | bab_eventForumPost | Événement déclenché après la création d'un sujet de forum, cet événement respecte l'interface bab_eventNotifyRecipients |
| bab_eventAfterArticleAdd | bab_eventArticle | Événement déclenché après la publication d'un article, cet événement respecte l'interface bab_eventNotifyRecipients |
| bab_eventAfterUserLoggedIn | bab_eventPortalAuthentication | Événement déclenché après la connexion d'un utilisateur |
| bab_eventAfterUserLoggedOut | bab_eventPortalAuthentication | Événement déclenché après la déconnexion d'un utilisateur |
| bab_eventAddon | bab_event | Événement de base dont héritent tous les événements concernant la gestion des addons. (Ovidentia >= 8.2.0) |
| bab_eventAddonInstalled | bab_eventAddon | Événement déclenché après l'installation d'un addon. (Ovidentia >= 8.2.0) |
| bab_eventAddonUpgraded | bab_eventAddon | Événement déclenché après la mise à jour d'un addon. (Ovidentia >= 8.2.0) |
| bab_eventAddonBeforeDeleted | bab_eventAddon | Événement déclenché avant la suppression d'un addon. (Ovidentia >= 8.2.0) |
| bab_eventAddonDeleted | bab_eventAddon | Événement déclenché après la suppression d'un addon. (Ovidentia >= 8.2.0) |
| bab_eventAddonDisabled | bab_eventAddon | Événement déclenché après la désactivation d'un addon. (Ovidentia >= 8.2.0) |