- #SET{name,pour}
- #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
- #SET{obli,"obligatoire"}
-
+ #SET{erreurs,#ENV**{erreurs}|table_valeur{pour}}
+ [(#SET{mailsOk,#ENV{pour}|gamumailExtraireMails})]
+ [
(#GET{erreurs})]
+
- [(#GET{erreurs})]
-
+
+
#SET{name,envoi_separe}
@@ -52,39 +72,46 @@
-
- #SET{name,cc}
- #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
- #SET{obli,"obligatoire"}
-
+ #SET{erreurs,#ENV**{erreurs}|table_valeur{cc}}
+ [(#SET{mailsOk,#ENV{cc}|gamumailExtraireMails})]
+ [
(#GET{erreurs})]
+
- [(#GET{erreurs})]
-
+
- #SET{name,cci}
- #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
- #SET{obli,"obligatoire"}
-
+ #SET{erreurs,#ENV**{erreurs}|table_valeur{cci}}
+ [(#SET{mailsOk,#ENV{cci}|gamumailExtraireMails})]
+ [
(#GET{erreurs})]
+
- [(#GET{erreurs})]
-
+
- #SET{name,repondre_a}
- #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
- #SET{obli,"obligatoire"}
-
-
- [(#GET{erreurs})]
-
-
+ [(#SET{erreurs,#ENV**{erreurs}|table_valeur{repondre_a}})]
+ [
(#GET{erreurs})]
+
+
+
+
@@ -167,23 +194,8 @@
+
-
-
diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php
index 42fca24..2140cf6 100644
--- a/formulaires/gamumail.php
+++ b/formulaires/gamumail.php
@@ -25,10 +25,14 @@ include_spip('inc/filtres');
function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){
$Tmails = [];
- $Tcc = lire_config('gamumail/mail_cc') !== '' ? explode(',', lire_config('gamumail/mail_cc', '')) : [];
- $Tcci = lire_config('gamumail/mail_cci') !== '' ? explode(',', lire_config('gamumail/mail_cci', '')) : [];
+ $Tcc = !empty(lire_config('gamumail/mail_cc')) ? explode(',', lire_config('gamumail/mail_cc', '')) : [];
+ $Tcc = count($Tcc) ? array_map('arrayMails', $Tcc) : [];
- $Trepondre_a = lire_config('gamumail/mail_repondre_a') !== '' ? explode(',', lire_config('gamumail/mail_repondre_a', '')) : [];
+ $Tcci = !empty(lire_config('gamumail/mail_cci')) ? explode(',', lire_config('gamumail/mail_cci', '')) : [];
+ $Tcci = count($Tcci) ? array_map('arrayMails', $Tcci) : [];
+
+ $Trepondre_a = !empty(lire_config('gamumail/mail_repondre_a')) ? explode(',', lire_config('gamumail/mail_repondre_a', '')) : [];
+ $Trepondre_a = count($Trepondre_a) ? array_map('arrayMails', $Trepondre_a) : [];
if (!empty($destinataires) and !is_array($destinataires)) {
$destinataires = explode(',', $destinataires);
@@ -38,12 +42,14 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
foreach ($destinataires as $dest) {
if (is_numeric($dest)) {
- if ($mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) {
- $Tmails[] = $mail;
+ if ($tM = sql_fetsel('*', 'spip_auteurs', 'id_auteur='.$dest)) {
+ $Tmails[] = [
+ 'email' => $tM['email'],
+ 'texte' => $tM['nom'] . ' ' . ($tM['prenom'] ?? '') . ' ' . '<' . $tM['email'] . '>',
+ ];
}
- }
- elseif (email_valide($dest)) {
- $Tmails[] = $dest;
+ } elseif (email_valide($dest)) {
+ $Tmails[] = ['email' => $dest];
}
}
@@ -58,9 +64,9 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
$copie = (isset($o['copie']) and in_array($o['copie'], ['cc', 'cci'])) ? $o['copie'] : false;
if (email_valide($mail)) {
if (!$copie) {
- $Tmails[] = $mail;
+ $Tmails[] = ['email' => $mail];
} else {
- $copie == 'cc' ? $Tcc[] = $mail : $Tcci[] = $mail;
+ $copie == 'cc' ? $Tcc[] = ['email' => $mail] : $Tcci[] = ['email' => $mail];
}
}
}
@@ -101,10 +107,10 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
"slug" => $slug,
'sujet' => $sujet,
'texte' => $texte,
- 'pour' => implode(',', $Tmails),
- 'cc' => implode(',', $Tcc),
- 'cci' => implode(',', $Tcci),
- 'repondre_a' => implode(',', $Trepondre_a),
+ 'pour' => $Tmails,
+ 'cc' => $Tcc,
+ 'cci' => $Tcci,
+ 'repondre_a' => $Trepondre_a,
'TFichierpdfs' => $TFichierPdf,
'Tpdfs_ok' => [],
'docs_spip' => $gamuMail['id_docs'] ?? '',
@@ -130,8 +136,13 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []) :Array{
$erreurs = array();
+
//champs obligatoire
- foreach (array('pour', 'sujet', 'texte') as $obligatoire) {
+ $pour = _request("pour") ?? [];
+ if (!count($pour)) {
+ $erreurs['pour'] = 'Ce champs est obligatoire';
+ }
+ foreach (array('sujet', 'texte') as $obligatoire) {
if (!_request($obligatoire)) $erreurs[$obligatoire] = 'Ce champs est obligatoire';
}
@@ -150,7 +161,6 @@ function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient
// vérif des destinataires
$Tid_erreur = $Tmails_erreur = [];
- $pour = explode(',', _request('pour'));
foreach ($pour as $dest) {
if (is_numeric($dest)) {
if (!$mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) {
@@ -165,7 +175,7 @@ function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient
$erreurs['pour'] = _T("gamumail:id_destinataires_sans_mails", ['ids_erreur' => join(', ', $Tid_erreur)]).' ';
}
if (count($Tmails_erreur)) {
- $erreurs['pour'] .= _T("gamumail:mails_destinataires_en_erreur", ['mails_erreur' => join(', ', $Tmails_erreur)]);
+ $erreurs['pour'] = $erreurs['pour'] ?? '' . _T("gamumail:mails_destinataires_en_erreur", ['mails_erreur' => join(', ', $Tmails_erreur)]);
}
// les id_document attachés sont-ils OK ?
@@ -247,8 +257,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
$envoi_separe = _request('envoi_separe') ?? '';
$options['envoi_separe'] = $envoi_separe;
- $pour = _request('pour');
- $pour = explode(',', $pour);
+ $pour = _request('pour') ?? [];
$destinataires = [];
foreach ($pour as $dest) {
@@ -303,15 +312,15 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $Tfiles, $redirect, &$retour = []) {
- $cc = _request('cc') ?? '';
- $cci = _request('cci') ?? '';
- $repondre_a = _request('repondre_a') ?? '';
+ $cc = _request('cc') ?? [];
+ $cci = _request('cci') ?? [];
+ $repondre_a = _request('repondre_a') ?? [];
- $cc = explode(',', $cc);
- $cci = explode(',', $cci);
+ // $cc = explode(',', $cc);
+ // $cci = explode(',', $cci);
$Tcci_gamuza = $GLOBALS['gamuza_mail_cci'] ?? [];
$cci = array_merge($cci, $Tcci_gamuza);
- $repondre_a = explode(',', $repondre_a);
+ // $repondre_a = explode(',', $repondre_a);
$sujet = _request('sujet');
$html = propre(_request('texte'));
@@ -576,3 +585,7 @@ function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $Tfiles, $re
return $ok;
}
+
+function arrayMails(string $t):array {
+ return ['email' => trim($t)];
+}
diff --git a/formulaires/inc_charger_mails.html b/formulaires/inc_charger_mails.html
new file mode 100644
index 0000000..3d6c12c
--- /dev/null
+++ b/formulaires/inc_charger_mails.html
@@ -0,0 +1,3 @@
+
+
+
diff --git a/gamumail_fonctions.php b/gamumail_fonctions.php
index 23a230a..c3a7457 100644
--- a/gamumail_fonctions.php
+++ b/gamumail_fonctions.php
@@ -113,3 +113,10 @@ function gamumail_remplacer_modele($modele, $val, $texte){
function afficher_remplacements() {
return $GLOBALS['remplacements_gamumail'];
}
+
+function gamumailExtraireMails($t):array {
+ if (empty($t)) {
+ return [];
+ }
+ return array_map(fn($d) => $d['email'] ?? $d, $t);
+}