예제 #1
0
function formulaires_editer_profil_verifier_dist($id_auteur)
{
    $erreurs = array();
    $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
    $oblis = array('name', 'prenom', 'email');
    foreach ($oblis as $obli) {
        if (!strlen(_request($obli))) {
            $erreurs[$obli] = _T('editer_profil:erreur_' . $obli . '_obligatoire');
        }
    }
    // Verifier l'email
    if (!isset($erreurs['email'])) {
        $email = trim(_request('email'));
        if (!email_valide($email)) {
            $erreurs['email'] = _T('editer_profil:erreur_email_invalide');
        } elseif ($auteur['email'] == $auteur['login']) {
            if (sql_countsel("spip_auteurs", "(email=" . sql_quote($email) . " OR login="******") AND id_auteur!=" . intval($id_auteur))) {
                $erreurs['email'] = _T('editer_profil:erreur_email_doublon');
            }
        }
    }
    /* On ne permet pas aux redacteurs/admin de modifier leur pseudo ici
    	 si ils ont des articles publies car cela impacte leur signature */
    // 0minirezo ou 1comite
    if (intval($GLOBALS['visiteur_session']['statut']) <= 1) {
        $nb_articles = sql_countsel('spip_auteurs_liens AS L JOIN spip_articles as A ON (A.id_article=L.id_objet AND L.objet=' . sql_quote('article') . ')', 'L.id_auteur=' . intval($id_auteur) . " AND L.objet='article' AND A.statut=" . sql_quote('publie'));
        if ($nb_articles > 0) {
            if (_request('nom') and _request('nom') !== $auteur['nom']) {
                $erreurs['nom'] = _T('editer_profil:erreur_impossible_modifier_pseudo_auteur');
            }
        }
    }
    return $erreurs;
}
예제 #2
0
function formulaires_ecrire_auteur_verifier_dist($id_auteur, $id_article, $mail)
{
    $erreurs = array();
    include_spip('inc/filtres');
    if (!($adres = _request('email_message_auteur'))) {
        $erreurs['email_message_auteur'] = _T("info_obligatoire");
    } elseif (!email_valide($adres)) {
        $erreurs['email_message_auteur'] = _T('form_prop_indiquer_email');
    } else {
        include_spip('inc/session');
        session_set('email', $adres);
    }
    if (!($sujet = _request('sujet_message_auteur'))) {
        $erreurs['sujet_message_auteur'] = _T("info_obligatoire");
    } elseif (!(strlen($sujet) > 3)) {
        $erreurs['sujet_message_auteur'] = _T('forum:forum_attention_trois_caracteres');
    }
    if (!($texte = _request('texte_message_auteur'))) {
        $erreurs['texte_message_auteur'] = _T("info_obligatoire");
    } elseif (!(strlen($texte) > 10)) {
        $erreurs['texte_message_auteur'] = _T('forum:forum_attention_dix_caracteres');
    }
    if (_request('nobot')) {
        $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
    }
    if (!_request('confirmer') and !count($erreurs)) {
        $erreurs['previsu'] = ' ';
    }
    return $erreurs;
}
예제 #3
0
function formulaires_configurer_annonces_verifier_dist()
{
    $erreurs = array();
    if (_request('suivi_edito') == 'oui') {
        if (!($email = _request('adresse_suivi'))) {
            $erreurs['adresse_suivi'] = _T('info_obligatoire');
        } else {
            include_spip('inc/filtres');
            if (!email_valide($email)) {
                $erreurs['adresse_suivi'] = _T('form_prop_indiquer_email');
            }
        }
    }
    if (_request('quoi_de_neuf') == 'oui') {
        if (!($email = _request('adresse_neuf'))) {
            $erreurs['adresse_neuf'] = _T('info_obligatoire');
        } else {
            include_spip('inc/filtres');
            if (!email_valide($email)) {
                $erreurs['adresse_neuf'] = _T('form_prop_indiquer_email');
            }
        }
        if (!($email = _request('jours_neuf'))) {
            $erreurs['jours_neuf'] = _T('info_obligatoire');
        }
    }
    return $erreurs;
}
function formulaires_editer_profil_verifier_dist($id_auteur, $retour = '')
{
    $email = _request('email');
    $pass = _request('new_pass');
    $pass2 = _request('new_pass2');
    foreach (array('nom', 'prenom', 'activite', 'email') as $obligatoire) {
        if (!_request($obligatoire)) {
            $erreurs[$obligatoire] = _T('fraap_candidatures:form_champ_obligatoire');
        }
    }
    if ($email and !email_valide($email)) {
        $erreurs['email'] = _T('form_email_non_valide');
    }
    if ($p = _request('new_pass')) {
        if (strlen($p) < 6) {
            $erreurs['new_pass'] = _T('fraap_candidatures:pass_trop_court');
        } elseif ($p != _request('new_pass2')) {
            $erreurs['new_pass2'] = _T('fraap_candidatures:pass_pas_identique');
        }
    }
    if (!$mdp && $mdp2) {
        $erreurs['new_pass'] = _T('fraap_candidatures:pass_pas_identique');
    }
    return $erreurs;
}
예제 #5
0
/**
 * Calculs de paramètres de contexte automatiques pour la balise FORMULAIRE_ECRIRE_AUTEUR
 *
 * Retourne le contexte du formulaire uniquement si l'email de l'auteur
 * est valide, sinon rien (pas d'exécution/affichage du formulaire)
 * 
 * @param array $args
 *   Liste des arguments demandés obtenus du contexte (id_auteur, id_article, email)
 * @param array $context_compil
 *   Tableau d'informations sur la compilation
 * @return array|string
 *   - Liste (id_auteur, id_article, email) des paramètres du formulaire CVT
 *   - chaîne vide sinon (erreur ou non affichage).
 */
function balise_FORMULAIRE_ECRIRE_AUTEUR_stat($args, $context_compil)
{
    include_spip('inc/filtres');
    // Pas d'id_auteur ni d'id_article ? Erreur de contexte
    $id = intval($args[1]);
    if (!$args[0] and !$id) {
        $msg = array('zbug_champ_hors_motif', array('champ' => 'FORMULAIRE_ECRIRE_AUTEUR', 'motif' => 'AUTEURS/ARTICLES'));
        erreur_squelette($msg, $context_compil);
        return '';
    }
    // Si on est dans un contexte article,
    // sortir tous les mails des auteurs de l'article
    if (!$args[0] and $id) {
        $r = '';
        $s = sql_allfetsel('email', 'spip_auteurs AS A LEFT JOIN spip_auteurs_liens AS L ON (A.id_auteur=L.id_auteur AND L.objet=\'article\')', "A.email != '' AND L.id_objet={$id}");
        foreach ($s as $row) {
            if (email_valide($row['email'])) {
                $r .= ', ' . $row['email'];
            }
        }
        $args[2] = substr($r, 2);
    }
    // On ne peut pas ecrire a un auteur dont le mail n'est pas valide
    if (!$args[2] or !email_valide($args[2])) {
        return '';
    }
    // OK
    return $args;
}
예제 #6
0
function formulaires_configurer_bank_paiement_verifier_dist()
{
    $erreurs = array();
    if ($e = _request('email_ticket_admin') and !email_valide($e)) {
        $erreurs['email_ticket_admin'] = _T('form_prop_indiquer_email');
    }
    if (!count($erreurs)) {
        if ($dels = _request('action_del') and count($dels)) {
            set_request('action_del');
            foreach ($dels as $del => $v) {
                set_request($del, null);
            }
        }
        if ($ups = _request('action_up') and count($ups)) {
            set_request('action_up');
            foreach ($ups as $up => $v) {
                bank_deplacer_config($up, "up");
            }
        }
        if ($downs = _request('action_down') and count($downs)) {
            set_request('action_down');
            foreach ($downs as $down => $v) {
                bank_deplacer_config($down, "down");
            }
        }
        if (_request('action_append') and $presta = _request('action_append_presta') and in_array($presta, bank_lister_prestas())) {
            set_request('action_append');
            set_request('action_append_presta');
            bank_ajouter_config($presta);
        }
    }
    return $erreurs;
}
예제 #7
0
파일: oubli.php 프로젝트: rhertzog/lcs
function test_oubli_dist($email)
{
	include_spip('inc/filtres'); # pour email_valide()
	if (!email_valide($email) )
		return _T('pass_erreur_non_valide', array('email_oubli' => htmlspecialchars($email)));
	return array('mail' => $email);
}
예제 #8
0
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;
}
function formulaires_configurer_bank_paiement_verifier_dist()
{
    $erreurs = array();
    if ($e = _request('email_ticket_admin') and !email_valide($e)) {
        $erreurs['email_ticket_admin'] = _T('form_prop_indiquer_email');
    }
    return $erreurs;
}
function formulaires_vacarme_editer_email_auteur_verifier_dist($id_auteur = 'new')
{
    $erreurs = formulaires_editer_objet_verifier('auteur', $id_auteur, array('email'));
    if ($email = _request('email')) {
        include_spip('inc/filtres');
        if (!email_valide($email)) {
            $erreurs['email'] = _T('form_email_non_valide');
        }
    }
    return $erreurs;
}
예제 #11
0
function formulaires_spip_listes_inscription_verifier_dist ($id_liste='')
{
	$erreurs = array();
	
	// verifier que les champs obligatoires sont bien la :
	foreach(array('email') as $obligatoire) {
		if (!_request($obligatoire))
		{
			$erreurs[$obligatoire] = _T('spiplistes:champ_obligatoire');
		}
	}
	
	if (!in_array(_request('format_abo'), array('html','texte')))
	{
		$erreurs['format'] = 'format inconnu';
	}
	
	$listes = _request('listes');
	
	if (is_array($listes))
	{
		foreach($listes as $liste)
		{
			$id_liste = intval($liste);
			if(!$id_liste) 
			{
				$erreurs['liste'] = _T('spiplistes:liste_inconnue');
			}
		}
	}

	// verifier que si un email a ete saisi, il est bien valide :
	include_spip('inc/filtres');
	$email = _request('email');
	if ($email && !email_valide($email)) 
	{
		$erreurs['email'] = _T('spiplistes:cet_email_pas_valide');
	}
	
	//// Verifier si le mail est deja connu
	//if (email_valide(_request('email'))) {
	//	if (sql_getfetsel('id_auteur','spip_auteurs',"id_auteur !='".intval($id_auteur)."' AND email = '$email'")) {
	//		$erreurs['email'] = _T('spiplistes:cet_email_deja_enregistre');
	//	}
	//}

	if (count($erreurs)) {
		$erreurs['message_erreur'] = _T('spiplistes:saisie_erreurs');
	}
	
    return ($erreurs); // si c'est vide, traiter sera appele, sinon le formulaire sera re-soumis
}
예제 #12
0
function clevermail_verification_adresses_email($adresses)
{
    include_spip('inc/filtres');
    if (is_string($adresses)) {
        $adresses = clevermail_chaine_email_en_tableau($adresses);
    }
    foreach ($adresses as $adresse) {
        if (!email_valide($adresse)) {
            return false;
        }
    }
    return true;
}
예제 #13
0
/**
 * Verifier les champs postes et signaler d'eventuelles erreurs
 */
