<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> <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> <title>Ecriture 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>