diff --git a/README.md b/README.md
index 3cff437..8cd3f24 100644
--- a/README.md
+++ b/README.md
@@ -78,15 +78,16 @@ et du formulaire d'envoi **formulaires/gamumail.html** : il permet de lister les
* formulaire générique pour envoyer des mails avec pieces attachés
*
* @param string $slug modele du mail a charger
- * @param int|string $auteur id_auteur ou email du destinataire
- * @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 $destinataires = adresses mails et id_auteurs séparées par , ou en array
+ * si un des destinataire est au format numérique, on considère que c'est un id_auteur et on va choper son mail dans spip_auteurs
+ * @param array $Tclient = un ou plusieurs mails de destinataires sortis d'une table objet spécifique
+ * de la forme []['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email']
+ * @param array $Tpdf = un ou plusieurs fichiers PDF générés par spiPDF (le contexte permet la personnalisation du contenu)
+ * []['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
+ * @param array $options = un gros fourre-tout sous forme d'un array
+ * utilisé en particulier par les inclure HTML de gamumail/#SLUG_soustexte et gamumail/#SLUG_fichiers
+ *
* @return array $valeurs
*/
function formulaires_gamumail_charger_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){
diff --git a/formulaires/gamumail.html b/formulaires/gamumail.html
index 66ce069..9685e5f 100644
--- a/formulaires/gamumail.html
+++ b/formulaires/gamumail.html
@@ -111,6 +111,8 @@
#SET{fichier,#SLUG|concat{_fichiers}}
[(#CHEMIN{gamumail/#GET{fichier}.html}|oui)
+ #SET{erreurs,#ENV**{erreurs}|table_valeur{Tid_doc}}
+ [(#GET{erreurs})]
]
diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php
index b6c5ffe..bcbeae9 100644
--- a/formulaires/gamumail.php
+++ b/formulaires/gamumail.php
@@ -71,9 +71,11 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
'TFichierpdfs' => $TFichierPdf,
'Tpdfs_ok' => [],
'docs_spip' => $gamuMail['id_docs'],
+ 'Tid_fichiers' => [],
'options' => $options
);
+ // surcharges charger
if ($f = charger_fonction('charger', 'gamumail', true)) {
$valeurs = $f($valeurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
}
@@ -121,24 +123,39 @@ function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient
}
// les id_document attachés sont-ils OK ?
- $Tid_docs = [];
+ $docs_spip = [];
if (_request('docs_spip') != '') {
- $Tid_docs = explode(',', _request('docs_spip'));
+ $docs_spip = explode(',', _request('docs_spip'));
}
- if (count($Tid_docs)) {
- $Tid_docs_erreurs = [];
- foreach($Tid_docs as $id_doc) {
+ if (count($docs_spip)) {
+ $docs_spip_erreurs = [];
+ foreach($docs_spip 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;
+ $docs_spip_erreurs[] = $id_doc;
}
}
- if (count($Tid_docs_erreurs)) {
- $erreurs['docs_spip'] = _T("gamumail:id_docs_en_erreur", ['id_docs_erreurs' => join(', ', $Tid_docs_erreurs)]);
+ if (count($docs_spip_erreurs)) {
+ $erreurs['docs_spip'] = _T("gamumail:id_docs_en_erreur", ['id_docs_erreurs' => join(', ', $docs_spip_erreurs)]);
}
}
- // surcharges
+ // les fichiers envoyés par un éventuel inclure gamumail/#SLUG_fichiers.html sont ils OK ?
+ $Tid_doc = _request('Tid_doc');
+ if (count($Tid_doc)) {
+ $Tid_doc_erreurs = [];
+ foreach($Tid_doc as $id_doc) {
+ if (intval($id_doc) != $id_doc
+ OR !sql_getfetsel('id_document', 'spip_documents', 'id_document='.$id_doc)) {
+ $Tid_doc_erreurs[] = $id_doc;
+ }
+ }
+ if (count($Tid_doc_erreurs)) {
+ $erreurs['Tid_doc'] = _T("gamumail:id_docs_en_erreur", ['id_docs_erreurs' => join(', ', $Tid_doc_erreurs)]);
+ }
+ }
+
+ // surcharges verifier
if ($f = charger_fonction('verifier', 'gamumail', true)) {
$erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
}
@@ -155,14 +172,15 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
$retour = array();
- $pour = _request('pour');
- $cc = _request('cc');
- $cci = _request('cci');
- $sujet = _request('sujet');
- $html = propre(_request('texte'));
- $docs_spip = _request('docs_spip');
- $Tpdfs_ok = _request('Tpdfs_ok');
- $texte = facteur_mail_html2text($html);
+ $pour = _request('pour');
+ $cc = _request('cc');
+ $cci = _request('cci');
+ $sujet = _request('sujet');
+ $html = propre(_request('texte'));
+ $docs_spip = _request('docs_spip');
+ $Tpdfs_ok = _request('Tpdfs_ok');
+ $Tid_doc = _request('Tid_doc');
+ $texte = facteur_mail_html2text($html);
$pour = explode(',', $pour);
$cc = explode(',', $cc);
@@ -191,7 +209,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
$options = $f($options, $destinataires, $Tclient, $Tpdf);
}
- // les documents joints
+ // les documents par 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));
@@ -212,6 +230,27 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
}
}
+ // les documents par Tid_doc envoyés depuis inclure gamumail/#SLUG_fichiers.html
+ if (!empty($Tid_doc)) {
+ foreach ($Tid_doc as $id_doc) {
+ $Tdocs = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_doc));
+ $destination = _DIR_IMG.$Tdocs['fichier'];
+ $extension = $Tdocs['extension'];
+ if ($Tdocs['titre']) {
+ $nom_fichier = $Tdocs['titre'] .".".$extension;
+ } else {
+ $nom_fichier = basename($Tdocs['fichier']);
+ }
+ $type_mime = bigup_get_mime_type_extension($extension);
+ $pieces_jointes[] = [
+ 'chemin' => $destination,
+ 'nom' => $nom_fichier,
+ 'encodage' => 'base64',
+ 'mime' => $type_mime
+ ];
+ }
+ }
+
// les pdfs
$Tpdf_dell = [];
if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) {