*/ 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) { LSerror :: addErrorCode('LSform_06',$this -> name); return; } if ($data) { $values=$this -> getFormValues($data); if ($values) { $element -> setValue($values); } } $element -> setSelectableObject($this -> config['selectable_object']['object_type']); return $element; } /** * Effectue les tâches nécéssaires au moment du rafraichissement du formulaire * * Récupère un array du type array('DNs' => 'displayName') à partir d'une * liste de DNs. * * @param[in] $data mixed La valeur de l'attribut (liste de DNs) * * @retval mixed La valeur formatée de l'attribut (array('DNs' => 'displayName')) **/ function refreshForm($data,$fromDNs=false) { return $this -> getFormValues($data,$fromDNs); } /** * Retourne un tableau des valeurs de l'attribut à partir des valeurs du formulaire * * @param[in] mixed Tableau des valeurs du formulaire * * @author Benjamin Renard * * @retval array Tableau des valeurs de l'attribut */ function getValuesFromFormValues($values=NULL) { $retValues = array(); if (isset($this -> config['selectable_object'])) { $conf=$this -> config['selectable_object']; if (!isset($conf['object_type'])) { LSerror :: addErrorCode('LSattr_html_select_object_01',$this -> name); return; } if (!LSsession :: loadLSobject($conf['object_type'])) { return; } if (is_array($values)) { $obj=new $conf['object_type'](); foreach($values as $dn => $name) { if ($obj -> loadData($dn)) { if(($conf['value_attribute']=='dn')||($conf['value_attribute']=='%{dn}')) { $val = $dn; } else { $val = $obj -> getValue($conf['value_attribute']); $val = $val[0]; } if (empty($val)) { continue; } $retValues[]=$val; } } return $retValues; } } return; } /** * Retourne un tableau des objects selectionnés * * @param[in] mixed $values Tableau des valeurs de l'attribut * @param[in] boolean $fromDNs True si les valeurs passées en paramètre sont des DNs * * @author Benjamin Renard * * @retval array Tableau associatif des objects selectionés avec en clé * le DN et en valeur ce qui sera affiché. */ function getFormValues($values=NULL,$fromDNs=false) { $retInfos = array(); $DNs=array(); if (isset($this -> config['selectable_object'])) { $conf=$this -> config['selectable_object']; if (!isset($conf['object_type'])) { LSerror :: addErrorCode('LSattr_html_select_object_01',$this -> name); return; } if (!LSsession :: loadLSobject($conf['object_type'])) { return; } if (is_array($values)) { if(($conf['value_attribute']=='dn')||($conf['value_attribute']=='%{dn}')||$fromDNs) { $DNs=$values; $obj = new $conf['object_type'](); foreach($DNs as $dn) { if($obj -> loadData($dn)) { $retInfos[$dn] = $obj -> getDisplayName($conf['display_attribute']); } } } else { $filter=''; foreach($values as $val) { if (!empty($val)) { $filter.='('.$conf['value_attribute'].'='.$val.')'; } } if ($filter!='') { $filter='(|'.$filter.')'; $obj = new $conf['object_type'](); $listobj = $obj -> listObjectsName($filter,NULL,array(),$conf['display_attribute']); foreach($listobj as $dn => $name) { $DNs[]=$dn; $retInfos[$dn] = $name; } } } } else { 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 objects selectionnés avec en clé * le DN et en valeur ce qui sera affiché. */ function getValuesFromSession() { if(is_array($_SESSION['LSselect'][$this -> config['selectable_object']['object_type']])) { return $this -> getFormValues($_SESSION['LSselect'][$this -> config['selectable_object']['object_type']],true); } return false; } } /* * Error Codes */ $GLOBALS['LSerror_code']['LSattr_html_select_object_01'] = array ( 'msg' => _("LSattr_html_select_object : LSobject type is undefined (attribute : %{attr}).") ); ?>