diff --git a/doc/conf/LSattribute/validation.docbook b/doc/conf/LSattribute/validation.docbook
index cf1f76ae..e6b4970c 100644
--- a/doc/conf/LSattribute/validation.docbook
+++ b/doc/conf/LSattribute/validation.docbook
@@ -3,7 +3,7 @@
Cette section décrit la manière de configurer des règles de vérification
d'intégrité sur les données des attributs. Il est possible de valider la valeur
de l'attribut par l'intermédiraire de la vérification de résultat d'une
- recherche paramètrable dans l'annuaire ou encore d'appeler une fonction de
+ recherche paramètrable dans l'annuaire ou encore d'appeler une fonction de
votre choix pour effectuer la vérification voulue.
@@ -12,7 +12,7 @@
pas en conflit avec d'autres objets de l'annuaire. Ce test peut également
permetre de vérifier si les valeurs devant faire référence à d'autres objets
de l'annuaire sont correctes.
-
+
Structure...
array (
@@ -103,10 +103,10 @@
Validation par l'exécution d'une fonction
Il est possible d'effectuer la validation de l'attribut par l'exécution
- d'une fonction de votre choix. Il lui sera passé en paramètre le LSobject
- complet. Si la fonction ne retourne pas true, la
- validation échouera.
-
+ d'une fonction de votre choix. Il lui sera passé en paramètre une référence à
+ l'objet LSldapObject courant. Si la fonction ne retourne
+ pas true, la validation échouera.
+
Structure...
array (
diff --git a/src/conf/LSaddons/config.LSaddons.supann.php b/src/conf/LSaddons/config.LSaddons.supann.php
index f6ebbea8..86a6b249 100644
--- a/src/conf/LSaddons/config.LSaddons.supann.php
+++ b/src/conf/LSaddons/config.LSaddons.supann.php
@@ -45,6 +45,32 @@ $GLOBALS['LS_SUPANN_ETABLISSEMENT_DN'] = 'supannCodeEntite=XXX,ou=structures,dc=
// Exemple : 0753742K
$GLOBALS['LS_SUPANN_ETABLISSEMENT_UAI'] = '0753742K';
+// LSformat de l'attribut eduPersonPrincipalName
+$GLOBALS['LS_SUPANN_EPPN_FORMAT'] = "%{uid}@univ.fr";
+
+// Liste des valeurs possibles des affiliations et leur label
+$GLOBALS['LS_SUPANN_AFFILIATIONS'] = array (
+ 'affiliate' => ___('Affiliate'),
+ 'alum' => ___('Alumnus'),
+ 'employee' => ___('Employee'),
+ 'faculty' => ___('Faculty'),
+ 'member' => ___('Member'),
+ 'student' => ___('Student'),
+ 'retired' => ___('Retired'),
+ 'teacher' => ___('Teacher'),
+ 'staff' => ___('Staff'),
+ 'researcher' => ___('Researcher'),
+ 'emeritus' => ___('Emeritus teacher'),
+ 'library-walk-in' => ___('Library - walk-in'),
+ 'registered-reader' => ___('Library - registered'),
+);
+
+// Liste des valeurs possibles de la civilité d'une personne et leur label
+$GLOBALS['LS_SUPANN_CIVILITES'] = array (
+ 'Mme' => ___('Mrs.'),
+ 'M.' => ___('Mr.'),
+);
+
/*
* Nomenclatures SUPANN
*
diff --git a/src/includes/addons/LSaddons.supann.php b/src/includes/addons/LSaddons.supann.php
index 40213d48..4eb30f34 100644
--- a/src/includes/addons/LSaddons.supann.php
+++ b/src/includes/addons/LSaddons.supann.php
@@ -57,7 +57,8 @@ LSerror :: defineError('SUPANN_02',
'LS_SUPANN_LSOBJECT_ENTITE_TYPE',
'LS_SUPANN_LSOBJECT_ENTITE_FORMAT_SHORTNAME',
'LS_SUPANN_ETABLISSEMENT_UAI',
- 'LS_SUPANN_ETABLISSEMENT_DN'
+ 'LS_SUPANN_ETABLISSEMENT_DN',
+ 'LS_SUPANN_EPPN_FORMAT',
);
foreach($MUST_DEFINE_STRING as $string) {
@@ -74,6 +75,8 @@ LSerror :: defineError('SUPANN_02',
}
$MUST_DEFINE_ARRAY= array(
+ 'LS_SUPANN_CIVILITES',
+ 'LS_SUPANN_AFFILIATIONS',
'supannNomenclatures',
);
foreach($MUST_DEFINE_ARRAY as $array) {
@@ -425,3 +428,114 @@ LSerror :: defineError('SUPANN_02',
}
return $retval;
}
+
+/**
+ * Retourne les valeurs possibles de l'attribut supannCivilite.
+ *
+ * Cette fonction est prévue pour pouvoir être utilisé comme paramètre
+ * get_possible_values de la configuration HTML de l'attribut
+ * supannCivilite avec un type d'attribut HTML select_list (ou select_box).
+ *
+ * @param[in] $options La configuration HTML de l'attribut
+ * @param[in] $name Le nom de l'attribut
+ * @param[in] &$ldapObject Une référence à l'object LSldapObject
+ *
+ * @retval array Tableau contenant les valeurs possibles de l'attribut
+ * (avec les labels traduits).
+ **/
+function supannGetCivilitePossibleValues($options, $name, &$ldapObject) {
+ $retval = array();
+ foreach($GLOBALS['LS_SUPANN_CIVILITES'] as $value => $label)
+ $retval[$value] = __($label);
+ return $retval;
+}
+
+/**
+ * Retourne les valeurs possibles des affiliations.
+ *
+ * Cette fonction est prévue pour pouvoir être utilisé comme paramètre
+ * get_possible_values de la configuration HTML de l'attribut
+ * eduPersonAffiliation (par exemple) avec un type d'attribut HTML select_list.
+ *
+ * @param[in] $options La configuration HTML de l'attribut
+ * @param[in] $name Le nom de l'attribut
+ * @param[in] &$ldapObject Une référence à l'object LSldapObject
+ *
+ * @retval array Tableau contenant les valeurs possibles de l'attribut
+ * (avec les labels traduits).
+ **/
+function supannGetAffiliationPossibleValues($options, $name, &$ldapObject) {
+ $retval = array();
+ foreach($GLOBALS['LS_SUPANN_AFFILIATIONS'] as $value => $label)
+ $retval[$value] = __($label);
+ return $retval;
+}
+
+/**
+ * Vérifie les valeurs de l'attribut eduPersonAffiliation
+ *
+ * Cette fonction est prévue pour pouvoir être utilisé comme paramètre
+ * function de la configuration de validation de l'intégrité des valeurs
+ * de l'attribut eduPersonAffiliation (paramètre validation).
+ *
+ * Elle s'assure que des valeurs affiliate et member n'ont pas été toutes
+ * les deux selectionnées, car elles sont incompatibles.
+ *
+ * @author Benjamin Dauvergne
+ *
+ * @param[in] &$ldapObject Une référence à l'object LSldapObject
+ * @author Benjamin Dauvergne
+ *
+ * @retval boolean True si les valeurs sont valides, False sinon
+ **/
+global $_supannCheckEduPersonAffiliation_checked;
+$_supannCheckEduPersonAffiliation_checked = false;
+function supannCheckEduPersonAffiliation(&$ldapObject) {
+ global $_supannCheckEduPersonAffiliation_checked;
+ $values = $ldapObject->getValue('eduPersonAffiliation');
+
+ if (!$_supannCheckEduPersonAffiliation_checked && in_array('affiliate', $values) && in_array('member', $values)) {
+ $_supannCheckEduPersonAffiliation_checked = true;
+ return false;
+ }
+ return true;
+}
+
+/**
+ * Vérifie la valeur de l'attribut eduPersonPrimaryAffiliation
+ *
+ * Cette fonction est prévue pour pouvoir être utilisé comme paramètre
+ * function de la configuration de validation de l'intégrité des valeurs
+ * de l'attribut eduPersonPrimaryAffiliation (paramètre validation).
+ *
+ * Elle s'assure que la valeur de l'attribut eduPersonPrimaryAffiliation
+ * fait bien partie des valeurs de l'attribut eduPersonAffiliation.
+ *
+ * @author Benjamin Dauvergne
+ *
+ * @param[in] &$ldapObject Une référence à l'object LSldapObject
+ *
+ * @retval boolean True si la valeur est valide, False sinon
+ **/
+function supannCheckEduPersonPrimaryAffiliation(&$ldapObject) {
+ $primary = $ldapObject->getValue('eduPersonPrimaryAffiliation');
+ $affiliations = $ldapObject->getValue('eduPersonAffiliation');
+ if (!array_intersect($primary, $affiliations))
+ return false;
+ return true;
+}
+
+/**
+ * Géneration de la valeur de l'attribut eduPersonPrincipalName
+ * à partir du LSformat configuré dans $GLOBALS['LS_SUPANN_EPPN_FORMAT']
+ *
+ * @author Benjamin Renard
+ *
+ * @param[in] $ldapObject L'objet ldap
+ *
+ * @retval array La valeur de l'attribut eduPersonOrgDN ou false
+ * si il y a un problème durant la génération
+ */
+function generate_eduPersonPrincipalName($ldapObject) {
+ return $ldapObject -> getFData($GLOBALS['LS_SUPANN_EPPN_FORMAT']);
+}
diff --git a/src/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.mo b/src/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.mo
index 7df6033a..4e410787 100644
Binary files a/src/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.mo and b/src/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.mo differ
diff --git a/src/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.po b/src/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.po
index 8e816da1..3feb29a2 100644
--- a/src/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.po
+++ b/src/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: LdapSaisie\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-09-22 14:32+0200\n"
+"PO-Revision-Date: 2020-09-22 16:20+0200\n"
"Last-Translator: Benjamin Renard \n"
"Language-Team: LdapSaisie \n"
@@ -208,11 +208,11 @@ msgstr ""
"Support SUPANN : Impossible de récupérer le basedn des entités. Impossible "
"de générer l'attribut %{attr}."
-#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:313
+#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:316
msgid "Entity %{id} (unrecognized)"
msgstr "Entité %{id} (non-reconnue)"
-#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:408
+#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:411
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select.php:58
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:102
msgid "%{value} (unrecognized value)"
@@ -2342,6 +2342,66 @@ msgstr "[pas une chaîne de caractères]"
msgid "Folder not found"
msgstr "Dossier introuvable"
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:53
+msgid "Affiliate"
+msgstr "Affilié"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:54
+msgid "Alumnus"
+msgstr "Ancien apprenant"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:55
+msgid "Employee"
+msgstr "Employé"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:56
+msgid "Faculty"
+msgstr "Faculté"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:57
+msgid "Member"
+msgstr "Membre"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:58
+msgid "Student"
+msgstr "Étudiant"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:59
+msgid "Retired"
+msgstr "Retraité"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:60
+msgid "Teacher"
+msgstr "Enseignant"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:61
+msgid "Staff"
+msgstr "Staff"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:62
+msgid "Researcher"
+msgstr "Chercheur"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:63
+msgid "Emeritus teacher"
+msgstr "Professeur émérite"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:64
+msgid "Library - walk-in"
+msgstr "Bibliothèque - Accès libre"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:65
+msgid "Library - registered"
+msgstr "Bibliothèque - Inscrit"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:70
+msgid "Mrs."
+msgstr "Madame"
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:71
+msgid "Mr."
+msgstr "Monsieur"
+
#: templates/default/LSaccessRightsMatrixView.tpl:18
msgid "Attributes / Profiles"
msgstr "Attributs / Profils"
diff --git a/src/lang/ldapsaisie.pot b/src/lang/ldapsaisie.pot
index a0c6eafe..597643dc 100644
--- a/src/lang/ldapsaisie.pot
+++ b/src/lang/ldapsaisie.pot
@@ -157,11 +157,11 @@ msgid ""
"attribute %{attr}."
msgstr ""
-#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:313
+#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:316
msgid "Entity %{id} (unrecognized)"
msgstr ""
-#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:408
+#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.supann.php:411
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select.php:58
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:102
msgid "%{value} (unrecognized value)"
@@ -1995,6 +1995,66 @@ msgstr ""
msgid "Folder not found"
msgstr ""
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:53
+msgid "Affiliate"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:54
+msgid "Alumnus"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:55
+msgid "Employee"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:56
+msgid "Faculty"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:57
+msgid "Member"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:58
+msgid "Student"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:59
+msgid "Retired"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:60
+msgid "Teacher"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:61
+msgid "Staff"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:62
+msgid "Researcher"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:63
+msgid "Emeritus teacher"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:64
+msgid "Library - walk-in"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:65
+msgid "Library - registered"
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:70
+msgid "Mrs."
+msgstr ""
+
+#: /home/brenard/dev/ldapsaisie_clean3/src/conf/LSaddons/config.LSaddons.supann.php:71
+msgid "Mr."
+msgstr ""
+
#: templates/default/LSaccessRightsMatrixView.tpl:18
msgid "Attributes / Profiles"
msgstr ""