diff --git a/ecrire/balise/formulaire_inscription.php b/ecrire/balise/formulaire_inscription.php index 742fd62bd607bb25a8201c15c4ba6d533318e255..cfd6123fcf40355c04979ca427d257689927e145 100644 --- a/ecrire/balise/formulaire_inscription.php +++ b/ecrire/balise/formulaire_inscription.php @@ -16,22 +16,24 @@ include_spip('base/abstract_sql'); // Balise independante du contexte - function balise_FORMULAIRE_INSCRIPTION ($p) { return calculer_balise_dynamique($p, 'FORMULAIRE_INSCRIPTION', array()); } -// args[0] indique le focus eventuel +// args[0] peut valoir "redac" ou "forum" // args[1] indique la rubrique eventuelle de proposition +// args[2] indique le focus eventuel // [(#FORMULAIRE_INSCRIPTION{nom_inscription, #ID_RUBRIQUE})] + function balise_FORMULAIRE_INSCRIPTION_stat($args, $filtres) { - if ($GLOBALS['meta']['accepter_inscriptions'] != 'oui') + $mode = isset($args[0]) ? $args[0] : 'redac'; + if (!test_mode_inscription($mode)) return ''; else - return array('redac', - (isset($args[0]) ? $args[0] : ''), - (isset($args[1]) ? $args[1] : '')); + return array($mode, + (isset($args[2]) ? $args[2] : ''), + (isset($args[1]) ? $args[1] : '')); } // Si inscriptions pas autorisees, retourner une chaine d'avertissement @@ -40,41 +42,32 @@ function balise_FORMULAIRE_INSCRIPTION_stat($args, $filtres) { // Autrement 2e appel, envoyer un mail et le squelette ne produira pas de // formulaire. +function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus, $id=0) { -function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus, $id_rubrique=0) { - - if (!(($mode == 'redac' AND $GLOBALS['meta']['accepter_inscriptions'] == 'oui') - OR ($mode == 'forum' AND ( - $GLOBALS['meta']['accepter_visiteurs'] == 'oui' - OR $GLOBALS['meta']['forums_publics'] == 'abo' - ) - ))) - return _T('pass_rien_a_faire_ici'); + if (!test_mode_inscription($mode)) return _T('pass_rien_a_faire_ici'); $nom = _request('nom_inscription'); $mail = _request('mail_inscription'); - if (!$mail) - $message = ''; - else { + $commentaire = ($mode=='redac') ? _T('pass_espace_prive_bla') : _T('pass_forum_bla'); + + if ($mail) { include_spip('inc/filtres'); // pour email_valide - $message = message_inscription($mail, $nom, $mode, $id_rubrique); - if (is_array($message)) { + $commentaire = message_inscription($mail, $nom, $mode, $id); + if (is_array($commentaire)) { if (function_exists('envoyer_inscription')) $f = 'envoyer_inscription'; else $f = 'envoyer_inscription_dist'; - $message = $f($message, $nom, $mode, $id_rubrique); + $commentaire = $f($commentaire, $nom, $mode, $id); } } - // #ENV*{message} est le message d'erreur - // #ENV*{commentaire} explique si on s'inscrit a l'espce public ou prive - // il disparait s'il y a un message d'erreur (pour faire moins verbeux) - $commentaire = ''; - if (!$message) { - if ($mode=='redac') $commentaire = _T('pass_espace_prive_bla'); - if ($mode=='forum') $commentaire = _T('pass_forum_bla'); - } + $message = $commentaire ? '' : _T('form_forum_identifiant_mail'); + + // #ENV*{message} doit etre non vide lorsque tout s'est bien passé + // #ENV*{commentaire} doit etre non vide pour afficher le formulaire + // et il indique si on s'inscrit a l'espace public ou prive + // ou donne un message d'erreur aux appels suivants si pb return array("formulaire_inscription", $GLOBALS['delais'], array('focus' => $focus, @@ -86,14 +79,22 @@ function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus, $id_rubrique=0) { 'self' => str_replace('&','&',(self())))); } +function test_mode_inscription($mode) { + + return (($mode == 'redac' AND $GLOBALS['meta']['accepter_inscriptions'] == 'oui') + OR ($mode == 'forum' + AND ($GLOBALS['meta']['accepter_visiteurs'] == 'oui' + OR $GLOBALS['meta']['forums_publics'] == 'abo'))); +} + // fonction qu'on peut redefinir pour filtrer les adresses mail et les noms, // et donner des infos supplémentaires -// Std: controler que le nom (qui sert a calculer le login) est assez long +// Std: controler que le nom (qui sert a calculer le login) est plausible // et que l'adresse est valide (et on la normalise) // Retour: une chaine message d'erreur // ou un tableau avec au minimum email, nom, mode (redac / forum) -function test_inscription_dist($mode, $mail, $nom, $id_rubrique=0) { +function test_inscription_dist($mode, $mail, $nom, $id=0) { include_spip('inc/filtres'); $nom = trim(corriger_caracteres($nom)); @@ -103,16 +104,16 @@ function test_inscription_dist($mode, $mail, $nom, $id_rubrique=0) { return array('email' => $r, 'nom' => $nom, 'bio' => $mode); } -// cree un nouvel utilisateur et renvoie un message d'impossibilite ou la -// ligne SQL le decrivant. +// cree un nouvel utilisateur et renvoie un message d'impossibilite +// ou le tableau representant la ligne SQL le decrivant. -function message_inscription($mail, $nom, $mode, $id_rubrique=0) { +function message_inscription($mail, $nom, $mode, $id=0) { if (function_exists('test_inscription')) $f = 'test_inscription'; else $f = 'test_inscription_dist'; - $declaration = $f($mode, $mail, $nom, $id_rubrique); + $declaration = $f($mode, $mail, $nom, $id); if (is_string($declaration)) return $declaration; @@ -156,9 +157,10 @@ function inscription_nouveau($declaration) } // envoyer identifiants par mail -// fonction redefinissable +// fonction redefinissable qui doit retourner false si tout est ok +// ou une chaine non vide expliquant pourquoi le mail n'a pas ete envoye -function envoyer_inscription_dist($ids, $nom, $mode, $id_rubrique) { +function envoyer_inscription_dist($ids, $nom, $mode, $id) { include_spip('inc/mail'); $nom_site_spip = nettoyer_titre_email($GLOBALS['meta']["nom_site"]); $adresse_site = $GLOBALS['meta']["adresse_site"]; @@ -177,7 +179,7 @@ function envoyer_inscription_dist($ids, $nom, $mode, $id_rubrique) { if (envoyer_mail($ids['email'], "[$nom_site_spip] "._T('form_forum_identifiants'), $message)) - return _T('form_forum_identifiant_mail'); + return false; else return _T('form_forum_probleme_mail'); }