ajout d'un paramètre supplémentaire au tableau Tclient qu'on passe au charger de gamumail pour permette de mettre les clients en cc ou cci plutôt qu'en destinataire principal du mail

This commit is contained in:
cy_altern 2021-09-30 22:11:28 +02:00
parent 0b9ab15453
commit eda3619e7e
2 changed files with 23 additions and 10 deletions

View file

@ -10,7 +10,8 @@ include_spip('inc/filtres');
* @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']
* de la forme []['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email', 'copie' => 'cc|cci'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email']
* le paramètre 'copie' est facultatif : cc ou cci pour mettre un destinataire en copie, '' par défaut = destinataire principal
* @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
@ -21,7 +22,11 @@ include_spip('inc/filtres');
*
*/
function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){
$Tmails = [];
$Tcc = lire_config('gamumail/mail_cc') !== '' ? explode(',', lire_config('gamumail/mail_cc')) : [];
$Tcci = lire_config('gamumail/mail_cci') !== '' ? explode(',', lire_config('gamumail/mail_cci')) : [];
if (!is_array($destinataires)) {
$destinataires = explode(',', $destinataires);
}
@ -44,8 +49,13 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
$table = table_objet_sql($o['objet']);
$id = id_table_objet($o['objet']);
$mail = sql_getfetsel("{$o['champ']}", $table, "$id=".intval($o['id_objet']));
$copie = (isset($o['copie']) and in_array($o['copie'], ['cc', 'cci'])) ? $o['copie'] : false;
if (email_valide($mail)) {
if (!$copie) {
$Tmails[] = $mail;
} else {
$copie == 'cc' ? $Tcc[] = $mail : $Tcci[] = $mail;
}
}
}
}
@ -68,8 +78,8 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
'sujet' => $gamuMail['sujet'],
'texte' => $gamuMail['texte'],
'pour' => implode(',', $Tmails),
'cc' => lire_config('gamumail/mail_cc'),
'cci' => lire_config('gamumail/mail_cci'),
'cc' => implode(',', $Tcc),
'cci' => implode(',', $Tcci),
'TFichierpdfs' => $TFichierPdf,
'Tpdfs_ok' => [],
'docs_spip' => $gamuMail['id_docs'],
@ -339,16 +349,18 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
$corps = $f($corps, $options, $slug, $destinataires);
}
// Gestion des variables dans le sujet du mail
// Gestion des variables dans le sujet du mail (spécifiques + génériques)
$sujet = pipeline('remplacements_slug',[
'args' => $args,
'data' => $sujet
]);
$sujet = $remplacement_generiques($args, $sujet);
//var_dump($corps);die;
// envoyer !
$envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
$ok = $envoyer_mail($destinataires, $sujet, $corps);
if (!$ok) {
spip_log("Erreur d'envoi du mail : ","gamumail");
spip_log($corps,"gamumail");

View file

@ -13,8 +13,9 @@ if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function gamumail_TabClient($objet, $id_objet, $champ){
return compact('objet', 'id_objet', 'champ');
// retourne un array OK comme élément du paramètre $Tclient passé à gamumail_charger
function gamumail_TabClient($objet, $id_objet, $champ, $copie=''){
return compact('objet', 'id_objet', 'champ', 'copie');
}
function gamumail_supprimer_si_vide($v){