fix: gérer tous les cas de figure de configuration de destinataires
This commit is contained in:
parent
36f0de4afe
commit
da72c4d7c7
1 changed files with 42 additions and 39 deletions
|
@ -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) {
|
||||
|
|
Loading…
Add table
Reference in a new issue