diff --git a/formulaires/inc-formulaire_inscription.php3 b/formulaires/inc-formulaire_inscription.php3 index b939c73754b94dea18ddacf947f4552593249eb1..f03df1a9babf8041825d975d122891fc969ab7e9 100644 --- a/formulaires/inc-formulaire_inscription.php3 +++ b/formulaires/inc-formulaire_inscription.php3 @@ -21,78 +21,74 @@ function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus) { // Si une inscription est autorisee, on enregistre le demandeur // comme 'nouveau' et on lui envoie ses codes par email ; lors de // sa premiere connexion il obtiendra son statut final (auth->activer()) - if (($mode == 'redac' AND lire_meta('accepter_inscriptions') == 'oui') + if (!(($mode == 'redac' AND lire_meta('accepter_inscriptions') == 'oui') OR ($mode == 'forum' AND ( lire_meta('accepter_visiteurs') == 'oui' OR lire_meta('forums_publics') == 'abo' ) - )) - $statut = 'nouveau'; - else + ))) return _T('pass_rien_a_faire_ici'); // recuperer les donnees envoyees $mail_inscription = _request('mail_inscription'); $nom_inscription = _request('nom_inscription'); - if (test_mail_ins($mode, $mail_inscription) - AND _request('nom_inscription')) { - // envoyer les identifiants si l'abonne n'existe pas deja. - $s = spip_query("SELECT statut, id_auteur, login, pass - FROM spip_auteurs WHERE email='".addslashes($mail_inscription)."'"); - if (!$row = spip_fetch_array($s)) { - $login = test_login($nom_inscription, $mail_inscription); - $id_auteur = spip_abstract_insert('spip_auteurs', - '(nom, email, login, statut)', - "('".addslashes($nom_inscription)."', - '".addslashes($mail_inscription)."', '$login', '$statut')"); - $pass = creer_pass_pour_auteur($id_auteur); - $message = envoyer_inscription($mail_inscription, - $statut, $mode, $login, $pass, $nom_inscription); - } - - else { - // existant mais encore muet, renvoyer les infos - if ($row['statut'] == 'nouveau') { - // recreer le pass - $pass = creer_pass_pour_auteur($row['id_auteur']); - $message = envoyer_inscription( - $mail_inscription, $row['statut'], $mode, - $row['login'], $pass, $nom_inscription); - } else { - // dead - if ($row['statut'] == '5poubelle') - $message = _T('form_forum_access_refuse'); - // deja inscrit - else - $message = _T('form_forum_email_deja_enregistre'); - } - } - } - - // demande du formulaire - else { - if (!$nom_inscription) - $message = ''; - else { - spip_log("Mail incorrect: '$mail_inscription'"); - $message = _T('info_email_invalide'); - } - } + if (!$nom_inscription) + $message = ''; + elseif (!test_mail_ins($mode, $mail_inscription)) + $message = _T('info_email_invalide'); + else $message = message_inscription($mail_inscription, $nom_inscription, $mode); return array("formulaire_inscription", 0, - array('focus' => $focus, - 'target' => _request('target'), - 'message' => $message, - 'mode' => $mode)); + array('focus' => $focus, + 'target' => _request('target'), + 'message' => $message, + 'mode' => $mode)); } // fonction qu'on peut redefinir pour filtrer selon l'adresse mail // cas general: controler juste que l'adresse n'est pas vide et est valide function test_mail_ins($mode, $mail) { - if ($mail = trim($mail)) - return email_valide($mail); + return ($mail = trim($mail)) AND email_valide($mail); +} + + +function message_inscription($mail_inscription, $nom_inscription, $mode) +{ + // envoyer les identifiants si l'abonne n'existe pas deja. + $row = spip_fetch_array(spip_query("SELECT statut, id_auteur, login +FROM spip_auteurs WHERE email='".addslashes($mail_inscription)."'")); + + if (!$row) { + $login = test_login($nom_inscription, $mail_inscription); + $pass = creer_pass_pour_auteur(spip_abstract_insert('spip_auteurs', + '(nom, email, login, statut)', + "('". + addslashes($nom_inscription) . + "',' ". + addslashes($mail_inscription) . + "', '" . + $login . + "', 'nouveau')")); + + $message = envoyer_inscription($mail_inscription, 'nouveau', $mode, $login, $pass, $nom_inscription); + } else { + // existant mais encore muet, renvoyer les infos + if ($row['statut'] == 'nouveau') { + // recreer le pass + $pass = creer_pass_pour_auteur($row['id_auteur']); + $message = envoyer_inscription($mail_inscription, $row['statut'], $mode, + $row['login'], $pass, $nom_inscription); + } else { + // dead + if ($row['statut'] == '5poubelle') + $message = _T('form_forum_access_refuse'); + else + // deja inscrit + $message = _T('form_forum_email_deja_enregistre'); + } + } }