ldapsaisie/doc/conf/LSattribute/triggers.docbook
2021-04-13 18:45:47 +02:00

102 lines
4.3 KiB
Plaintext

<sect3 id="config-LSattribute-triggers">
<title>Déclencheurs</title>
<para>Cette section décrit la manière de paramétrer des déclencheurs afin que
&LdapSaisie; exécute durant ses processus, et à des moments bien précis des
traitements d'un &LSattribute;, des fonctions que vous pourrez développer vous
même. De plus, le résultat de l'exécution de vos fonctions pourra influer
sur le déroulement des processus.</para>
<para>Actuellement, les évènements suivant sont gérés :
<informaltable>
<tgroup cols="3"> <!-- on décrit le nombre de colonnes -->
<thead> <!-- on passe au "header" du tableau -->
<row>
<entry>Nom</entry>
<entry>Description</entry>
<entry>Bloquant</entry>
</row>
</thead>
<tbody> <!-- et on remplit les lignes -->
<row>
<entry><literal>before_create</literal></entry>
<entry><simpara>Avant la création du LSobject, lorsque l'attribut a au
moins une valeur.</simpara></entry>
<entry><simpara>Oui</simpara></entry>
</row>
<row>
<entry><literal>after_create</literal></entry>
<entry><simpara>Après la création du LSobject, lorsque l'attribut a au
moins une valeur.</simpara></entry>
<entry><simpara>Non</simpara></entry>
</row>
<row>
<entry><literal>before_modify</literal></entry>
<entry><simpara>Avant la modification de la valeur de l'attribut.</simpara></entry>
<entry><simpara>Oui</simpara></entry>
</row>
<row>
<entry><literal>after_modify</literal></entry>
<entry><simpara>Après la modification de la valeur de l'attribut.</simpara></entry>
<entry><simpara>Non</simpara></entry>
</row>
<row>
<entry><literal>before_delete</literal></entry>
<entry><simpara>Avant la suppression du LSobject contenant l'attribut.</simpara></entry>
<entry><simpara>Oui</simpara></entry>
</row>
<row>
<entry><literal>after_delete</literal></entry>
<entry><simpara>Après la suppression du LSobject contenant l'attribut.</simpara></entry>
<entry><simpara>Non</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<note><simpara>Si un événement est dit <emphasis>bloquant</emphasis>, lors de
l'exécution des actions liées, si une des fonctions retourne <literal>false
</literal>, le processus s'arrêtera.</simpara></note>
</para>
<sect4 id="config-LSattribute-triggers-config">
<title>Configuration</title>
<para>La configuration des déclencheurs se fait dans la définition des
&LSattributes;. Par exemple, pour définir les fonctions à exécuter après la
modification de la valeur de l'attribut <emphasis>mail</emphasis> du type de
&LSobject; <emphasis>LSpeople</emphasis>, c'est à dire lors de leur évenement
<literal>after_modify</literal>, il faut définir la variable suivante :
<programlisting linenumbering="unnumbered"><![CDATA[$GLOBALS['LSobjects']['LSpeople']['attrs']['mail']['after_modify']]]></programlisting>
Cette variable peut contenir soit une chaine de caractères correspondant au
nom de la fonction à exécuter, soit un tableau de chaînes de caractères
correspondant aux noms des fonctions à exécuter.</para>
</sect4>
<sect4 id="config-LSattribute-triggers-writing">
<title>Écriture d'une fonction</title>
<para>Une fonction exécuté par un déclencheur d'un LSattribute se déclare de
la manière suivante :
<programlisting linenumbering="unnumbered"><![CDATA[
/*
* Ma fonction à exécuter lors de l'évènement [event]
*
* Paramètre :
* - $object : Le LSobject contenant le LSattribute sur lequel l'évenement
* survient
*
* Valeurs retournées :
* - True : Tout s'est bien passé
* - False : Une erreur est survenue ou la fonction souhaite bloquer le
* processus lors d'un évènement bloquant.
*/
function maFonction ($object) {
// Actions
}
]]></programlisting>
Cette fonction doit prendre pour seul paramètre, le LSobject contenant le
LSattribute sur lequel l'évenement survient et doit retourner soit
<literal>True</literal> si tout s'est bien passé, soit <literal>False</literal>
en cas de problème. Dans le cas d'un événement bloquant, si la fonction retourne
<literal>False</literal>, le processus est arrêté.</para>
</sect4>
</sect3>