From 1b27b1fd3a50ee8b206daaee8203e630e676f60a Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Fri, 9 Dec 2005 21:25:55 +0000
Subject: [PATCH] permettre la surcharge et supprimer les includes inutiles et
 2 XSS

---
 .gitattributes                |   1 +
 ecrire/articles_forum.php3    | 120 +------------------------------
 ecrire/inc_articles_forum.php | 132 ++++++++++++++++++++++++++++++++++
 3 files changed, 135 insertions(+), 118 deletions(-)
 create mode 100644 ecrire/inc_articles_forum.php

diff --git a/.gitattributes b/.gitattributes
index a2b9ed0c09..02d2c23ab1 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -262,6 +262,7 @@ ecrire/inc_ajax.php3 -text
 ecrire/inc_ajax_page.php -text
 ecrire/inc_articles.php -text
 ecrire/inc_articles_edit.php -text
+ecrire/inc_articles_forum.php -text
 ecrire/inc_articles_page.php -text
 ecrire/inc_articles_tous.php -text
 ecrire/inc_auteur_infos.php -text
diff --git a/ecrire/articles_forum.php3 b/ecrire/articles_forum.php3
index 0094495568..2fe0d69a9d 100644
--- a/ecrire/articles_forum.php3
+++ b/ecrire/articles_forum.php3
@@ -11,122 +11,6 @@
 \***************************************************************************/
 
 include ("inc.php3");
-include_ecrire("inc_presentation.php3");
-include_ecrire("inc_texte.php3");
-include_ecrire("inc_urls.php3");
-include_ecrire("inc_rubriques.php3");
-include_ecrire("inc_index.php3");
-include_ecrire("inc_logos.php3");
-include_ecrire('inc_forum.php3');
-
-
-$query = "SELECT titre, id_rubrique FROM spip_articles WHERE id_article='$id_article'";
-$result = spip_query($query);
-
-while($row = spip_fetch_array($result)) {
-	$titre = $row["titre"];
-	$id_rubrique = $row["id_rubrique"];
-}
-
-
-debut_page($titre, "documents", "articles");
-
-
-
-debut_grand_cadre();
-
-afficher_hierarchie($id_rubrique);
-
-fin_grand_cadre();
-
-
-
-debut_gauche();
-
-
-debut_boite_info();
-
-echo "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2>";
-echo "<P align=left>"._T('info_gauche_suivi_forum');
-
-echo aide ("suiviforum");
-echo "</FONT>";
-
-fin_boite_info();
-
-
-debut_droite();
-
-
-echo "\n<table cellpadding=0 cellspacing=0 border=0 width='100%'>";
-echo "<tr width='100%'>";
-echo "<td>";
-	icone(_T('icone_retour'), "articles.php3?id_article=$id_article", "article-24.gif", "rien.gif");
-
-echo "</td>";
-echo "<td>" . http_img_pack('rien.gif', " ", "width='10'") ."</td>\n";
-echo "<td width='100%'>";
-echo _T('texte_messages_publics');
-gros_titre($titre);
-echo "</td></tr></table>";
-echo "<p>";
-
-// Ne pas donner les cles du forum a des non-admins
-if (! ($connect_statut=='0minirezo' AND acces_rubrique($id_rubrique)))
-	return;
-
-echo "<div class='serif2'>";
-
-// reglages
-if (!$debut) $debut = 0;
-$pack = 5;		// nb de forums affiches par page
-$enplus = 200;	// intervalle affiche autour du debut
-$limitdeb = ($debut > $enplus) ? $debut-$enplus : 0;
-$limitnb = $debut + $enplus - $limitdeb;
-
-$query_forum = "SELECT id_forum FROM spip_forum WHERE id_article='$id_article' AND id_parent=0 AND statut IN ('publie', 'off', 'prop') LIMIT  $limitnb OFFSET $limitdeb";
-$result_forum = spip_query($query_forum);
-
-
-$i = $limitdeb;
-if ($i>0)
-	echo "<A HREF='articles_forum.php3?id_article=$id_article&page=$page'>0</A> ... | ";
-while ($row = spip_fetch_array($result_forum)) {
-
-	// barre de navigation
-	if ($i == $pack*floor($i/$pack)) {
-		if ($i == $debut)
-			echo "<FONT SIZE=3><B>$i</B></FONT>";
-		else
-			echo "<A HREF='articles_forum.php3?id_article=$id_article&debut=$i&page=$page'>$i</A>";
-		echo " | ";
-	}
-
-	// elements a controler
-
-	$i ++;
-}
-echo "<A HREF='articles_forum.php3?id_article=$id_article&debut=$i&page=$page'>...</A>";
-
-echo "</div>";
-
-$mots_cles_forums = $GLOBALS['meta']["mots_cles_forums"];
-
-if ($connect_statut == "0minirezo") {
-	$query_forum = "SELECT pied.*, max(thread.date_heure) AS date
-		FROM spip_forum AS pied, spip_forum AS thread
-		WHERE pied.id_article='$id_article'
-		AND pied.id_parent=0
-		AND pied.statut IN ('publie', 'off', 'prop')
-		AND thread.id_thread=pied.id_forum
-		GROUP BY id_thread
-		ORDER BY date DESC LIMIT $debut, $pack";
-	$result_forum = spip_query($query_forum);
-	afficher_forum($result_forum, $forum_retour, $id_article);
-}
-
-echo "</FONT>";
-
-fin_page();
-
+$var_f = include_fonction(basename($SCRIPT_NAME, _EXTENSION_PHP));
+$var_f();
 ?>
