ajout des documents attachés récupérés via un éventuel inclure gamumail/#SLUG_fichiers.html . Maj de la doc

This commit is contained in:
cy_altern 2021-03-09 01:04:30 +01:00
parent 300eb97642
commit b220ddc30a
3 changed files with 68 additions and 26 deletions

View file

@ -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 * formulaire générique pour envoyer des mails avec pieces attachés
* *
* @param string $slug modele du mail a charger * @param string $slug modele du mail a charger
* @param int|string $auteur id_auteur ou email du destinataire * @param string $destinataires = adresses mails et id_auteurs séparées par , ou en array
* @param array $Tclient []['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] * 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
* ou * @param array $Tclient = un ou plusieurs mails de destinataires sortis d'une table objet spécifique
* ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] * de la forme []['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]] * @param array $Tpdf = un ou plusieurs fichiers PDF générés par spiPDF (le contexte permet la personnalisation du contenu)
* ou * []['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] ou ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]]
* ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]]
* @param string $redirect * @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 * @return array $valeurs
*/ */
function formulaires_gamumail_charger_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){ function formulaires_gamumail_charger_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){

View file

@ -111,6 +111,8 @@
#SET{fichier,#SLUG|concat{_fichiers}} #SET{fichier,#SLUG|concat{_fichiers}}
[(#CHEMIN{gamumail/#GET{fichier}.html}|oui) [(#CHEMIN{gamumail/#GET{fichier}.html}|oui)
#SET{erreurs,#ENV**{erreurs}|table_valeur{Tid_doc}}
[<span class="erreur_message">(#GET{erreurs})</span>]
<INCLURE{fond=gamumail/#GET{fichier},env}> <INCLURE{fond=gamumail/#GET{fichier},env}>
] ]

View file

@ -71,9 +71,11 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
'TFichierpdfs' => $TFichierPdf, 'TFichierpdfs' => $TFichierPdf,
'Tpdfs_ok' => [], 'Tpdfs_ok' => [],
'docs_spip' => $gamuMail['id_docs'], 'docs_spip' => $gamuMail['id_docs'],
'Tid_fichiers' => [],
'options' => $options 'options' => $options
); );
// surcharges charger
if ($f = charger_fonction('charger', 'gamumail', true)) { if ($f = charger_fonction('charger', 'gamumail', true)) {
$valeurs = $f($valeurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect); $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 ? // les id_document attachés sont-ils OK ?
$Tid_docs = []; $docs_spip = [];
if (_request('docs_spip') != '') { if (_request('docs_spip') != '') {
$Tid_docs = explode(',', _request('docs_spip')); $docs_spip = explode(',', _request('docs_spip'));
} }
if (count($Tid_docs)) { if (count($docs_spip)) {
$Tid_docs_erreurs = []; $docs_spip_erreurs = [];
foreach($Tid_docs as $id_doc) { foreach($docs_spip as $id_doc) {
if (intval($id_doc) != $id_doc if (intval($id_doc) != $id_doc
OR !sql_getfetsel('id_document', 'spip_documents', 'id_document='.$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)) { if (count($docs_spip_erreurs)) {
$erreurs['docs_spip'] = _T("gamumail:id_docs_en_erreur", ['id_docs_erreurs' => join(', ', $Tid_docs_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)) { if ($f = charger_fonction('verifier', 'gamumail', true)) {
$erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect); $erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
} }
@ -162,6 +179,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
$html = propre(_request('texte')); $html = propre(_request('texte'));
$docs_spip = _request('docs_spip'); $docs_spip = _request('docs_spip');
$Tpdfs_ok = _request('Tpdfs_ok'); $Tpdfs_ok = _request('Tpdfs_ok');
$Tid_doc = _request('Tid_doc');
$texte = facteur_mail_html2text($html); $texte = facteur_mail_html2text($html);
$pour = explode(',', $pour); $pour = explode(',', $pour);
@ -191,7 +209,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
$options = $f($options, $destinataires, $Tclient, $Tpdf); $options = $f($options, $destinataires, $Tclient, $Tpdf);
} }
// les documents joints // les documents par id_document
if (!empty($docs_spip)) { if (!empty($docs_spip)) {
foreach ($docs_spip as $id_document) { foreach ($docs_spip as $id_document) {
$Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($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 // les pdfs
$Tpdf_dell = []; $Tpdf_dell = [];
if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) { if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) {