API du gestionnaire d'événement

Un article de OviWiki.


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 :

global $babInstallPath;
include_once $babInstallPath.'utilit/eventincl.php';


Ajouter un listener :

bab_addEventListener('event_class_name', 'function_name', 'require_file', 'addon_name');


Enlever un listener :

bab_removeEventListener('event_class_name', 'function_name', 'require_file', 'addon_name');


Enlever tous les listeners associés à un addon (Ovidentia >= 8.2.0) :

bab_removeAddonEventListeners($addon_name)


La fonction inscrite dans la colonne function_name sera délarée dans le fichier 'require_file' comme ceci :

function ats_onBabPasswordModified(&$event) {
 
}

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 :

  1. si addon_name est un nom de module valide, le contexte du module est créé
  2. le nom du fichier contenu dans require_file est inclus avec la fonction require_once
  3. la fonction function_name est appelée avec un seul paramètre qui est l'instance de l'événement
class bab_userModified extends bab_event {
 
}
 
class bab_passwordModified extends bab_userModified {
 
}
 
$event_obj = new bab_passwordModified();
 
bab_fireEvent($event_obj);


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.

bab_addEventListener('event_class_name', 'function_1', 'require_file', 'addon_name', 50);
bab_addEventListener('event_class_name', 'function_2', 'require_file', 'addon_name', 100);

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)