fix: gérer tous les cas de figure de configuration de destinataires

This commit is contained in:
cy_altern 2023-01-04 15:10:12 +01:00
parent 36f0de4afe
commit da72c4d7c7

View file

@ -149,51 +149,54 @@ function formulaires_gamucontact_traiter_dist($id_auteur = 0, $redirect = '') {
}
}
}
if (!count($destinataires)) {
$email_webmaster = lire_config('email_webmaster');
if (strlen($email_webmaster)) {
$destinataires[] = $email_webmaster;
}
}
$test_mail = true;
if (count($destinataires)) {
$GLOBALS['forcer_lang'] = false;
$langue_defaut = lire_config('langue_site');
include_spip('classes/facteur');
$GLOBALS['forcer_lang'] = false;
$langue_defaut = lire_config('langue_site');
include_spip('classes/facteur');
// récupérer les infos de langue des destinataires
$dest_langues = sql_allfetsel('id_auteur, lang, email', 'spip_auteurs', sql_in('email', $destinataires), 'email');
// array avec les langues des destinataires
if (is_array($dest_langues) and count($dest_langues)) {
$langues = array_filter(array_unique(array_column($dest_langues, 'lang')));
}
if(empty($langues)) {
$langues[] = lire_config('langue_site');
}
// récupérer les infos de langue des destinataires
$dest_langues = sql_allfetsel('id_auteur, lang, email', 'spip_auteurs', sql_in('email', $destinataires), 'email');
// array avec les langues des destinataires
if (is_array($dest_langues) and count($dest_langues)) {
$langues = array_filter(array_unique(array_column($dest_langues, 'lang')));
}
if(empty($langues)) {
$langues[] = lire_config('langue_site');
}
if (!empty($langues)) {
// trier les destinataires par langue et envoyer un mail par langue
foreach ($langues as $langue) {
$Tdest_langue = [];
foreach ($dest_langues as $dest) {
if ($dest['lang'] == '') {
$dest['lang'] = $langue_defaut;
}
if ($dest['lang'] == $langue)
$Tdest_langue[] = $dest['email'];
}
// envoi du mail dans cette langue
$html = recuperer_fond('modeles/gamucontact_message', ['id_message' => $id_message, 'lang' => $langue]);
$texte = facteur_mail_html2text($html);
$corps = array(
'html' => $html,
'texte' => $texte,
);
$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
$test_mail = $envoyer_mail($Tdest_langue, _request('objet'), $corps, '', 'X-Originating-IP: '.$GLOBALS['ip']);
// trier les destinataires par langue et envoyer un mail par langue
foreach ($langues as $langue) {
$Tdest_langue = [];
foreach ($dest_langues as $dest) {
if ($dest['lang'] == '') {
$dest['lang'] = $langue_defaut;
}
if ($dest['lang'] == $langue) {
$Tdest_langue[] = $dest['email'];
}
}
// pour la langue du site, si pas de destinataire prendre le mail du webmestre
if ($langue === $langue_defaut and !count($dest_langues)) {
if (!count($destinataires)) {
$email_webmaster = lire_config('email_webmaster');
if (strlen($email_webmaster)) {
$Tdest_langue[] = $email_webmaster;
}
} else {
$Tdest_langue = $destinataires;
}
}
// envoi du mail dans cette langue
$html = recuperer_fond('modeles/gamucontact_message', ['id_message' => $id_message, 'lang' => $langue]);
$texte = facteur_mail_html2text($html);
$corps = array(
'html' => $html,
'texte' => $texte,
);
$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
$test_mail = $envoyer_mail($Tdest_langue, _request('objet'), $corps, '', 'X-Originating-IP: '.$GLOBALS['ip']);
}
if (intval($id_message) and $test_mail) {