From 75be320b6b03ed0ff41ac07a38ce3d182ee452d1 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Thu, 28 Aug 2008 09:01:34 +0000
Subject: [PATCH] =?UTF-8?q?Nouvel=20htaccess=20pour=20evacuer=20compl?=
 =?UTF-8?q?=C3=A8tement=20les=20pseudo-actions=20rss=20et=20ical=20mainten?=
 =?UTF-8?q?ant=20que=20[12430]=C2=A0assure=20que=20les=20cl=C3=A9s=20de=20?=
 =?UTF-8?q?hachage=20sont=20les=20m=C3=AAmes.=20Si=20qq=20sait=20comment?=
 =?UTF-8?q?=20MODIFIER=20la=20query-string,=20pas=20seulement=20la=20compl?=
 =?UTF-8?q?=C3=A9ter=20ou=20la=20remplacer,=20je=20suis=20preneur.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/action/rss.php | 138 ------------------------------------------
 ecrire/public.php     |   6 +-
 htaccess.txt          |  13 +++-
 3 files changed, 16 insertions(+), 141 deletions(-)
 delete mode 100644 ecrire/action/rss.php

diff --git a/ecrire/action/rss.php b/ecrire/action/rss.php
deleted file mode 100644
index c865add26c..0000000000
--- a/ecrire/action/rss.php
+++ /dev/null
@@ -1,138 +0,0 @@
-<?php
-
-/***************************************************************************\
- *  SPIP, Systeme de publication pour l'internet                           *
- *                                                                         *
- *  Copyright (c) 2001-2008                                                *
- *  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;
-
-// Ce script n'est plus utile qu'a la compatibilite avec les liens
-// produits par l'ancienne definition de bouton_spip_rss
-
-include_spip('inc/acces');
-include_spip('inc/texte'); // utile pour l'espace public, deja fait sinon
-
-// On recoit un op (operation) + args (arguments)
-// + id (id_auteur) + cle (low_sec(id_auteur, "op args"))
-// On verifie que la cle correspond
-// On cree ensuite le RSS correspondant a l'operation
-
-// Pour memoire, la forme des URLs : 
-// 1.8: spip_rss.php?op=forums&args=page-public&id=4&cle=047b4183&lang=fr
-// 1.9: spip.php?action=rss&op=forums&args=page-public&id=4&cle=047b4183&lang=fr
-// ou encore spip.php?action=rss&op=a-suivre&id=5&cle=5731e121&lang=fr
-
-// http://doc.spip.org/@action_rss_dist
-function action_rss_dist()
-{
-	$op  = _request('op');
-	$args = _request('args');
-	$cle = _request('cle');
-	$id = _request('id');
-	$lang = _request('lang');
-
-	spip_timer('rss');
-	if (verifier_low_sec($id, $cle, "rss $op $args")) {
-		lang_select($lang);
-		$op = str_replace('-', '_', $op);
-		$contexte = $_REQUEST;
-		$contexte['cle'] = afficher_low_sec($id, $op, $args);
-		$contexte['fond'] = 'prive/rss/' . $op;
-			foreach (split(':', $args) as $bout) {
-			list($var, $val) = split('-', $bout, 2);
-			$contexte[$var] = $val;
-			}
-		$f = charger_fonction($op, 'rss', true);
-		if ($f) $contexte = $f($contexte);
-	} else $contexte = '';
-	if ($contexte) {
-		$r = evaluer_fond ('', $contexte);
-		echo $r['texte'];
-		$message ="spip_rss s'applique sur " . $contexte['fond'] . " et $args pour $id par $f cle " . $contexte['cle'];
-	} else 	$message = ("spip_rss sur '$op $args pour $id' incorrect");
-	spip_log("$message (" . spip_timer('rss') .')');
-	exit;
-}
-
-// Dans quelques cas le contexte doit etre revu
-// Il faudrait les eliminer, et gerer la compatibilite autrement
-
-# Compatibilite des anciens liens, inutile pour les nouveaux.
-// http://doc.spip.org/@rss_revisions
-function  rss_revisions($a)
-{
-	if (isset($a['langue_choisie'])) {
-		$a['lang'] = $a['langue_choisie'];
-		unset($a['langue_choisie']);
-	}
-	if (isset($a['id_auteur'])) {
-	  $a['statut'] = 'prepa';
-	} else {
-	  $a['statut'] = '';
-	}
-	include_spip('inc/suivi_versions');
-	return $a;
-}
-// suivi public des forums publics 
-// Ne sert plus qu'a la compatibilite, c'est du squelette public a present
-// http://doc.spip.org/@rss_forum
-function rss_forum($a)
-{
-	if ($id = intval($a['id_article'])) {
-		$a['fond'] = 'rss_forum_article';
-	}
-	else if ($id = intval($a['id_syndic'])) {
-		$a['fond'] = 'rss_forum_syndic';
-	}
-	else if ($id = intval($a['id_breve'])) {
-		$a['fond'] = 'rss_forum_breve';
-	}
-	else if ($id = intval($a['id_rubrique'])) {
-		$a['fond'] = 'rss_forum_rubrique';
-	}
-	else if ($id = intval($a['id_thread'])) {
-		$a['fond'] = 'rss_forum_thread';
-	} else { $a ='';}
-
-	return $a;
-}
-
-# suivi prive de tous les forums
-// Ne sert plus qu'a la compatibilite, cf les squeletes forums_$page a present
-// http://doc.spip.org/@rss_forums
-function  rss_forums($a)
-{
-	switch ($a['page']) {
-	case 'public':
-		$a['statut'] = array('publie','prop','off','spam');
-		$a['texte'] = '.';
-		return $a;
-	case 'prop':
-		$a['statut'] = array('prop');
-		$a['texte'] = '.*';
-		return $a;
-	case 'spam':
-		$a['statut'] = array('spam');
-		$a['texte'] = '.*';
-		return $a;
-	case 'interne':
-		$a['statut'] = array('prive','privac','privoff','privadm');
-		$a['texte'] = '.';
-		return $a;
-	case 'vide':
-		$a['statut'] = array('publie','off','prive','privac','privoff','privadm');
-		$a['texte'] = '^$';
-		return $a;
-	default:
-		return '';
-	}
-}
-
-
-?>
diff --git a/ecrire/public.php b/ecrire/public.php
index e0faaf7d28..542c514852 100644
--- a/ecrire/public.php
+++ b/ecrire/public.php
@@ -69,7 +69,11 @@ else {
 			echo minipres();
 			exit;
 		}
-
+		// l'argument Page a priorite sur l'argument action
+		// le cas se presente a cause des RewriteRule d'Apache
+		// qui permettent d'ajouter un argument dans la QueryString
+		// mais pas d'en retirer un en conservant les autres.
+		unset($_GET['action']);
 	# par defaut
 	} else {
 		// traiter le cas pathologique d'un upload de document ayant echoue
diff --git a/htaccess.txt b/htaccess.txt
index 91276f0c79..2735d91085 100644
--- a/htaccess.txt
+++ b/htaccess.txt
@@ -44,6 +44,13 @@ RewriteBase /
 
 ################ GESTIONS DES URLS SPIP #######################
 
+# Deux pseudo-actions a present evacuees
+# N'y at-il pas moyen de REMPLACER un nom dans la QueryString ?
+RewriteCond %{QUERY_STRING} action=rss
+RewriteRule spip.php	spip.php?page=rss [QSA,L]
+RewriteCond %{QUERY_STRING} action=ical
+RewriteRule spip.php	spip.php?page=ical_prive [QSA,L]
+
 ###
 # Si le fichier ou repertoire demande existe
 # ignorer toutes les regles qui suivent
@@ -68,8 +75,10 @@ RewriteRule ^site([0-9]+)(\.html)?$	spip.php?page=site&id_syndic=$1 [QSA,L]
 RewriteRule ^(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$	spip.php?page=$1 [QSA,L]
 RewriteRule ^resume.php[3]?	spip.php?page=sommaire [QSA,L]
 RewriteRule ^page.php[3]?	spip.php [QSA,L]
-RewriteRule ^spip_cal\.php3?$	spip.php?action=ical [QSA,L]
-RewriteRule ^spip_rss\.php3?$	spip.php?action=rss [QSA,L]
+RewriteRule ^spip_cal\.php3?$	spip.php?page=ical_prive [QSA,L]
+RewriteRule ^spip_rss\.php3?$	spip.php?page=rss [QSA,L]
+
+
 # Fin compatibilite
 ###
 
-- 
GitLab