diff --git a/paquet.xml b/paquet.xml index f44c0d5c69deb59dffbb36515142407572c9b2a2..1702af09a7cdacd822598fc39951e2a6c7ec5a50 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,7 +1,7 @@ <paquet prefix="formidable" categorie="communication" - version="3.36.8" + version="3.37.0" etat="stable" compatibilite="[3.0.0;3.2.*]" logo="images/formidable-64.png" diff --git a/traiter/email.php b/traiter/email.php index b91fde593b94aeb44aa97ada5a912857725b21aa..75ff48ab11e7510b65034f366482d94372da1cb8 100644 --- a/traiter/email.php +++ b/traiter/email.php @@ -40,24 +40,7 @@ function traiter_email_dist($args, $retours) { // On récupère les destinataires if ($options['champ_destinataires']) { - $destinataires = _request($options['champ_destinataires']); - if (!is_array($destinataires)) { - if (intval($destinataires)) { - $destinataires = array($destinataires); - } else { - $destinataires = array(); - } - } - if (count($destinataires)) { - // On récupère les mails des destinataires - $destinataires = array_map('intval', $destinataires); - $destinataires = sql_allfetsel( - 'email', - 'spip_auteurs', - sql_in('id_auteur', $destinataires) - ); - $destinataires = array_map('reset', $destinataires); - } + $destinataires = formidable_traiter_email_champ_destinataires($options['champ_destinataires']); } // Conservé pour raison historique, mais mauvaise pratique. @@ -323,7 +306,40 @@ function traiter_email_dist($args, $retours) { return $retours; } - +/** + * Retourne la liste des destinataires mentionnés dans un ou plusieurs champs destinataires (auteur·e·s enregistré·e·s) + * @param array|str l'option champ_destinataire + * @return array la liste des mails destinataires. +**/ +function formidable_traiter_email_champ_destinataires($champ) { + if (!is_array($champ)) { + $champ = array($champ); + } + //Trouver tout les id destinataires + $destinataires = array(); + foreach ($champ as $c) { + $destinataires_c = _request($c); + if (!is_array($destinataires_c)) { + if (intval($destinataires_c)) { + $destinataires_c = array($destinataires_c); + } else { + $destinataires_c = array(); + } + } + $destinataires = array_merge($destinataires, $destinataires_c); + } + if (count($destinataires)) { + // On récupère les mails des destinataires + $destinataires = array_map('intval', $destinataires); + $destinataires = sql_allfetsel( + 'email', + 'spip_auteurs', + sql_in('id_auteur', $destinataires) + ); + $destinataires = array_map('reset', $destinataires); + } + return $destinataires; +} /** * Retourne la liste des destinataires sélectionnés en fonction * de l'option 'destinataires_selon_champ' du traitement email. diff --git a/traiter/email.yaml b/traiter/email.yaml index 0dafdba055d40ac3abe2292b4d291a911adb3c26..12563faf67fded1b88da4fcfb077b3264c64f628 100644 --- a/traiter/email.yaml +++ b/traiter/email.yaml @@ -76,6 +76,7 @@ options: label: '<:formidable:traiter_email_option_destinataires_label:>' explication: '<:formidable:traiter_email_option_destinataires_explication:>' forcer_type: [destinataires,hidden] + type_choix: 'checkbox' env: true - saisie: 'input'