diff --git a/ecrire/inc_articles_forum.php b/ecrire/inc_articles_forum.php
new file mode 100644
index 0000000000..8ce51a74cd
--- /dev/null
+++ b/ecrire/inc_articles_forum.php
@@ -0,0 +1,132 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2005                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+include_ecrire("inc_presentation.php3");
+include_ecrire('inc_forum.php3'); // pour boutons_controle_forum 
+
+function articles_forum_dist()
+{
+  global $connect_statut, $debut, $forum_retour, $id_article;
+
+  $id_article = intval($id_article);
+  $debut = intval($debut);
+  
+$query = "SELECT titre, id_rubrique FROM spip_articles WHERE id_article=$id_article";
+$result = spip_query($query);
+
+if ($row = spip_fetch_array($result)) {
+	$titre = $row["titre"];
+	$id_rubrique = $row["id_rubrique"];
+}
+
+
+debut_page($titre, "documents", "articles");
+
+
+
+debut_grand_cadre();
+
+afficher_hierarchie($id_rubrique);
+
+fin_grand_cadre();
+
+
+
+debut_gauche();
+
+
+debut_boite_info();
+
+echo "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=2>";
+echo "<P align=left>"._T('info_gauche_suivi_forum');
+
+echo aide ("suiviforum");
+echo "</FONT>";
+
+fin_boite_info();
+
+
+debut_droite();
+
+
+echo "\n<table cellpadding=0 cellspacing=0 border=0 width='100%'>";
+echo "<tr width='100%'>";
+echo "<td>";
+	icone(_T('icone_retour'), "articles.php3?id_article=$id_article", "article-24.gif", "rien.gif");
+
+echo "</td>";
+echo "<td>" . http_img_pack('rien.gif', " ", "width='10'") ."</td>\n";
+echo "<td width='100%'>";
+echo _T('texte_messages_publics');
+gros_titre($titre);
+echo "</td></tr></table>";
+echo "<p>";
+
+// Ne pas donner les cles du forum a des non-admins
+if (! ($connect_statut=='0minirezo' AND acces_rubrique($id_rubrique)))
+	return;
+
+echo "<div class='serif2'>";
+
+// reglages
+if (!$debut) $debut = 0;
+$pack = 5;		// nb de forums affiches par page
+$enplus = 200;	// intervalle affiche autour du debut
+$limitdeb = ($debut > $enplus) ? $debut-$enplus : 0;
+$limitnb = $debut + $enplus - $limitdeb;
+
+$query_forum = "SELECT id_forum FROM spip_forum WHERE id_article='$id_article' AND id_parent=0 AND statut IN ('publie', 'off', 'prop') LIMIT  $limitnb OFFSET $limitdeb";
+$result_forum = spip_query($query_forum);
+
+
+$i = $limitdeb;
+if ($i>0)
+	echo "<A HREF='articles_forum.php3?id_article=$id_article'>0</A> ... | ";
+while ($row = spip_fetch_array($result_forum)) {
+
+	// barre de navigation
+	if ($i == $pack*floor($i/$pack)) {
+		if ($i == $debut)
+			echo "<FONT SIZE=3><B>$i</B></FONT>";
+		else
+			echo "<A HREF='articles_forum.php3?id_article=$id_article&debut=$i'>$i</A>";
+		echo " | ";
+	}
+
+	// elements a controler
+
+	$i ++;
+}
+echo "<A HREF='articles_forum.php3?id_article=$id_article&debut=$i'>...</A>";
+
+echo "</div>";
+
+if ($connect_statut == "0minirezo") {
+	$query_forum = "SELECT pied.*, max(thread.date_heure) AS date
+		FROM spip_forum AS pied, spip_forum AS thread
+		WHERE pied.id_article='$id_article'
+		AND pied.id_parent=0
+		AND pied.statut IN ('publie', 'off', 'prop')
+		AND thread.id_thread=pied.id_forum
+		GROUP BY id_thread
+		ORDER BY date DESC LIMIT $debut, $pack";
+	$result_forum = spip_query($query_forum);
+	afficher_forum($result_forum, $forum_retour, $id_article);
+}
+
+echo "</FONT>";
+
+fin_page();
+}
+
+?>
-- 
GitLab