amélioration gestion champs nom

FossilOrigin-Name: 2e194af9739c1603c6471619fe3b9720beb014d8d11442d01a42fc722ca9e790
This commit is contained in:
engel 2022-03-25 19:28:57 +00:00
parent 7d4d305cfa
commit 3e53f19453
8 changed files with 72 additions and 38 deletions

View file

@ -257,6 +257,53 @@ class Utils
return $anneesFiscales;
}
/**
* récupérer dans la config du plugin les champs des membres
* utilisés pour le nom et le prénom ; ajouter/supprimer les
* modifications par rapport à la config garradin
* @return tableau des champs : clé = nom, valeur = { titre, position }
*/
public static function getChampsNom($config, $plugin) : array
{
// récupérer dans la config du plugin les champs mémorisés
// pour le nom et le prénom (le tableau est vide si pas mémorisé)
$champsNom = (array) $plugin->getConfig('champsNom');
// récupérer dans la config Garradin les champs des membres
// utilisés pour le nom et le préno
$champsGarradin = $config->get('champs_membres')->listAssocNames();
foreach ($champsGarradin as $name => $title)
{
if (stristr($title, 'nom'))
{
// retenir les champs dont le titre contient le term 'nom'
// est-il présent dans la config du plugin ?
if (! array_key_exists($name, $champsNom))
{
// absent => l'ajouter
$champ = new \stdClass();
$champ->titre = $title;
$champ->position = 0;
$champsNom[$name] = $champ;
}
}
}
// opération symétrique : un champ mémorisé dans la config du
// plugin a-t-il disparu de la config garradin ?
foreach ($champsNom as $nom => $champ)
{
if (! array_key_exists($nom, $champsGarradin))
{
// absent => le supprimer
unset($champsNom[$nom]);
}
}
// mettre à jour la config du plugin
$plugin->setConfig('champsNom', $champsNom);
return $champsNom;
}
/**
* enregistrer les fichiers dans une archive zip
* @param $fileList : liste des fichiers à archiver