/** * Diffuser un message qui passe en publie (== a envoyer) * * @param array $flux * @return array */ function organiseur_post_edition($flux) { if ($flux['args']['table'] == 'spip_messages' and $flux['args']['action'] == 'instituer' and $flux['data']['statut'] == 'publie' and $flux['args']['statut_ancien'] != 'publie') { $id_message = $flux['args']['id_objet']; $row = sql_fetsel('destinataires,id_auteur,titre,texte', 'spip_messages', 'id_message=' . intval($id_message)); if ($row) { include_spip('inc/messages'); list($auteurs_dest, $email_dests) = messagerie_destiner(explode(',', $row['destinataires'])); // diffuser le message en interne messagerie_diffuser_message($id_message, $auteurs_dest); // diffuser le message en externe messagerie_mailer_message($id_message, $email_dests); } } return $flux; }
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; }