diff --git a/ecrire/articles.php3 b/ecrire/articles.php3
index e57e34c7b197bc2233c7263ef5e26a9609999a65..fe45eb6e748d96beb534f591b3750f8e4c54fe4b 100644
--- a/ecrire/articles.php3
+++ b/ecrire/articles.php3
@@ -392,6 +392,10 @@ if ($connect_statut == '0minirezo' AND acces_rubrique($rubrique_article) AND $op
 		$query_pet="UPDATE spip_articles SET accepter_forum='$change_accepter_forum' WHERE id_article='$id_article'";
 		$result_pet=spip_query($query_pet);
 		$forums_publics = $change_accepter_forum;
+		if ($change_accepter_forum == 'abo') {
+			ecrire_meta('accepter_visiteurs', 'oui');
+			ecrire_metas();
+		}
 	}
 
 	if (!$boite_ouverte) {
diff --git a/ecrire/auteur_infos.php3 b/ecrire/auteur_infos.php3
index 89eb6219468988ec4f0e8c124133ad694a144099..50aa425732cc1fefd8d44c4c0a0ce7b9732b6422 100644
--- a/ecrire/auteur_infos.php3
+++ b/ecrire/auteur_infos.php3
@@ -342,7 +342,9 @@ AND $connect_id_auteur != $id_auteur) {
 		echo "<OPTION".mySel("0minirezo",$statut).">administrateur";
 
 	echo "<OPTION".mySel("1comite",$statut).">r&eacute;dacteur";
-	echo "<OPTION".mySel("6forum",$statut).">visiteur";
+	
+	if (($statut == '6forum') OR (lire_meta('accepter_visiteurs') == 'oui') OR (lire_meta('forums_publics') == 'abo'))
+		echo "<OPTION".mySel("6forum",$statut).">visiteur";
 	echo "<OPTION".mySel("5poubelle",$statut).">&gt; &agrave; la poubelle";
 
 	echo "</SELECT></center>\n";
diff --git a/ecrire/auteurs.php3 b/ecrire/auteurs.php3
index 0b76f6cc98260f7b18bb1f8280aeb643e5dd6a02..82fb287a5265fbbd2e773dab4dce059ec187699f 100644
--- a/ecrire/auteurs.php3
+++ b/ecrire/auteurs.php3
@@ -24,7 +24,7 @@ else
 	$retour = $myretour;
 $retour = urlencode($retour);
 
-if ($visiteurs == "oui")
+if ($visiteurs == "oui" && (lire_meta('accepter_visiteurs') == 'oui') OR (lire_meta('forums_publics') == 'abo'))
 	debut_page("Visiteurs","redacteurs","redacteurs");
 else
 	debut_page("Auteurs$partri","redacteurs","redacteurs");
@@ -34,7 +34,7 @@ debut_gauche();
 
 
 debut_boite_info();
-	if ($visiteurs == "oui")
+	if ($visiteurs == "oui" && (lire_meta('accepter_visiteurs') == 'oui') OR (lire_meta('forums_publics') == 'abo'))
 		echo "<p class='arial1'>".propre("Vous trouverez ici les visiteurs enregistr&eacute;s
 		dans l'espace public du site (forums sur abonnement).");
 	else {
@@ -50,7 +50,8 @@ fin_boite_info();
 if ($connect_statut == '0minirezo') {
 	debut_raccourcis();
 	icone_horizontale ("Cr&eacute;er un nouvel auteur", "auteur_infos.php3?new=oui", "redacteurs-24.gif", "creer.gif");
-	icone_horizontale ("Afficher les visiteurs", "auteurs.php3?visiteurs=oui", "redacteurs-24.gif", "");
+	if ((lire_meta('accepter_visiteurs') == 'oui') OR (lire_meta('forums_publics') == 'abo'))
+		icone_horizontale ("Afficher les visiteurs", "auteurs.php3?visiteurs=oui", "redacteurs-24.gif", "");
 	fin_raccourcis();
 }
 debut_droite();
diff --git a/inc-formulaires.php3 b/inc-formulaires.php3
index 5ec0b61660a29bf4083e14499183e3897cb2fbb6..e09fef2ec862de9e5df42e7e26250267e4d67e0d 100644
--- a/inc-formulaires.php3
+++ b/inc-formulaires.php3
@@ -279,18 +279,6 @@ function formulaire_signature($id_article) {
 }
 
 
-// y a t il des forums sur abonnement ?
-function forums_sur_abo() {
-	if (lire_meta("forums_publics") == "abo")
-		return true;
-	else {
-		include_ecrire("inc_connect.php3");
-		$res = spip_query ("SELECT * FROM spip_articles WHERE accepter_forum='abo'");
-		if (mysql_num_rows($res)>0)
-			return true;
-	}
-}
-
 // inscrire les visiteurs dans l'espace public (statut 6forum) ou prive (statut nouveau->1comite)
 function formulaire_inscription($type) {
 	$request_uri = $GLOBALS["REQUEST_URI"];
diff --git a/inc-login.php3 b/inc-login.php3
index a5c6eb969956b3ac48e7ceb29a0ef73129742a64..24b83d9b606a7fa11468a24282ea9686c671d207 100644
--- a/inc-login.php3
+++ b/inc-login.php3
@@ -223,7 +223,7 @@ function login($cible = '', $prive = 'prive', $message_login='') {
 	echo "\n<center>"; // debut du pied de login
 
 	$inscriptions_ecrire = (lire_meta("accepter_inscriptions") == "oui");
-	if ((!$prive AND forums_sur_abo()) OR ($prive AND $inscriptions_ecrire))
+	if ((!$prive AND (lire_meta('accepter_visiteurs') == 'oui') OR (lire_meta('forums_publics') == 'abo')) OR ($prive AND $inscriptions_ecrire))
 		echo ' [<script language="JavaScript"><!--
 document.write("<a href=\\"javascript:window.open(\\\'spip_pass.php3\\\', \\\'spip_pass\\\', \\\'scrollbars=yes,resizable=yes,width=480,height=450\\\'); void(0);\\"");
 //--></script><noscript><a href=\'spip_pass.php3\' target=\'_blank\'></noscript>s\'inscrire</a>]';
diff --git a/spip_pass.php3 b/spip_pass.php3
index ca8df26bd858f8e39f06d916b6a5f4f12e340bc8..b873144f47214856e5934ada73e23639f3721d45 100644
--- a/spip_pass.php3
+++ b/spip_pass.php3
@@ -102,7 +102,7 @@ if ($oubli_pass == 'oui') {
 		echo '  <input type=submit class="fondl" name="oubli" value="OK"></div></form>';
 	}
 }
-else if ($inscriptions_ecrire || forums_sur_abo()) {
+else if ($inscriptions_ecrire || (lire_meta('accepter_visiteurs') == 'oui') OR (lire_meta('forums_publics') == 'abo')) {
 	// debut presentation
 	install_debut_html("Vous inscrire sur ce site");
 	echo "<p>";
@@ -121,10 +121,13 @@ else if ($inscriptions_ecrire || forums_sur_abo()) {
 
 	formulaire_inscription(($inscriptions_ecrire)? 'redac' : 'forum');
 }
+else {
+	install_debut_html("Erreur");
+	echo "<p>".propre("Rien &agrave; faire ici.");
+}
 
 echo "<p align='right'><script type='text/javascript'><!--
-	function ciao() { window.opener.location.href=window.opener.location.href; close(); }
-	if (window.opener) document.write(\"<a href='javascript:ciao();'>\");
+	if (window.opener) document.write(\"<a href='javascript:close();'>\");
 	else document.write(\"<a href='./'>\");
 	document.write(\"Quitter cette fen&ecirc;tre</a>\");
 	//--></script>