*/ class LSattr_html_select_object extends LSattr_html{ /** * Ajoute l'attribut au formualaire passer en paramètre * * @param[in] &$form LSform Le formulaire * @param[in] $idForm L'identifiant du formulaire * @param[in] $data Valeur du champs du formulaire * * @retval LSformElement L'element du formulaire ajouté */ function addToForm (&$form,$idForm,$data=NULL) { $this -> config['attrObject'] = $this; $element=$form -> addElement('select_object', $this -> name, $this -> config['label'],$this -> config,$this); if(!$element) { $GLOBALS['LSerror'] -> addErrorCode(206,$this -> name); return; } if ($data) { $values=$this -> getValues($data); if ($values) { $element -> setValue($values); } } $element -> setSelectableObject($this -> config['selectable_object']['object_type']); return $element; } function refreshForm($data) { return $this -> getValues($data); } /** * Retourne un tableau des valeurs possibles de la liste * * @param[in] mixed Tableau des valeurs de l'attribut * * @author Benjamin Renard * * @retval array Tableau associatif des valeurs possible de la liste avec en clé * la valeur des balises option et en valeur ce qui sera affiché. */ function getValues($values=NULL) { $retInfos = array(); if (isset($this -> config['selectable_object'])) { $conf=$this -> config['selectable_object']; if (!isset($conf['object_type'])) { $GLOBALS['LSerror'] -> addErrorCode(102,$this -> name); break; } if (is_array($values)) { if(($conf['value_attribute']=='dn')||($conf['value_attribute']=='%{dn}')) { $list=array(); foreach($values as $dn) { $obj=new $conf['object_type'](); if ($obj -> loadData($dn)) { $list[]=$obj; } } } else { $filter='(|'; foreach($values as $val) { $filter.='('.$conf['value_attribute'].'='.$val.')'; } $filter.=')'; debug($filter); $obj = new $conf['object_type'](); $list = $obj -> listObjects($filter); } if(($conf['value_attribute']=='dn')||($conf['value_attribute']=='%{dn}')) { for($i=0;$i dn]=$list[$i] -> getDisplayValue($conf['display_attribute']); $DNs[]=$list[$i] -> dn; } } else { for($i=0;$i attrs[$val['value_attribute']] -> getValue()]=$list[$i] -> getDisplayValue($conf['display_attribute']); $DNs[]=$list[$i] -> dn; } } } else { debug($values); return false; } $_SESSION['LSselect'][$conf['object_type']]=$DNs; return $retInfos; } return false; } /** * Retourne un tableau des valeurs de l'attribut à partir de la variable session * * @author Benjamin Renard * * @retval array Tableau associatif des valeurs possible de la liste avec en clé * la valeur des balises option et en valeur ce qui sera affiché. */ function getValuesFromSession() { $retInfos = array(); if (isset($this -> config['selectable_object'])) { $conf=$this -> config['selectable_object']; if (!isset($conf['object_type'])) { $GLOBALS['LSerror'] -> addErrorCode(102,$this -> name); break; } if(is_array($_SESSION['LSselect'][$conf['object_type']])) { foreach($_SESSION['LSselect'][$conf['object_type']] as $dn) { $obj = new $conf['object_type'](); if ($obj->loadData($dn)) { if(($conf['value_attribute']=='dn')||($conf['value_attribute']=='%{dn}')) { $retInfos[$obj -> dn]=$obj -> getDisplayValue($conf['display_attribute']); } else { $retInfos[$obj -> attrs[$val['value_attribute']] -> getValue()]=$obj -> getDisplayValue($conf['display_attribute']); } $DNs[]=$dn; } } } else { return false; } $_SESSION['LSselect'][$conf['object_type']]=$DNs; return $retInfos; } return false; } } ?>