Initial import
[ldapsaisie.git] / trunk / includes / class / class.LSattr_html_select_list.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  * Type d'attribut HTML select_list
25  *
26  * @author Benjamin Renard <brenard@easter-eggs.com>
27  */
28 class LSattr_html_select_list extends LSattr_html{
29   
30   function addToForm (&$form,$idForm) {
31     return $form -> addElement('select', $this -> name, $this -> config['label'],$this -> getPossibleValues());
32   }
33   
34   /**
35    * Retourne un tableau des valeurs possibles de la liste
36    *
37    * @author Benjamin Renard <brenard@easter-eggs.com>
38    *
39    * @retval array Tableau associatif des valeurs possible de la liste avec en clĂ©
40    *               la valeur des balises option et en valeur ce qui sera affichĂ©.
41    */   
42   function getPossibleValues() {
43     $retInfos = array();
44     if (isset($this -> config['possible_values'])) {
45       foreach($this -> config['possible_values'] as $val_name => $val) {
46         if($val_name=='OTHER_OBJECT') {
47           //~ print_r($val);
48           if ((!isset($val['object_type'])) || (!isset($val['value_attribute']))) {
49             $GLOBALS['LSerror'] -> addErrorCode(102,$this -> name);
50             break;
51           }
52           $obj = new $val['object_type']();
53           if($val['scope']) {
54             $param=array('scope' => $this -> config['possible_values']['scope']);
55           }
56           else {
57             $param=array();
58           }
59           $list = $obj -> listObjects($val['filter'],$this -> config['possible_values']['basedn'],$param);
60           if(($val['value_attribute']=='dn')||($val['value_attribute']=='%{dn}')) {
61             for($i=0;$i<count($list);$i++) {
62               $retInfos[$list[$i] -> dn]=$list[$i] -> getDisplayValue($val['display_attribute']);
63             }
64           }
65           else {
66             for($i=0;$i<count($list);$i++) {
67               $retInfos[$list[$i] -> attrs[$val['value_attribute']] -> getValue()]=$list[$i] -> getDisplayValue($val['display_attribute']);
68             }
69           }
70         }
71         else {
72           $retInfos[$val_name]=$val;
73         }
74       }
75     }
76     return $retInfos;
77   }
78   
79 }
80
81 ?>