From b220ddc30a9bfed83ca4ccd8539af809dc0dda51 Mon Sep 17 00:00:00 2001 From: cy_altern Date: Tue, 9 Mar 2021 01:04:30 +0100 Subject: [PATCH] =?UTF-8?q?ajout=20des=20documents=20attach=C3=A9s=20r?= =?UTF-8?q?=C3=A9cup=C3=A9r=C3=A9s=20via=20un=20=C3=A9ventuel=20inclure=20?= =?UTF-8?q?gamumail/#SLUG=5Ffichiers.html=20.=20Maj=20de=20la=20doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 ++++----- formulaires/gamumail.html | 2 ++ formulaires/gamumail.php | 75 +++++++++++++++++++++++++++++---------- 3 files changed, 68 insertions(+), 26 deletions(-) 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)) {