function formulaires_newsletter_subscribe_verifier_dist($listes = '')
{
    $erreurs = array();
    if (!($email = _request('session_email'))) {
        $erreurs['session_email'] = _T('info_obligatoire');
    } else {
        // verifier que l'email est valide
        if (!email_valide($email)) {
            $erreurs['session_email'] = _T('info_email_invalide');
        }
    }
    return $erreurs;
}
예제 #14
0
function formulaires_configurer_identite_verifier_dist()
{
    $erreurs = array();
    // adresse_site est obligatoire mais rempli automatiquement si absent !
    foreach (array('nom_site') as $obli) {
        if (!_request($obli)) {
            $erreurs[$obli] = _T('info_obligatoire');
        }
    }
    if ($email = _request('email_webmaster') and !email_valide($email)) {
        $erreurs['email_webmaster'] = _T('info_email_invalide');
    }
    return $erreurs;
}
예제 #15
0
function formulaires_tispip_contact_verifier_dist(){
	$erreurs = array();
	// verifier que les champs obligatoires sont bien la :
	foreach(array('email','message') as $obligatoire)
		if (!_request($obligatoire)) $erreurs[$obligatoire] = 'Ce champ est obligatoire';
	
	// verifier que si un email a été saisi, il est bien valide :
	include_spip('inc/filtres');
	if (_request('email') AND !email_valide(_request('email')))
		$erreurs['email'] = 'Cet email n\'est pas valide';

	if (count($erreurs))
		$erreurs['message_erreur'] = 'Votre saisie contient des erreurs !';
	return $erreurs;
}
예제 #16
0
function action_confirmer_email_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    include_spip('inc/filtres');
    if ($GLOBALS['visiteur_session']['id_auteur'] and email_valide($arg)) {
        include_spip('action/editer_auteur');
        auteur_modifier($GLOBALS['visiteur_session']['id_auteur'], array('email' => $arg));
    }
    // verifier avant de rediriger pour invalider le message de confirmation
    // si ca n'a pas marche
    if ($redirect = _request('redirect') and !$arg == sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($GLOBALS['visiteur_session']))) {
        $GLOBALS['redirect'] = parametre_url($redirect, 'email_modif', '');
    }
}
예제 #17
0
/**
 * Fonction generique de verification des destinataires
 * lors de l'envoi d'un message ou de recommander
 * un destinataire peut etre un id_auteur numerique
 * ou une adresse mail valide, si l'options accepter_email est true
 *
 * @param array $destinataires
 * @param array $options
 * @return array
 */
function messagerie_verifier_destinataires($destinataires, $options = array('accepter_email' => true))
{
    $erreurs = array();
    $destinataires = messagerie_nettoyer_destinataires($destinataires);
    foreach ($destinataires as $id) {
        if (is_numeric($id)) {
            if (!$id) {
                $erreurs[] = _T('organiseur:erreur_destinataire_invalide', array('dest' => $id));
            }
        } else {
            if (!$options['accepter_email'] or !email_valide($id)) {
                $erreurs[] = _T('organiseur:erreur_destinataire_invalide', array('dest' => $id));
            }
        }
    }
    return $erreurs;
}
예제 #18
0
function formulaires_clevermail_multiple_verifier_dist($lst_id = 0, $lsr_mode_force = false)
{
    $erreurs = array();
    if (!_request('lst_id') && !_request('lst_ids')) {
        $erreurs['lst_ids'] = _T('clevermail:ce_champ_est_obligatoire');
    }
    if (!_request('sub_email')) {
        $erreurs['sub_email'] = _T('clevermail:ce_champ_est_obligatoire');
    }
    include_spip('inc/filtres');
    if (_request('sub_email') && !email_valide(_request('sub_email'))) {
        $erreurs['sub_email'] = _T('clevermail:cette_adresse_email_n_est_pas_valide');
    }
    if (count($erreurs)) {
        $erreurs['message_erreur'] = _T('clevermail:veuillez_corriger_votre_saisie');
    }
    return $erreurs;
}
/**
 * fonction qu'on peut redefinir pour filtrer les adresses mail et les noms,
 * et donner des infos supplementaires
 * Std: controler que le nom (qui sert a calculer le login) est plausible
 * et que l'adresse est valide. On les normalise au passage (trim etc).
 * Retour:
 * - si ok un tableau avec au minimum email, nom, mode (redac / forum)
 * - si ko une chaine de langue servant d'argument a  _T expliquant le refus
 *
 * http://doc.spip.org/@test_inscription_dist
 *
 * @param string $statut
 * @param string $mail
 * @param string $nom
 * @param string $options
 * @return array|string
 */
