AllEvents va progressivement implémenter ses propres évènements afin de permettre à des développeurs de créer des plug-ins pour y répondre. Ainsi, l'évènement onBeforeSaveEvent est appelé par la table de classe AllEvents_Events, fonction store() et va informer les plug-ins à l'écoute qu'un évènement est sur le point d'être sauvé.
Les plug-ins pourront répondre en exécutant leur propre code pour retourner deux valeurs :
- une valeur booléenne true/false pour autoriser ou non la sauvegarde
- une valeur texte qui sera affichée par AllEvents dès lors que la sauvegarde est interdite
Ci-dessous un code minimaliste d'un plug-in pour gérer onBeforeSaveEvent :
Explications :
Ligne 5 : Vérification que AllEvents est bien installé et publié sur le site. Ceci afin de garantir que le site Joomla ne vas pas "planter" si on installe le plug-in alors même que AllEvents n'est pas présent.
Ligne 6 : Inclusion de la classe de gestion des plugins de AllEvents (classe AEPlugin).
Ligne 10 : Nom du plug-in. Ce nom est utilisé par la classe AEPlugin.
Lignes 19 à 26 : Constructeur du plug-in. Mettez-y le code d'initialisation de vos variables, de contrôle de présence de certains fichiers, etc.
Ligne 39 : Nom de la fonction = nom de l'évènement traité. Deux paramètres sont transmis par AllEvents : une variable objet $event qui reprend l'évènement étant sur le point d'être sauvé et $param qui est une variable optionnelle.
Lignes 41 et 42 : initialisation des variables retours. Votre code doit complété $bReturn soit par True si vous autorisez la sauvegarde soit par False si vous souhaitez que AllEvents l'interdise. Et, dans ce dernier cas, la variable $msg doit reprendre un texte qui sera affiché pour informer l'utilisateur pourquoi l'évènement n'a pas été sauvé. Les lignes 41 et 42 proposées ici sont évidemment à titre purement indicatif.
Ligne 43 : retour des deux variables au code appelant (il s'agit p.ex. de la fonction store() de la table de classe AllEvents_Events; mais pas forcément).
Le plug-in AllEvents - OnBeforeSaveEventSample est intégré dans la package Premium.


