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; }
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; }