diff --git a/inc-forum.php3 b/inc-forum.php3
index 5e71658442b68f462af0deed596889f510d64b76..652db75ddb7b9e59cd0fa136a27f9f80c0ce0406 100644
--- a/inc-forum.php3
+++ b/inc-forum.php3
@@ -1,4 +1,4 @@
-<?php
+<?
 
 //
 // Ce fichier ne sera execute qu'une fois
@@ -6,13 +6,12 @@ if (defined("_INC_FORUM")) return;
 define("_INC_FORUM", "1");
 
 
-include_ecrire("inc_connect.php3");
-include_ecrire("inc_meta.php3");
-include_ecrire("inc_admin.php3");
-include_ecrire("inc_acces.php3");
-include_ecrire("inc_texte.php3");
-include_ecrire("inc_filtres.php3");
-include_ecrire("inc_mail.php3");
+include_local ("ecrire/inc_connect.php3");
+include_local ("ecrire/inc_meta.php3");
+include_local ("ecrire/inc_admin.php3");
+include_local ("ecrire/inc_acces.php3");
+include_local ("ecrire/inc_texte.php3");
+include_local ("ecrire/inc_mail.php3");
 if (file_exists("inc-urls.php3")) {
 	include_local ("inc-urls.php3");
 }
@@ -35,10 +34,11 @@ function get_forums_publics($id_article=0) {
 }
 
 function generer_pass_forum($email = '') {
-	$passw = creer_pass_aleatoire(9, $email);
-	$passw = ereg_replace("[./]", "a", $passw);
+	$passw = generer_htpass(md5($email.rand().$passw));
+	$passw = ereg_replace("[./]", "", $passw);
 	$passw = ereg_replace("[I1l]", "L", $passw);
 	$passw = ereg_replace("[0O]", "o", $passw);
+	$passw = substr($passw, -8);
 	return $passw;
 }
 
@@ -57,9 +57,33 @@ function enlever_cookie_forum() {
 	setcookie("spip_forum_hash", "", time() - 3600 * 24);
 }
 
