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;
|
$test_mail = true;
|
||||||
if (count($destinataires)) {
|
$GLOBALS['forcer_lang'] = false;
|
||||||
$GLOBALS['forcer_lang'] = false;
|
$langue_defaut = lire_config('langue_site');
|
||||||
$langue_defaut = lire_config('langue_site');
|
include_spip('classes/facteur');
|
||||||
include_spip('classes/facteur');
|
|
||||||
|
|
||||||
// récupérer les infos de langue des destinataires
|
// récupérer les infos de langue des destinataires
|
||||||
$dest_langues = sql_allfetsel('id_auteur, lang, email', 'spip_auteurs', sql_in('email', $destinataires), 'email');
|
$dest_langues = sql_allfetsel('id_auteur, lang, email', 'spip_auteurs', sql_in('email', $destinataires), 'email');
|
||||||
// array avec les langues des destinataires
|
// array avec les langues des destinataires
|
||||||
if (is_array($dest_langues) and count($dest_langues)) {
|
if (is_array($dest_langues) and count($dest_langues)) {
|
||||||
$langues = array_filter(array_unique(array_column($dest_langues, 'lang')));
|
$langues = array_filter(array_unique(array_column($dest_langues, 'lang')));
|
||||||
}
|
}
|
||||||
if(empty($langues)) {
|
if(empty($langues)) {
|
||||||
$langues[] = lire_config('langue_site');
|
$langues[] = lire_config('langue_site');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($langues)) {
|
// trier les destinataires par langue et envoyer un mail par langue
|
||||||
// trier les destinataires par langue et envoyer un mail par langue
|
foreach ($langues as $langue) {
|
||||||
foreach ($langues as $langue) {
|
$Tdest_langue = [];
|
||||||
$Tdest_langue = [];
|
foreach ($dest_langues as $dest) {
|
||||||
foreach ($dest_langues as $dest) {
|
if ($dest['lang'] == '') {
|
||||||
if ($dest['lang'] == '') {
|
$dest['lang'] = $langue_defaut;
|
||||||
$dest['lang'] = $langue_defaut;
|
}
|
||||||
}
|
if ($dest['lang'] == $langue) {
|
||||||
if ($dest['lang'] == $langue)
|
$Tdest_langue[] = $dest['email'];
|
||||||
$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']);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 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) {
|
if (intval($id_message) and $test_mail) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue