LSaddon SUPANN: add support for some attributes

Add support of following attributes:
- supannCivilite:
  add supannGetCivilitePossibleValues()
- eduPersonAffiliation:
  add supannGetAffiliationPossibleValues() and
  supannCheckEduPersonAffiliation()
- supannCheckEduPersonAffiliation:
  add supannGetAffiliationPossibleValues() and
  supannCheckEduPersonPrimaryAffiliation()
- supannCheckEduPersonPrimaryAffiliation:
  add generate_eduPersonPrincipalName()
This commit is contained in:
Benjamin Renard 2020-09-22 16:11:11 +02:00
parent de62999fea
commit 43cf5ccd7a
6 changed files with 272 additions and 12 deletions

View file

@ -103,9 +103,9 @@
<sect4 id='config-LSattribute-validation-function'>
<title>Validation par l'exécution d'une fonction</title>
<para>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 <emphasis>true</emphasis>, la
validation échouera.</para>
d'une fonction de votre choix. Il lui sera passé en paramètre une référence à
l'objet <literal>LSldapObject</literal> courant. Si la fonction ne retourne
pas <emphasis>true</emphasis>, la validation échouera.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...

View file

@ -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
*

View file

@ -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 <bdauvergne@entrouvert.com>
*
* @param[in] &$ldapObject Une référence à l'object LSldapObject
* @author Benjamin Dauvergne <bdauvergne@entrouvert.com>
*
* @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 <bdauvergne@entrouvert.com>
*
* @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 <brenard@easter-eggs.com>
*
* @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']);
}

View file

@ -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 <brenard@zionetrix.net>\n"
"Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise."
"org>\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"

View file

@ -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 ""