Esempio n. 1
0
function formulaires_inscription_verifier_dist($mode = '', $id = 0)
{
    set_request("_upgrade_auteur");
    // securite
    include_spip('inc/filtres');
    $erreurs = array();
    include_spip('inc/autoriser');
    if (!autoriser('inscrireauteur', $mode, $id) or strlen(_request('nobot')) > 0) {
        $erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
    }
    if (!($nom = _request('nom_inscription'))) {
        $erreurs['nom_inscription'] = _T("info_obligatoire");
    } elseif (!nom_acceptable(_request('nom_inscription'))) {
        $erreurs['nom_inscription'] = _T("ecrire:info_nom_pas_conforme");
    }
    if (!($mail = strval(_request('mail_inscription')))) {
        $erreurs['mail_inscription'] = _T("info_obligatoire");
    }
    // compatibilite avec anciennes fonction surchargeables
    // plus de definition par defaut
    if (!count($erreurs)) {
        include_spip('action/inscrire_auteur');
        if (function_exists('test_inscription')) {
            $f = 'test_inscription';
        } else {
            $f = 'test_inscription_dist';
        }
        $declaration = $f($mode, $mail, $nom, $id);
        if (is_string($declaration)) {
            $k = strpos($declaration, 'mail') !== false ? 'mail_inscription' : 'nom_inscription';
            $erreurs[$k] = _T($declaration);
        } else {
            include_spip('base/abstract_sql');
            if ($row = sql_fetsel("statut, id_auteur, login, email", "spip_auteurs", "email=" . sql_quote($declaration['email']))) {
                if ($row['statut'] == '5poubelle' and !$declaration['pass']) {
                    $erreurs['message_erreur'] = _T('form_forum_access_refuse');
                } else {
                    if ($row['statut'] != 'nouveau' and !$declaration['pass']) {
                        if (intval($row['statut']) > intval($mode)) {
                            set_request("_upgrade_auteur", $row['id_auteur']);
                        } else {
                            // deja inscrit
                            $erreurs['message_erreur'] = _T('form_forum_email_deja_enregistre');
                        }
                    }
                }
                spip_log($row['id_auteur'] . " veut se resinscrire");
            }
        }
    }
    return $erreurs;
}
Esempio n. 2
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;
}
/**
 * Vérifications du formulaire d'édition d'un auteur
 *
 * Vérifie en plus des vérifications prévues :
 * - qu'un rédacteur ne peut pas supprimer son adresse mail,
 * - que le mot de passe choisi n'est pas trop court et identique à sa
 *   deuxième saisie
 *
 * @see formulaires_editer_objet_verifier()
 *
 * @param int|string $id_auteur
 *     Identifiant de l'auteur. 'new' pour une nouvel auteur.
 * @param string $retour
 *     URL de redirection après le traitement
 * @param string $associer_objet
 *     Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
 *     tel que 'article|3'
 * @param string $config_fonc
 *     Nom de la fonction ajoutant des configurations particulières au formulaire
 * @param array $row
 *     Valeurs de la ligne SQL de l'auteur, si connu
 * @param string $hidden
 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
 * @return array
 *     Erreurs des saisies
 **/
function formulaires_editer_auteur_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 (!nom_acceptable(_request('nom'))) {
        $erreurs['nom'] = _T("info_nom_pas_conforme");
    }
    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');
            }
        }
        # Ne pas autoriser d'avoir deux auteurs avec le même email
        # cette fonctionalité nécessite que la base soit clean à l'activation : pas de
        # doublon sur la requête select email,count(*) from spip_auteurs group by email ;
        if (defined('_INTERDIRE_AUTEUR_MEME_EMAIL')) {
            #Nouvel auteur
            if (intval($id_auteur) == 0) {
                #Un auteur existe deja avec cette adresse ?
                if (sql_countsel("spip_auteurs", "email=" . sql_quote($email)) > 0) {
                    $erreurs['email'] = _T('erreur_email_deja_existant');
                }
            } else {
                #Un auteur existe deja avec cette adresse ? et n'est pas le user courant.
                if (sql_countsel("spip_auteurs", "email=" . sql_quote($email)) > 0 and $id_auteur != ($id_auteur_ancien = sql_getfetsel('id_auteur', 'spip_auteurs', "email=" . sql_quote($email)))) {
                    $erreurs['email'] = _T('erreur_email_deja_existant');
                }
            }
        }
    }
    if (preg_match(",^\\s*javascript,i", _request('url_site'))) {
        $erreurs['url_site'] = _T('info_url_site_pas_conforme');
    }
    $erreurs['message_erreur'] = '';
    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;
            }
        }
    }
    if (!$erreurs['message_erreur']) {
        unset($erreurs['message_erreur']);
    }
    return $erreurs;
}