mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-22 18:09:06 +01:00
LSformElement_supannCompositeAttribute: add flexibility
- Add possibility to override parse/format value methods to handle different composite value formats - Add possibility to configure date components LDAP format
This commit is contained in:
parent
441b5d0af9
commit
88bb4eef49
2 changed files with 172 additions and 97 deletions
|
@ -315,6 +315,38 @@ function supannParseCompositeValue($val) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format une valeur composite SUPANN
|
||||||
|
*
|
||||||
|
* Exemple de valeur en entrée :
|
||||||
|
*
|
||||||
|
* array (
|
||||||
|
* 'key1' => 'value1',
|
||||||
|
* 'key2' => 'value2',
|
||||||
|
* 'key3' => 'value3',
|
||||||
|
* )
|
||||||
|
*
|
||||||
|
* Exemple de valeur généré :
|
||||||
|
*
|
||||||
|
* [key1=value1][key2=value2][key3=value3]
|
||||||
|
*
|
||||||
|
* Les clés sont traitées dans l'ordre d'apparition dans le tableau et
|
||||||
|
* seul les clés avec une valeur non vide sont présentes dans le résultat.
|
||||||
|
*
|
||||||
|
* @author Benjamin Renard <brenard@easter-eggs.com>
|
||||||
|
*
|
||||||
|
* @param[in] $val Tableau associatif des valeurs
|
||||||
|
*
|
||||||
|
* @retval array Un tableau contenant key->value ou false en cas d'erreur
|
||||||
|
**/
|
||||||
|
function supannFormatCompositeValue($val) {
|
||||||
|
$retval = "";
|
||||||
|
foreach($val as $k => $v)
|
||||||
|
if (!is_empty($v))
|
||||||
|
$retval .= "[".$k."=".$v.']';
|
||||||
|
return $retval;
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* Fonctions relatives aux entités
|
* Fonctions relatives aux entités
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
|
@ -69,7 +69,6 @@ class LSformElement_supannCompositeAttribute extends LSformElement {
|
||||||
|
|
||||||
var $_postParsedData=null;
|
var $_postParsedData=null;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
|
@ -103,10 +102,13 @@ class LSformElement_supannCompositeAttribute extends LSformElement {
|
||||||
|
|
||||||
case 'date':
|
case 'date':
|
||||||
case 'datetime':
|
case 'datetime':
|
||||||
$this -> components[$c]['format'] = 'd/m/Y';
|
$this -> components[$c]['timezone'] = LSconfig :: get('timezone', null, null, $this -> components[$c]);
|
||||||
|
$this -> components[$c]['naive'] = $this -> components[$c]['timezone'] == 'naive';
|
||||||
|
$this -> components[$c]['ldap_format'] = LSconfig :: get('format', null, null, $this -> components[$c]);
|
||||||
|
$this -> components[$c]['php_format'] = 'd/m/Y';
|
||||||
$this -> components[$c]['js_format'] = '%d/%m/%Y';
|
$this -> components[$c]['js_format'] = '%d/%m/%Y';
|
||||||
if (cconf['type'] == 'datetime') {
|
if (cconf['type'] == 'datetime') {
|
||||||
$this -> components[$c]['format'] .= ' H:i:s';
|
$this -> components[$c]['php_format'] .= ' H:i:s';
|
||||||
$this -> components[$c]['js_format'] .= ' %H:%M:%S';
|
$this -> components[$c]['js_format'] .= ' %H:%M:%S';
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -114,6 +116,36 @@ class LSformElement_supannCompositeAttribute extends LSformElement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse une valeur composite gérer par ce type d'attribut
|
||||||
|
*
|
||||||
|
* Par défaut, cette méthode fait appel à la fonction supannParseCompositeValue()
|
||||||
|
* fournie par le LSaddon supann, mais elle peut-être réécrite (parrallèlement à
|
||||||
|
* la méthode formatCompositeValue()) pour supporter un autre format de valeur
|
||||||
|
* composite.
|
||||||
|
*
|
||||||
|
* @param $value string La valeur à parser
|
||||||
|
* @return array|null La valeur parsée, ou NULL en cas de problème
|
||||||
|
*/
|
||||||
|
public function parseCompositeValue($value) {
|
||||||
|
return supannParseCompositeValue($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format une valeur composite gérer par ce type d'attribut
|
||||||
|
*
|
||||||
|
* Par défaut, cette méthode fait appel à la fonction supannFormatCompositeValue()
|
||||||
|
* fournie par le LSaddon supann, mais elle peut-être réécrite (parrallèlement à
|
||||||
|
* la méthode parseCompositeValue()) pour supporter un autre format de valeur
|
||||||
|
* composite.
|
||||||
|
*
|
||||||
|
* @param $value string La valeur à parser
|
||||||
|
* @return array|null|false La valeur formatée, NULL en cas de valeur vide, ou False en cas de problème
|
||||||
|
*/
|
||||||
|
public function formatCompositeValue($value) {
|
||||||
|
return supannFormatCompositeValue($value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retourne les infos d'affichage de l'élément
|
* Retourne les infos d'affichage de l'élément
|
||||||
*
|
*
|
||||||
|
@ -127,7 +159,7 @@ class LSformElement_supannCompositeAttribute extends LSformElement {
|
||||||
$parseValues=array();
|
$parseValues=array();
|
||||||
$invalidValues=array();
|
$invalidValues=array();
|
||||||
foreach($this -> values as $val) {
|
foreach($this -> values as $val) {
|
||||||
$keyValue=supannParseCompositeValue($val);
|
$keyValue = $this -> parseCompositeValue($val);
|
||||||
if ($keyValue) {
|
if ($keyValue) {
|
||||||
$parseValue=array('value' => $val);
|
$parseValue=array('value' => $val);
|
||||||
foreach($keyValue as $key => $value) {
|
foreach($keyValue as $key => $value) {
|
||||||
|
@ -247,10 +279,14 @@ class LSformElement_supannCompositeAttribute extends LSformElement {
|
||||||
|
|
||||||
case 'date':
|
case 'date':
|
||||||
case 'datetime':
|
case 'datetime':
|
||||||
$retval['datetime'] = ldapDate2DateTime($val, LSconfig :: get('timezone', null, 'string', $this -> components[$c]) == 'naive');
|
$retval['datetime'] = ldapDate2DateTime(
|
||||||
|
$val,
|
||||||
|
$this -> components[$c]['naive'],
|
||||||
|
$this -> components[$c]['ldap_format']
|
||||||
|
);
|
||||||
self :: log_trace("translateComponentValue($c, $val): datetime = ".varDump($retval['datetime']));
|
self :: log_trace("translateComponentValue($c, $val): datetime = ".varDump($retval['datetime']));
|
||||||
if ($retval['datetime']) {
|
if ($retval['datetime']) {
|
||||||
$retval['translated'] = $retval['datetime'] -> format($this -> components[$c]['format']);
|
$retval['translated'] = $retval['datetime'] -> format($this -> components[$c]['php_format']);
|
||||||
self :: log_trace("translateComponentValue($c, $val): translated = '".$retval['translated']."'");
|
self :: log_trace("translateComponentValue($c, $val): translated = '".$retval['translated']."'");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -307,7 +343,7 @@ class LSformElement_supannCompositeAttribute extends LSformElement {
|
||||||
$parseValues = array();
|
$parseValues = array();
|
||||||
$return[$this -> name] = array();
|
$return[$this -> name] = array();
|
||||||
while ($end==false) {
|
while ($end==false) {
|
||||||
$value="";
|
$value = array();
|
||||||
$parseValue = array();
|
$parseValue = array();
|
||||||
$errors = array();
|
$errors = array();
|
||||||
$unemptyComponents = array();
|
$unemptyComponents = array();
|
||||||
|
@ -322,6 +358,7 @@ class LSformElement_supannCompositeAttribute extends LSformElement {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$unemptyComponents[] = $c;
|
$unemptyComponents[] = $c;
|
||||||
|
// Handle POST component value (by type)
|
||||||
switch ($cconf['type']) {
|
switch ($cconf['type']) {
|
||||||
case 'table':
|
case 'table':
|
||||||
$pv = supannParseLabeledValue($parseValue[$c]);
|
$pv = supannParseLabeledValue($parseValue[$c]);
|
||||||
|
@ -344,11 +381,12 @@ class LSformElement_supannCompositeAttribute extends LSformElement {
|
||||||
|
|
||||||
case 'date':
|
case 'date':
|
||||||
case 'datetime':
|
case 'datetime':
|
||||||
$datetime = date_create_from_format($cconf['format'], $parseValue[$c]);
|
$datetime = date_create_from_format($cconf['php_format'], $parseValue[$c]);
|
||||||
if ($datetime) {
|
if ($datetime) {
|
||||||
$parseValue[$c] = dateTime2LdapDate(
|
$parseValue[$c] = dateTime2LdapDate(
|
||||||
$datetime,
|
$datetime,
|
||||||
LSconfig :: get('timezone', null, 'string', $cconf)
|
$this -> components[$c]['timezone'],
|
||||||
|
$this -> components[$c]['ldap_format']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -369,6 +407,7 @@ class LSformElement_supannCompositeAttribute extends LSformElement {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check component value (if configured)
|
||||||
if (isset($cconf['check_data']) && is_array($cconf['check_data'])) {
|
if (isset($cconf['check_data']) && is_array($cconf['check_data'])) {
|
||||||
foreach($cconf['check_data'] as $ruleType => $rconf) {
|
foreach($cconf['check_data'] as $ruleType => $rconf) {
|
||||||
$className='LSformRule_'.$ruleType;
|
$className='LSformRule_'.$ruleType;
|
||||||
|
@ -388,15 +427,19 @@ class LSformElement_supannCompositeAttribute extends LSformElement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$value.="[".$c."=".$parseValue[$c].']';
|
|
||||||
|
$value[$c] = $parseValue[$c];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// end of value break
|
// end of value break
|
||||||
$end=true;
|
$end=true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Format value
|
||||||
|
$value = $this -> formatCompositeValue($value);
|
||||||
|
|
||||||
if (!$end) {
|
if (!$end) {
|
||||||
if (!empty($unemptyComponents)) {
|
if (!empty($unemptyComponents)) {
|
||||||
foreach($errors as $e) {
|
foreach($errors as $e) {
|
||||||
|
|
Loading…
Reference in a new issue