mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-22 09:59:06 +01:00
LSioFormat: allow to generate attribute value using a custom callable
This commit is contained in:
parent
069dac2afe
commit
89ee2f1ec3
3 changed files with 26 additions and 8 deletions
|
@ -39,6 +39,9 @@ création du type d'&LSobject;. En conséquence :
|
|||
'generated_fields' => array (
|
||||
'[attribute 3]' => '[LSformat]',
|
||||
'[attribute 4]' => array('[LSformat1]', '[LSformat2]', ...)
|
||||
'[attribute 5]' => function($attrs, $row) {
|
||||
return array([...]);
|
||||
},
|
||||
[...]
|
||||
)
|
||||
),
|
||||
|
@ -85,10 +88,15 @@ création du type d'&LSobject;. En conséquence :
|
|||
<varlistentry>
|
||||
<term>generated_fields</term>
|
||||
<listitem>
|
||||
<simpara>Tableau associatif permettant de définir des &LSformats; pour générer des valeurs
|
||||
d'attributs automatiquement. Ce tableau contient en clé, le nom de l'attribut à généré,
|
||||
et en valeur associée, un ou plusieurs &LSformat; à utiliser pour générer ses valeurs. Ces
|
||||
&LSformat; sont composés à l'aide des valeurs des autres attributs de l'objet.</simpara>
|
||||
<simpara>Tableau associatif permettant de définir soit des &LSformats;, soit un
|
||||
<emphasis>callable</emphasis> (au sens PHP) pour générer les valeurs d'attributs automatiquement.
|
||||
Ce tableau contient en clé, le nom de l'attribut à générer, et en valeur associée, un ou plusieurs
|
||||
&LSformat; ou un <emphasis>callable</emphasis> à utiliser pour générer ses valeurs. En cas de
|
||||
&LSformat;, ils seront composés à l'aide des valeurs des autres attributs de l'objet. En cas d'un
|
||||
<emphasis>callable</emphasis>, il sera appeler avec en paramètre le tableau des valeurs des autres
|
||||
attributs (<literal>$attrs</literal>), le tableau des données issues du fichier source
|
||||
(<literal>$row</literal>) et devra retourner le tableau des valeurs générées de l'attribut.
|
||||
</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
|
|
@ -81,6 +81,9 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
|
|||
),
|
||||
'generated_fields' => array (
|
||||
'cn' => '%{personalTitle} %{givenName} %{sn}',
|
||||
'sambaPwdMustChange' => function($attrs, $row) {
|
||||
return array(strval(LS_SAMBA_INFINITY_TIME));
|
||||
},
|
||||
),
|
||||
),
|
||||
'myfullcsv' => array (
|
||||
|
|
|
@ -137,12 +137,19 @@ class LSioFormatDriver extends LSlog_staticLoggerClass {
|
|||
}
|
||||
foreach ($generated_fields as $attr => $formats) {
|
||||
$retone[$attr] = array();
|
||||
if (is_callable($formats)) {
|
||||
$retone[$attr] = ensureIsArray(
|
||||
call_user_func_array($formats, array($retone, $one))
|
||||
);
|
||||
}
|
||||
else {
|
||||
foreach (ensureIsArray($formats) as $format) {
|
||||
$value = getFData($format, $retone);
|
||||
if (!is_empty($value)) {
|
||||
$retone[$attr][] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (empty($retone[$attr]))
|
||||
unset($retone[$attr]);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue