From 78158d88c895e0aa623d9e73af3aabba52867320 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Sun, 2 Sep 2007 18:12:12 +0000
Subject: [PATCH] =?UTF-8?q?Url=20propres:=20les=20marqueurs=20de=20type=20?=
 =?UTF-8?q?d'URL=20(-=20+=20@=20=5F)=20n'=C3=A9tant=20plus=20n=C3=A9cessai?=
 =?UTF-8?q?res,=20r=C3=A9=C3=A9criture=20du=20code=20pour=20que=20leur=20p?=
 =?UTF-8?q?r=C3=A9sence=20soient=20conditionn=C3=A9es=20par=20un=20jeu=20d?=
 =?UTF-8?q?e=20constantes.=20En=20mettant=20ce=20qui=20suit=20dans=20'''me?=
 =?UTF-8?q?s=5Foptions''',=20les=20marqueurs=20ne=20seront=20plus=20utilis?=
 =?UTF-8?q?=C3=A9s:?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

{{{
define ('_marqueur_rubrique', '');
define ('_marqueur_auteur', '');
define ('_marqueur_breve', '');
define ('_marqueur_site', '');
define ('_marqueur_mot_d', '');
define ('_marqueur_mot_f', '');
}}}
---
 ecrire/urls/propres.php | 43 +++++++++++++++++++++++------------------
 1 file changed, 24 insertions(+), 19 deletions(-)

diff --git a/ecrire/urls/propres.php b/ecrire/urls/propres.php
index e1ec2bf4ba..e89c672df5 100644
--- a/ecrire/urls/propres.php
+++ b/ecrire/urls/propres.php
@@ -41,6 +41,20 @@ c'est-a-dire sans utilisation de .htaccess ; les adresses sont de la forme
 define ('_terminaison_urls_propres', '');
 define ('_debut_urls_propres', '');
 
+// Ces chaines servaient de marqueurs a l'epoque ou les URL propres devaient
+// indiquer la table ou les chercher (articles, auteurs etc).
+// Maintenant que ce n'est plus necessaire, elles ne sont la que pour eviter
+// d'encombrer l'unique table des URL avec des doublons quasi identiques.
+// Si ce n'est pas un probleme, ou si le site est nouveau, 
+// les definir a '' produira des URL plus jolies.
+
+define ('_marqueur_rubrique', '-');
+define ('_marqueur_auteur', '_');
+define ('_marqueur_breve', '+');
+define ('_marqueur_site', '@');
+define ('_marqueur_mot_d', '+-');
+define ('_marqueur_mot_f', '-+');
+
 include_spip('base/abstract_sql');
 
 // http://doc.spip.org/@_generer_url_propre
