/**
 * 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);
}
Exemple #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;
}