+
+function afficher_petits_logos_mots($id_mot) {
+	$racine = "IMG/moton$id_mot";
+	if (file_exists("$racine.gif")) {
+		$image = "$racine.gif";
+	} elseif (file_exists("$racine.jpg")) {
+		$image = "$racine.jpg";
+	} elseif (file_exists("$racine.png")) {
+		$image = "$racine.png";
+	}
+	
+	if ($image) {
+		$taille = getimagesize($image);
+		$largeur = $taille[0];
+		$hauteur = $taille[1];
+		if ($largeur < 40 AND $hauteur < 30)
+			return "<IMG SRC='$image' align='middle' WIDTH='$largeur' HEIGHT='$hauteur' HSPACE='1' VSPACE='1' ALT=' ' BORDER=0 class='spip_image'> ";
+		else return "";
+	} else {
+		return "";
+	}
+}
+
+
 function decoder_hash_forum($email, $hash) {
 	if (!$email OR !$hash) return false;
-	include_ecrire("inc_connect.php3");
+	include("ecrire/inc_connect.php3");
 	$query = "SELECT * FROM spip_auteurs WHERE email='$email'";
 	$result = mysql_query($query);
 	while ($row = mysql_fetch_array($result)) {
@@ -78,7 +102,6 @@ function forum_abonnement() {
 	$email = $HTTP_COOKIE_VARS['spip_forum_email'];
 	$hash = $HTTP_COOKIE_VARS['spip_forum_hash'];
 	$row = decoder_hash_forum($email, $hash);
-
 	echo "<div class='spip_encadrer'>";
 	if (!$row) {
 		echo "";
@@ -91,7 +114,7 @@ function forum_abonnement() {
 	else {
 		$id_auteur = $row['id_auteur'];
 		$hash_email = calculer_action_auteur("email $email", $id_auteur);
-		echo "\n<BR><FONT SIZE=2>Vous &ecirc;tes identifi&eacute; sous l'adresse e-mail $email.</FONT><P>";
+		echo "\nVous &ecirc;tes identifi&eacute; sous l'adresse e-mail&nbsp;: $email.";
 		echo "\n<INPUT TYPE='hidden' NAME='forum_id_auteur' VALUE='$id_auteur'>";
 		echo "\n<INPUT TYPE='hidden' NAME='hash_email' VALUE='$hash_email'>";
 	}
@@ -99,8 +122,12 @@ function forum_abonnement() {
 }
 
 
-function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_syndic) {
-	global $REQUEST_URI, $HTTP_GET_VARS, $PATH_TRANSLATED;
+function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_syndic, $titre='') {
+	global $REQUEST_URI, $HTTP_GET_VARS, $PATH_TRANSLATED, $REMOTE_ADDR;
+	$id_message = $GLOBALS["id_message"];
+	$afficher_groupe = $GLOBALS["afficher_groupe"];
+	$afficher_texte = $GLOBALS["afficher_texte"];
+
 
 	$forums_publics = get_forums_publics($id_article);
 	if ($forums_publics == "non") return;
@@ -117,6 +144,22 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 	if ($p = strrpos($PATH_TRANSLATED, '/')) $fich = substr($fich, $p + 1);
 	if ($p = strpos($fich, '?')) $fich = substr($fich, 0, $p);
 
+
+
+	$lien = substr($REQUEST_URI, strrpos($REQUEST_URI, '/') + 1);
+
+	$retour = $HTTP_GET_VARS['retour'];
+	if ($retour)
+		$retour = $retour;
+	else 
+		$retour = rawurlencode($lien);
+
+	$fich = $REQUEST_URI;
+	if ($p = strrpos($REQUEST_URI, '/')) $fich = substr($fich, $p + 1);
+	//if ($p = strpos($fich, '?')) $fich = substr($fich, 0, $p);
+	//$fich = urlencode($fich);
+	
+
 	$ret .= "\n<A NAME='formulaire_forum'>";
 	$ret .= "\n<FORM ACTION='$fich' METHOD='post'>";
 	$ret .= "\n<B>VOTRE MESSAGE...</B><p>";
@@ -130,7 +173,6 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 	}
 	
 	$ret .= "\n";
-
 	// recuperer le titre
 	if (! $titre) {
 		if ($id_parent)
@@ -147,6 +189,78 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 		$res = mysql_fetch_object(mysql_query($titre_select));
 		$titre = '> ' . ereg_replace ('^[>[:space:]]*', '', $res->titre);
 	}
+	
+
+	if (!$id_message > 0){
+		$nouveau_document = true;
+		if ($HTTP_GET_VARS['titre']){
+			$titre = "> ".rawurldecode($HTTP_GET_VARS['titre']);
+		}
+
+		$query_forum = "INSERT spip_forum (date_heure, titre, ip, statut)
+			VALUES (NOW(), \"".addslashes($titre)."\", \"$REMOTE_ADDR\", \"redac\")";
+		$result_forum = mysql_query($query_forum);
+		$id_message = mysql_insert_id();
+	}
+	
+	$query_forum="SELECT * FROM spip_forum WHERE ip=\"$REMOTE_ADDR\" AND id_forum=$id_message";
+	$result_forum=mysql_query($query_forum);
+
+	
+	while($row = mysql_fetch_array($result_forum)) {
+		$titre=$row[6];
+		$texte=$row[7];
+		$auteur=$row[8];
+		$email_auteur=$row[9];
+		$nom_site_forum=$row[10];
+		$url_site=$row[11];
+	}
+				
+	
+	if (!$nouveau_document){
+		$ret .= "<div class='spip_encadrer'>";
+		if ($afficher_texte != "non"){
+			$ret .= "<font size=4 color='#aaaaaa'><b>".propre($titre)."</b></font>";
+			$ret .= "<p><b><a href='mailto:$email_auteur'>".propre($auteur)."</a></b>";
+			$ret .= "<p>".propre($texte)."<p>";
+		}
+		
+		$ret .= "<a href='$url_site'>".propre($nom_site_forum)."</a>";
+
+
+		// Verifier mots associes au message	
+		$query_mots = "SELECT spip_mots.* FROM spip_mots_forum, spip_mots WHERE id_forum='$id_message' AND spip_mots.id_mot = spip_mots_forum.id_mot GROUP BY spip_mots.id_mot";
+		$result_mots = mysql_query($query_mots);
+		if (mysql_num_rows($result_mots)>0) $ret .= "<p>Vous avez s&eacute;lectionn&eacute;&nbsp;:";
+		while ($row = mysql_fetch_array($result_mots)) {
+			$id_mot = $row['id_mot'];
+			$type_mot = $row['type'];
+			$titre_mot = $row['titre'];
+			$les_mots[$id_mot] = true;
+			$presence_mots = true;
+			
+			$ret.= "<li> $type_mot&nbsp;: <b>$titre_mot</b>";
+			
+		}
+
+
+
+		if ((strlen($texte) >= 10 OR $presence_mots) AND (strlen($titre) >= 3 OR $afficher_texte=="non"))
+			$ret .= "\n<p><DIV ALIGN='right'><INPUT TYPE='submit' NAME='confirmer' CLASS='spip_bouton' VALUE='Message d&eacute;finitif : envoyer au site'></DIV>";
+
+		$ret .= "</div>\n<p>";
+	}
+	
+	
+	if ($forums_publics == "priori") {
+		$ret.= "Ce forum est mod&eacute;r&eacute; &agrave; priori&nbsp;: votre contribution n'appara&icirc;tra qu'apr&egrave;s avoir &eacute;t&eacute; valid&eacute;e par un administrateur du site.<P>";
+	}	
+	
+	if ($forums_publics == "abonnement") {
+		$ret.= '<? include("inc-forum.php3"); forum_abonnement(); ?>';
+	}
+	
+	$ret .= "\n";
 
 	$seed = (double) (microtime() + 1) * time() * 1000000;
 	@mt_srand($seed);
@@ -162,12 +276,17 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 	$id_syndic = (int) $id_syndic;
 	$hash = calculer_action_auteur("ajout_forum $id_rubrique $id_parent $id_article $id_breve $id_syndic $alea");
 
-	$ret .= "\n<div class='spip_encadrer'><B>Titre :</B><BR>";
-
 	$titre = htmlspecialchars($titre);
-
-	$ret .= "\n<INPUT TYPE='text' CLASS='forml' NAME='titre' VALUE=\"$titre\" SIZE='40'></div>";
-
+	
+	if ($afficher_texte == "non"){
+		$ret .= "\n<INPUT TYPE='hidden' NAME='titre' VALUE=\"$titre\">";
+	}
+	else {
+		$ret .= "\n<div class='spip_encadrer'><B>Titre :</B><BR>";
+		$ret .= "\n<INPUT TYPE='text' CLASS='forml' NAME='titre' VALUE=\"$titre\" SIZE='40'></div>";
+	}
+	
+	$ret .= "\n<INPUT TYPE='Hidden' NAME='id_message' VALUE=\"$id_message\">";
 	$ret .= "\n<INPUT TYPE='Hidden' NAME='ajout_forum' VALUE=\"oui\">";
 	$ret .= "\n<INPUT TYPE='Hidden' NAME='forum_id_rubrique' VALUE=\"$id_rubrique\">";
 	$ret .= "\n<INPUT TYPE='Hidden' NAME='forum_id_parent' VALUE=\"$id_parent\">";
@@ -178,40 +297,119 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 	$ret .= "\n<INPUT TYPE='Hidden' NAME='hash' VALUE=\"$hash\">";
 	$ret .= "\n<INPUT TYPE='Hidden' NAME='retour_forum' VALUE=\"$retour\">";
 
-	$ret .= "\n<p><div class='spip_encadrer'><B>Texte de votre message :</B><BR>";
-	$ret .= "\n(Pour cr&eacute;er des paragraphes, laissez simplement des lignes vides.)<BR>";
-	$ret .= "\n<TEXTAREA NAME='texte' ROWS='12' CLASS='forml' COLS='40' wrap=soft>";
-//		$ret.= $texte;
-	$ret .= "\n</TEXTAREA></div>\n";
+	
+	if ($afficher_texte !="non"){
+		$ret .= "\n<p><div class='spip_encadrer'><B>Texte de votre message :</B><BR>";
+		$ret .= "\n(Pour cr&eacute;er des paragraphes, laissez simplement des lignes vides.)<BR>";
+		$ret .= "\n<TEXTAREA NAME='texte' ROWS='12' CLASS='forml' COLS='40' wrap=soft>";
+		$ret.= $texte;
+		$ret .= "\n</TEXTAREA></div>\n";
+	}
+
+
+
+	/// Gestion des mots-cles
+	
+	$mots_cles_forums=lire_meta("mots_cles_forums");
+	if ($mots_cles_forums == "oui"){
+		if ($id_rubrique > 0) $table = "rubriques";
+		else if ($id_article > 0) $table = "articles";
+		else if ($id_breve > 0) $table = "breves";
+		else if ($id_syndic > 0) $table = "syndic";
+		
+
+		if ($afficher_groupe) {
+			$afficher_groupe = join($afficher_groupe, ",");
+			$selectionner_groupe = "AND id_groupe IN ('$afficher_groupe')";
+			echo "[$afficher_groupe]";
+		}
+		if ($table){
+			$query_groupe = "SELECT * FROM spip_groupes_mots WHERE 6forum = 'oui' AND $table = 'oui' $selectionner_groupe";
+			$result_groupe = mysql_query($query_groupe);
+			while ($row_groupe = mysql_fetch_array($result_groupe)) {
+				$id_groupe = $row_groupe['id_groupe'];
+				$titre_groupe = $row_groupe['titre'];
+				$unseul_groupe = $row_groupe['unseul'];
+				
+				$query = "SELECT * FROM spip_mots WHERE id_groupe='$id_groupe'";
+				$result = mysql_query($query);
+				$total_rows = mysql_num_rows($result);
+				
+				if ($total_rows > 0){
+					$ret .= "\n<p><div class='spip_encadrer'>";
+					$ret.= "<b>$titre_groupe&nbsp;:</b>";
+					
+					$ret .= "<table cellpadding=0 cellspacing=0 border=0 width='100%'>\n";	
+					$ret .= "<tr><td width='47%' valign='top'><font face='Verdana,Arial,Helvetica,sans-serif' size=2>";
+					$i = 0;
+					
+					while ($row = mysql_fetch_array($result)) {
+						$id_mot = $row['id_mot'];
+						$titre_mot = propre($row['titre']);
+						$type_mot = propre($row['type']);
+						$descriptif_mot = $row['descriptif'];
+					
+						if ($i >= ($total_rows/2) AND $i < $total_rows){
+							$i = $total_rows + 1;
+							$ret .= "</font></td><td width='6%'>&nbsp;</td><td width='47%' valign='top'><font face='Verdana,Arial,Helvetica,sans-serif' size=2>";
+						}
+						
+						if ($les_mots[$id_mot]) $checked = "checked";
+						else $checked = "";
+						
+						if ($unseul_groupe == 'oui'){
+							$ret .= "<input type='radio' name='ajouter_mot[$id_groupe][]' value='$id_mot' $checked id='mot$id_mot'> ";
+						}
+						else {
+							$ret .= "<input type='checkbox' name='ajouter_mot[$id_groupe][]' value='$id_mot' $checked id='mot$id_mot'> ";
+						}
+					
+						$ret .=  afficher_petits_logos_mots($id_mot);
+						$ret .= "<B><label for='mot$id_mot'>$titre_mot</label></B><br>";
+						if (strlen($descriptif_mot) > 0) $ret .= "$descriptif_mot<br>";
+						$i++;
+					}
+					
+					$ret .= "</font></td></tr></table>";
+				
+					$ret .= "</div>";
+				}
+			}
+		}
+	}
+	///////
+
 
-	$ret .= "\n<p><div class='spip_encadrer'><B>Lien hypertexte</B> (optionnel)<BR>";
-	$ret .= "\n(Si votre message se r&eacute;f&egrave;re &agrave; un article publi&eacute; sur le Web, ou &agrave; une page fournissant plus d'informations, veuillez indiquer ci-apr&egrave;s le titre de la page et son adresse URL.)<BR>";
-	$ret .= "\nTitre :<BR>";
-	$ret .= "\n<INPUT TYPE='text' CLASS='forml' NAME='nom_site_forum' VALUE=\"$nom_site_forum\" SIZE='40'><BR>";
+	if ($afficher_texte != "non"){
+		$ret .= "\n<p><div class='spip_encadrer'><B>Lien hypertexte</B> (optionnel)<BR>";
+		$ret .= "\n(Si votre message se r&eacute;f&egrave;re &agrave; un article publi&eacute; sur le Web, ou &agrave; une page fournissant plus d'informations, veuillez indiquer ci-apr&egrave;s le titre de la page et son adresse URL.)<BR>";
+		$ret .= "\nTitre :<BR>";
+		$ret .= "\n<INPUT TYPE='text' CLASS='forml' NAME='nom_site_forum' VALUE=\"".htmlspecialchars($nom_site_forum)."\" SIZE='40'><BR>";
 
-	$lien_url = "http://";
-	$ret .= "\nURL :<BR>";
-	$ret .= "\n<INPUT TYPE='text' CLASS='forml' NAME='url_site' VALUE=\"$url_site\" SIZE='40'></div>";
+		$lien_url = "http://";
+		$ret .= "\nURL :<BR>";
+		$ret .= "\n<INPUT TYPE='text' CLASS='forml' NAME='url_site' VALUE=\"$url_site\" SIZE='40'></div>";
 
-	$ret .= "\n<p><div class='spip_encadrer'><B>Qui &ecirc;tes-vous ?</B> (optionnel)<BR>";
-	$ret .= "\nVotre nom (ou pseudonyme) :<BR>";
-	$ret .= "\n<INPUT TYPE='text' CLASS='forml' NAME='auteur' VALUE=\"$auteur\" SIZE='40'><BR>";
+		$ret .= "\n<p><div class='spip_encadrer'><B>Qui &ecirc;tes-vous ?</B> (optionnel)<BR>";
+		$ret .= "\nVotre nom (ou pseudonyme) :<BR>";
+		$ret .= "\n<INPUT TYPE='text' CLASS='forml' NAME='auteur' VALUE=\"".htmlspecialchars($auteur)."\" SIZE='40'><BR>";
 
-	$ret .= "\nVotre adresse email :<BR>";
-	$ret .= "\n<INPUT TYPE='text' CLASS='forml' NAME='email_auteur' VALUE=\"$email_auteur\" SIZE='40'></div><P>";
+		$ret .= "\nVotre adresse email :<BR>";
+		$ret .= "\n<INPUT TYPE='text' CLASS='forml' NAME='email_auteur' VALUE=\"$email_auteur\" SIZE='40'></div>";
+	}
 
-	$ret .= "\n<DIV ALIGN='right'><INPUT TYPE='submit' NAME='Valider' CLASS='spip_bouton' VALUE='Envoyer ce message'></DIV>";
+	$ret .= "\n<p><DIV ALIGN='right'><INPUT TYPE='submit' NAME='Valider' CLASS='spip_bouton' VALUE='Voir ce message avant de le poster'></DIV>";
 	$ret .= "</FORM>";
-
+	
 	return $ret;
 }
 
 
 
 function ajout_forum() {
-	global $texte, $titre, $nom_site_forum, $url_site, $auteur, $email_auteur, $retour_forum;
+	global $texte, $titre, $nom_site_forum, $url_site, $auteur, $email_auteur, $retour_forum, $id_message, $confirmer;
 	global $forum_id_rubrique, $forum_id_parent, $forum_id_article, $forum_id_breve, $forum_id_auteur, $forum_id_syndic, $alea, $hash;
-	global $hash_email, $email_forum_abo, $pass_forum_abo;
+	global $hash_email, $email_forum_abo, $pass_forum_abo, $ajouter_mot;
 	global $HTTP_HOST, $REQUEST_URI, $HTTP_COOKIE_VARS, $REMOTE_ADDR;
 
 	if (!$GLOBALS['db_ok']) {
@@ -223,22 +421,86 @@ function ajout_forum() {
 	$nom_site_forum = addslashes($nom_site_forum);
 	$auteur = addslashes($auteur);
 	$retour_forum = rawurldecode($retour_forum);
-	$forums_publics = get_forums_publics($forum_id_article);
+	$forums_publics = lire_meta("forums_publics");
 
-	if (!verifier_action_auteur("ajout_forum $forum_id_rubrique $forum_id_parent $forum_id_article $forum_id_breve $forum_id_syndic $alea", $hash)) {
+	if (strlen($confirmer) > 0 AND !verifier_action_auteur("ajout_forum $forum_id_rubrique $forum_id_parent $forum_id_article $forum_id_breve $forum_id_syndic $alea", $hash)) {
 		@header("Location: $retour_forum");
 		exit;
 	}
-	if ((strlen($texte) + strlen($titre) + strlen($nom_site_forum) + strlen($url_site) + strlen($auteur) + strlen($email_auteur)) > 20 * 1024) {
+	if (strlen($confirmer) > 0 AND ((strlen($texte) + strlen($titre) + strlen($nom_site_forum) + strlen($url_site) + strlen($auteur) + strlen($email_auteur)) > 20 * 1024)) {
 		die ("<h4>Votre message est trop long. La taille maximale est de 20000 caract&egrave;res.</h4>
 		Cliquez <a href='$retour_forum'>ici</a> pour continuer.<p>");
 	}
-	if (strlen($texte) < 10 OR strlen($titre) < 3) {
+	/* if (strlen($confirmer) > 0 AND (strlen($texte) < 10 OR strlen($titre) < 3)) {
 		die ("<h4>Le texte ou le titre de votre message est trop court. </h4>
 		Cliquez <a href='$retour_forum'>ici</a> pour continuer.<p>");
+	}*/
+
+	unset($where);
+	if ($forum_id_article) $where[] = "id_article=$forum_id_article";
+	if ($forum_id_rubrique) $where[] = "id_rubrique=$forum_id_rubrique";
+	if ($forum_id_breve) $where[] = "id_breve=$forum_id_breve";
+	if ($forum_id_parent) $where[] = "id_forum=$forum_id_parent";
+	if ($where) {
+		$query = "SELECT fichier FROM spip_forum_cache WHERE ".join(' OR ', $where);
+		$result = mysql_query($query);
+		unset($fichiers);
+		while ($row = mysql_fetch_array($result)) {
+			$fichier = $row[0];
+			@unlink("CACHE/$fichier");
+			$fichiers[] = $fichier;
+		}
+		if ($fichiers) {
+			$fichiers = join(',', $fichiers);
+			$query = "DELETE FROM spip_forum_cache WHERE fichier IN ($fichiers)";
+			mysql_query($query);
+		}
+	}
+
+	switch($forums_publics) {
+		case "non":
+			$etat = "off";
+			break;
+		case "priori":
+			$etat = "prop";
+			break;
+		default:
+			$etat = "publie";
+			break;
 	}
+	
+	
+	// Ajouter les mots-cles
+	$query_mots = "DELETE FROM spip_mots_forum WHERE id_forum='$id_message'";
+	$result_mots = mysql_query($query_mots);
+
+	if ($ajouter_mot){
+		for (reset($ajouter_mot); $key = key($ajouter_mot); next($ajouter_mot)){
+			$les_mots .= ",".join($ajouter_mot[$key],",");
+		}
+
+		$les_mots = explode(",", $les_mots);
+		for ($index = 0; $index < count($les_mots); $index++){
+			$le_mot = $les_mots[$index];
+			if ($le_mot > 0) 
+				mysql_query("INSERT INTO spip_mots_forum (id_mot, id_forum) VALUES ('$le_mot', '$id_message')");
+		}
+
+	}
+
+	
+	
 
-	if ($forums_publics == 'abo') {
+	$query_forum = "UPDATE spip_forum
+		SET id_parent = $forum_id_parent, id_rubrique =$forum_id_rubrique, id_article = $forum_id_article, id_breve = $forum_id_breve, id_syndic = \"$forum_id_syndic\", 
+			date_heure = NOW(), titre = \"$titre\", texte = \"$texte\", nom_site = \"$nom_site_forum\", url_site = \"$url_site\", auteur = \"$auteur\",
+			email_auteur = \"$email_auteur\",  ip = \"$REMOTE_ADDR\", statut = \"redac\", id_auteur = \"$id_auteur\" 
+		WHERE id_forum = '$id_message'";
+
+	$result_forum = mysql_query($query_forum);
+
+
+	if ($forums_publics == 'abonnement') {
 		$cookie_email = $HTTP_COOKIE_VARS['spip_forum_email'];
 		if ($hash_email && $forum_id_auteur) {
 			if (verifier_action_auteur("email $cookie_email", $hash_email, $forum_id_auteur)) {
@@ -256,6 +518,11 @@ function ajout_forum() {
 					if ($mdpass == $row['pass']) {
 						$ok = true;
 						poser_cookie_forum($email_forum_abo, $row[0]);
+						
+						$fich = $REQUEST_URI;
+						if ($p = strrpos($REQUEST_URI, '/')) $fich = substr($fich, $p + 1)."&id_message=$id_message";
+						
+						@header("Location: $fich");
 						break;
 					}
 				}
@@ -281,84 +548,55 @@ function ajout_forum() {
 		}
 	}
 
-	unset($where);
-	if ($forum_id_article) $where[] = "id_article=$forum_id_article";
-	if ($forum_id_rubrique) $where[] = "id_rubrique=$forum_id_rubrique";
-	if ($forum_id_breve) $where[] = "id_breve=$forum_id_breve";
-	if ($forum_id_parent) $where[] = "id_forum=$forum_id_parent";
-	if ($where) {
-		$query = "SELECT fichier FROM spip_forum_cache WHERE ".join(' OR ', $where);
-		$result = mysql_query($query);
-		unset($fichiers);
-		while ($row = mysql_fetch_array($result)) {
-			$fichier = $row[0];
-			@unlink("CACHE/$fichier");
-			$fichiers[] = $fichier;
-		}
-		if ($fichiers) {
-			$fichiers = join(',', $fichiers);
-			$query = "DELETE FROM spip_forum_cache WHERE fichier IN ($fichiers)";
-			mysql_query($query);
-		}
-	}
 
-	switch($forums_publics) {
-		case "non":
-			$etat = "off";
-			break;
-		case "pri":
-			$etat = "prop";
-			break;
-		default:
-			$etat = "publie";
-			break;
-	}
+	
+	if (strlen($confirmer) > 0) {
+		mysql_query("UPDATE spip_forum SET statut=\"$etat\" WHERE id_forum='$id_message'");
+	
 
-	$query_forum = "INSERT spip_forum (id_parent, id_rubrique, id_article, id_breve, date_heure, titre, texte, nom_site, url_site, auteur, email_auteur, ip, statut, id_auteur, id_syndic)
-	VALUES ($forum_id_parent, $forum_id_rubrique, $forum_id_article, $forum_id_breve, NOW(), \"$titre\", \"$texte\", \"$nom_site_forum\", \"$url_site\", \"$auteur\", \"$email_auteur\", \"$REMOTE_ADDR\",\"$etat\",\"$id_auteur\", \"$forum_id_syndic\")";
-	$result_forum = mysql_query($query_forum);
+		$texte = stripslashes($texte);
+		$titre = stripslashes($titre);
+		$auteur = stripslashes($auteur);
+
+		// Envoi d'un mail aux auteurs
+		$prevenir_auteurs = lire_meta("prevenir_auteurs");
+		if ($prevenir_auteurs == "oui") {
+			if ($id_article = $forum_id_article) {
+				$url = generer_url_article($id_article);
+				$adresse_site = lire_meta("adresse_site");
+				$nom_site_spip = lire_meta("nom_site");
+				if ($url[0] == '/') {
+					$url = "http://$HTTP_HOST$url";
+				}
+				else {
+					$url = "http://$HTTP_HOST".substr($REQUEST_URI, 0, strrpos($REQUEST_URI, '/') + 1).$url;
+				}
+				$courr = "(ceci est un message automatique)\n\n";
+				$courr .= "Message poste ";
+				if (strlen($auteur) > 2) {
+					$courr .= "par $auteur ";
+					if ($email_auteur) $courr .= "<$email_auteur> ";
+				}
+				$courr .= "a la suite de votre article.\n";
+				$courr .= "Ne repondez pas a ce mail mais sur le forum a l'adresse suivante :\n";
+				$courr .= "$url\n";
+				$courr .= "\n\n".$titre."\n\n".textebrut(propre($texte))."\n\n$nom_site_forum\n$url_site\n";
+				$sujet = "[$nom_site_spip] [forum] $titre";
+				$query = "SELECT spip_auteurs.* FROM spip_auteurs, spip_auteurs_articles AS lien WHERE lien.id_article='$id_article' AND spip_auteurs.id_auteur=lien.id_auteur";
+				$result = mysql_query($query);
 
-	$texte = stripslashes($texte);
-	$titre = stripslashes($titre);
-	$auteur = stripslashes($auteur);
-
-	// Envoi d'un mail aux auteurs
-	$prevenir_auteurs = lire_meta("prevenir_auteurs");
-	if ($prevenir_auteurs == "oui") {
-		if ($id_article = $forum_id_article) {
-			$url = generer_url_article($id_article);
-			$adresse_site = lire_meta("adresse_site");
-			$nom_site_spip = lire_meta("nom_site");
-			if ($url[0] == '/') {
-				$url = "http://$HTTP_HOST$url";
-			}
-			else {
-				$url = "http://$HTTP_HOST".substr($REQUEST_URI, 0, strrpos($REQUEST_URI, '/') + 1).$url;
-			}
-			$courr = "(ceci est un message automatique)\n\n";
-			$courr .= "Message poste ";
-			if (strlen($auteur) > 2) {
-				$courr .= "par $auteur ";
-				if ($email_auteur) $courr .= "<$email_auteur> ";
-			}
-			$courr .= "a la suite de votre article.\n";
-			$courr .= "Ne repondez pas a ce mail mais sur le forum a l'adresse suivante :\n";
-			$courr .= "$url\n";
-			$courr .= "\n\n".$titre."\n\n".textebrut(propre($texte))."\n\n$nom_site_forum\n$url_site\n";
-			$sujet = "[$nom_site_spip] [forum] $titre";
-			$query = "SELECT spip_auteurs.* FROM spip_auteurs, spip_auteurs_articles AS lien WHERE lien.id_article='$id_article' AND spip_auteurs.id_auteur=lien.id_auteur";
-			$result = mysql_query($query);
-
-			while ($row = mysql_fetch_array($result)) {
-				$email_auteur = trim($row[3]);
-				if (strlen($email_auteur) < 3) continue;
-				envoyer_mail($email_auteur, $sujet, $courr);
+				while ($row = mysql_fetch_array($result)) {
+					$email_auteur = trim($row[3]);
+					if (strlen($email_auteur) < 3) continue;
+					envoyer_mail($email_auteur, $sujet, $courr);
+				}
 			}
 		}
-	}
 
-	@header("Location: $retour_forum");
-	exit;
+
+		@header("Location: $retour_forum");
+		exit;
+	}
 }
 
 ?>