function test_inscription_dist($statut, $mail, $nom, $options)
{
    include_spip('inc/filtres');
    if (!($r = email_valide($mail))) {
        return 'info_email_invalide';
    }
    $nom = trim(corriger_caracteres($nom));
    $res = array('email' => $r, 'nom' => $nom, 'prefs' => $statut);
    if (isset($options['login'])) {
        $login = trim(corriger_caracteres($options['login']));
        if (strlen($login) >= _LOGIN_TROP_COURT and strlen($nom) <= 64) {
            $res['login'] = $login;
        }
    }
    if (!isset($res['login']) and (strlen($nom) < _LOGIN_TROP_COURT or strlen($nom) > 64)) {
        return 'ecrire:info_login_trop_court';
    }
    return $res;
}
예제 #20
0
function formulaires_clevermail_settings_edit_verifier_dist()
{
    include_spip('inc/filtres');
    $mails = array('CM_MAIL_ADMIN', 'CM_MAIL_FROM', 'CM_MAIL_RETURN');
    $keys = array('CM_MAIL_ADMIN', 'CM_MAIL_FROM', 'CM_MAIL_RETURN', 'CM_SEND_NUMBER', 'CM_MAIL_SUBJECT', 'CM_MAIL_TEXT');
    $erreurs = array();
    foreach ($keys as $obligatoire) {
        if (!_request($obligatoire)) {
            $erreurs[$obligatoire] = _T('clevermail:ce_champ_est_obligatoire');
        }
    }
    foreach ($mails as $mail) {
        if (!email_valide(_request($mail))) {
            $erreurs[$mail] = _T('cette_adresse_email_n_est_pas_valide');
        }
    }
    if (count($erreurs)) {
        $erreurs['message_erreur'] = _T('clevermail:veuillez_corriger_votre_saisie');
    }
    return $erreurs;
}
예제 #21
0
function formulaires_editer_auteur_public_verifier_dist($id_auteur = 'new', $retour = '', $associer_objet = '', $config_fonc = 'auteurs_edit_config', $row = array(), $hidden = '')
{
    // auto-renseigner le nom si il n'existe pas, sans couper
    titre_automatique('nom', array('email', 'login'), 255);
    // mais il reste obligatoire si on a rien trouve
    $erreurs = formulaires_editer_objet_verifier('auteur', $id_auteur, array('nom'));
    $auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
    $auth_methode = $auth_methode ? $auth_methode : 'spip';
    include_spip('inc/auth');
    if ($email = _request('email')) {
        include_spip('inc/filtres');
        include_spip('inc/autoriser');
        // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
        if (!autoriser('modifier', 'auteur', $id_auteur, null, array('email' => '?')) and $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur and !strlen(trim($email)) and $email != ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))) {
            $erreurs['email'] = $id_auteur == $GLOBALS['visiteur_session']['id_auteur'] ? _T('form_email_non_valide') : _T('form_prop_indiquer_email');
        } else {
            if (!email_valide($email)) {
                $erreurs['email'] = $id_auteur == $GLOBALS['visiteur_session']['id_auteur'] ? _T('form_email_non_valide') : _T('form_prop_indiquer_email');
            }
        }
    }
    if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
        $erreurs['new_login'] = $err;
        $erreurs['message_erreur'] .= $err;
    } else {
        // pass trop court ou confirmation non identique
        if ($p = _request('new_pass')) {
            if ($p != _request('new_pass2')) {
                $erreurs['new_pass'] = _T('info_passes_identiques');
                $erreurs['message_erreur'] .= _T('info_passes_identiques');
            } elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
                $erreurs['new_pass'] = $err;
                $erreurs['message_erreur'] .= $err;
            }
        }
    }
    return $erreurs;
}
예제 #22
0
파일: agenda.php 프로젝트: rhertzog/lcs
function construire_personne_ics($personnes)
{
	$r = is_array($personnes) ? $personnes : array($personnes);
	foreach ($r as $k => $p) {
		if (!is_numeric($p)) {
			$mail = email_valide($p);
			if (preg_match('/^[^@]+/', $mail, $m))
				$r[$k] = preg_replace('/[.]/', ' ', $m[0]);
		} else {
			$m = sql_fetsel("email, nom", 'spip_auteurs', "id_auteur=$p");
			if ($m) {
			  $mail = $m['email'];
			  $r[$k] = $m['nom'] ? $m['nom'] : ($mail ? $mail : $p);
			}
		}
		if ($mail)
			$r[$k] = "<a href='mailto:$mail'>" . $r[$k] . "</a>";
	}
	return join(' ', $r);
}
예제 #23
0
function formulaires_signature_verifier_dist($id_article)
{
    $erreurs = array();
    $oblis = array('session_nom', 'session_email');
    include_spip('base/abstract_sql');
    $row = sql_fetsel('*', 'spip_petitions', 'id_article=' . intval($id_article));
    if (!$row) {
        $erreurs['message_erreur'] = _T('petitions:form_pet_probleme_technique');
    }
    $id_petition = $row['id_petition'];
    if ($row['site_obli'] == 'oui') {
        $oblis[] = 'signature_nom_site';
        $oblis[] = 'signature_url_site';
        set_request('signature_url_site', vider_url(_request('signature_url_site')));
    }
    foreach ($oblis as $obli) {
        if (!_request($obli)) {
            $erreurs[$obli] = _T('info_obligatoire');
        }
    }
    if ($nom = _request('session_nom') and strlen($nom) < 2) {
        $erreurs['session_nom'] = _T('form_indiquer_nom');
    }
    include_spip('inc/filtres');
    if (($mail = _request('session_email')) == _T('info_mail_fournisseur')) {
        $erreurs['session_email'] = _T('form_indiquer_email');
    } elseif ($mail and !email_valide($mail)) {
        $erreurs['session_email'] = _T('form_email_non_valide');
    } elseif (strlen(_request('nobot')) or @preg_match_all(',\\bhref=[\'"]?http,i', _request('message')) > 2) {
        #$envoyer_mail = charger_fonction('envoyer_mail','inc');
        #envoyer_mail('*****@*****.**', 'spam intercepte', var_export($_POST,1));
        $erreurs['message_erreur'] = _T('petitions:form_pet_probleme_liens');
    }
    if ($row['site_obli'] == 'oui') {
        if (!vider_url($url_site = _request('signature_url_site'))) {
            $erreurs['signature_url_site'] = _T('form_indiquer_nom_site');
        } elseif (!count($erreurs)) {
            include_spip('inc/distant');
            if (!recuperer_page($url_site, false, true, 0)) {
                $erreurs['signature_url_site'] = _T('petitions:form_pet_url_invalide');
            }
        }
    }
    if (!count($erreurs)) {
        // tout le monde est la.
        $email_unique = $row['email_unique'] == "oui";
        $site_unique = $row['site_unique'] == "oui";
        // Refuser si deja signe par le mail ou le site quand demande
        // Il y a un acces concurrent potentiel,
        // mais ca n'est qu'un cas particulier de qq n'ayant jamais confirme'.
        // On traite donc le probleme a la confirmation.
        if ($email_unique) {
            $r = sql_countsel('spip_signatures', "id_petition=" . intval($id_petition) . " AND ad_email=" . sql_quote($mail) . " AND statut='publie'");
            if ($r) {
                $erreurs['message_erreur'] = _T('petitions:form_pet_deja_signe');
            }
        }
        if ($site_unique) {
            $r = sql_countsel('spip_signatures', "id_petition=" . intval($id_petition) . " AND url_site=" . sql_quote($url_site) . " AND (statut='publie' OR statut='poubelle')");
            if ($r) {
                $erreurs['message_erreur'] = _T('petitions:form_pet_site_deja_enregistre');
            }
        }
    }
    return $erreurs;
}
예제 #24
0
function formulaires_editer_auteur_verifier_dist($id_auteur='new', $retour='', $lier_article=0, $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){
	$erreurs = formulaires_editer_objet_verifier('auteur',$id_auteur,array('nom'));

	$auth_methode = sql_getfetsel('source','spip_auteurs','id_auteur='.intval($id_auteur));
	$auth_methode = ($auth_methode ? $auth_methode : 'spip');
	include_spip('inc/auth');
	include_spip('inc/autoriser');
	include_spip('inc/filtres');

	if (!nom_acceptable(_request('nom'))) {
		$erreurs['nom'] = _T("info_nom_pas_conforme");
	}
	if ($email = _request('email')){
		// un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
		if (!autoriser('modifier','auteur',$id_auteur,null,array('email'=>'?'))
			AND $GLOBALS['visiteur_session']['id_auteur']==$id_auteur
			AND !strlen(trim($email))
			AND $email!=($email_ancien=sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.intval($id_auteur)))
			){
			$erreurs['email'] = _T('form_email_non_valide');
		}
		else if (!email_valide($email)){
			$erreurs['email'] = _T('form_email_non_valide');
		}
	}

	if (preg_match(",^\s*javascript,i", _request('url_site'))) {
		$erreurs['url_site'] = _T('info_url_site_pas_conforme');
	}

	if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)){
		$erreurs['new_login'] = $err;
		$erreurs['message_erreur'] .= $err;
	}
	else {
		// pass trop court ou confirmation non identique
		if ($p = _request('new_pass')) {
			if ($p != _request('new_pass2')) {
				$erreurs['new_pass'] = _T('info_passes_identiques');
				$erreurs['message_erreur'] .= _T('info_passes_identiques');
			}
			elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'),$p, $id_auteur)){
				$erreurs['new_pass'] = $err;
				$erreurs['message_erreur'] .= $err;
			}
		}
	}
	return $erreurs;
}
예제 #25
0
function exec_spiplistes_liste_gerer () {

	include_spip('inc/autoriser');
	include_spip('inc/mots');
	include_spip('inc/lang');
	include_spip('inc/editer_auteurs');
	include_spip('base/spiplistes_tables');
	include_spip('inc/spiplistes_api');
	include_spip('inc/spiplistes_api_presentation');
	include_spip('inc/spiplistes_dater_envoi');
	include_spip('inc/spiplistes_naviguer_paniers');
	include_spip('inc/spiplistes_listes_selectionner_auteur');
	
	global $meta
		, $connect_statut
		, $connect_toutes_rubriques
		, $connect_id_auteur
		, $spip_lang_left
		, $spip_lang_right
		, $couleur_claire
		;

	// initialise les variables postees par le formulaire
	foreach(array(
		'new'	// nouvelle liste si 'oui'
		, 'id_liste'// si modif dans l'editeur
		, 'btn_liste_edit', 'titre', 'texte', 'pied_page' // renvoyes par l'editeur
		, 'btn_modifier_diffusion', 'changer_lang', 'statut' // local
		, 'btn_modifier_replyto', 'email_envoi' // local
		, 'btn_modifier_courrier_auto', 'message_auto' // local
			, 'auto_chrono', 'auto_weekly', 'auto_mois'
			, 'titre_message', 'patron', 'periode', 'envoyer_maintenant'
			, 'jour', 'mois', 'annee', 'heure', 'minute'
		, 'btn_patron_pied', 'btn_grand_patron' // boites gauches
		, 'btn_valider_forcer_abos', 'forcer_abo', 'forcer_format_abo', 'forcer_format_reception'
		, 'btn_supprimer_liste' //local
		) as $key) {
		$$key = _request($key);
	}
	foreach(array('id_liste', 'periode') as $key) {
		$$key = intval($$key);
	}
	foreach(array('titre', 'texte', 'pied_page') as $key) {
		$$key = trim(corriger_caracteres($$key));
	}
	$lang = $changer_lang;

	$cherche_auteur = _request('cherche_auteur');
	$debut = _request('debut');

	$envoyer_maintenant = ($envoyer_maintenant == 'oui');
	
	$boite_pour_confirmer_envoi_maintenant = 
		$grosse_boite_moderateurs = 
		$message_erreur =
		$page_result = "";

	if(!$id_liste)
	{
	//////////////////////////////////////////////////////
	// Creer une liste
	////
		// admin lambda peut creer une liste
		$flag_editable = ($connect_statut == "0minirezo");
		
		if ($btn_liste_edit && ($new=='oui')) {
			
			if ($titre == '') {
				$titre = _T('spiplistes:liste_sans_titre');
			}
			
			$pied_page = _SPIPLISTES_PATRON_PIED_DEFAUT;
			
			if($id_liste = spiplistes_listes_liste_creer(_SPIPLISTES_LIST_PRIVATE, $GLOBALS['spip_lang']
				, $titre, $texte, $pied_page)) {
					spiplistes_log("id_liste #$id_liste added by id_auteur #$connect_id_auteur");
			}
		} 	
	}
	else if($id_liste > 0)
	{
	//////////////////////////////////////////////////////
	// Modifier une liste
	////
		// les admins toutes rubriques et le moderateur seuls peuvent modifier la liste
		$flag_editable = autoriser('moderer', 'liste', $id_liste);

		if($flag_editable)
		{
		
			// Recupere les donnees de la liste courante pour optimiser l'update
			$sql_select = "statut,titre,date,lang";
			$sql_result = sql_select($sql_select, "spip_listes", "id_liste=".sql_quote($id_liste), "", "", "1");
			if($row = sql_fetch($sql_result)) {
				foreach(explode(",", $sql_select) as $key) {
					$current_liste[$key] = $row[$key];
				}
			}
			
			///////////////////////////////////
			// Les modifications (sql_upadteq)
			// A noter, ne pas preparer les valeurs par sql_quote()
			//  sql_upadteq() s'en occupe
			
			$sql_champs = array();

			// Retour de l'editeur ?
			if($btn_liste_edit) {
				$titre = corriger_caracteres($titre);
				$texte = corriger_caracteres($texte);
				if(empty($titre)) {
					$titre = filtrer_entites(_T('spiplistes:Nouvelle_liste_de_diffusion'));
				}
				$sql_champs['titre'] = $titre;
				$sql_champs['texte'] = $texte;
			}
			
			// Modifier le grand patron ?
			// a partir de 2.0049, le patron de pied est construit par la meleuse
			// afin de permettre _texte et multilingue
			if($btn_grand_patron && $patron) {
				$sql_champs['patron'] = $patron;
			}
			
			// Modifier patron de pied ?
			if($btn_patron_pied && $patron) {
				$sql_champs['pied_page'] = $patron;
			}
			
			// Modifier diffusion ?
			if($btn_modifier_diffusion)
			{
				$current_statut = ($statut)
					? $statut
					: $current_liste['statut']
					;
					
				spiplistes_debug_log ('Modification diffusion statut: '.$current_statut);
				
				// Modifier le statut ?
				if(in_array($statut, explode(";", _SPIPLISTES_LISTES_STATUTS_TOUS)) 
					&& ($statut != $current_liste['statut'])
				) {
					spiplistes_debug_log ('Modification statut: '.$statut);
					$sql_champs['statut'] = $statut;
					// si la liste passe en privee, retire les invites
					if($statut == _SPIPLISTES_LIST_PRIVATE) {
						$auteur_statut = '6forum';
						spiplistes_abonnements_auteurs_supprimer($auteur_statut);
						spiplistes_log("AUTEURS ($auteur_statut) REMOVED FROM LISTE #$id_liste ($statut) BY ID_AUTEUR #$connect_id_auteur");
					}
				}
				// Modifier la langue ?
				if(!empty($lang) && ($lang!=$current_liste['lang'])) {
					$sql_champs['lang'] = $lang;
				}
			}
			
			// Modifier l'adresse email de reponse ?
			if($btn_modifier_replyto && email_valide($email_envoi) && ($email_envoi!=$current_liste['email_envoi'])) {
				$sql_champs['email_envoi'] = $email_envoi;
			}

			////////////////////////////////////
			// Modifier message_auto ?
			// bloc "courriers automatiques"
			if($btn_modifier_courrier_auto)
			{
				$current_statut = ($statut)
					? $statut
					: $current_liste['statut']
					;
					
				spiplistes_debug_log ('Modification periodicite statut: '.$current_statut);
				
				$envoyer_quand = spiplistes_formate_date_form($annee, $mois, $jour, $heure, $minute);
			
				if(time() > strtotime($envoyer_quand)) {
				// envoi dans le passe est considere comme envoyer maintenant
					$envoyer_maintenant = true;
					$date_depuis = $envoyer_quand;
					$envoyer_quand = false;
				}
				// spiplistes_debug_log("nb vrais abos : ".spiplistes_listes_vrais_abos_compter($id_liste));
				if($envoyer_maintenant && ($message_auto != 'non')) {
					if(!spiplistes_listes_vrais_abos_compter($id_liste)) {
						$boite_pour_confirmer_envoi_maintenant .= 
							spiplistes_boite_alerte(_T('spiplistes:boite_alerte_manque_vrais_abos'), true);
					}
					else {
						$boite_pour_confirmer_envoi_maintenant = ""
							. debut_cadre_couleur('', true)
							// formulaire de confirmation envoi
							. spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_LISTES_LISTE), true)
							. "<p style='text-align:center;font-weight:bold;' class='verdana2'>"
							. _T('spiplistes:boite_confirmez_envoi_liste') . "</p>"
							. "<input type='hidden' name='id_liste' value='$id_liste' />\n"
							. spiplistes_form_bouton_valider('btn_confirmer_envoi_maintenant')
							. spiplistes_form_fin(true)
							. fin_cadre_couleur(true)
							;
					}
					$date_prevue = normaliser_date(time());
				}

				if($message_auto == 'oui') {
				
					$sql_champs['message_auto'] = 'oui';
					$sql_champs['titre_message'] = $titre_message;
					$sql_champs['date'] = (!$envoyer_maintenant) ? $envoyer_quand : '';
					
					switch($auto_chrono) {
						case 'auto_jour':
							$sql_champs['statut'] =
								($current_statut == _SPIPLISTES_LIST_PRIVATE)
								? _SPIPLISTES_LIST_PRIV_DAILY
								: _SPIPLISTES_LIST_PUB_DAILY
								;
							// force au minimum 1 jour
							$sql_champs['periode'] = (($periode > 0) ? $periode : 1);
							break;
						case 'auto_hebdo':
							if($auto_weekly == 'oui') {
								// debut de semaine ?
								$sql_champs['statut'] =
									($current_statut == _SPIPLISTES_LIST_PRIVATE)
									? _SPIPLISTES_LIST_PRIV_WEEKLY
									: _SPIPLISTES_LIST_PUB_WEEKLY
									;
								// corrige la date pour le lundi de la semaine
								$time = strtotime($envoyer_quand);
								$time = mktime(0,0,0,date("m", $time),date("d", $time)-date("w", $time)+1,date("Y", $time));
    							$envoyer_quand = date("Y-m-d H:i:s", $time);
	 							$sql_champs['date'] = $envoyer_quand;
							} else {
								$sql_champs['statut'] =
									($current_statut == _SPIPLISTES_LIST_PRIVATE)
									? _SPIPLISTES_LIST_PRIV_HEBDO
									: _SPIPLISTES_LIST_PUB_HEBDO
									;
							}
							$sql_champs['periode'] = 0;
							break;
						case 'auto_mensuel':
							if($auto_mois == 'oui') {
								// debut du mois ?
								$sql_champs['statut'] =
									($current_statut == _SPIPLISTES_LIST_PRIVATE)
									? _SPIPLISTES_LIST_PRIV_MONTHLY
									: _SPIPLISTES_LIST_PUB_MONTHLY
									;
								// corrige la date, 1' du mois
								$envoyer_quand = substr($envoyer_quand, 0, 8)."01 00:00:00";
								$sql_champs['date'] = $envoyer_quand;
							} else {
								$sql_champs['statut'] =
									($current_statut == _SPIPLISTES_LIST_PRIVATE)
									? _SPIPLISTES_LIST_PRIV_MENSUEL
									: _SPIPLISTES_LIST_PUB_MENSUEL
									;
							}
							$sql_champs['periode'] = 0;
							break;
						case 'auto_an':
							$sql_champs['statut'] =
								($current_statut == _SPIPLISTES_LIST_PRIVATE)
								? _SPIPLISTES_LIST_PRIV_YEARLY
								: _SPIPLISTES_LIST_PUB_YEARLY
								;
							$sql_champs['periode'] = 0;
							break;
					}
				}
				else if($message_auto == 'non') {
					$sql_champs['message_auto'] = 'non';
					$sql_champs['date'] = '';
					$sql_champs['periode'] = 0;
				}
			} // end if($btn_modifier_courrier_auto)
			
			// Enregistre les modifs pour cette liste
			if(count($sql_champs))
			{
				sql_updateq('spip_listes', $sql_champs, 'id_liste='.sql_quote($id_liste).' LIMIT 1');
			}
			
			// Forcer les abonnements
			if($btn_valider_forcer_abos && $forcer_abo && in_array($forcer_abo, array('tous', 'auteurs', '6forum', 'aucun'))) {
				
				$forcer_format_reception = 
					(($forcer_format_abo == 'oui') && in_array($forcer_format_reception, spiplistes_formats_autorises()))
					? $forcer_format_reception
					: false
					;
				include_spip('inc/spiplistes_listes_forcer_abonnement');
				
				if(spiplistes_listes_forcer_abonnement ($id_liste, $forcer_abo, $forcer_format_reception) ===  false) {
					$message_erreur .= spiplistes_boite_alerte(_T('spiplistes:Forcer_abonnement_erreur'), true);
				}
			}
			
		} // end if($flag_editable)
	}

	//////////////////////////////////////////////////////
	// Recharge les donnees la liste

	$sql_select_array = array('id_liste', 'titre', 'texte'
			, 'titre_message', 'pied_page', 'date', 'statut', 'maj'
			, 'email_envoi', 'message_auto', 'periode', 'patron', 'lang');

	if($row = spiplistes_listes_liste_fetsel($id_liste, $sql_select_array)) {
		foreach($sql_select_array as $key) {
			// initialise les variables du resultat SQL
			$$key = $row[$key];
		}
	}

	// les supers-admins et le moderateur seuls peuvent modifier la liste
	$flag_editable = autoriser('moderer', 'liste', $id_liste);

	if (empty($titre_message))
	{
		$titre_message = $titre;
		if (spiplistes_pref_lire_defaut('opt_completer_titre_nom_site', 'oui') == 'oui')
		{
			$titre_message .= _T('spiplistes:_de_')
				. spiplistes_nom_site_texte($lang);
		}
	}
	
	$nb_abonnes = spiplistes_listes_nb_abonnes_compter($id_liste);

	// preparation des boutons 
	if($flag_editable) {
		// Propose de modifier la liste 
		$gros_bouton_modifier = 
			icone (
				_T('spiplistes:Modifier_cette_liste') // legende bouton
				, generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_EDIT,'id_liste='.$id_liste) // lien
				, _DIR_PLUGIN_SPIPLISTES_IMG_PACK."reply-to-all-24.gif" // image du fond
				, "edit.gif" // image de la fonction. Ici, le crayon
				, '' // alignement
				, false // pas echo, demande retour
				)
			;
		// Propose de supprimer la liste 
		$gros_bouton_supprimer = 
			icone (
					_T('spiplistes:Supprimer_cette_liste')
					, generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER, "btn_supprimer_liste=$id_liste&id_liste=$id_liste")
					, _DIR_PLUGIN_SPIPLISTES_IMG_PACK.'poubelle_msg.gif'
					, ""
					, "right"
					, false
					)
			;
			
		// la grosse boite des abonnes
		$tri = _request('tri') ? _request('tri') : 'nom';
		//
		// CP-20101017: Si trop d'elligibles, ca gele.
		// @todo: revoir la boite/liste des abonnes/elligibles
		// En attendant ...
		//if(spiplistes_auteurs_elligibles_compter() < 1000)
		//{
			$boite_liste_abonnes = spiplistes_listes_boite_abonnements(
				$id_liste, $statut, $tri, $debut, _SPIPLISTES_EXEC_LISTE_GERER
			);
		//}
		//else
		//{
		//	$boite_liste_abonnes = _T('spiplistes:code_en_travaux');
		//}
		
		
		// @see http://www.spip-contrib.net/SPIP-Listes#comment444314
		
		
		
		$titre_boite = _T('spiplistes:abos_cette_liste');
		$legend = '<small id="legend-abos1">'
			. spiplistes_nb_abonnes_liste_str_get($id_liste)
			. '</small>'.PHP_EOL
			;
		$grosse_boite_abonnements = ''
			. '<!-- boite abonnes/elligibles -->'.PHP_EOL
			. debut_cadre_enfonce('auteur-24.gif', true, '', $titre_boite)
			. spiplistes_bouton_block_depliable($legend
				, false, md5('abonnes_liste'))
			. (spiplistes_spip_est_inferieur_193() ? $legend : '')
			. spiplistes_debut_block_invisible(md5('abonnes_liste'))
			. debut_cadre_relief('', true)
			. $boite_liste_abonnes
			. fin_cadre_relief(true)
			. fin_block()
			. fin_cadre_enfonce(true)
			. '<!-- fin boite abonnes/elligibles -->'.PHP_EOL
			;

		// la grosse boite des moderateurs
		$boite_liste_moderateurs = spiplistes_listes_boite_moderateurs(
			$id_liste, _SPIPLISTES_EXEC_LISTE_GERER, 'mods-conteneur'
			);
		$titre_boite = _T('spiplistes:mods_cette_liste');
		$nb = spiplistes_mod_listes_compter($id_liste);
		$legend = '<small>'
			. spiplistes_nb_moderateurs_liste_str_get($nb)
			. '</small>'.PHP_EOL
			;
		$grosse_boite_moderateurs = ''
			. '<!-- boite moderateurs -->'.PHP_EOL
			. debut_cadre_enfonce('redacteurs-24.gif', true, '', $titre_boite)
			. spiplistes_bouton_block_depliable($legend
				, false, md5('mods_liste'))
			. (spiplistes_spip_est_inferieur_193() ? $legend : '')
			. spiplistes_debut_block_invisible(md5('mods_liste'))
			. debut_cadre_relief('', true)
			. '<div id="mods-conteneur">'.PHP_EOL
			. $boite_liste_moderateurs
			. '</div>'.PHP_EOL
			. fin_cadre_relief(true)
			. fin_block()
			. fin_cadre_enfonce(true)
			. '<!-- fin boite moderateurs -->'.PHP_EOL
			;

	}
	else {
		$gros_bouton_modifier = $gros_bouton_supprimer = $grosse_boite_abonnements = '';
	}

