예제 #1
0
/**
 * 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;
}
예제 #2
0
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;
}