diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_password.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_password.docbook
index c4f54df4..ecbfa7ce 100644
--- a/doc/conf/LSattribute/LSattr_html/LSattr_html_password.docbook
+++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_password.docbook
@@ -15,8 +15,8 @@
'nb' => [nb caractères],
'chars' => '[liste de caractères possibles]'
),
- '[autre liste de caractères possible]', // Liste caractère avec un nombre
- // d'apparitions égal à 1
+ '[autre liste de caractères possibles]', // Liste caractère avec un nombre
+ // d'apparitions égal à 1
...
),
'use_pwgen' => [booléen], // Utiliser pwgen pour la génération du mot de passe
@@ -28,6 +28,7 @@
'subject' => "[LSformat du sujet du mail]",
'msg' => "[LSformat du message du mail]",
'mail_attr' => 'mail', // Attribut mail de l'objet
+ 'get_mail_attr_function' => '[function]', // Fonction retournant l'attribut mail de l'objet
'send' => 1, // Activation par défaut de l'envoi du mot de passe
'ask' => 1, // Laisser le choix à l'utilisateur
'canEdit' => 1 // Activation de l'édition du LSformat du message par l'utilisateur
@@ -211,6 +212,19 @@
+
+ get_mail_attr_function
+
+ Nom de la fonction (ou callable au sens PHP)
+ qui sera utilisé pour récupérer le nom de l'attribut listant les mails
+ possibles de l'utilisateur. Cette fonction prendra en paramètre, l'objet
+ LSformElement courant et devra retourner une valeur
+ équivalente au paramètre de configuration mail_attr.
+ Si ce paramètre est défini, il prévalera toujours sur le paramètre
+ mail_attr.
+
+
+
bcc
diff --git a/public_html/includes/class/class.LSformElement_password.php b/public_html/includes/class/class.LSformElement_password.php
index d810a61c..34ad3cb6 100644
--- a/public_html/includes/class/class.LSformElement_password.php
+++ b/public_html/includes/class/class.LSformElement_password.php
@@ -154,6 +154,7 @@ class LSformElement_password extends LSformElement {
);
if (isset($this -> params['html_options']['mail'])) {
$params['mail'] = $this -> params['html_options']['mail'];
+ $params['mail']['mail_attr'] = $this -> getMailAttrs();
}
LSsession :: addJSconfigParam($this -> name,$params);
@@ -208,13 +209,35 @@ class LSformElement_password extends LSformElement {
return $find;
}
}
-
+
+ function getMailAttrs() {
+ if (!isset($this -> params['html_options']['mail']) || !is_array($this -> params['html_options']['mail']))
+ return False;
+ if (isset($this -> params['html_options']['mail']['get_mail_attr_function'])) {
+ if (is_callable($this -> params['html_options']['mail']['get_mail_attr_function'])) {
+ try {
+ return call_user_func_array($this -> params['html_options']['mail']['get_mail_attr_function'], array(&$this));
+ }
+ catch(Exception $e) {
+ LSerror :: addErrorCode('LSformElement_password_05', $e->getMessage());
+ }
+ }
+ else {
+ LSerror :: addErrorCode('LSformElement_password_04');
+ return False;
+ }
+ }
+ elseif (isset($this -> params['html_options']['mail']['mail_attr'])) {
+ return $this -> params['html_options']['mail']['mail_attr'];
+ }
+ }
+
function send($params) {
if (is_array($this -> sendMail)) {
$mail = (String)$this -> sendMail['mail'];
Lsdebug($mail);
if ($mail=="") {
- $mail_attrs = $this -> params['html_options']['mail']['mail_attr'];
+ $mail_attrs = $this -> getMailAttrs();
if (!is_array($mail_attrs)) {
$mail_attrs=array($mail_attrs);
}
@@ -346,3 +369,9 @@ _("LSformElement_password : Contact mail invalid (%{mail}). Can't send password.
LSerror :: defineError('LSformElement_password_03',
_("LSformElement_password : Fail to exec pwgen. Check it's correctly installed.")
);
+LSerror :: defineError('LSformElement_password_04',
+_("LSformElement_password : Fail to determine witch e-mail attribute to use to send new password : get_mail_attr_function parameter not refer to a valid function.")
+);
+LSerror :: defineError('LSformElement_password_05',
+_("LSformElement_password : Fail to determine witch e-mail attribute to use to send new password : get_mail_attr_function throwed an exception : %{msg}")
+);
diff --git a/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.mo b/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.mo
index 70fcdfc3..50ad200d 100644
Binary files a/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.mo and b/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.mo differ
diff --git a/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.po b/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.po
index 112b89e3..8df41cce 100644
--- a/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.po
+++ b/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: LdapSaisie\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 14:50+0200\n"
-"PO-Revision-Date: 2017-10-12 14:50+0100\n"
+"POT-Creation-Date: 2018-02-08 18:12+0100\n"
+"PO-Revision-Date: 2018-02-08 18:13+0100\n"
"Last-Translator: Benjamin Renard \n"
"Language-Team: LdapSaisie \n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-Basepath: /var/www/ldapsaisie/trunk\n"
-"X-Generator: Poedit 1.6.10\n"
+"X-Generator: Poedit 1.8.11\n"
#: view.php:44 modify.php:54
#: includes/class/class.LSformElement_supannCompositeAttribute.php:106
@@ -1218,30 +1218,49 @@ msgstr ""
msgid "Modify the mail sent to notice the user"
msgstr "Modifier mail de notification de l'utilisateur"
-#: includes/class/class.LSformElement_password.php:261
+#: includes/class/class.LSformElement_password.php:284
msgid "Notice mail sent."
msgstr "Le mail de notification a été envoyé."
-#: includes/class/class.LSformElement_password.php:341
+#: includes/class/class.LSformElement_password.php:364
msgid "LSformElement_password : No contact mail available to send password."
msgstr ""
"LSformElement_password : Aucun mail de contact disponible pour envoyer le "
"mot de passe."
-#: includes/class/class.LSformElement_password.php:344
+#: includes/class/class.LSformElement_password.php:367
msgid ""
"LSformElement_password : Contact mail invalid (%{mail}). Can't send password."
msgstr ""
"LSformElement_password : Mail de contact invalide (%{mail}). Impossible "
"d'envoyer le mot de passe."
-#: includes/class/class.LSformElement_password.php:347
+#: includes/class/class.LSformElement_password.php:370
msgid ""
"LSformElement_password : Fail to exec pwgen. Check it's correctly installed."
msgstr ""
"LSformElement_password : Impossible d'exécuter pwgen. Vérifier qu'il est "
"bien installé."
+#: includes/class/class.LSformElement_password.php:373
+msgid ""
+"LSformElement_password : Fail to determine witch e-mail attribute to use to "
+"send new password : get_mail_attr_function parameter not refer to a valid "
+"function."
+msgstr ""
+"LSformElement_password : Impossible de déterminer quel attribut e-mail doit "
+"être utilisé pour l'envoi du mot de passe : le paramètre "
+"get_mail_attr_function ne fait pas référence à une fonction valide."
+
+#: includes/class/class.LSformElement_password.php:376
+msgid ""
+"LSformElement_password : Fail to determine witch e-mail attribute to use to "
+"send new password : get_mail_attr_function throwed an exception : %{msg}"
+msgstr ""
+"LSformElement_password : Impossible de déterminer quel attribut e-mail doit "
+"être utilisé pour l'envoi du mot de passe : le fonction "
+"get_mail_attr_function a déclenchée une exception : %{msg}."
+
#: includes/class/class.LSformElement_url.php:51
msgid "Display this website."
msgstr "Afficher le site internet."
@@ -1484,38 +1503,38 @@ msgstr "Étape"
msgid "Pedagogical element"
msgstr "Élement pédagogique"
-#: includes/class/class.LSsearch.php:1037
+#: includes/class/class.LSsearch.php:1043
msgid "Actions"
msgstr "Actions"
-#: includes/class/class.LSsearch.php:1040
+#: includes/class/class.LSsearch.php:1046
msgid "This search didn't get any result."
msgstr "Cette recherche n'a retournée aucun résultat"
-#: includes/class/class.LSsearch.php:1292
+#: includes/class/class.LSsearch.php:1298
msgid "LSsearch : Invalid filter : %{filter}."
msgstr "LSsearch : Filtre invalide : %{filter}."
-#: includes/class/class.LSsearch.php:1295
+#: includes/class/class.LSsearch.php:1301
msgid "LSsearch : Invalid basedn : %{basedn}."
msgstr "LSsearch : Base DN invalide."
-#: includes/class/class.LSsearch.php:1298
+#: includes/class/class.LSsearch.php:1304
msgid "LSsearch : Invalid value for %{param} parameter."
msgstr "LSsearch : La valeur du paramètre %{param} est incorrecte."
-#: includes/class/class.LSsearch.php:1301
+#: includes/class/class.LSsearch.php:1307
msgid ""
"LSsearch : Invalid size limit. Must be an integer greater or equal to 0."
msgstr ""
"LSsearch : Limite de taille de recherche invalide. Elle doit être un entier "
"supérieur ou égal à 0."
-#: includes/class/class.LSsearch.php:1304
+#: includes/class/class.LSsearch.php:1310
msgid "LSsearch : Invalid parameter %{attr}. Must be an boolean."
msgstr "LSsearch : Paramètre %{param} invalide. Il doit être un booléen."
-#: includes/class/class.LSsearch.php:1307
+#: includes/class/class.LSsearch.php:1313
msgid ""
"LSsearch : Invalid parameter attributes. Must be an string or an array of "
"strings."
@@ -1523,13 +1542,13 @@ msgstr ""
"LSsearch : Paramètre 'attributes' invalide. Il doit être une chaîne de "
"caractères ou un tableau de chaînes de caractères."
-#: includes/class/class.LSsearch.php:1310
+#: includes/class/class.LSsearch.php:1316
msgid "LSsearch : Can't build attributes list for make filter."
msgstr ""
"LSsearch : Impossible de construire la liste des attributs pour faire le "
"filtre."
-#: includes/class/class.LSsearch.php:1313
+#: includes/class/class.LSsearch.php:1319
msgid ""
"LSsearch : Error building filter with attribute '%{attr}' and pattern "
"'%{pattern}'"
@@ -1537,34 +1556,34 @@ msgstr ""
"LSsearch : Problème en construisant le filtre avec l'attribut '%{attr}' et "
"le mot clé '%{pattern}'"
-#: includes/class/class.LSsearch.php:1316
+#: includes/class/class.LSsearch.php:1322
msgid "LSsearch : Error combining filters."
msgstr "LSsearch : Problème en combinant les filtres."
-#: includes/class/class.LSsearch.php:1319
+#: includes/class/class.LSsearch.php:1325
msgid "LSsearch : Invalid pattern."
msgstr "LSsearch : Mot clé invalide."
-#: includes/class/class.LSsearch.php:1322
+#: includes/class/class.LSsearch.php:1328
msgid "LSsearch : Invalid attribute %{attr} in parameters."
msgstr "LSsearch : Attribut %{attr} incorrect dans les paramètres."
-#: includes/class/class.LSsearch.php:1325
+#: includes/class/class.LSsearch.php:1331
msgid "LSsearch : Error during the search."
msgstr "LSsearch : Erreur pendant la recherche."
-#: includes/class/class.LSsearch.php:1328
+#: includes/class/class.LSsearch.php:1334
msgid "LSsearch : Error sorting the search."
msgstr "LSsearch : Erreur pendant le trie de la recherche."
-#: includes/class/class.LSsearch.php:1331
+#: includes/class/class.LSsearch.php:1337
msgid ""
"LSsearch : The function of the custum information %{name} is not callable."
msgstr ""
"LSsearch : La fonction de l'information personnalisée %{name} n'est pas "
"exécutable."
-#: includes/class/class.LSsearch.php:1334
+#: includes/class/class.LSsearch.php:1340
msgid ""
"LSsearch : Invalid predefinedFilter for LSobject type %{type} : %{label} "
"(filter : %{filter})."
@@ -1572,7 +1591,7 @@ msgstr ""
"LSsearch : PredefinedFilter invalide pour le type d'LSobject %{type} : "
"%{label} (filtre : %{filter})."
-#: includes/class/class.LSsearch.php:1337
+#: includes/class/class.LSsearch.php:1343
msgid "LSsearch : Error during execution of the custom action %{customAction}."
msgstr ""
"LSldapObject : Erreur durant l'exécution de l'action personnalisée "
@@ -1650,7 +1669,7 @@ msgstr "Erreur inconnu : %{error}"
msgid "PHP error : %{error}"
msgstr "Erreur PHP : %{error}"
-#: includes/class/class.LSsearchEntry.php:250
+#: includes/class/class.LSsearchEntry.php:257
msgid ""
"LSsearchEntry : Invalid formaterFunction %{func} for extraDisplayedColumns "
"%{column}."
diff --git a/public_html/lang/ldapsaisie.pot b/public_html/lang/ldapsaisie.pot
index 31a2813e..87980c5d 100644
--- a/public_html/lang/ldapsaisie.pot
+++ b/public_html/lang/ldapsaisie.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-12 14:50+0200\n"
+"POT-Creation-Date: 2018-02-08 18:12+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -1040,24 +1040,37 @@ msgstr ""
msgid "Modify the mail sent to notice the user"
msgstr ""
-#: includes/class/class.LSformElement_password.php:261
+#: includes/class/class.LSformElement_password.php:284
msgid "Notice mail sent."
msgstr ""
-#: includes/class/class.LSformElement_password.php:341
+#: includes/class/class.LSformElement_password.php:364
msgid "LSformElement_password : No contact mail available to send password."
msgstr ""
-#: includes/class/class.LSformElement_password.php:344
+#: includes/class/class.LSformElement_password.php:367
msgid ""
"LSformElement_password : Contact mail invalid (%{mail}). Can't send password."
msgstr ""
-#: includes/class/class.LSformElement_password.php:347
+#: includes/class/class.LSformElement_password.php:370
msgid ""
"LSformElement_password : Fail to exec pwgen. Check it's correctly installed."
msgstr ""
+#: includes/class/class.LSformElement_password.php:373
+msgid ""
+"LSformElement_password : Fail to determine witch e-mail attribute to use to "
+"send new password : get_mail_attr_function parameter not refer to a valid "
+"function."
+msgstr ""
+
+#: includes/class/class.LSformElement_password.php:376
+msgid ""
+"LSformElement_password : Fail to determine witch e-mail attribute to use to "
+"send new password : get_mail_attr_function throwed an exception : %{msg}"
+msgstr ""
+
#: includes/class/class.LSformElement_url.php:51
msgid "Display this website."
msgstr ""
@@ -1280,83 +1293,83 @@ msgstr ""
msgid "Pedagogical element"
msgstr ""
-#: includes/class/class.LSsearch.php:1037
+#: includes/class/class.LSsearch.php:1043
msgid "Actions"
msgstr ""
-#: includes/class/class.LSsearch.php:1040
+#: includes/class/class.LSsearch.php:1046
msgid "This search didn't get any result."
msgstr ""
-#: includes/class/class.LSsearch.php:1292
+#: includes/class/class.LSsearch.php:1298
msgid "LSsearch : Invalid filter : %{filter}."
msgstr ""
-#: includes/class/class.LSsearch.php:1295
+#: includes/class/class.LSsearch.php:1301
msgid "LSsearch : Invalid basedn : %{basedn}."
msgstr ""
-#: includes/class/class.LSsearch.php:1298
+#: includes/class/class.LSsearch.php:1304
msgid "LSsearch : Invalid value for %{param} parameter."
msgstr ""
-#: includes/class/class.LSsearch.php:1301
+#: includes/class/class.LSsearch.php:1307
msgid ""
"LSsearch : Invalid size limit. Must be an integer greater or equal to 0."
msgstr ""
-#: includes/class/class.LSsearch.php:1304
+#: includes/class/class.LSsearch.php:1310
msgid "LSsearch : Invalid parameter %{attr}. Must be an boolean."
msgstr ""
-#: includes/class/class.LSsearch.php:1307
+#: includes/class/class.LSsearch.php:1313
msgid ""
"LSsearch : Invalid parameter attributes. Must be an string or an array of "
"strings."
msgstr ""
-#: includes/class/class.LSsearch.php:1310
+#: includes/class/class.LSsearch.php:1316
msgid "LSsearch : Can't build attributes list for make filter."
msgstr ""
-#: includes/class/class.LSsearch.php:1313
+#: includes/class/class.LSsearch.php:1319
msgid ""
"LSsearch : Error building filter with attribute '%{attr}' and pattern "
"'%{pattern}'"
msgstr ""
-#: includes/class/class.LSsearch.php:1316
+#: includes/class/class.LSsearch.php:1322
msgid "LSsearch : Error combining filters."
msgstr ""
-#: includes/class/class.LSsearch.php:1319
+#: includes/class/class.LSsearch.php:1325
msgid "LSsearch : Invalid pattern."
msgstr ""
-#: includes/class/class.LSsearch.php:1322
+#: includes/class/class.LSsearch.php:1328
msgid "LSsearch : Invalid attribute %{attr} in parameters."
msgstr ""
-#: includes/class/class.LSsearch.php:1325
+#: includes/class/class.LSsearch.php:1331
msgid "LSsearch : Error during the search."
msgstr ""
-#: includes/class/class.LSsearch.php:1328
+#: includes/class/class.LSsearch.php:1334
msgid "LSsearch : Error sorting the search."
msgstr ""
-#: includes/class/class.LSsearch.php:1331
+#: includes/class/class.LSsearch.php:1337
msgid ""
"LSsearch : The function of the custum information %{name} is not callable."
msgstr ""
-#: includes/class/class.LSsearch.php:1334
+#: includes/class/class.LSsearch.php:1340
msgid ""
"LSsearch : Invalid predefinedFilter for LSobject type %{type} : %{label} "
"(filter : %{filter})."
msgstr ""
-#: includes/class/class.LSsearch.php:1337
+#: includes/class/class.LSsearch.php:1343
msgid "LSsearch : Error during execution of the custom action %{customAction}."
msgstr ""
@@ -1428,7 +1441,7 @@ msgstr ""
msgid "PHP error : %{error}"
msgstr ""
-#: includes/class/class.LSsearchEntry.php:250
+#: includes/class/class.LSsearchEntry.php:257
msgid ""
"LSsearchEntry : Invalid formaterFunction %{func} for extraDisplayedColumns "
"%{column}."