#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
- #SET{obli,"obligatoire"}
-
-
-
-
-
-
-
+
diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php
index 6a3f920..e0f6e9b 100644
--- a/formulaires/gamumail.php
+++ b/formulaires/gamumail.php
@@ -57,7 +57,7 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
}
}
- $gamuMail = sql_fetsel('sujet, texte', 'spip_gamumails', 'slug='.sql_quote($slug));
+ $gamuMail = sql_fetsel('sujet, texte, id_docs', 'spip_gamumails', 'slug='.sql_quote($slug));
$valeurs = array(
"slug" => $slug,
'sujet' => $gamuMail['sujet'],
@@ -67,7 +67,7 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
'cci' => lire_config('gamumail/mail_cci'),
'TFichierpdfs' => $TFichierPdf,
'Tpdfs_ok' => [],
- 'Tid_doc' => [],
+ 'docs_spip' => $gamuMail['id_docs'],
'options' => $options
);
@@ -117,6 +117,24 @@ function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient
$erreurs['pour'] .= _T("gamumail:mails_destinataires_en_erreur", ['mails_erreur' => join(', ', $Tmails_erreur)]);
}
+ // les id_document attachés sont-ils OK ?
+ $Tid_docs = [];
+ if (_request('docs_spip') != '') {
+ $Tid_docs = explode(',', _request('docs_spip'));
+ }
+ if (count($Tid_docs)) {
+ $Tid_docs_erreurs = [];
+ foreach($Tid_docs as $id_doc) {
+ if (intval($id_doc) != $id_doc
+ OR !sql_getfetsel('id_document', 'spip_documents', 'id_document='.$id_doc)) {
+ $Tid_docs_erreurs[] = $id_doc;
+ }
+ }
+ if (count($Tid_docs_erreurs)) {
+ $erreurs['docs_spip'] = _T("gamumail:id_docs_en_erreur", ['id_docs_erreurs' => join(', ', $Tid_docs_erreurs)]);
+ }
+ }
+
// surcharges
if ($f = charger_fonction('verifier', 'gamumail', true)) {
$erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
@@ -139,7 +157,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
$cci = _request('cci');
$sujet = _request('sujet');
$html = propre(_request('texte'));
- $Tid_doc = _request('Tid_doc');
+ $docs_spip = _request('docs_spip');
$Tpdfs_ok = _request('Tpdfs_ok');
$texte = facteur_mail_html2text($html);
@@ -147,6 +165,8 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
$cc = explode(',', $cc);
$cci = explode(',', $cci);
+ $docs_spip = ($docs_spip != '' ? explode(',', $docs_spip) : []);
+
$Tmails = [];
foreach ($pour as $dest) {
if (is_numeric($dest)) {
@@ -169,8 +189,8 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
}
// les documents joints
- if (!empty($Tid_doc)) {
- foreach ($Tid_doc as $id_document) {
+ if (!empty($docs_spip)) {
+ foreach ($docs_spip as $id_document) {
$Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_document));
$destination = _DIR_IMG.$Tdocument['fichier'];
$extension = $Tdocument['extension'];
@@ -260,7 +280,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
*/
// appel d'une éventuelle fonction de traitement du contenu spécifique du slug
if ($f = charger_fonction($slug . '_traiter', 'gamumail', true)) {
- $corps = $f($corps, $options, $slug, $Tmails, $Tclient, $Tpdf, $redirect);
+ $corps = $f($corps, $options, $slug, $Tmails);
}
$envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
diff --git a/gamumail_fonctions.php b/gamumail_fonctions.php
index fdd27bb..d0a795a 100644
--- a/gamumail_fonctions.php
+++ b/gamumail_fonctions.php
@@ -72,11 +72,9 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $destinataires='', $T
/**
* fonctions appelée en fin de gamumail_traiter_dist()
*
+ * @param array $corps[] => cf return
* @param string $slug modele du mail a charger
* @param string $destinataires = adresses mails et id_auteurs séparées par ,
- * @param array $Tclient [] ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email']
- * @param array $Tpdf [] ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] ou ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]]
- * @param string $redirect
* @param array $options
*
* @return array $corps
@@ -84,11 +82,12 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $destinataires='', $T
* 'html' => $html,
* 'texte' => $texte,
* 'cc' => $cc,
- * 'cci' => $cci
+ * 'cci' => $cci,
+ * 'pieces_jointes' => $pieces_jointes
* ];
*
**/
-function gamumail_traiter_dist($corps, $options, $slug, $destinataires='', $Tclient=[], $Tpdf=[], $redirect) {
+function gamumail_traiter_dist($corps, $options, $slug, $destinataires='') {
$html = $corps['html'];
$html = str_replace('@@truc_a_remplacer@@', 'le machin qui remplace', $html);
diff --git a/inc/charger_pdf.php b/inc/charger_pdf.php
index 8fd1d61..64d1934 100644
--- a/inc/charger_pdf.php
+++ b/inc/charger_pdf.php
@@ -3,7 +3,6 @@ if (!defined('_ECRIRE_INC_VERSION')){
return;
}
-
function inc_charger_pdf_dist($fichier_pdf, $contexte = []){
$login = lire_config('curl_login');
$password = lire_config('curl_mdp');
diff --git a/inc/envoyer_gamumail.php b/inc/envoyer_gamumail.php
index 7c81af6..8504eb4 100644
--- a/inc/envoyer_gamumail.php
+++ b/inc/envoyer_gamumail.php
@@ -12,6 +12,13 @@ if (!defined('_ECRIRE_INC_VERSION')){
* @param array $options :
* $options['debug' => true] pour afficher le $corps final sans envoyer le mail
* $options['cci' => true] pour passer les destinataires en cci si il y en a plus qu'un
+ * $options['pdfs' => [...]] array des fichiers PDF générés à attacher dont les éléments peuvent être :
+ * - soit un nom de squelette PDF
+ * - soit un array avec 3 éléments (seul le 1er est obligatoire):
+ * [ 'fichier' => 'squelette_PDF',
+ * 'contexte' => ['parametre_url_1' => 'valeur_1', 'parametre_url_2' => 'valeur_2', ...]
+ * 'nom' => 'nom_fichier_attache' ]
+ * $options['args' => ['param_1' => 'valeur_1, 'param_2' => 'valeur_2', ...]]
*
**/
function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
@@ -38,7 +45,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
return $retour;
}
- // destinataires
+ // destinataires (id_auteur ou mails) => $pour[] est un array avec les adresses mails valides
if (!is_array($destinataires)) {
$destinataires = explode(',', $destinataires);
}
@@ -77,7 +84,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
$Tid_doc[] = $doc;
}
}
- // récup des paramètres des fichiers à attacher
+ // récup des paramètres des docs à attacher
if (!empty($Tid_doc)) {
foreach ($Tid_doc as $id_document) {
$Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_document));
@@ -98,32 +105,43 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
];
}
}
-/*
+
// les pdfs
- $Tpdfs_ok = _request('Tpdfs_ok');
- if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) {
- $options = $f($options, $auteur, $Tclient, $Tpdf);
- }
- if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) {
- $options = $f($options, $auteur, $Tclient, $Tpdf);
- }
-
- $Tpdf_dell = [];
- if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) {
- if (array_key_exists('fichier', $Tpdf)) {
- $Tpdf = [$Tpdf];
+ if (isset($options['pdfs'])) {
+ $Tpdfs = $options['pdfs'];
+ if (!is_array($Tpdfs)) {
+ $Tpdfs = explode(',', $Tpdfs);
+ }
+ $Tpdfs = array_filter($Tpdfs, function($p) {
+ return $p != '';
+ });
+ // approximation pour passage dans les fonctions traiter_av_pdf() :
+ // si plusieurs destinataires dans $pour[], on utilise le premier comme 2ème arg ($auteur)
+ if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) {
+ $options = $f($options, $pour[0], [], $Tpdfs);
+ }
+ if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) {
+ $options = $f($options, $pour[0], [], $Tpdfs);
}
- $recup_pdf = charger_fonction('charger_pdf','inc');
- foreach ($Tpdfs_ok as $pdf) {
- foreach ($Tpdf as $p) {
- if ($p['fichier'] === $pdf) {
- $c = $p['contexte'];
- $nom = $p['nom'];
+ $Tpdf_dell = [];
+ if (!empty($Tpdfs) and is_array($Tpdfs)) {
+ foreach ($Tpdfs as $pdf) {
+ if (!is_array($pdf)) {
+ $sq_pdf = $pdf;
+ $context = [];
+ $nom = $pdf;
}
+ elseif (array_key_exists('fichier', $pdf)) {
+ $sq_pdf = $pdf['fichier'];
+ $context = array_key_exists('context', $pdf) ? $pdf['context'] : [];
+ $nom = array_key_exists('nom', $pdf) ? $pdf['nom'] : $pdf;
+ }
+ else break;
}
- $pdf = $recup_pdf($pdf, $c);
+ $recup_pdf = charger_fonction('charger_pdf','inc');
+ $pdf = $recup_pdf($sq_pdf, $context);
$nom_fichier = $nom.'.pdf';
$destination = _DIR_TMP.basename($nom_fichier);
$Tpdf_dell[] = $destination;
@@ -136,7 +154,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
];
}
}
-*/
+
$html_header = '';
if (find_in_path('gamumail/'.$slug .'_html_header.html')) {
$html_header = recuperer_fond('gamumail/'.$slug . '_html_header', $options);
@@ -156,7 +174,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
// pipeline pour les traitement du contenu des slugs spécifiques de chaque plugins
$args = $options;
$args['slug'] = $slug;
- $args['destinataires'] = $destinataires;
+ $args['destinataires'] = $pour;
$html = pipeline('remplacements_slug', array(
'args' => $args,
'data' => $html
@@ -177,7 +195,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
*/
// appel d'une éventuelle fonction de traitement du contenu spécifique du slug
if ($f = charger_fonction($slug . '_traiter', 'gamumail', true)) {
- $corps = $f($corps, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
+ $corps = $f($corps, $options, $slug, $pour);
}
// si debug on affiche sans envoyer le mail
diff --git a/inclure/envoyer_gamumail.html b/inclure/envoyer_gamumail.html
index 697e9a4..b5b89b0 100644
--- a/inclure/envoyer_gamumail.html
+++ b/inclure/envoyer_gamumail.html
@@ -25,9 +25,9 @@
<:gamumail:choix_slug:>
diff --git a/lang/gamumail_fr.php b/lang/gamumail_fr.php
index f9a709d..2dbb70f 100644
--- a/lang/gamumail_fr.php
+++ b/lang/gamumail_fr.php
@@ -21,6 +21,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'choix_slug' => 'Choix du modèle',
'contenu_mail' => 'Contenu du mail',
+ // D
+ 'documents_attaches' => 'Documents attachés',
+
//EE
'envoyer' => 'Envoyer',
"erreur_envoi_mail" => "Erreur dans l'envoi de votre mail",
@@ -37,6 +40,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'info_gamumails_auteur' => 'Les gamumails de cet auteur',
'info_nb_gamumails' => '@nb@ gamumails',
'id_destinataires_sans_mails' => 'Les id_auteur @ids_erreur@ n\'ont pas d\'adresse mail',
+ 'id_docs_attaches' => 'ID documents séparés par une virgule',
+ 'id_docs_en_erreur' => 'Documents en erreur : @id_docs_erreurs@',
//MM
"mail_envoye" => "Votre message a bien été envoyé",