LSioFormat: handle multiple formats for generated fields

This commit is contained in:
Benjamin Renard 2021-04-27 12:13:32 +02:00
parent 6d95f9bfd5
commit 7005100ac4
2 changed files with 12 additions and 7 deletions

View file

@ -38,7 +38,7 @@ création du type d'&LSobject;. En conséquence :
),
'generated_fields' => array (
'[attribute 3]' => '[LSformat]',
'[attribute 4]' => '[LSformat]',
'[attribute 4]' => array('[LSformat1]', '[LSformat2]', ...)
[...]
)
),
@ -87,8 +87,8 @@ création du type d'&LSobject;. En conséquence :
<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, le &LSformat; à utilisé. Ce &LSformat; est composé à l'aide des
valeurs des autres attributs de l'objet.</simpara>
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>
</listitem>
</varlistentry>

View file

@ -127,11 +127,16 @@ class LSioFormatDriver extends LSlog_staticLoggerClass {
if (!isset($retone[$attr])) $retone[$attr] = array();
$retone[$attr][] = $one[$key];
}
foreach ($generated_fields as $attr => $format) {
$value = getFData($format, $retone);
if (!empty($value)) {
$retone[$attr] = array($value);
foreach ($generated_fields as $attr => $formats) {
$retone[$attr] = array();
foreach (ensureIsArray($formats) as $format) {
$value = getFData($format, $retone);
if (!is_empty($value)) {
$retone[$attr][] = $value;
}
}
if (empty($retone[$attr]))
unset($retone[$attr]);
}
$retall[] = $retone;
}