LSrelation : add possibilty to handle relation with multiple key values
[ldapsaisie.git] / doc / conf / LSobject / LSrelation.docbook
1 <sect2 id="config-LSobject-LSrelation">
2   <title>LSrelation</title>
3   <para>Cette section décrit la manière de configurer les relations entre les
4   &LSobjects; appelées &LSrelation;.</para>
5   <para>Dans le cadre d'une liaison dîte <emphasis>simple</emphasis>, c'est à
6   dire une liaison au travers la valeur d'un attribut qui fera directement
7   référence à un autre objet (<emphasis>DN</emphasis> ou la première valeur
8   d'un attribut de référence), pourra être configurée simplement en spécifiant
9   l'attribut de liaison et le type de valeur qu'il contient. Dans le cas d'une
10   liaison plus complexe, il sera possible de développer vous même des méthodes
11   de mise en relation.</para>
12   
13 <programlisting>
14 <citetitle>Structure</citetitle>
15 <![CDATA[$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSrelation'] = array (
16   'relation1' => array(
17     'label' => '[label de la relation]',
18     'emptyText' => "[texte affiché si aucune relation avec d'autres objets 
19                      n'existe pour l'objet courant]",
20     'LSobject' => '[le type d'LSobjet en relation]',
21
22     // Liaison simple
23     'linkAttribute' => '[attribut de liaison]',
24     'linkAttributeValue' => '[valeur de l'attribut de liaison]',
25     'linkAttributeOtherValues' => array('[autres valeurs possible de l'attribut de liaison]', [...]),
26
27     // Liaison complexe
28     'list_function' => '[méthode1]',
29     'getkeyvalue_function' => '[methode2]',
30     'update_function' => '[methode3]',
31     'remove_function' => '[methode4]',
32     'rename_function' => '[methode5]',
33     'canEdit_function' => '[methode6]',
34     'canEdit_attribute' => '[nom d'attribut]',
35
36     'rights' => array(
37       'LSprofile1' => 'r',
38       'LSprofile2' => 'w',
39       ...
40     )
41   )
42 );]]>
43 </programlisting>
44
45 <variablelist>
46 <title>Paramètres de configuration</title>
47
48 <varlistentry>
49   <term>label</term>
50   <listitem>
51     <simpara>Le label de la relation.</simpara>
52   </listitem>
53 </varlistentry>
54
55 <varlistentry>
56   <term>emptyText</term>
57   <listitem>
58     <simpara>Le texte à afficher pour décrire le fait que l'objet courant n'a
59     aucune relation d'établie avec d'autres &LSobjects;. Exemple (au sujet d'un
60     utilisateur) : <emphasis>N'appartient à aucun groupe.</emphasis></simpara>
61   </listitem>
62 </varlistentry>
63
64 <varlistentry>
65   <term>LSobject</term>
66   <listitem>
67     <simpara>Le type d'&LSobject; en relation avec le type courant.
68     <emphasis>(Facultatif en cas de liaison complexe)</emphasis></simpara>
69   </listitem>
70 </varlistentry>
71
72 <varlistentry>
73   <term>linkAttribute</term>
74   <listitem>
75     <simpara>Dans le cadre d'une relation simple, il s'agit de l'attribut de
76     liaison du type d'&LSobject; en relation avec le type courant, c'est à dire
77     l'attribut dans lequel on retrouve une valeur en relation avec l'objet
78     courant. <emphasis>(Facultatif en cas de liaison complexe)</emphasis></simpara>
79   </listitem>
80 </varlistentry>
81
82 <varlistentry>
83   <term>linkAttributeValue</term>
84   <listitem>
85     <simpara>Dans le cadre d'une relation simple, il s'agit du type de valeur prisent
86     par l'attribut de liaison du type d'&LSobject; en relation avec le type courant.
87     Il peut s'agir du mot clé <literal>dn</literal> si l'attribut de liaison contient
88     le <emphasis>DN</emphasis> de l'objet courant ou bien le nom d'un attribut du type
89     d'objet courant dont la première valeur sera stockée par l'attribut de liaison.
90     <emphasis>(Facultatif en cas de liaison complexe)</emphasis></simpara>
91   </listitem>
92 </varlistentry>
93
94 <varlistentry>
95   <term>linkAttributeOtherValues</term>
96   <listitem>
97     <simpara>Dans le cadre d'une relation simple, il s'agit d'autres types de valeur
98     possiblement prisent par l'attribut en plus de celui défini par le paramètre
99     <literal>linkAttributeValue</literal>. Ce paramètre ne sert qu'a détecter des
100     liaisons établies à l'aide de valeurs autres que celle relative au paramètre
101     <literal>linkAttributeValue</literal> : en cas de nouvelle liaison, c'est la
102     valeur associée à ce dernier qui sera utilisée pour établir la liaison.
103     <emphasis>(Facultatif en cas de liaison complexe)</emphasis></simpara>
104   </listitem>
105 </varlistentry>
106
107 <varlistentry>
108   <term>list_function</term>
109   <listitem>
110     <simpara>La méthode de la classe du type d'&LSobject; en relation, permettant
111     de lister les objets de ce type en relation avec l'objet courant.
112     <emphasis>(Facultatif en cas de liaison simple)</emphasis></simpara>
113   </listitem>
114 </varlistentry>
115
116 <varlistentry>
117   <term>getkeyvalue_function</term>
118   <listitem>
119     <simpara>La méthode de la classe du type d'&LSobject; en relation, permettant
120     d'obtenir la valeur clé à stocker pour établir la relation entre l'objet
121     courant et d'autres objets du type concerné. <emphasis>(Facultatif en cas de
122     liaison simple)</emphasis></simpara>
123   </listitem>
124 </varlistentry>
125
126 <varlistentry>
127   <term>update_function</term>
128   <listitem>
129     <simpara>La méthode de la classe du type d'&LSobject; en relation, permettant
130     de mettre à jour les relations existantes entre l'objet courant et les objets
131     du type concerné. Cette liste d'objets en relation est établie par
132     l'utilisateur à travers l'interface. <emphasis>(Facultatif en cas de liaison
133     simple)</emphasis></simpara>
134   </listitem>
135 </varlistentry>
136
137 <varlistentry>
138   <term>remove_function</term>
139   <listitem>
140     <simpara>La méthode de la classe du type d'&LSobject; en relation permettant
141     de supprimer une relation existante entre l'objet courant et un objet du 
142     type concerné. <emphasis>(Facultatif en cas de liaison simple)</emphasis>
143     </simpara>
144   </listitem>
145 </varlistentry>
146
147 <varlistentry>
148   <term>rename_function</term>
149   <listitem>
150     <simpara>La méthode de la classe du type d'&LSobject; en relation permettant
151     d'effectuer les actions nécessaires lorsque l'objet courant est renommé dans
152     le but de maintenir les valeurs clés permettant d'établir les relations entre
153     l'objet courant et les objets en relation avec lui. <emphasis>(Facultatif en
154     cas de liaison simple)</emphasis></simpara>
155   </listitem>
156 </varlistentry>
157
158 <varlistentry>
159   <term>canEdit_function</term>
160   <listitem>
161     <simpara>La méthode de la classe du type d'&LSobject; en relation permettant
162     de vérifier que l'utilisateur à le droit de modifier la relation avec un objet
163     en particulier. <emphasis>(Facultatif en cas de liaison simple)</emphasis>
164     </simpara>
165   </listitem>
166 </varlistentry>
167
168 <varlistentry>
169   <term>canEdit_attribute</term>
170   <listitem>
171     <simpara>Le nom de l'attibut du type d'&LSobject; en relation devant être
172     éditable par l'utilisateur pour que celui-ci puisse modifier la relation.
173     Dans le cadre d'une relation simple, celui-ci peut, si nécessaire, être
174     différent du paramètre <literal>linkAttribute</literal>.</simpara>
175   </listitem>
176 </varlistentry>
177
178 <varlistentry>
179   <term>rights</term>
180   <listitem>
181     <simpara>Tableau associatif dont les clés sont les noms des &LSprofiles; ayant
182     des droits sur cette relation et dont les valeurs associées sont les droits
183     correspondants. La valeur des droits d'un &LSprofile; peut être
184     <literal>r</literal> pour le droit de lecture ou <literal>w</literal> pour
185     le droit de lecture-écriture.Par défaut, un &LSprofile; n'a aucun droit.</simpara>
186   </listitem>
187 </varlistentry>
188
189 </variablelist>
190
191 </sect2>