/** * Selectionner les destinataires en distinguant emails et id_auteur * * @param array $dests * @return array */ function messagerie_destiner($dests) { // separer les destinataires auteur des destinataires email $auteurs_dest = array(); $email_dests = array(); $dests = messagerie_nettoyer_destinataires($dests); foreach ($dests as $id) { if (is_numeric($id)) { $auteurs_dest[] = $id; } elseif (defined('_MESSAGERIE_EMAIL_GENERAL') and $id != _MESSAGERIE_EMAIL_GENERAL) { $email_dests[] = $id; } } if (count($email_dests)) { // retrouver les id des emails pour ceux qui sont en base $res = sql_select('id_auteur,email', 'spip_auteurs', sql_in('email', $email_dests)); $auteurs_dest_found = array(); while ($row = sql_fetch($res)) { $auteurs_dest_found[] = $row['id_auteur']; } $auteurs_dest = array_merge($auteurs_dest, $auteurs_dest_found); } return array($auteurs_dest, $email_dests); }
function formulaires_editer_message_traiter_dist($id_message = 'new', $type = 'message', $retour = '', $accepter_email = 'oui', $destinataires = '', $titre = '', $texte = '') { // preformater le post // fixer le type de message // sans modifier le type d'un message existant if (intval($id_message) and $t = sql_getfetsel('type', 'spip_messages', 'id_message=' . intval($id_message))) { $type = $t; } set_request('type', $type); // formater les destinataires $d = _request('destinataires'); if (!$d) { $d = array(); } include_spip('inc/messages'); $d = messagerie_nettoyer_destinataires($d); // si email non acceptes, extraire les seuls id_auteur de la liste proposee if ($accepter_email !== 'oui') { // separer id_auteur et email $d = messagerie_destiner($d); // ne conserver que les id_auteur $d = reset($d); } // reinjecter sous forme de chaine set_request('destinataires', implode(',', $d)); // fixer l'auteur ! set_request('id_auteur', $GLOBALS['visiteur_session']['id_auteur']); if (_request('rv') == 'oui') { include_spip('inc/date_gestion'); $erreurs = array(); $date_debut = verifier_corriger_date_saisie('debut', true, $erreurs); $date_fin = verifier_corriger_date_saisie('fin', true, $erreurs); set_request('date_heure', date('Y-m-d H:i:s', $date_debut)); set_request('date_fin', date('Y-m-d H:i:s', $date_fin)); } else { set_request('date_heure'); set_request('date_fin'); } // on gere par les traitements standard // la diffusion du message se fait par pipeline post_edition sur instituer // et notification $res = formulaires_editer_objet_traiter('message', $id_message, 0, 0, $retour, ''); if ($id_message = $res['id_message'] and !_request('draft')) { include_spip('action/editer_objet'); objet_modifier('message', $id_message, array('statut' => 'publie')); // apres en message envoyes, retourner sur la boite d'envoi plutot que sur le message if ($res['redirect'] == generer_url_ecrire('message', 'id_message=' . $id_message)) { $res['redirect'] = generer_url_ecrire('messages', 'quoi=envoi'); } } set_request('destinataires', explode(',', _request('destinataires'))); return $res; }