@@ -154,7 +168,7 @@ function generer_url_article($id_article, $args='', $ancre='') {
 function generer_url_rubrique($id_rubrique, $args='', $ancre='') {
 	$url = _generer_url_propre('rubrique', $id_rubrique);
 	if ($url)
-		$url = _debut_urls_propres . '-'.$url.'-'._terminaison_urls_propres
+		$url = _debut_urls_propres . _marqueur_rubrique . $url._marqueur_rubrique._terminaison_urls_propres
 		. (!$args ? ''
 		: (((strpos(_debut_urls_propres, '?')===false) ? '?' : '&') . $args));
 	else
@@ -167,7 +181,7 @@ function generer_url_rubrique($id_rubrique, $args='', $ancre='') {
 function generer_url_breve($id_breve, $args='', $ancre='') {
 	$url = _generer_url_propre('breve', $id_breve);
 	if ($url)
-		$url = _debut_urls_propres . '+'.$url.'+'._terminaison_urls_propres
+		$url = _debut_urls_propres . _marqueur_breve . $url._marqueur_breve._terminaison_urls_propres
 		. (!$args ? ''
 		: (((strpos(_debut_urls_propres, '?')===false) ? '?' : '&') . $args));
 	else
@@ -186,7 +200,7 @@ function generer_url_forum($id_forum, $args='', $ancre='') {
 function generer_url_mot($id_mot, $args='', $ancre='') {
 	$url = _generer_url_propre('mot', $id_mot);
 	if ($url)
-		$url = _debut_urls_propres . '+-'.$url.'-+'._terminaison_urls_propres
+		$url = _debut_urls_propres . _marqueur_mot_d . $url._marqueur_mot_f._terminaison_urls_propres
 		. (!$args ? ''
 		: (((strpos(_debut_urls_propres, '?')===false) ? '?' : '&') . $args));
 	else
@@ -199,7 +213,7 @@ function generer_url_mot($id_mot, $args='', $ancre='') {
 function generer_url_auteur($id_auteur, $args='', $ancre='') {
 	$url = _generer_url_propre('auteur', $id_auteur);
 	if ($url)
-		$url = _debut_urls_propres . '_'.$url.'_'._terminaison_urls_propres
+		$url = _debut_urls_propres . _marqueur_auteur . $url._marqueur_auteur._terminaison_urls_propres
 		. (!$args ? ''
 		: (((strpos(_debut_urls_propres, '?')===false) ? '?' : '&') . $args));
 	else
@@ -212,7 +226,7 @@ function generer_url_auteur($id_auteur, $args='', $ancre='') {
 function generer_url_site($id_syndic, $args='', $ancre='') {
 	$url = _generer_url_propre('site', $id_syndic);
 	if ($url)
-		$url = _debut_urls_propres . '@'.$url.'@'._terminaison_urls_propres
+		$url = _debut_urls_propres . _marqueur_site . $url._marqueur_site._terminaison_urls_propres
 		. (!$args ? ''
 		: (((strpos(_debut_urls_propres, '?')===false) ? '?' : '&') . $args));
 	else
@@ -291,39 +305,30 @@ function recuperer_parametres_url(&$fond, $url) {
 	// Compatilibite avec propres2
 	$url_propre = preg_replace(',\.html$,i', '', $url_propre);
 
+	// Retirer les marqueurs de type dans l'URL propre
 	// Detecter les differents types d'objets demandes
-	// et retirer leurs marqueurs de l'URL propre
 	// Note: on pourrait evacuer ca maintenant qu'on a une seule table
-	if (preg_match(',^\+-(.*?)-?\+?$,', $url_propre, $regs)) {
-		$type = 'mot';
+	if (preg_match(',^\+\-(.*?)\-\+$,', $url_propre, $regs)) {
 		$url_propre = $regs[1];
 	}
 	else if (preg_match(',^-(.*?)-?$,', $url_propre, $regs)) {
-		$type = 'rubrique';
 		$url_propre = $regs[1];
 	}
 	else if (preg_match(',^\+(.*?)\+?$,', $url_propre, $regs)) {
-		$type = 'breve';
 		$url_propre = $regs[1];
 	}
 	else if (preg_match(',^_(.*?)_?$,', $url_propre, $regs)) {
-		$type = 'auteur';
 		$url_propre = $regs[1];
 	}
 	else if (preg_match(',^@(.*?)@?$,', $url_propre, $regs)) {
-		$type = 'syndic';
 		$url_propre = $regs[1];
 	}
-	else {
-		$type = 'article';
-		preg_match(',^(.*)$,', $url_propre, $regs);
-		$url_propre = $regs[1];
-	}
-
+	// les articles n'ont pas de marqueur
 
-	$row = sql_fetch(spip_query("SELECT id_objet FROM spip_urls WHERE url=" . _q($url_propre)));
+	$row = sql_fetch(spip_query("SELECT id_objet, type FROM spip_urls WHERE url=" . _q($url_propre)));
 
 	if ($row) {
+		$type = $row['type'];
 		$col_id = id_table_objet($type);
 		$contexte[$col_id] = $row['id_objet'];
 	}
-- 
GitLab