From 1534a40c7b81a6b62016a3731c3183703b430ab5 Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Fri, 10 Feb 2023 11:19:24 +0100 Subject: [PATCH] supann: add generate_supannEntiteAffectationPrincipale --- src/includes/addons/LSaddons.supann.php | 41 +++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/includes/addons/LSaddons.supann.php b/src/includes/addons/LSaddons.supann.php index ede9b1bb..96699312 100644 --- a/src/includes/addons/LSaddons.supann.php +++ b/src/includes/addons/LSaddons.supann.php @@ -203,6 +203,47 @@ function generate_eduPersonOrgUnitDN($ldapObject) { return $retval; } + /** + * Generation de la valeur de l'attribut supannEntiteAffectationPrincipale + * à partir de la valeur de l'attribut supannEntiteAffectation si elle est unique. + * + * @author Benjamin Renard + * + * @param LSldapObject $ldapObject L'objet ldap + * + * @return array|null|false La valeur de l'attribut supannEntiteAffectationPrincipale + * ou false si il y a un problème durant la génération + */ +function generate_supannEntiteAffectationPrincipale($ldapObject) { + if ( get_class($ldapObject -> attrs[ 'supannEntiteAffectation' ]) != 'LSattribute' ) { + LSerror :: addErrorCode( + 'SUPANN_01', + array( + 'dependency' => 'supannEntiteAffectation', + 'attr' => 'supannEntiteAffectationPrincipale' + ) + ); + return false; + } + + // Si des valeurs ont été fourni pour cet attribut par l'utilisateur, on les conserve + $affectations_principales = $ldapObject -> attrs[ 'supannEntiteAffectationPrincipale' ] -> getUpdateData(); + if ($affectations_principales) return $affectations_principales; + + // Sinon on prends la valeur de supannEntiteAffectation si elle est unique + $affectations = $ldapObject -> attrs[ 'supannEntiteAffectation' ] -> getUpdateData(); + if (count($affectations) == 1) + return array($affectations[0]); + + // Sinon on garde celle existante si elle est fait toujours partie de entites d'affecations de la personne + $affectations_principales = $ldapObject -> attrs[ 'supannEntiteAffectationPrincipale' ] -> getOldValue(); + if ($affectations_principales && in_array($affectations_principales[0], $affectations)) + return array($affectations_principales[0]); + + // À défaut, l'attribut sera vide + return null; +} + /** * Generation de la valeur de l'attribut eduPersonPrimaryOrgUnitDN * à partir de la valeur de l'attribut supannEntiteAffectationPrincipale.