From a72886843e6c678258157ad2d4d8097491b0c584 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Wed, 19 Jan 2005 00:47:24 +0000
Subject: [PATCH] petit nettoyage forums

---
 formulaire_forum-dist.html |  1 -
 forum-dist.html            | 15 ++++++++-
 inc-formulaire_forum.php3  | 69 +++++++++++++++++++-------------------
 inc-messforum.php3         | 65 ++++++++++++++++++-----------------
 4 files changed, 84 insertions(+), 66 deletions(-)

diff --git a/formulaire_forum-dist.html b/formulaire_forum-dist.html
index 3fd62cff89..9e2d21a122 100644
--- a/formulaire_forum-dist.html
+++ b/formulaire_forum-dist.html
@@ -1,7 +1,6 @@
 <form action='[(#HTTP_VARS{url})]' method='post' name='formulaire'>
 
 <input type='hidden' name='ajout_forum' value="oui" />
-<input type='hidden' name='post_forum' value="oui" />
 <input type='hidden' name='alea' value="[(#HTTP_VARS{alea})]" />
 <input type='hidden' name='hash' value="[(#HTTP_VARS{hash})]" />
 <input type='hidden' name='retour' value="[(#HTTP_VARS{retour})]" />
diff --git a/forum-dist.html b/forum-dist.html
index 7a4cb62fd5..6123070932 100644
--- a/forum-dist.html
+++ b/forum-dist.html
@@ -74,9 +74,22 @@
 	<br>
 </BOUCLE_breve>
 
