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
*
* @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 = []){

View file

@ -111,6 +111,8 @@
#SET{fichier,#SLUG|concat{_fichiers}}
[(#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}>
]

View file

@ -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)) {