////////////////////////////////////
// PAGE CONTENU
////////////////////////////////////

	$titre_page = _T('spiplistes:gestion_dune_liste');
	// Permet entre autres d'ajouter les classes a la page : <body class='$rubrique $sous_rubrique'>
	$rubrique = _SPIPLISTES_PREFIX;
	$sous_rubrique = 'liste_gerer';

	$commencer_page = charger_fonction('commencer_page', 'inc');
	echo($commencer_page(_T('spiplistes:spiplistes') . ' - ' . $titre_page, $rubrique, $sous_rubrique));

	// la gestion des listes de courriers est reservee aux admins 
	if($connect_statut != '0minirezo') {
		die (spiplistes_terminer_page_non_autorisee() . fin_page());
	}

	$page_result .= ''
		. '<br /><br /><br />' . PHP_EOL
		. spiplistes_gros_titre($titre_page, '', true)
		. barre_onglets($rubrique, $sous_rubrique)
		. debut_gauche($rubrique, true)
		. spiplistes_boite_info_id(_T('spiplistes:liste_numero'), $id_liste, true)
		. spiplistes_naviguer_paniers_listes(_T('spiplistes:aller_aux_listes_'), true)
		. spiplistes_boite_patron($flag_editable, $id_liste, _SPIPLISTES_EXEC_LISTE_GERER, 'btn_grand_patron'
			, _SPIPLISTES_PATRONS_DIR, _T('spiplistes:Patron_grand_')
			, ($patron ? $patron : '')
			, $patron)
		. spiplistes_boite_patron($flag_editable, $id_liste, _SPIPLISTES_EXEC_LISTE_GERER, 'btn_patron_pied'
			, _SPIPLISTES_PATRONS_PIED_DIR, _T('spiplistes:Patron_de_pied_')
			, ((($ii = strlen($pied_page)) > _SPIPLISTES_PATRON_FILENAMEMAX) 
				? _T('taille_octets',array('taille'=>$ii)) . _T('spiplistes:conseil_regenerer_pied')
				: $pied_page)
			, $pied_page)
		. pipeline('affiche_gauche', array('args'=>array('exec'=>$sous_rubrique),'data'=>''))
		//. creer_colonne_droite($rubrique, true)  // spiplistes_boite_raccourcis() s'en occupe
		. spiplistes_boite_raccourcis(true)
		. spiplistes_boite_autocron()
		. pipeline('affiche_droite', array('args'=>array('exec'=>$sous_rubrique),'data'=>''))
		. debut_droite($rubrique, true)
		. $message_erreur
		;

	changer_typo('','liste'.$id_liste);

	// message alerte et demande de confirmation si supprimer liste
	if(($btn_supprimer_liste > 0) && ($btn_supprimer_liste == $id_liste)) {
		$page_result .= ''
			. spiplistes_boite_alerte (_T('spiplistes:Attention_suppression_liste').'<br />'._T('spiplistes:Confirmez_requete'), true)
			. '<form name="form_suppr_liste" id="form_suppr_liste" method="post"
				action="'.generer_url_ecrire(_SPIPLISTES_EXEC_LISTES_LISTE, '').'">' . PHP_EOL
			. "<div class='verdana2' style='text-align:right;'>\n"
			. "<input type='hidden' name='id_liste' value='$id_liste' />\n"
   		. "<label>"._T('spiplistes:Confirmer_la_suppression_de_la_liste')."# $id_liste : \n"
   		. "<input class='fondo' type='submit' name='btn_supprimer_liste_confirme' value='"._T('bouton_valider')."' /></label>\n"
			. "</div>\n"
			. "</form>\n"
			. "<br />\n"
		;
	}

	$page_result .= ""
		. debut_cadre_relief("", true)
		. "\n<table cellpadding='0' cellspacing='0' border='0' width='100%'>\n"
		. "<tr><td valign='top'>\n"
		. spiplistes_gros_titre(spiplistes_bullet_titre_liste('puce', $statut, '', true)." "
			. spiplistes_calculer_balise_titre(extraire_multi($titre))
			, '', true)
		. "</td>"
		. "<td rowspan='2'>"
		// le gros bouton modifier si besoin
		. $gros_bouton_modifier
		. "</td></tr>\n"
		. "<tr><td width='100%'>\n"
		. "<div align='$spip_lang_left' style='padding: 5px; border: 1px dashed #aaa; ' class='verdana1 spip_small'>\n"
		. propre($texte."~")
		. "</div>\n"
		. "</td>\n"
		. "</tr></table>\n"
		;

	
	//////////////////////////////////////////////////////
	// Modifier le statut de la liste
	//$email_defaut = entites_html($meta['email_webmaster']);
	$email_defaut = ($m = email_valide($GLOBALS['meta']['email_defaut']))
		? $m
		: $GLOBALS['meta']['email_webmaster']
		;
	$email_envoi = ($m = email_valide($email_envoi))
		? $email_envoi
		: $email_defaut
		;

	$page_result .= ""
		//. debut_cadre_relief("racine-site-24.gif", true)
		. debut_cadre_relief("racine-site-24.gif", true, '', _T('spiplistes:Diffusion').spiplistes_plugin_aide(_SPIPLISTES_EXEC_AIDE, "diffusion"))
		//
		////////////////////////////
		// Formulaire diffusion
		.	(
			($flag_editable)
			? ''
				. spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER,'id_liste='.$id_liste), true)
				. '<input type="hidden" name="exec" value="listes" />' . PHP_EOL
				. '<input type="hidden" name="id_liste" value="'.$id_liste.'" />' . PHP_EOL
			: ''
			)
		. '<span class="verdana2">'
			. _T('spiplistes:cette_liste_est_'
			 	, array('s' => spiplistes_bullet_titre_liste ('puce', $statut, 'img_statut', true)))
		. '</span>' . PHP_EOL
		;

		$sel_private = ' value="' . _SPIPLISTES_LIST_PRIVATE . '" ' 
			. 	(
					in_array ($statut, array(
									_SPIPLISTES_LIST_PRIVATE
									, _SPIPLISTES_LIST_PRIV_DAILY
									, _SPIPLISTES_LIST_PRIV_HEBDO
									, _SPIPLISTES_LIST_PRIV_WEEKLY
									, _SPIPLISTES_LIST_PRIV_MENSUEL
									, _SPIPLISTES_LIST_PRIV_MONTHLY
									, _SPIPLISTES_LIST_PRIV_YEARLY
									)
						 )
					? ' selected="selected"' 
					: ''
				)
				;
		$sel_publique = ' value="' . _SPIPLISTES_LIST_PUBLIC . '" ' 
			. 	(
					in_array ($statut, array(
									_SPIPLISTES_LIST_PUBLIC
									, _SPIPLISTES_LIST_PUB_DAILY
									, _SPIPLISTES_LIST_PUB_HEBDO
									, _SPIPLISTES_LIST_PUB_WEEKLY
									, _SPIPLISTES_LIST_PUB_MENSUEL
									, _SPIPLISTES_LIST_PUB_MONTHLY
									, _SPIPLISTES_LIST_PUB_YEARLY
									)
						 )
					? ' selected="selected"' 
					: ''
				)
				;
	$page_result .= PHP_EOL
		.	(
			($flag_editable)
			? ''
				. '<select class="verdana2 fondl" name="statut" size="1" id="change_statut">' . PHP_EOL
				. '<option' . $sel_private . ' style="background-color:#fff">'
					. _T('spiplistes:statut_interne')
					. '</option>' . PHP_EOL
				. '<option' . $sel_publique . ' style="background-color:#B4E8C5">'
					. _T('spiplistes:statut_publique')
					. '</option>' . PHP_EOL
				. '<option' . mySel(_SPIPLISTES_TRASH_LIST, $statut)
					. ' style="background:url(' . _DIR_IMG_PACK.'rayures-sup.gif)">'
					. _T('texte_statut_poubelle').'</option>' . PHP_EOL
				. '</select>' . PHP_EOL
			: '<span class="verdana2" style="font-weight:bold;">'
				. spiplistes_items_get_item('alt', $statut)
				. '</span>'. PHP_EOL
			)
		. '<div style="margin:10px 0px;">' . PHP_EOL
		.	(
			($flag_editable && strpos($GLOBALS['meta']['langues_multilingue'], ','))
			? ''
				. '<label class="verdana2" for="changer_lang">'
					. _T('info_multi_herit').' : </label>' . PHP_EOL
				. '<select name="changer_lang" class="fondl" id="changer_lang">' . PHP_EOL
				. liste_options_langues('changer_lang', $lang , _T('spiplistes:langue_'), '', '')
				. '</select>' . PHP_EOL
			: ''
				//. "<span class='verdana2'>". _T('info_multi_herit')." : "
				//. "<span class='verdana2' style='font-weight:bold;'>".traduire_nom_langue($lang)."</span>\n"
			)
		. '</div>' . PHP_EOL
		.	(
				($flag_editable)
				? spiplistes_form_bouton_valider('btn_modifier_diffusion')
					. spiplistes_form_fin(true)
				: ''
			)
		. fin_cadre_relief(true)
		;

		////////////////////////////
		// Formulaire adresse email pour le reply-to
	$page_result .= ''
		. debut_cadre_relief(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."reply_to-24.png"
							, true
							, ''
							, _T('spiplistes:adresse_de_reponse').spiplistes_plugin_aide(_SPIPLISTES_EXEC_AIDE
								, "replyto")
							)
		. spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER,"id_liste=$id_liste"), true)
		. "<p class='verdana2'>\n"
		. _T('spiplistes:adresse_mail_retour').":<br />\n"
		.	(
			($flag_editable)
			? _T('spiplistes:adresse')."</p>\n"
				. "<div style='text-align:center'>\n"
				. "<input type='text' name='email_envoi' value=\"".$email_envoi."\" size='40' class='fondl' /></div>\n"
				. spiplistes_form_bouton_valider('btn_modifier_replyto')
			: "</p><p style='font-weight:bold;text-align:center;'>$email_envoi</p>\n"
			)
		. spiplistes_form_fin(true)
		. fin_cadre_relief(true)
		;
		
		////////////////////////////
		// Formulaire planifier un courrier automatique
	$page_result .= ""
		. "<a name='form-programmer' id='form-programmer'></a>\n"
		. debut_cadre_relief(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."stock_timer.png", true, '', _T('spiplistes:messages_auto')
			. spiplistes_plugin_aide(_SPIPLISTES_EXEC_AIDE, "temporiser"))
		;
	$page_result .= ""
		. $boite_pour_confirmer_envoi_maintenant
		. spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER,"id_liste=$id_liste")."#form-programmer", true)
		. "<table border='0' cellspacing='1' cellpadding='3' width='100%'>\n"
		. "<tr><td align='$spip_lang_left' class='verdana2'>\n"
		;
	if(empty($patron)) {
		$page_result .= ""
			. (
				$flag_editable
				? spiplistes_boite_alerte(_T('spiplistes:patron_manquant_message'), true)
				: "<p class='verdana2'>" . _T('spiplistes:liste_sans_patron') . "</p>\n"
			  )
			. "</td>\n"
			. "</tr>\n"
			. "<tr><td align='$spip_lang_left' class='verdana2'>\n"
			;
	}
	if ($message_auto != "oui") {
		$page_result .= "<div class='verdana2'>"._T('spiplistes:pas_denvoi_auto_programme')."</div>\n";
	}
	else {
		$page_result .= ""
			// petite ligne d'info si envoi programme
			. "<p class='verdana2'>"._T('spiplistes:sujet_courrier_auto')."<br />\n"
			. "<span class='spip_large'> "
				. spiplistes_calculer_balise_titre(extraire_multi($titre_message))
				. "</span></p>\n"
			. "<p class='verdana2'>"
			. spiplistes_items_get_item('alt', $statut)."<br />\n"
			.	(	
					($statut == _SPIPLISTES_LIST_PUB_MONTHLY)
					?	"<strong>" . spiplistes_items_get_item("tab_t", $statut) . "</strong><br />"
					:	""
				)
			.	(
					($periode > 0)
					? _T('spiplistes:periodicite_tous_les_n_s'
						, array('n' => "  <strong>".$periode."</strong>  "
							, 's' => spiplistes_singulier_pluriel_str_get($periode, _T('spiplistes:jour'), _T('spiplistes:jours'), false)
							)
						)
					: ""
				)
			.	(
					(!in_array($statut, explode(";", _SPIPLISTES_LISTES_STATUTS_PERIODIQUES)))
					? " <strong>"._T('spiplistes:Pas_de_periodicite')."</strong><br />"
						._T('spiplistes:Ce_courrier_ne_sera_envoye_qu_une_fois')
					: ""
				)
			.	"<br />"
			.	(
				(intval($maj))
				? _T('spiplistes:Dernier_envoi_le_') . " <strong>" . affdate_heure($maj) . "</strong>"
					.	(
						($last =  round((time() - strtotime($maj)) / _SPIPLISTES_TIME_1_DAY))
							? " (".spiplistes_singulier_pluriel_str_get($last, _T('spiplistes:jour'), _T('spiplistes:jours')).")"
							: ""
					). "<br />"
				: ""
				)
			.	(
				($date_prevue || (intval($date) && (time() < strtotime($date))))
				? _T('spiplistes:prochain_envoi_prevu')." : <strong>" . affdate_heure($date_prevue ? $date_prevue : $date) . "</strong>"
					.	(
						(!$date_prevue && ($next = round((strtotime($date) - time()) / _SPIPLISTES_TIME_1_DAY)))
							? " (".spiplistes_singulier_pluriel_str_get($next, _T('spiplistes:jour'), _T('spiplistes:jours')).")"
							: ""
						)
				: ""
				)
			. "</p>\n"
			;
		if($btn_modifier_courrier_auto) {
			$page_result .= ""
				. "<p class='verdana2'>"._T('spiplistes:date_act')."<br />"
				. _T('spiplistes:env_esquel')." <em>".$patron."</em>"
				. "</p>\n"
				;
		}
	}
	$date_debut_envoi = (!empty($date_prevue) ? $date_prevue : (($date && intval($date)) ? $date : normaliser_date(time())));

	$page_result .= ""
		. "</td>\n"
		. "</tr>\n"
		;
	if($flag_editable) {
		$page_result .= ""
			. "<tr><td align='$spip_lang_left' class='verdana2'>"
			. "<input type='radio' name='message_auto' value='oui' id='auto_oui' "
				. (empty($patron) ? " disabled='disabled' " : "")
				. ($auto_checked = ($message_auto=='oui' ? "checked='checked'" : ""))
				. " />"
			. "<label for='auto_oui' ".($auto_checked ? "style='font-weight:bold;'" : "").">"
				. _T('spiplistes:prog_env')."</label>\n"
			. "<div id='auto_oui_detail' "
				.((empty($patron) || !$auto_checked) ? "style='display:none;'" : "")
				.">"
			. "<ul style='list-style-type:none;'>\n"
			. "<li>"._T('spiplistes:message_sujet')
			. ': <input type="text" name="titre_message" value="'.$titre_message.'" size="50" class="fondl" /> </li>'."\n"
			;
			// 
			// chrono jour
			$ii = ($periode > 0) ? $periode : 1;
		$page_result .= ""
			. "<li style='margin-top:0.5em'>"
				. spiplistes_form_input_radio ('auto_chrono', 'auto_jour'
					, ''
					, ($statut == _SPIPLISTES_LIST_PUB_DAILY)
					, true, false
					)
				. _T('spiplistes:Tous_les')
				. " <input type='text' name='periode' value='".$ii."' size='4' maxlength='4' class='fondl' /> "
				. _T('info_jours')
				. "</li>\n"
			// chrono hebdo
			. "<li>"
				. spiplistes_form_input_radio ('auto_chrono', 'auto_hebdo'
					, _T('spiplistes:Toutes_les_semaines')
					, (($statut == _SPIPLISTES_LIST_PUB_HEBDO) || ($statut == _SPIPLISTES_LIST_PUB_WEEKLY))
					, true, false)
				. spiplistes_form_input_checkbox('auto_weekly', 'oui'
					, _T('spiplistes:en_debut_de_semaine'), ($statut == _SPIPLISTES_LIST_PUB_WEEKLY), true, false)
				. "</li>\n"
			// chrono mois
			. "<li>"
				. spiplistes_form_input_radio ('auto_chrono', 'auto_mensuel'
					, _T('spiplistes:Tous_les_mois')
					, (($statut == _SPIPLISTES_LIST_PUB_MENSUEL) || ($statut == _SPIPLISTES_LIST_PUB_MONTHLY))
					, true, false)
				. spiplistes_form_input_checkbox('auto_mois', 'oui'
					, _T('spiplistes:en_debut_de_mois'), ($statut == _SPIPLISTES_LIST_PUB_MONTHLY), true, false)
				. "</li>\n"
			// chrono annee
			. "<li>"
				. spiplistes_form_input_radio ('auto_chrono', 'auto_an'
					, _T('spiplistes:Tous_les_ans')
					, ($statut == _SPIPLISTES_LIST_PUB_YEARLY)
					, true, false)
				. "</li>\n"
			. "<li style='margin-top:0.5em'>"._T('spiplistes:A_partir_de')." : <br />\n"
			//
			. spiplistes_dater_envoi(
				'liste', $id_liste, $statut
				, $flag_editable
				, _T('spiplistes:date_expedition_')
				, $date_debut_envoi, 'btn_changer_date'
				, false
				)
			. "</li>\n"
			.	(
				(!$envoyer_maintenant)
				? " <li>"
					. spiplistes_form_input_checkbox('envoyer_maintenant', 'oui'
						, _T('spiplistes:env_maint'), false, true)
					. "</li>\n"
				: ""
				)
			. "</ul></div>\n"
			;
		$checked = ($message_auto=='non') ? "checked='checked'" : "";
		$class = $checked ? "class='bold'" : "";
		$disabled = (empty($patron) ? " disabled='disabled' " : "");
		$page_result .= ""
			. "<br /><input type='radio' name='message_auto' value='non' id='auto_non' $disabled $checked />"
			. "<span $class >"
			. " <label for='auto_non'>"._T('spiplistes:prog_env_non')."</label> "
			. "</span>\n"
			. "</td></tr>\n"
			;

		$page_result .= ""
			. "<tr><td style='text-align:$spip_lang_right;'>"
			. 	(
				($id_liste)
				? "<input type='hidden' name='id_liste' value='$id_liste' />"
				: ""
				)
			.	(
				($new)
				? "<input type='hidden' name='new' value='$new' />"
				: ""
				)
			// bouton de validation
			. (!empty($patron) 
				? spiplistes_form_bouton_valider('btn_modifier_courrier_auto', _T('bouton_valider'), true)
				: "")
			. "</td></tr>"
			;
	}
	$page_result .= ""
		. "</table>\n"
		. spiplistes_form_fin(true)
		. fin_cadre_relief(true)
		;
		// fin formulaire planifier
		
	$page_result .= ""
		. fin_cadre_relief(true)
		. $grosse_boite_abonnements
		. $grosse_boite_moderateurs
		;
	
	// le super-admin peut abonner en masse
	if($connect_toutes_rubriques) {
		$page_result .= ""
			. "\n<!-- forcer abo -->\n"
			. debut_cadre_enfonce(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."abonner-24.png", true, '', _T('spiplistes:forcer_les_abonnement_liste').spiplistes_plugin_aide("forcerliste"))."\n"
			. "<p class='verdana2'>\n"
			. _T('spiplistes:forcer_abonnement_desc')
			. "</p>\n"
			. "<p class='verdana2' style='margin-bottom:1em'><em>"
			. _T('spiplistes:forcer_abonnement_aide', array('lien_retour' => generer_url_ecrire(_SPIPLISTES_EXEC_ABONNES_LISTE)))
			. "</em></p>\n"
			. "<form action='".generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER,"id_liste=$id_liste#auteurs")."' id='form_forcer_abo' name='form_forcer_abo' method='post'>\n"
			. debut_cadre_relief("", true)."\n"
			//
			//////////////////////////
			// propose de forcer les membres sauf invites si la liste est privee
			.	(
					($statut==_SPIPLISTES_LIST_PRIVATE)
					? "<div class='verdana2'><input type='radio' name='forcer_abo' value='auteurs' id='forcer_abo_tous' />\n"
						. "<label for='forcer_abo_tous'>"._T('spiplistes:Abonner_tous_les_inscrits_prives')."</label>"
						. "</div>\n"
						. spiplistes_boutons_forcer_format('forcer_format', _T('spiplistes:forcer_abonnements_nouveaux'))
					: ""
				)
			//
			// propose de forcer les invites si la liste est publique ou periodique
			.	(
					(($statut!=_SPIPLISTES_LIST_PRIVATE) && ($statut!=_SPIPLISTES_TRASH_LIST))
					? "<div class='verdana2'><input type='radio' name='forcer_abo' value='6forum' id='forcer_abo_6forum' />\n"
						. "<label for='forcer_abo_6forum'>"._T('spiplistes:Abonner_tous_les_invites_public')."</label></div>\n"
						. spiplistes_boutons_forcer_format('forcer_format', _T('spiplistes:forcer_abonnements_nouveaux'))
					: ""
				)
			. (
				($nb_abonnes)
				? "<hr />\n"
					. "<div class='verdana2'><input type='radio' name='forcer_abo' value='aucun' id='forcer_desabo' />\n"
					. "<label for='forcer_desabo'>"._T('spiplistes:Forcer_desabonner_tous_les_inscrits')."</label></div>\n"
				: ""
				)
			. fin_cadre_relief(true)."\n"
			. "<div style='text-align:right;'><input type='submit' name='btn_valider_forcer_abos' value='"._T('bouton_valider')."' class='fondo' /></div>\n"
			. "</form>\n"
			. fin_cadre_enfonce (true)."\n"
		;
	}
	//
	$page_result .= ""
		. $gros_bouton_supprimer
		;
	
	echo($page_result);

	echo pipeline('affiche_milieu',array('args'=>array('exec'=>$sous_rubrique),'data'=>''))
		, spiplistes_html_signature(_SPIPLISTES_PREFIX)
		, fin_gauche(), fin_page();

} // end exec_spiplistes_liste_gerer()
예제 #26
0
파일: lien.php 프로젝트: rhertzog/lcs
function traiter_lien_explicite ($ref, $texte='', $pour='url', $connect='')
{
	if (preg_match(_EXTRAIRE_LIEN, $ref))
		return ($pour != 'tout') ? '' : array('','','','');

	$lien = entites_html(trim($ref));

	// Liens explicites
	if (!$texte) {
		$texte = str_replace('"', '', $lien);
		// evite l'affichage de trops longues urls.
		$lien_court = charger_fonction('lien_court', 'inc');
		$texte = $lien_court($texte);
		$texte = "<html>".quote_amp($texte)."</html>";
	}

	// petites corrections d'URL
	if (preg_match('/^www\.[^@]+$/S',$lien))
		$lien = "http://".$lien;
	else if (strpos($lien, "@") && email_valide($lien)) {
		if (!$texte) $texte = $lien;
		$lien = "mailto:".$lien;
	}
	
	if ($pour == 'url') return $lien;

	if ($pour == 'titre') return $texte;

	return array('url' => $lien, 'titre' => $texte);
}
예제 #27
0
파일: signatures.php 프로젝트: rhertzog/lcs
function signatures_edit_mail($id_article, $ad_email, $row) {

	$email = attribut_html($ad_email);
	if (email_valide($ad_email)) {
		if ($row['statut'] != 'publie'
		AND autoriser('modererpetition', 'article', $id_article)) {
			include_spip('formulaires/signature');
			$url = generer_url_entite_absolue($id_article, 'article','','',true);
			list($titre, $url) = signature_langue($id_article, $url);

			list($sujet, $corps) = signature_demande_confirmation($id_article, $url, $row['nom_email'], $row['nom_site'], $row['url_site'], $row['message'], $titre, $row['statut']);

			include_spip('inc/filtres');
			$sujet = rawurlencode(filtrer_entites($sujet));
			$corps = rawurlencode(filtrer_entites($corps));
			$corps = "?subject=$sujet&amp;body=$corps";
		} else $corps = '';
		$email = "<a href=\"mailto:$ad_email$corps\">$email</a>";
	}
	return "<div class='ad_email'><span class='spip_x-small'>"
			._T('info_adresse_email')
			."</span> "
			. $email
			. "</div>\n";

}
예제 #28
0
파일: forum.php 프로젝트: rhertzog/lcs
function afficher_forum_auteur($row)
{
	$titre=$row['titre'];
	$id_auteur=$row["id_auteur"];
	$date_heure=$row['date_heure'];
	$email_auteur=$row['email_auteur'];
	$auteur= extraire_multi($row['auteur']);

	if ($id_auteur) {
		$formater_auteur = charger_fonction('formater_auteur', 'inc');
		$res = join(' ',$formater_auteur($id_auteur));
	} else {
		if ($email_auteur) {
			if (email_valide($email_auteur))
				$email_auteur = "<a href='mailto:"
				.htmlspecialchars($email_auteur)
				."?subject=".rawurlencode($titre)."'>".$email_auteur
				."</a>";
			$auteur .= " &mdash; $email_auteur";
		}
		$res = safehtml("<span class='arial2'> / <b>$auteur</b></span>");
	}
	return "<div style='font-weight: normal;'>"
	  . date_interface($date_heure)
	  . "&nbsp;&nbsp;$res</div>";
}
예제 #29
0
function formulaires_configurer_facteur_verifier_dist(){
	$erreurs = array();
	include_spip('inc/config');
	if ($email = _request('facteur_adresse_envoi_email')
	  AND !email_valide($email)) {
		$erreurs['facteur_adresse_envoi_email'] = _T('form_email_non_valide');
		set_request('facteur_adresse_envoi','oui');
	}
	if (_request('facteur_smtp')=='oui'){
		if (!($h=_request('facteur_smtp_host')))
			$erreurs['facteur_smtp_host'] = _T('info_obligatoire');
		else {
			$h = trim($h);
			$regexp_ip_valide = '#^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$#'; 
			// Source : http://www.d-sites.com/2008/10/09/regex-ipv4-et-ipv6/
			if (!preg_match($regexp_ip_valide,$h)){ // ce n'est pas une IP
				if(!preg_match(';^([^.\s/?:]+[.])*[^.\s/?:]+$;',$h)
				  OR gethostbyname($h)==$h)
					$erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host');
			}
			else {
				if (gethostbyaddr($h)==$h)
					$erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host');
			}
			set_request('facteur_smtp_host',$h);
		}
		if (!($p=_request('facteur_smtp_port')))
			$erreurs['facteur_smtp_port'] = _T('info_obligatoire');
		elseif(!preg_match(';^[0-9]+$;',$p) OR !intval($p))
			$erreurs['facteur_smtp_port'] = _T('facteur:erreur_invalid_port');

		if (!_request('facteur_smtp_auth'))
			$erreurs['facteur_smtp_auth'] = _T('info_obligatoire');

		if (_request('facteur_smtp_auth')=='oui'){
			if (!_request('facteur_smtp_username'))
				$erreurs['facteur_smtp_username'] = _T('info_obligatoire');
			if (!_request('facteur_smtp_password') AND !lire_config('facteur_smtp_password'))
				$erreurs['facteur_smtp_password'] = _T('info_obligatoire');
		}
	}
	if ($emailcc = _request('facteur_cc')
	  AND !email_valide($emailcc)) {
		$erreurs['facteur_cc'] = _T('form_email_non_valide');
	}
	if ($emailbcc = _request('facteur_bcc')
	  AND !email_valide($emailbcc)) {
		$erreurs['facteur_bcc'] = _T('form_email_non_valide');
	}

	if (_request('tester')){
		if (!$email = _request('email_test')){
			$erreurs['email_test'] = _T('info_obligatoire');
		}
		elseif (!email_valide($email)) {
			$erreurs['email_test'] = _T('form_email_non_valide');
		}
	}

	
	if(count($erreurs)>0){
		$erreurs['message_erreur'] = _T('facteur:erreur_generale');
	}
	return $erreurs;
}
예제 #30
0
function install_etape_3b_dist()
{
    $login = _request('login');
    $email = _request('email');
    $nom = _request('nom');
    $pass = _request('pass');
    $pass_verif = _request('pass_verif');
    $server_db = defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB : _request('server_db');
    if (!defined('_PASS_LONGUEUR_MINI')) {
        define('_PASS_LONGUEUR_MINI', 6);
    }
    if (!defined('_LOGIN_TROP_COURT')) {
        define('_LOGIN_TROP_COURT', 4);
    }
    if ($login) {
        $echec = $pass != $pass_verif ? _T('info_passes_identiques') : (strlen($pass) < _PASS_LONGUEUR_MINI ? _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)) : (strlen($login) < _LOGIN_TROP_COURT ? _T('info_login_trop_court') : ''));
        include_spip('inc/filtres');
        if (!$echec and $email and !email_valide($email)) {
            $echec = _T('form_email_non_valide');
        }
        if ($echec) {
            echo minipres('AUTO', info_progression_etape(3, 'etape_', 'install/', true) . "<div class='error'><h3>{$echec}</h3>\n" . "<p>" . _T('avis_connexion_echec_2') . "</p>" . "</div>");
            exit;
        }
    }
    if (@file_exists(_FILE_CHMOD_TMP)) {
        include _FILE_CHMOD_TMP;
    } else {
        redirige_url_ecrire('install');
    }
    if (!@file_exists(_FILE_CONNECT_TMP)) {
        redirige_url_ecrire('install');
    }
    # maintenant on connait le vrai charset du site s'il est deja configure
    # sinon par defaut lire_meta reglera _DEFAULT_CHARSET
    # (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)
    lire_metas();
    if ($login) {
        include_spip('inc/charsets');
        $nom = importer_charset($nom, _DEFAULT_CHARSET);
        $login = importer_charset($login, _DEFAULT_CHARSET);
        $email = importer_charset($email, _DEFAULT_CHARSET);
        # pour le passwd, bizarrement il faut le convertir comme s'il avait
        # ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js
        $pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1');
        include_spip('auth/sha256.inc');
        include_spip('inc/acces');
        $htpass = generer_htpass($pass);
        $alea_actuel = creer_uniqid();
        $alea_futur = creer_uniqid();
        $shapass = _nano_sha256($alea_actuel . $pass);
        // prelablement, creer le champ webmestre si il n'existe pas (install neuve
        // sur une vieille base
        $t = sql_showtable("spip_auteurs", true);
        if (!isset($t['field']['webmestre'])) {
            @sql_alter("TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL");
        }
        $id_auteur = sql_getfetsel("id_auteur", "spip_auteurs", "login="******"nom" => $nom, 'email' => $email, 'login' => $login, 'pass' => $shapass, 'alea_actuel' => $alea_actuel, 'alea_futur' => $alea_futur, 'htpass' => $htpass, 'statut' => '0minirezo'), "id_auteur={$id_auteur}");
        } else {
            $id_auteur = sql_insertq('spip_auteurs', array('nom' => $nom, 'email' => $email, 'login' => $login, 'pass' => $shapass, 'htpass' => $htpass, 'alea_actuel' => $alea_actuel, 'alea_futur' => $alea_futur, 'statut' => '0minirezo'));
        }
        // le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne
        @sql_updateq('spip_auteurs', array('webmestre' => 'oui'), "id_auteur={$id_auteur}");
        // inserer email comme email webmaster principal
        // (sauf s'il est vide: cas de la re-installation)
        if ($email) {
            ecrire_meta('email_webmaster', $email);
        }
        // Connecter directement celui qui vient de (re)donner son login
        // mais sans cookie d'admin ni connexion longue
        include_spip('inc/auth');
        if (!($auteur = auth_identifier_login($login, $pass)) or !auth_loger($auteur, true)) {
            spip_log("login automatique impossible {$auth_spip} {$session}" . count($row));
        }
    }
    // installer les metas
    $config = charger_fonction('config', 'inc');
    $config();
    // activer les plugins
    // leur installation ne peut pas se faire sur le meme hit, il faudra donc
    // poursuivre au hit suivant
    include_spip('inc/plugin');
    actualise_plugins_actifs();
    include_spip('inc/distant');
    redirige_par_entete(parametre_url(self(), 'etape', '4', '&'));
}