function genie_clevermail_auto_ajout_abonnes_dist()
{
    if ($autoListes = sql_select("lst_id, lst_name, lst_auto_subscribers, lst_auto_subscribers_mode", "spip_cm_lists", "lst_auto_subscribers != '' AND lst_auto_subscribers_updated < " . (time() - 60 * 60 * 24))) {
        include_spip('inc/distant');
        while ($liste = sql_fetch($autoListes)) {
            if ($adresses = recuperer_page($liste['lst_auto_subscribers'])) {
                if (!clevermail_verification_adresses_email($adresses)) {
                    // XXX : log en chaîne de langue
                    spip_log('Le format des adresses e-mail ne semble pas bon dans le fichier distant d\'adresses de la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') : ' . $liste['lst_auto_subscribers'], 'clevermail');
                } else {
                    $retour = clevermail_abonnes_ajout(array($liste['lst_id']), intval($liste['lst_auto_subscribers_mode']), $adresses);
                    sql_updateq("spip_cm_lists", array('lst_auto_subscribers_updated' => time()), "lst_id=" . $liste['lst_id']);
                    // XXX : log en chaîne de langue
                    $msg = 'Ajout automatique d\'abonnés à la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') à partir du fichier ' . $liste['lst_auto_subscribers'] . ' : ';
                    if ($retour === false) {
                        $msg .= _T('clevermail:aucun_nouvel_abonne');
                    } else {
                        $msg .= $retour['nb_nouv'] > 0 ? $retour['nb_nouv'] . _T('clevermail:n_nouveaux_abonnes') : _T('clevermail:aucun_nouvel_abonne');
                        $msg .= $retour['nb_nouv'] > 0 && $retour['nb_maj'] > 0 ? _T('clevermail:nouveaux_abonnes_et') : '';
                        $msg .= $retour['nb_maj'] > 0 ? $retour['nb_maj'] . _T('clevermail:changements_mode_abonnement') : '';
                        spip_log($msg, 'clevermail');
                    }
                }
            } else {
                // XXX : log en chaîne de langue
                spip_log('Impossible de télécharger le fichier distant d\'adresses de la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') : ' . $liste['lst_auto_subscribers'], 'clevermail');
            }
        }
    }
    return 1;
}
function clevermail_abonnes_ajout_plus($lst_ids, $lsr_mode, $adresses, $champ_exercice, $territoire)
{
    if (clevermail_verification_adresses_email($adresses)) {
        $adresses = clevermail_chaine_email_en_tableau($adresses);
        $nb_nouv = 0;
        $nb_maj = 0;
        if (sizeof($adresses) > 0) {
            foreach ($adresses as $adresse) {
                if (!($sub_id = sql_getfetsel("sub_id", "spip_cm_subscribers", "sub_email=" . sql_quote($adresse)))) {
                    // Ajout d'un nouvel abonné
                    $sub_id = sql_insertq("spip_cm_subscribers", array('sub_email' => $adresse, 'sub_champ_exercice' => $champ_exercice, 'sub_territoire' => $territoire));
                    sql_updateq("spip_cm_subscribers", array('sub_profile' => md5($sub_id . '#' . $adresse . '#' . time())), "sub_id=" . intval($sub_id));
                }
                foreach ($lst_ids as $lst_id) {
                    $lst_name = sql_getfetsel("lst_name", "spip_cm_lists", "lst_id=" . intval($lst_id));
                    if (sql_countsel("spip_cm_lists_subscribers", "lst_id=" . intval($lst_id) . " AND sub_id=" . intval($sub_id)) == 0) {
                        // Ajout de l'abonnement à cette liste
                        sql_insertq("spip_cm_lists_subscribers", array('lst_id' => intval($lst_id), 'sub_id' => intval($sub_id), 'lsr_mode' => intval($lsr_mode), 'lsr_id' => md5('subscribe#' . $lst_id . '#' . $sub_id . '#' . time())));
                        // XXX : log en chaîne de langue
                        spip_log('Ajout de ' . $adresse . ' (id=' . $sub_id . ') à la liste « ' . $lst_name . ' » (id=' . $lst_id . ')', 'clevermail');
                        $nb_nouv++;
                    } else {
                        if ($lsr_mode != sql_getfetsel("lsr_mode", "spip_cm_lists_subscribers", "lst_id=" . intval($lst_id) . " AND sub_id=" . intval($sub_id))) {
                            // Mise à jour du mode d'abonnement
                            sql_updateq("spip_cm_lists_subscribers", array('lsr_mode' => intval($lsr_mode)), "lst_id=" . intval($lst_id) . " AND sub_id=" . intval($sub_id));
                            // XXX : log en chaîne de langue
                            spip_log('Changement de mode d\'abonnement de ' . $adresse . ' (id=' . $sub_id . ') à la liste « ' . $lst_name . ' » (id=' . $lst_id . ')', 'clevermail');
                            $nb_maj++;
                        }
                    }
                }
            }
        }
    } else {
        return false;
    }
    return array('nb_nouv' => $nb_nouv, 'nb_maj' => $nb_maj);
}
function formulaires_clevermail_subscriber_new_verifier_dist()
{
    $erreurs = array();
    if ((!isset($_FILES['cm_file']) || $_FILES['cm_file']['name'] == '' || !is_uploaded_file($_FILES['cm_file']['tmp_name'])) && _request('cm_subs') == '') {
        $erreurs['cm_file'] = _T('clevermail:vous_devez_choisir_un_fichier');
        $erreurs['cm_subs'] = _T('clevermail:et_ou_saisir_des_adresses');
    }
    if (isset($_FILES['cm_file']) && is_uploaded_file($_FILES['cm_file']['tmp_name'])) {
        $adresses = implode('', file($_FILES['cm_file']['tmp_name']));
        if (!clevermail_verification_adresses_email($adresses)) {
            $erreurs['cm_file'] = _T('clevermail:le_format_des_adresses_email_ne_semble_pas_bon');
        }
    }
    if (_request('cm_subs') != '' && !clevermail_verification_adresses_email(_request('cm_subs'))) {
        $erreurs['cm_subs'] = _T('clevermail:le_format_des_adresses_email_ne_semble_pas_bon');
    }
    if (sizeof(_request('cm_lists')) == 0) {
        $erreurs['cm_lists'] = _T('clevermail:vous_devez_choisir_au_moins_une_liste');
    }
    if (count($erreurs)) {
        $erreurs['message_erreur'] = _T('clevermail:veuillez_corriger_votre_saisie');
    }
    return $erreurs;
}
function formulaires_clevermail_list_edit_verifier_dist($lst_id = -1)
{
    $erreurs = array();
    foreach (array('lst_name', 'lst_moderator_email', 'lst_url_html') as $obligatoire) {
        if (!_request($obligatoire)) {
            $erreurs[$obligatoire] = _T('clevermail:ce_champ_est_obligatoire');
        }
    }
    $nb = sql_countsel("spip_cm_lists", "lst_id != " . intval(_request('lst_id')) . " AND lst_name = " . sql_quote(_request('lst_name')));
    if ($nb > 0) {
        $erreurs['lst_name'] = _T('clevermail:lettre_meme_nom');
    }
    include_spip('inc/filtres');
    if (_request('lst_moderator_email') && !email_valide(_request('lst_moderator_email'))) {
        $erreurs['lst_moderator_email'] = _T('clevermail:cette_adresse_email_n_est_pas_valide');
    }
    if (_request('lst_auto_mode') && _request('lst_auto_mode') != 'none') {
        if (in_array(_request('lst_auto_mode'), array('day', 'week', 'month'))) {
            if (_request('lst_auto_hour') && (intval(_request('lst_auto_hour')) < 0 || intval(_request('lst_auto_hour')) > 23)) {
                $erreurs['lst_auto_hour'] = _T('clevermail:auto_erreur_cette_heure_existe_pas');
            }
            switch (_request('lst_auto_mode')) {
                case 'day':
                    break;
                case 'week':
                    if (!_request('lst_auto_week_days') || count(_request('lst_auto_week_days')) == 0) {
                        $erreurs['lst_auto_week_days'] = _T('clevermail:auto_erreur_choisir_un_jour_minimum');
                    } elseif (min(_request('lst_auto_week_days')) < 0 || max(_request('lst_auto_week_days')) > 6) {
                        $erreurs['lst_auto_week_days'] = _T('clevermail:auto_erreur_ce_jour_semaine_existe_pas');
                    }
                    break;
                case 'month':
                    if (_request('lst_auto_month_day') && (intval(_request('lst_auto_month_day')) < 0 || intval(_request('lst_auto_month_day')) > 31)) {
                        $erreurs['lst_auto_month_day'] = _T('clevermail:auto_erreur_ce_jour_mois_existe_pas');
                    } elseif (intval(_request('lst_auto_month_day')) > 28) {
                        $erreurs['lst_auto_month_day'] = _T('clevermail:auto_erreur_ce_jour_mois_pas_possible');
                    }
                    break;
            }
        } else {
            $erreurs['lst_auto_mode'] = _T('clevermail:auto_erreur_ce_mode_automatisation_existe_pas');
        }
    }
    if (_request('lst_auto_subscribers') != '') {
        include_spip('inc/distant');
        if ($adresses = recuperer_page(_request('lst_auto_subscribers'))) {
            include_spip('inc/clevermail_abonnes');
            if (!clevermail_verification_adresses_email($adresses)) {
                $erreurs['lst_auto_subscribers'] = _T('clevermail:le_format_des_adresses_email_ne_semble_pas_bon');
            }
        } else {
            $erreurs['lst_auto_subscribers'] = _T('clevermail:fichier_adresses_distant_impossible_telecharger');
        }
    }
    if (count($erreurs)) {
        $erreurs['message_erreur'] = _T('clevermail:veuillez_corriger_votre_saisie');
    }
    return $erreurs;
}