+<BOUCLE_rubrique(RUBRIQUES) {id_rubrique}>
+	<:en_reponse:>
+	<h2 class="titre-extrait"><a href="#URL_RUBRIQUE">#TITRE</a></h2>
+	[<div class="texte"><div class="extrait">(#TEXTE)</div></div>]
+	<br>
+</BOUCLE_rubrique>
+
+<BOUCLE_syndic(SITES) {id_syndic}>
+	<:en_reponse:>
+	<h2 class="titre-extrait"><a href="#URL_SYNDIC">#TITRE</a></h2>
+	<br>
+</BOUCLE_syndic>
+
 <BOUCLE_forum_parent(FORUMS) {id_forum}>
 	<:en_reponse:>
-	<h2 class="titre-extrait"><a href="#URL_BREVE">#TITRE</a></h2>
+	<h2 class="titre-extrait"><a href="#URL_FORUM">#TITRE</a></h2>
 	<div class="detail">
 	[(#DATE|nom_jour)] [(#DATE|affdate)]
 	</div>
diff --git a/inc-formulaire_forum.php3 b/inc-formulaire_forum.php3
index 36f153860b..d4e12e4184 100644
--- a/inc-formulaire_forum.php3
+++ b/inc-formulaire_forum.php3
@@ -77,7 +77,7 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq
 	$previsu = ' ';
 
 	// Recuperer le message a previsualiser
-	if ($GLOBALS['HTTP_POST_VARS']['post_forum'])  {
+	if ($GLOBALS['HTTP_POST_VARS']['ajout_forum'])  {
 		$titre = $GLOBALS['HTTP_POST_VARS']['titre'];
 		$texte = $GLOBALS['HTTP_POST_VARS']['texte'];
 		$auteur = $GLOBALS['HTTP_POST_VARS']['auteur'];
@@ -99,13 +99,13 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq
 
 			// Verifier mots associes au message
 			if (is_array($ajouter_mot))
-				$mots = preg_replace('/[^0-9,]/', '', join(',',$ajouter_mot));
-			else $mots = '';
+			$mots = preg_replace('/[^0-9,]/', '', join(',',$ajouter_mot));
+			else $mots = '0';
 
 			// affichage {par num type, type, num titre,titre}
 			$result_mots = spip_query("SELECT id_mot, titre, type
 				FROM spip_mots
-				WHERE id_mot IN (0, $mots)
+				WHERE id_mot IN ($mots)
 				ORDER BY 0+type,type,0+titre,titre");
 			if (spip_num_rows($result_mots)>0) {
 				$previsu .= "<p>"._T('forum_avez_selectionne')."</p><ul>";
@@ -164,35 +164,36 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq
 	else
 		$table = '';
 
-	return array(
-		     'formulaire_forum',
-		     0,
-		     array(
-		     'afficher_texte_input' => (($afficher_texte <> 'non') ? '&nbsp;' : ''),
-		     'afficher_texte_hidden' => 
-		     (($afficher_texte <> 'non') ? '' :
-		      (boutonne('hidden', 'titre', htmlspecialchars($titre)) .
-		       $table .
-		       "\n<br /><div align='right'>" .
-		       boutonne('submit', '', _T('forum_valider'), "class='spip_bouton'") .
-		       "</div>")), 
-		     'alea' => $alea,
-		     'auteur' => $auteur,
-		     'disabled' => ($forums_publics == "abo")? " disabled='disabled'" : '',
-		     'email_auteur' => $email_auteur,
-		     'hash' => $hash,
-		     'id_message' => $id_message,
-		     'modere' => (($forums_publics != 'pri') ? '' :
-				  _T('forum_info_modere')),
-		     'nom_site_forum' => $nom_site_forum,
-		     'previsu' => $previsu,
-		     'retour' => $retour,
-		     'table' => $table,
-		     'texte' => $texte,
-		     'titre' => $titre,
-		     'url' =>  $url,
-		     'url_site' => ($url_site ? $url_site : "http://")
-		     ));
+	return array('formulaire_forum', 0,
+	array(
+		'alea' => $alea,
+		'auteur' => $auteur,
+		'disabled' => ($forums_publics == "abo")? " disabled='disabled'" : '',
+		'email_auteur' => $email_auteur,
+		'hash' => $hash,
+		'modere' => (($forums_publics != 'pri') ? '' : _T('forum_info_modere')),
+		'nom_site_forum' => $nom_site_forum,
+		'previsu' => $previsu,
+		'retour' => $retour,
+		'table' => $table,
+		'texte' => $texte,
+		'titre' => $titre,
+		'url' =>  $url,
+		'url_site' => ($url_site ? $url_site : "http://"),
+
+		## gestion des la variable de personnalisation $afficher_texte
+		# mode normal : afficher le texte en < input text >, cf. squelette
+		'afficher_texte_input' => (($afficher_texte <> 'non') ? '&nbsp;' : ''),
+		# mode 'non' : afficher les elements en < input hidden >
+		'afficher_texte_hidden' => (($afficher_texte <> 'non') ? '' :
+			(boutonne('hidden', 'titre', htmlspecialchars($titre)) .
+				$table .
+				"\n<br /><div align='right'>" .
+				boutonne('submit', '', _T('forum_valider'),
+				"class='spip_bouton'") .
+				"</div>"))
+
+		));
 }
 
 
@@ -329,7 +330,7 @@ function sql_recherche_donnees_forum ($idr, $idf, $ida, $idb, $ids) {
 	if ($ida)
 		list($accepter_forum) = spip_fetch_array(spip_query(
 		"SELECT accepter_forum FROM spip_articles WHERE id_article=$ida"));
-	else
+	if (!$accepter_forum)
 		$accepter_forum = substr(lire_meta("forums_publics"),0,3);
 	// valeurs possibles : 'pos'teriori, 'pri'ori, 'abo'nnement
 	if ($accepter_forum == "non")
diff --git a/inc-messforum.php3 b/inc-messforum.php3
index 45d9545e07..bbb7f81881 100644
--- a/inc-messforum.php3
+++ b/inc-messforum.php3
@@ -8,8 +8,7 @@ include_ecrire("inc_abstract_sql.php3");
 // Ce fichier inclus par inc-public a un comportement special
 // Voir commentaires dans celui-ci et dans inc-formulaire_forum
 
-function prevenir_auteurs($auteur, $email_auteur, $id_article, $texte, $titre)
-{
+function prevenir_auteurs($auteur, $email_auteur, $id_article, $texte, $titre) {
 	include_ecrire('inc_texte.php3');
 	include_ecrire('inc_filtres.php3');
 	include_ecrire('inc_mail.php3');
@@ -45,20 +44,25 @@ function prevenir_auteurs($auteur, $email_auteur, $id_article, $texte, $titre)
 		if (strlen($email) < 3) continue;
 		envoyer_mail($email, $sujet, $courr);
 	}
-}	
+}
+
+
 
+// Recuperation des donnees
 $retour_forum = rawurldecode($retour);
-$forum_id_article = intval($id_article);
-$forum_id_rubrique = intval($id_rubrique);
-$forum_id_forum = intval($id_forum);
-$forum_id_breve = intval($id_breve);
-$forum_id_syndic = intval($id_syndic);
+$id_article = intval($id_article);
+$id_rubrique = intval($id_rubrique);
+$id_forum = intval($id_forum);
+$id_breve = intval($id_breve);
+$id_syndic = intval($id_syndic);
 
+// initialisation de l'eventuel visiteur connecte
 if (!$id_auteur)
 	$id_auteur = intval($auteur_session['id_auteur']);
 
-if ($forum_id_article) {
-	$r = spip_query("SELECT accepter_forum FROM spip_articles WHERE id_article=$forum_id_article");
+// chercher le statut du forum
+if ($id_article) {
+	$r = spip_query("SELECT accepter_forum FROM spip_articles WHERE id_article=$id_article");
 	$r = spip_fetch_array($r);
 	if ($r)
 		$forums_publics = $r['accepter_forum'];
@@ -88,8 +92,10 @@ if ($forums_publics == "abo") {
 	// Ne pas autoriser de changement de nom si forum sur abonnement
 	$auteur = $auteur_session['nom'];
 	$email_auteur = $auteur_session['email'];
- } 
+}
+
 
+// trop court ?
 if ((strlen($texte) + strlen($titre) + strlen($nom_site_forum) + strlen($url_site) + strlen($auteur) + strlen($email_auteur)) > 20 * 1024) {
 	ask_php_auth(_T('forum_message_trop_long'),
 		_T('forum_cliquer_retour',
@@ -98,16 +104,15 @@ if ((strlen($texte) + strlen($titre) + strlen($nom_site_forum) + strlen($url_sit
 }
 
 
-$validation_finale = (strlen($confirmer) > 0
-	OR ($afficher_texte=='non' AND $ajouter_mot));
-
-if ($validation_finale) {
+// validation finale du post ?
+if (strlen($confirmer) > 0
+OR ($afficher_texte=='non' AND $ajouter_mot)) {
 
 	// verifier droit (pour interdire de hack-poster sur des forums fermes ?)
 	include_ecrire("inc_admin.php3");
-	if (!(verifier_action_auteur("ajout_forum $forum_id_rubrique".
-	" $forum_id_forum $forum_id_article $forum_id_breve".
-	" $forum_id_syndic $alea", $hash))) {
+	if (!(verifier_action_auteur("ajout_forum $id_rubrique".
+	" $id_forum $id_article $id_breve".
+	" $id_syndic $alea", $hash))) {
 		header("Status: 404");
 		exit;
 	}
@@ -122,16 +127,16 @@ if ($validation_finale) {
 		(($forums_publics == 'pri') ? 'prop' :
 		'publie');
 
-	if ($forum_id_forum > 0)
-		$id_thread = $forum_id_forum;
+	if ($id_forum > 0)
+		$id_thread = $id_forum;
 	else
 		$id_thread = $id_message; # id_thread oblige INSERT puis UPDATE.
 
-	spip_query("UPDATE spip_forum SET id_parent = $forum_id_forum,
-	id_rubrique =$forum_id_rubrique,
-	id_article = $forum_id_article,
-	id_breve = $forum_id_breve,
-	id_syndic = $forum_id_syndic,
+	spip_query("UPDATE spip_forum SET id_parent = $id_forum,
+	id_rubrique =$id_rubrique,
+	id_article = $id_article,
+	id_breve = $id_breve,
+	id_syndic = $id_syndic,
 	id_auteur = $id_auteur,
 	id_thread = $id_thread,
 	date_heure = NOW(),
@@ -159,7 +164,7 @@ if ($validation_finale) {
 	// Prevenir les auteurs de l'article
 	if (lire_meta("prevenir_auteurs") == "oui"
 	AND ($afficher_texte != "non")
-	AND ($id_article = $forum_id_article))
+	AND ($id_article = $id_article))
 		prevenir_auteurs($auteur, $email_auteur, $id_article, $texte, $titre);
 
 	// Poser un cookie pour ne pas retaper le nom / email
@@ -172,10 +177,10 @@ if ($validation_finale) {
 	include_ecrire('inc_invalideur.php3');
 	if ($statut == 'publie') {
 		suivre_invalideur ("id='id_forum/" .
-			calcul_index_forum($forum_id_article,
-				$forum_id_breve,
-				$forum_id_rubrique,
-				$forum_id_syndic) . "'");
+			calcul_index_forum($id_article,
+				$id_breve,
+				$id_rubrique,
+				$id_syndic) . "'");
 	}
 
 	$redirect = $retour_forum;
-- 
GitLab