LSformElement :: select_list / select_box : permit to put possible values in labelled...
[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 (!$possible_values)
76       $possible_values=$this -> params['text_possible_values'];
77
78     $ret=False;
79     if (is_array($possible_values) && isset($value)) {
80       foreach($possible_values as $key => $name) {
81         if (is_array($name)) {
82           if (!is_array($name['possible_values'])) continue;
83           foreach($name['possible_values'] as $k => $v) {
84             if ($k==$value) {
85               $ret=$v;
86               break;
87             }
88           }
89           if ($ret) break;
90         }
91         elseif ($key==$value) {
92           $ret=$name;
93           break;
94         }
95         if ($ret) break;
96       }
97     }
98     return $ret;
99   }
100
101 }
102
103 /**
104  * LSformElement_select_checkIsValidValue template function
105  *
106  * This function permit to check during template processing
107  * if a value is valid. This function get as parameters
108  * (in $params) :
109  * - $value : the value to check
110  * - $possible_values : the possible values of the element
111  * As return, this function assign two template variables :
112  * - LSformElement_select_isValidValue :
113  *     Boolean defining if the value is valid
114  * - LSformElement_select_isValidValue_label :
115  *     The value's label
116  *
117  * @param[in] $params The template function parameters
118  * @param[in] $template Smarty object
119  *
120  * @retval void
121  **/
122 function LSformElement_select_checkIsValidValue($params,$template) {
123   extract($params);
124
125   $ret = LSformElement_select :: isValidValue($value,$possible_values);
126
127   if ($ret===False) {
128     $label='';
129     $ret=false;
130   }
131   else {
132     $label=$ret;
133     $ret=true;
134   }
135
136   $template -> assign('LSformElement_select_isValidValue',$ret);
137   $template -> assign('LSformElement_select_isValidValue_label',$label);
138 }
139 LStemplate :: registerFunction('LSformElement_select_checkIsValidValue','LSformElement_select_checkIsValidValue');