ac06b06234bf3629c41362da268ab15e3a08e9d7
[ldapsaisie.git] / public_html / includes / class / class.LSformElement_select.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 select d'un formulaire pour LdapSaisie
26  *
27  * Cette classe définis les éléments select des formulaires.
28  * Elle étant la classe basic LSformElement.
29  *
30  * @author Benjamin Renard <brenard@easter-eggs.com>
31  */
32
33 class LSformElement_select extends LSformElement {
34
35   var $template = 'LSformElement_select.tpl';
36   var $fieldTemplate = 'LSformElement_select.tpl';
37
38  /**
39   * Return display data of this element
40   * 
41   * This method return display data of this element
42   *
43   * @retval array
44   */
45   function getDisplay(){
46     $return = $this -> getLabelInfos();
47     $params = array();
48     if (!$this -> isFreeze()) {
49       LSsession :: addHelpInfos (
50         'LSformElement_select',
51         array(
52           'clear' => _("Reset selection.")
53         )
54       );
55       LSsession :: addJSscript('LSformElement_select.js');
56     }
57     $params['possible_values'] = $this -> params['text_possible_values'];
58     $params['unrecognized_value_label_format'] = _("%{value} (unrecognized value)");
59     $return['html'] = $this -> fetchTemplate(NULL,$params);
60     return $return;
61   }
62
63  /**
64   * Check if a value is valid
65   *
66   * This method check if a value is correct, that mean if it's one
67   * of the possible values.
68   *
69   * @param[in] $value The value to check
70   * @param[in] $possible_values (Optional) The possible values
71   *
72   * @retval string or False The value's label or False if this value is incorrect
73   */
74   public function isValidValue($value,$possible_values=False) {
75     if (!is_array($possible_values)) {
76       if (isset($this) && get_class($this) == __CLASS__ && is_array($this -> params['text_possible_values'])) {
77         $possible_values=$this -> params['text_possible_values'];
78       }
79       else {
80         return False;
81       }
82     }
83
84     $ret=False;
85     if (is_array($possible_values) && isset($value)) {
86       foreach($possible_values as $key => $name) {
87         if (is_array($name)) {
88           if (!is_array($name['possible_values'])) continue;
89           foreach($name['possible_values'] as $k => $v) {
90             if ($k==$value) {
91               $ret=$v;
92               break;
93             }
94           }
95           if ($ret) break;
96         }
97         elseif ($key==$value) {
98           $ret=$name;
99           break;
100         }
101         if ($ret) break;
102       }
103     }
104     return $ret;
105   }
106
107 }
108
109 /**
110  * LSformElement_select_checkIsValidValue template function
111  *
112  * This function permit to check during template processing
113  * if a value is valid. This function get as parameters
114  * (in $params) :
115  * - $value : the value to check
116  * - $possible_values : the possible values of the element
117  * As return, this function assign two template variables :
118  * - LSformElement_select_isValidValue :
119  *     Boolean defining if the value is valid
120  * - LSformElement_select_isValidValue_label :
121  *     The value's label
122  *
123  * @param[in] $params The template function parameters
124  * @param[in] $template Smarty object
125  *
126  * @retval void
127  **/
128 function LSformElement_select_checkIsValidValue($params,$template) {
129   extract($params);
130
131   $ret = LSformElement_select :: isValidValue($value,$possible_values);
132
133   if ($ret===False) {
134     $label='';
135     $ret=false;
136   }
137   else {
138     $label=$ret;
139     $ret=true;
140   }
141
142   $template -> assign('LSformElement_select_isValidValue',$ret);
143   $template -> assign('LSformElement_select_isValidValue_label',$label);
144 }
145 LStemplate :: registerFunction('LSformElement_select_checkIsValidValue','LSformElement_select_checkIsValidValue');