le passage en cci en cas de destinataires multiple dépend de l' ['cci'=>true]. Plus de confort pour le paramètre : on accepte un array ou une string avec , (et toujours id_auteurs en mix avec adresses mail)

This commit is contained in:
clem 2020-08-21 11:33:49 +02:00
parent f0221e8221
commit 617df6ea97
2 changed files with 17 additions and 11 deletions

View file

@ -8,17 +8,20 @@ include_spip('inc/filtres');
* 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 string $destinataires = adresses mails et id_auteurs séparées par , * @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 * 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 []['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] * @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 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 $redirect * @param string $redirect
* @param array $options * @param array $options
* @return array $valeurs * @return array $valeurs
*
*/ */
function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){
$Tmails = []; $Tmails = [];
$destinataires = explode(',', $destinataires); if (!is_array($destinataires)) {
$destinataires = explode(',', $destinataires);
}
foreach ($destinataires as $dest) { foreach ($destinataires as $dest) {
if (is_numeric($dest)) { if (is_numeric($dest)) {
if ($mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) { if ($mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.$dest)) {

View file

@ -7,10 +7,11 @@ if (!defined('_ECRIRE_INC_VERSION')){
* fonction pour préparer et envoyer un mail basé sur un slug gamumail * fonction pour préparer et envoyer un mail basé sur un slug gamumail
* *
* @param string $slug * @param string $slug
* @param string $destinataires = adresses mails et id_auteur séparées par , * @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 * 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 (au cas ...) * @param array $options :
* $options['debug' => true] pour afficher le $corps final sans envoyer le mail * $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
* *
**/ **/
function inc_envoyer_gamumail($slug, $destinataires, $options = []) { function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
@ -39,7 +40,9 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
} }
// destinataires // destinataires
$destinataires = explode(',', $destinataires); if (!is_array($destinataires)) {
$destinataires = explode(',', $destinataires);
}
$pour = array(); $pour = array();
foreach ($destinataires as $dest) { foreach ($destinataires as $dest) {
if (is_numeric($dest)) { if (is_numeric($dest)) {
@ -52,14 +55,14 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
} }
} }
function test_vide($elem) { function non_vide($elem) {
return ($elem != NULL AND $elem != ''); return ($elem != NULL AND $elem != '');
} }
$cc = array_filter(explode(',', lire_config('gamumail/mail_cc')), 'test_vide'); $cc = array_filter(explode(',', lire_config('gamumail/mail_cc')), 'non_vide');
$cci = array_filter(explode(',', lire_config('gamumail/mail_cci')), 'test_vide'); $cci = array_filter(explode(',', lire_config('gamumail/mail_cci')), 'non_vide');
// si on a plusieurs destinataires, les passer en cci et mettre le compte expéditeur du site en to // si on a plusieurs destinataires et $options['cci' => true] les passer en cci et mettre le compte expéditeur du site en to
if (count($pour) > 1) { if (count($pour) > 1 AND isset($options['cci']) AND $options['cci']) {
$cci = array_unique(array_merge($cci, $pour)); $cci = array_unique(array_merge($cci, $pour));
$pour = [lire_config('facteur/adresse_envoi_email',lire_config('email_webmaster'))]; $pour = [lire_config('facteur/adresse_envoi_email',lire_config('email_webmaster'))];
} }
@ -166,7 +169,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
} }
// si debug on affiche sans envoyer le mail // si debug on affiche sans envoyer le mail
if ($options['debug']) { if (isset($options['debug']) AND $options['debug']) {
echo '$pour : '; echo '$pour : ';
var_dump($pour); var_dump($pour);
echo '<br>$sujet: '.$sujet.'<br>$corps : '; echo '<br>$sujet: '.$sujet.'<br>$corps : ';