- Ecriture du LSsession
[ldapsaisie.git] / trunk / includes / class / class.LSformElement.php
1 <?php
2 /*******************************************************************************
3  * Copyright (C) 2007 Easter-eggs
4  * http://ldapsaisie.labs.libre-entreprise.org
5  *
6  * Author: See AUTHORS file in top-level directory.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License version 2
10  * as published by the Free Software Foundation.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20
21 ******************************************************************************/
22
23
24 /**
25  * Element d'un formulaire pour LdapSaisie
26  *
27  * Cette classe gère les éléments des formulaires.
28  *
29  * @author Benjamin Renard <brenard@easter-eggs.com>
30  */
31
32 class LSformElement {
33
34   var $name;
35   var $label;
36   var $params;
37   var $values = array();
38   var $_required = false;
39   var $_freeze = false;
40
41   /**
42    * Constructeur
43    *
44    * Cette methode construit l'objet et définis sa configuration de base.
45    *
46    * @author Benjamin Renard <brenard@easter-eggs.com>
47    *
48    * @param[in] &$form [<b>required</b>] LSform L'objet LSform parent
49    * @param[in] $name [<b>required</b>] string Le nom de référence de l'élément
50    * @param[in] $label [<b>required</b>] string Le label de l'élément
51    * @param[in] $params mixed Paramètres supplémentaires
52    *
53    * @retval true
54    */   
55         function LSformElement (&$form, $name, $label, $params){
56     $this -> name = $name;
57                 $this -> label = $label;
58                 $this -> params = $params;
59                 $this -> form = $form;
60                 return true;
61   }
62
63   /**
64    * Définis la valeur de l'élément
65    *
66    * Cette méthode définis la valeur de l'élément
67    *
68    * @author Benjamin Renard <brenard@easter-eggs.com>
69    *
70    * @param[in] [<b>required</b>] string or array La futur valeur de l'élément
71    *
72    * @retval boolean Retourne True
73    */
74   function setValue($data) {
75                 if (!is_array($data)) {
76                         $data=array($data);
77                 }
78
79                 $this -> values = $data;
80                 return true;
81   }
82
83         /**
84    * Ajoute une valeur à l'élément
85    *
86    * Cette méthode ajoute une valeur à l'élément
87    *
88    * @author Benjamin Renard <brenard@easter-eggs.com>
89    *
90    * @param[in] [<b>required</b>] string or array La futur valeur de l'élément
91    *
92    * @retval void
93    */
94   function addValue($data) {
95                 if (is_array($data)) {
96                         $this -> values = array_merge($this -> values, $data);
97                 }
98                 else {
99                         $this -> values[] = $data;
100                 }
101   }
102
103         /**
104          * Test si l'élément est éditable
105          * 
106          * Cette méthode test si l'élément est éditable
107          *
108          * @retval boolean
109          */
110         function isFreeze(){
111                 return $this -> _freeze;
112         }
113   
114   /*
115    * Freeze l'élément
116    *
117    * Rend l'élément non-editable
118    *
119    * @retval void
120    */
121   function freeze() {
122                 $this -> _freeze = true;
123   }
124
125   /*
126    * Défini la propriété required de l'élément.
127    *
128    * param[in] $isRequired boolean true si l'élément est requis, false sinon
129    *
130    * @retval void
131    */
132   function setRequired($isRequired=true) {
133                 $this -> _required = $isRequired;
134   }
135
136         /*
137          * Test si l'élément est requis
138          * 
139          * Cette méthode test si l'élément est requis
140          *
141          * @retval boolean
142          */
143         function isRequired(){
144                 return $this -> _required;
145         }
146
147         /**
148          * Affiche le label de l'élement
149          *
150          * @retval void
151          */
152         function displayLabel() {
153         if ($this -> isRequired()) {
154         $required=" <span class='required_elements'>*</span>";
155         }
156           else {
157               $required="";
158         }
159           echo "\t\t<td>".$this -> getLabel()."$required</td>\n";
160         }
161
162         /**
163          * Retourne le label de l'élement
164          *
165          * @retval void
166          */
167         function getLabelInfos() {
168         if ($this -> isRequired()) {
169         $return['required']=true;
170         }
171           $return['label'] = $this -> getLabel();
172                 return $return;
173         }
174
175         /**
176          * Recupère la valeur de l'élement passée en POST
177          *
178          * Cette méthode vérifie la présence en POST de la valeur de l'élément et la récupère
179          * pour la mettre dans le tableau passer en paramètre avec en clef le nom de l'élément
180          *
181          * @param[] array Pointeur sur le tableau qui recupèrera la valeur.
182          *
183          * @retval boolean true si la valeur est présente en POST, false sinon
184          */
185         function getPostData(&$return) {
186                 if($this -> params['form'][$this -> form -> idForm] != 1) {
187                         return true;
188                 }
189                 if (isset($_POST[$this -> name])) {
190                         if(!is_array($_POST[$this -> name])) {
191                                 $_POST[$this -> name] = array($_POST[$this -> name]);
192                         }
193                         foreach($_POST[$this -> name] as $key => $val) {
194                                         $return[$this -> name][$key] = $val;
195                         }
196                         return true;
197                 }
198                 else {
199                         $return[$this -> name] = array();
200                         return true;
201                 }
202         }
203
204         /**
205          * Retourne le label de l'élement
206          *
207          * Retourne $this -> label, ou $this -> params['label'], ou $this -> name
208          *
209          * @retval string Le label de l'élément
210          */
211         function getLabel() {
212                 if ($this -> label != "") {
213                         return $this -> label;
214                 }
215                 else if ($this -> params['label']) {
216                         return $this -> params['label'];
217                 }
218                 else {
219                         return $this -> name;
220                 }
221         }
222
223         /**
224          * Retourne l'HTML pour les boutons d'ajout et de suppression de champs du formulaire LSform
225          *
226          * @retval string Le code HTML des boutons
227          */
228         function getMultipleData() {
229                 if ($this -> params['multiple'] == true ) {
230                         return "<img src='templates/images/add.png' id='LSform_add_field_btn_".$this -> name."_".rand()."' class='LSform-add-field-btn' alt='"._('Ajouter')."'/><img src='templates/images/remove.png' class='LSform-remove-field-btn' alt='"._('Supprimer')."'/>";
231                 }
232                 else {
233                         return '';
234                 }
235         }
236 }
237
238 ?>