diff --git a/doc/conf/LSattribute/LSattr_ldap.docbook b/doc/conf/LSattribute/LSattr_ldap.docbook index d7d563a1..aced44c1 100644 --- a/doc/conf/LSattribute/LSattr_ldap.docbook +++ b/doc/conf/LSattribute/LSattr_ldap.docbook @@ -5,6 +5,7 @@ &conf-LSattr_ldap_ascii; &conf-LSattr_ldap_boolean; + &conf-LSattr_ldap_compositeValueToJSON; &conf-LSattr_ldap_date; &conf-LSattr_ldap_image; &conf-LSattr_ldap_numeric; diff --git a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap.entities.xml b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap.entities.xml index 9cf9b70a..ee8af9b6 100644 --- a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap.entities.xml +++ b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap.entities.xml @@ -1,6 +1,7 @@ + diff --git a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_compositeValueToJSON.docbook b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_compositeValueToJSON.docbook new file mode 100644 index 00000000..6f9a0fd5 --- /dev/null +++ b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_compositeValueToJSON.docbook @@ -0,0 +1,9 @@ + + LSattr_ldap_compositeValueToJSON + Ce type est utilisé pour la gestion des attributs composites dont les + valeurs respectent le format suivant : + [key1=value1][key2=value2][...] + Ce type d'attribut LDAP sera utilisé pour convertir la valeur en son + équivalent JSON pour pouvoir être traité à l'aide du type d' + attribut HTML &LSattr_html_jsonCompositeAttribute;. + diff --git a/public_html/includes/class/class.LSattr_ldap_compositeValueToJSON.php b/public_html/includes/class/class.LSattr_ldap_compositeValueToJSON.php new file mode 100644 index 00000000..5cf3e770 --- /dev/null +++ b/public_html/includes/class/class.LSattr_ldap_compositeValueToJSON.php @@ -0,0 +1,90 @@ + $val) + $ret[$key] = json_encode(self :: parseValue($val)); + return $ret; + } + return $data; + } + + /** + * Retourne la valeur de l'attribut après traitement lié à son type ldap + * + * @param[in] $data mixed La valeur de l'attribut + * + * @retval mixed La valeur traitée de l'attribut + */ + function getUpdateData($data) { + if ($data) { + if (!is_array($data)) + $data = array($data); + $ret = array(); + foreach($data as $key => $val) + $ret[$key] = self :: encodeValue(json_decode($val, true)); + return $ret; + } + return $data; + } + + function parseValue($value) { + if (preg_match_all('/\[([^=]*)=([^\]]*)\]/',$value,$matches)) { + $parseValue=array(); + for($i=0;$i $val) + $ret.="[$key=$val]"; + return $ret; + } + return False; + } +}