mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-22 18:09: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 (
|
'generated_fields' => array (
|
||||||
'[attribute 3]' => '[LSformat]',
|
'[attribute 3]' => '[LSformat]',
|
||||||
'[attribute 4]' => array('[LSformat1]', '[LSformat2]', ...)
|
'[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>
|
<varlistentry>
|
||||||
<term>generated_fields</term>
|
<term>generated_fields</term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<simpara>Tableau associatif permettant de définir des &LSformats; pour générer des valeurs
|
<simpara>Tableau associatif permettant de définir soit des &LSformats;, soit un
|
||||||
d'attributs automatiquement. Ce tableau contient en clé, le nom de l'attribut à généré,
|
<emphasis>callable</emphasis> (au sens PHP) pour générer les valeurs d'attributs automatiquement.
|
||||||
et en valeur associée, un ou plusieurs &LSformat; à utiliser pour générer ses valeurs. Ces
|
Ce tableau contient en clé, le nom de l'attribut à générer, et en valeur associée, un ou plusieurs
|
||||||
&LSformat; sont composés à l'aide des valeurs des autres attributs de l'objet.</simpara>
|
&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>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
|
|
@ -81,6 +81,9 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
|
||||||
),
|
),
|
||||||
'generated_fields' => array (
|
'generated_fields' => array (
|
||||||
'cn' => '%{personalTitle} %{givenName} %{sn}',
|
'cn' => '%{personalTitle} %{givenName} %{sn}',
|
||||||
|
'sambaPwdMustChange' => function($attrs, $row) {
|
||||||
|
return array(strval(LS_SAMBA_INFINITY_TIME));
|
||||||
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
'myfullcsv' => array (
|
'myfullcsv' => array (
|
||||||
|
|
|
@ -137,12 +137,19 @@ class LSioFormatDriver extends LSlog_staticLoggerClass {
|
||||||
}
|
}
|
||||||
foreach ($generated_fields as $attr => $formats) {
|
foreach ($generated_fields as $attr => $formats) {
|
||||||
$retone[$attr] = array();
|
$retone[$attr] = array();
|
||||||
|
if (is_callable($formats)) {
|
||||||
|
$retone[$attr] = ensureIsArray(
|
||||||
|
call_user_func_array($formats, array($retone, $one))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
foreach (ensureIsArray($formats) as $format) {
|
foreach (ensureIsArray($formats) as $format) {
|
||||||
$value = getFData($format, $retone);
|
$value = getFData($format, $retone);
|
||||||
if (!is_empty($value)) {
|
if (!is_empty($value)) {
|
||||||
$retone[$attr][] = $value;
|
$retone[$attr][] = $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (empty($retone[$attr]))
|
if (empty($retone[$attr]))
|
||||||
unset($retone[$attr]);
|
unset($retone[$attr]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue