On peut ajouter une tableau de pieces_jointes :

$options['pieces_jointes'][] = [
    'chemin'   => 'tmp/cache/toto.xls',
    'nom'      => 'toto.xls',
    'encodage' => 'base64',
    'mime'     => 'application/vnd.ms-excel'
]
This commit is contained in:
Christophe 2021-05-25 09:23:53 +02:00
parent 01655c03e0
commit c72d52867f
2 changed files with 31 additions and 16 deletions

View file

@ -3,24 +3,31 @@ if (!defined('_ECRIRE_INC_VERSION')){
return;
}
/**
/*
* fonction pour préparer et envoyer un mail basé sur un slug gamumail
*
*
* @param string $slug
* @param string|array $destinataires = adresses mails et id_auteur 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 $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
* $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', ...]]
*
**/
* $options['pieces_jointes'][] = [
* 'chemin' => 'tmp/cache/toto.xls',
* 'nom' => 'toto.xls',
* 'encodage' => 'base64',
* 'mime' => 'application/vnd.ms-excel'
* ]
* ]
* $options['args' => ['param_1' => 'valeur_1, 'param_2' => 'valeur_2', ...]]
*
*/
function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
include_spip('inc/texte');
include_spip('classes/facteur');
@ -32,7 +39,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
$retour['message_erreur'] = _T("gamumail:erreur_format_slug");
return $retour;
}
// contenus du slug
$res = sql_fetsel('*', 'spip_gamumails', 'slug = "'.$slug.'"');
if ($res) {
@ -92,7 +99,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
$extension = $Tdocument['extension'];
if ($Tdocument['titre']) {
$nom_fichier = $Tdocument['titre'] .".".$extension;
}
}
else {
$nom_fichier = basename($Tdocument['fichier']);
}
@ -105,6 +112,14 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
];
}
}
// les docs attachés
if (isset($options['pieces_jointes'])) {
if (is_array($options['pieces_jointes'])) {
foreach ($options['pieces_jointes'] as $Tpj) {
$pieces_jointes[] = $Tpj;
}
}
}
// les pdfs
$Tpdf_dell = [];
@ -116,7 +131,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
$Tpdfs = array_filter($Tpdfs, function($p) {
return $p != '';
});
// approximation pour passage dans les fonctions traiter_av_pdf() :
// 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);
@ -158,7 +173,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);
}
}
elseif(find_in_path('gamumail/html_header.html')) {
$html_header = recuperer_fond('gamumail/html_header', $options);
}
@ -168,7 +183,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
}
elseif (find_in_path('gamumail/html_footer.html')) {
$html_footer = recuperer_fond('gamumail/html_footer', $options);
}
}
$html = $html_header . $html . $html_footer;
// pipeline pour les remplacements du contenu des slugs spécifiques de chaque plugins
@ -179,7 +194,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
'args' => $args,
'data' => $html
));
// traitement des remplacements génériques fournis par Gamumail
$remplacement_generiques = charger_fonction('gamumail_remplacements', 'inc');
$html = $remplacement_generiques($args, $html);
@ -197,7 +212,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
if ($f = charger_fonction('traiter', 'gamumail', true)) {
$corps = $f($corps, $options, $slug, $auteur, $Tclient, $Tpdf, $redirect);
}
*/
*/
// 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, $pour);
@ -225,7 +240,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
spip_log("Erreur d'envoi du mail : ","gamumail");
spip_log($corps,"gamumail");
$retour['message_erreur'] = _T("gamumail:erreur_envoi_mail");
}
}
else {
$retour['message_ok'] = _T('gamumail:mail_envoye');
}

View file

@ -1,7 +1,7 @@
<paquet
prefix="gamumail"
categorie="communication"
version="1.0.17"
version="1.0.18"
etat="dev"
compatibilite="[3.2.0;4.0.*]"
logo="prive/themes/spip/images/gamumail-64.png"