From cdf70b1090b02ee12592688710644538a0b335de Mon Sep 17 00:00:00 2001
From: Antoine Pitrou <pitrou@free.fr>
Date: Tue, 16 Sep 2003 00:19:47 +0000
Subject: [PATCH] forums publics

---
 ecrire/inc_texte.php3  | 17 ++++++-----------
 forum.php3             |  5 +----
 inc-cache.php3         |  3 +++
 inc-calcul-squel.php3  | 20 +++++++++++++-------
 inc-forum.php3         | 27 +++++++++------------------
 inc-public-global.php3 |  1 +
 spip_login.php3        |  1 -
 7 files changed, 33 insertions(+), 41 deletions(-)

diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3
index ea67ccf392..f5cb47cea9 100644
--- a/ecrire/inc_texte.php3
+++ b/ecrire/inc_texte.php3
@@ -135,9 +135,6 @@ function nettoyer_chapo($chapo){
 function echappe_html($letexte,$source) {
 	global $flag_pcre;
 
-
-
-
 	if ($flag_pcre) {	// beaucoup plus rapide si on a pcre
 		$regexp_echap_html = "<html>((.*?))<\/html>";
 		$regexp_echap_code = "<code>((.*?))<\/code>";
@@ -184,8 +181,6 @@ function echappe_html($letexte,$source) {
 
 		}
 
-
-
 		$pos = strpos($letexte, $regs[0]);
 		$letexte = substr($letexte,0,$pos)."@@SPIP_$source$num_echap@@"
 			.substr($letexte,$pos+strlen($regs[0]));
@@ -211,12 +206,12 @@ function echappe_html($letexte,$source) {
 		$les_echap[$num_echap] = $rempl;
 	}
 
-
 	//
 	// Echapper les <a href>
 	//
+
 	//$regexp_echap = "<a[[:space:]][^>]+>";
-	 $regexp_echap = "<[^>]+>"; // Echappement tout HTML
+	$regexp_echap = "<[^>]+>"; // Echappement tout HTML
 	while (eregi($regexp_echap, $letexte, $regs)) {
 		$num_echap++;
 		$les_echap[$num_echap] = $regs[0];
@@ -372,10 +367,10 @@ function typo($letexte) {
 		$letexte = typo_fr($letexte);
 	else
 		$letexte = typo_en($letexte);
-		
-	
-	$letexte = ereg_replace("'", "&#146;", $letexte);
-	
+
+
+	$letexte = str_replace("'", "&#146;", $letexte);
+
 	$letexte = corriger_caracteres($letexte);
 	$letexte = echappe_retour($letexte, $les_echap, "SOURCETYPO");
 
diff --git a/forum.php3 b/forum.php3
index d3080daf0f..f027e0261b 100644
--- a/forum.php3
+++ b/forum.php3
@@ -1,10 +1,7 @@
 <?php
 $fond = "forum";
-$delais = 0;
-
-
+$delais = 3600;
 
 include ("inc-public.php3");
 
-
 ?>
diff --git a/inc-cache.php3 b/inc-cache.php3
index ef717de1a8..1215ae1e4a 100644
--- a/inc-cache.php3
+++ b/inc-cache.php3
@@ -11,6 +11,8 @@ define("_INC_CACHE", "1");
 //
 
 function generer_nom_fichier_cache($fichier_requete) {
+	global $HTTP_POST_VARS;
+
 	$md_cache = md5($fichier_requete);
 
 	$fichier_cache = ereg_replace('^/+', '', $fichier_requete);
@@ -22,6 +24,7 @@ function generer_nom_fichier_cache($fichier_requete) {
 
 	if (!$fichier_cache)
 		$fichier_cache = 'INDEX-';
+	if (!empty($HTTP_POST_VARS)) $fichier_cache .= '.'.@getmypid();
 	$fichier_cache .= '.'.substr($md_cache, 1, 6);
 
 	$subdir_cache = substr($md_cache, 0, 1);
diff --git a/inc-calcul-squel.php3 b/inc-calcul-squel.php3
index 90e9a6591c..95242b24d9 100644
--- a/inc-calcul-squel.php3
+++ b/inc-calcul-squel.php3
@@ -1359,27 +1359,33 @@ function calculer_champ($id_champ, $id_boucle, $nom_var)
 		$milieu = '
 		switch ($pile_boucles[$id_instance]->type_requete) {
 		case "articles":
-			$'.$nom_var.' = retour_forum(0, 0, $contexte["id_article"], 0, 0);
+			$'.$nom_var.' = "<"."?php include_local(\'inc-forum.php3\');
+				echo retour_forum(0, 0, $contexte[id_article], 0, 0); ?".">";
 			break;
 
 		case "breves":
-			$'.$nom_var.' = retour_forum(0, 0, 0, $contexte["id_breve"], 0);
+			$'.$nom_var.' = "<"."?php include_local(\'inc-forum.php3\');
+				echo retour_forum(0, 0, 0, $contexte[id_breve], 0); ?".">";
 			break;
 
 		case "forums":
-			$'.$nom_var.' = retour_forum($contexte["id_rubrique"], $contexte["id_forum"], $contexte["id_article"], $contexte["id_breve"], $contexte["id_syndic"]);
+			$'.$nom_var.' = "<"."?php include_local(\'inc-forum.php3\');
+				echo retour_forum(0, $contexte[id_forum], 0, 0, 0); ?".">";
 			break;
 
 		case "rubriques":
-			$'.$nom_var.' = retour_forum($contexte["id_rubrique"], 0, 0, 0, 0);
+			$'.$nom_var.' = "<"."?php include_local(\'inc-forum.php3\');
+				echo retour_forum($contexte[id_rubrique], 0, 0, 0, 0); ?".">";
 			break;
 
 		case "syndication":
-			$'.$nom_var.' = retour_forum(0, 0, 0, 0, $contexte["id_syndic"]);
+			$'.$nom_var.' = "<"."?php include_local(\'inc-forum.php3\');
+				echo retour_forum(0, 0, 0, 0, $contexte[id_syndic]); ?".">";
 			break;
 
 		default:
-			$'.$nom_var.' = retour_forum($contexte["id_rubrique"], $contexte["id_forum"], $contexte["id_article"], $contexte["id_breve"], $contexte["id_syndic"]);
+			$'.$nom_var.' = "<"."?php include_local(\'inc-forum.php3\');
+				echo retour_forum(\'$contexte[id_rubrique]\', \'$contexte[id_forum]\', \'$contexte[id_article]\', \'$contexte[id_breve]\', \'$contexte[id_syndic]\'); ?".">";
 			break;
 		}
 		';
@@ -1517,7 +1523,7 @@ function calculer_champ($id_champ, $id_boucle, $nom_var)
 
 	$code = applique_filtres ($fonctions, $code);
 
-	$milieu .= "	\$$nom_var = $code;\n";
+	if ($code != "\$$nom_var") $milieu .= "\t\$$nom_var = $code;\n";
 
 	return $milieu;
 }
diff --git a/inc-forum.php3 b/inc-forum.php3
index d8bcecd82e..74f51a4f19 100644
--- a/inc-forum.php3
+++ b/inc-forum.php3
@@ -85,7 +85,7 @@ document.write("<a href=\\"javascript:window.open(\\\'spip_pass.php3\\\', \\\'sp
 //--></script><noscript><a href=\'spip_pass.php3\' target=\'_blank\'></noscript>'._T('forum_vous_inscrire').'<br>';
 		login('', false, $message_login);
 		return false;
-	} 
+	}
 }
 
 
@@ -105,22 +105,21 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 	if (!$retour)
 		$retour = rawurlencode($lien);
 
-	if ($forums_publics == "abo")  // forums abo
-		$ret .= '<'.'?php include("inc-forum.php3"); if (forum_abonnement($retour)) { ?'.'>';
-	else
-		$ret .= '<'.'?php { ?'.'>';
+	if ($forums_publics == 'abo') {
+		if (!forum_abonnement($retour)) return;
+	}
 
 	$ret .= "\n<a name='formulaire_forum'></a>\n";
-	if (!$id_message) {
+	if (!$id_message = intval($id_message)) {
 		$ret .= "\n<form action='$lien' name='formulaire' method='post'>";
 	}
-	
+
 	if ($forums_publics == "pri") {
 		$ret.= _T('forum_info_modere')."<p>";
 	}
 
 	// recuperer le titre
-	if (! $titre) {
+	if (!$titre) {
 		if ($id_parent)
 			$titre_select = "SELECT titre FROM spip_forum WHERE id_forum = $id_parent";
 		else if ($id_rubrique)
@@ -138,8 +137,6 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 		$titre = '> ' . ereg_replace ('^[>[:space:]]*', '', $res->titre);
 	}
 
-
-
 	if ($id_message){
 		$query_forum="SELECT * FROM spip_forum WHERE ip=\"$REMOTE_ADDR\" AND id_forum=$id_message";
 		$result_forum=spip_query($query_forum);
@@ -161,7 +158,7 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 				$ret .= "<p>".propre($texte)."<p>";
 			}
 
-			$ret .= "<a href='$url_site'>".typo($nom_site_forum)."</a>";
+			$ret .= "<a href='".entites_html($url_site)."'>".typo($nom_site_forum)."</a>";
 
 
 			// Verifier mots associes au message
@@ -176,7 +173,6 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 				$presence_mots = true;
 
 				$ret.= "<li> $type_mot&nbsp;: <b>$titre_mot</b>";
-
 			}
 
 			if (strlen($texte) < 10 AND !$presence_mots) {
@@ -322,7 +318,7 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 
 		if (!$url_site) $url_site = "http://";
 		$ret .= "\n"._T('forum_url');
-		$ret .= "<br />\n<input type='text' class='forml' name='url_site' value=\"$url_site\" size='40' /></div>";
+		$ret .= "<br />\n<input type='text' class='forml' name='url_site' value=\"".entites_html($url_site)."\" size='40' /></div>";
 
 		$ret .= "\n<br /><div class='spip_encadrer'>"._T('forum_qui_etes_vous')."<br />";
 
@@ -347,8 +343,6 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 
 	$ret .= "</form>";
 
-	$ret .= '<'.'?php } ?'.'>';	// fin forums abo
-
 	return $ret;
 }
 
@@ -410,7 +404,6 @@ function ajout_forum() {
 		}
 	}
 
-
 	switch($forums_publics) {
 		case "non":
 			$etat = "off";
@@ -423,8 +416,6 @@ function ajout_forum() {
 			break;
 	}
 
-
-
 	if (!$id_auteur) $id_auteur = $GLOBALS['auteur_session']['id_auteur'];
 	$auteur_session = $GLOBALS['auteur_session']['email'];
 
diff --git a/inc-public-global.php3 b/inc-public-global.php3
index 50231addf1..dc325e63fa 100644
--- a/inc-public-global.php3
+++ b/inc-public-global.php3
@@ -162,6 +162,7 @@ $effacer_cache |= $ecraser_cache;	// ecraser le cache de l'article x s'il n'est
 
 // Envoyer les entetes
 $headers_only = ($HTTP_SERVER_VARS['REQUEST_METHOD'] == 'HEAD');
+if ($HTTP_SERVER_VARS['REQUEST_METHOD'] == 'HEAD') $flag_dynamique = true;
 if (!$effacer_cache && !$flag_dynamique && $recalcul != 'oui') {
 	if ($lastmodified) {
 		$gmoddate = gmdate("D, d M Y H:i:s", $lastmodified);
diff --git a/spip_login.php3 b/spip_login.php3
index 9c763744cd..b1adf4a3f9 100644
--- a/spip_login.php3
+++ b/spip_login.php3
@@ -1,7 +1,6 @@
 <?php
 $fond = "login";
 $delais = 3600;
-$flag_preserver = true;
 $flag_dynamique = true;
 
 include ("inc-public.php3");
-- 
GitLab