From 88e2870c91d171a5fc6f7ed7f2dc1a2ca1915fe5 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Thu, 12 Jan 2006 18:05:09 +0000
Subject: [PATCH] generation d'URL absolues pour l'espace de redac, afin de
 preparer le basculement vers la disparition des php3, de la genericite et de
 la mutualisation

---
 ecrire/inc_admin_vider.php            |  4 ++--
 ecrire/inc_auteurs_edit.php           |  4 +---
 ecrire/inc_debug_sql.php3             |  2 +-
 ecrire/inc_mail.php3                  |  8 +++-----
 ecrire/inc_minipres.php               |  6 +++---
 ecrire/inc_presentation.php3          |  2 +-
 ecrire/inc_rss.php3                   | 24 +++++++++---------------
 ecrire/inc_spip_action_test_dirs.php  |  2 +-
 ecrire/inc_suivi_revisions.php        |  2 +-
 ecrire/inc_utils.php                  | 17 +++++++++++------
 formulaires/inc-formulaire_admin.php3 | 12 ++++++------
 11 files changed, 39 insertions(+), 44 deletions(-)

diff --git a/ecrire/inc_admin_vider.php b/ecrire/inc_admin_vider.php
index 3c70e9739f..39a2ed8c5f 100644
--- a/ecrire/inc_admin_vider.php
+++ b/ecrire/inc_admin_vider.php
@@ -113,7 +113,7 @@ if ($quota_cache) {
   "\n<input type='hidden' name='id_auteur' value='$connect_id_auteur' />", 
   "\n<input type='hidden' name='hash' value='$hash' />", 
   "\n<input type='hidden' name='redirect' value='",
-  generer_url_ecrire(_DIR_RESTREINT_ABS . "admin_vider"),
+  generer_url_ecrire("admin_vider"),
   "' />", 
   "\n<p><div align='right'><input class='fondo' type='submit' value=\"",
   str_replace('"', '&quot;', _T('bouton_vider_cache')),
@@ -146,7 +146,7 @@ if ($quota_cache) {
    "\n<input type='hidden' name='id_auteur' value='$connect_id_auteur' />",
    "\n<input type='hidden' name='hash' value='$hash' />",
    "\n<input type='hidden' name='redirect' value='",
-   generer_url_ecrire(_DIR_RESTREINT_ABS . "admin_vider"),
+   generer_url_ecrire("admin_vider"),
    "' />", 
    "\n<p><DIV align='right'><input class='fondo' type='submit'  value=\"",
    str_replace('"', '&quot;', _T('bouton_vider_cache')),
diff --git a/ecrire/inc_auteurs_edit.php b/ecrire/inc_auteurs_edit.php
index e62b2b16e4..e492b2fd59 100644
--- a/ecrire/inc_auteurs_edit.php
+++ b/ecrire/inc_auteurs_edit.php
@@ -104,9 +104,7 @@ function table_auteurs_edit($auteur)
 
 	// Afficher le formulaire de changement de statut (cf. inc_acces)
 	if ($options == 'avancees')
-	  afficher_formulaire_statut_auteur ($id_auteur,
-			$auteur['statut'],
-			"auteurs_edit");
+	  afficher_formulaire_statut_auteur ($id_auteur, $auteur['statut'], "auteurs_edit");
 
 	fin_cadre_relief();
 
diff --git a/ecrire/inc_debug_sql.php3 b/ecrire/inc_debug_sql.php3
index b067d96ec9..708cf172f5 100644
--- a/ecrire/inc_debug_sql.php3
+++ b/ecrire/inc_debug_sql.php3
@@ -82,7 +82,7 @@ function erreur_requete_boucle($query, $id_boucle, $type, $errno, $erreur) {
 		. _T('info_erreur_systeme', array('errsys'=>$errno))
 		. "</blink><br />\n<b>"
 		. _T('info_erreur_systeme2',
-			array('script' => generer_url_ecrire(_DIR_RESTREINT_ABS . 'admin_repair'))) 
+			array('script' => generer_url_ecrire('admin_repair'))) 
 		. '</b><br />';
 		spip_log("Erreur systeme $errno");
 	}
diff --git a/ecrire/inc_mail.php3 b/ecrire/inc_mail.php3
index 07b3c253f5..91114a49aa 100644
--- a/ecrire/inc_mail.php3
+++ b/ecrire/inc_mail.php3
@@ -188,7 +188,8 @@ function extrait_article($row) {
 	$extrait .= "\n\n".textebrut(propre(couper_intro("$chapo<p>$texte", 700)))."\n\n";
 	if ($statut == 'publie') 
 		$extrait .= "-> ".
-		  generer_url_public('spip_action.php', "action=redirect&id_article=$id_article") .
+		  // surtout pas de &amp; dans ce cas la.
+		  generer_url_public('spip_action.php') . "?action=redirect&id_article=$id_article" .
 		  "\n\n";
 	return $extrait;
 }
@@ -255,10 +256,7 @@ function envoyer_mail_proposition($id_article) {
 				     ."\n" 
 				     . _T('info_propose_5')
 				     ."\n" 
-				     . generer_url_ecrire($adresse_site 
-							 . '/' 
-							 . _DIR_RESTREINT_ABS 
-							 . "articles",
+				     . generer_url_ecrire("articles",
 							 "id_article=$id_article")
 				     . "\n\n\n" 
 				     . extrait_article($row));
diff --git a/ecrire/inc_minipres.php b/ecrire/inc_minipres.php
index 88d94db4c5..bf78014651 100644
--- a/ecrire/inc_minipres.php
+++ b/ecrire/inc_minipres.php
@@ -34,7 +34,7 @@ function install_debut_html($titre = 'AUTO') {
 	  $titre,
 	  "</title>\n" ,
 	  '<link rel="stylesheet" type="text/css" href=\'' ,
-	  generer_url_ecrire(_DIR_RESTREINT . 'spip_style', 
+	  generer_url_ecrire('spip_style', 
 			  "couleur_claire=" .
 			  urlencode('#FFCC66') .
 			  '&couleur_foncee=' .
@@ -76,7 +76,7 @@ function aide($aide='') {
 	if (!$aide OR $spip_display == 4) return;
 
 	return "&nbsp;&nbsp;<a class='aide' href='" 
-		. generer_url_ecrire(_DIR_RESTREINT . "aide_index", 
+		. generer_url_ecrire("aide_index", 
 			"aide=$aide&var_lang=$spip_lang")
 		. "' target=\"spip_aide\" "
 		. "onclick=\"javascript:window.open(this.href,"
@@ -94,7 +94,7 @@ function info_copyright() {
 	echo _T('info_copyright', 
 		   array('spip' => "<b>SPIP $spip_version_affichee</b> ",
 			 'lien_gpl' => 
-			 "<a href='". generer_url_ecrire(_DIR_RESTREINT . "aide_index", "aide=licence&var_lang=$spip_lang") . "' target='spip_aide' onClick=\"javascript:window.open(this.href, 'aide_spip', 'scrollbars=yes,resizable=yes,width=740,height=580'); return false;\">" . _T('info_copyright_gpl')."</a>"));
+			 "<a href='". generer_url_ecrire("aide_index", "aide=licence&var_lang=$spip_lang") . "' target='spip_aide' onClick=\"javascript:window.open(this.href, 'aide_spip', 'scrollbars=yes,resizable=yes,width=740,height=580'); return false;\">" . _T('info_copyright_gpl')."</a>"));
 
 }
 
diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3
index 5262d86105..0e0ad63b5c 100644
--- a/ecrire/inc_presentation.php3
+++ b/ecrire/inc_presentation.php3
@@ -1798,7 +1798,7 @@ function envoi_link($nom_site_spip, $rubrique="")
 
 	return $res .
 	  '<link rel="stylesheet" type="text/css" href=\'' .
-	  generer_url_ecrire(_DIR_RESTREINT . 'spip_style',
+	  generer_url_ecrire('spip_style',
 			  "couleur_claire=" .
 			  urlencode($couleur_claire) .
 			  '&couleur_foncee=' .
diff --git a/ecrire/inc_rss.php3 b/ecrire/inc_rss.php3
index be2dc5ae74..bd71313e63 100644
--- a/ecrire/inc_rss.php3
+++ b/ecrire/inc_rss.php3
@@ -206,8 +206,7 @@ function rss_suivi_forums($a, $query_forum='', $lien_moderation=false) {
 		$item['email'] = $t['email_auteur'];
 
 		if ($lien_moderation)
-		  $item['url'] = generer_url_ecrire(_DIR_RESTREINT_ABS
-						   .'controle_forum', 'page='.$a['page']
+		  $item['url'] = generer_url_ecrire('controle_forum', 'page='.$a['page']
 						   .'&debut_id_forum='.$t['id_forum']);
 		else
 			$item['url'] = generer_url_forum($t['id_forum']);
@@ -252,8 +251,7 @@ function rss_suivi_messagerie($a) {
 				'author' => typo($auteur['nom']),
 				'email' => $auteur['email'],
 				'description' => propre($t['texte']),
-				'url' => generer_url_ecrire(_DIR_RESTREINT_ABS
-							   .'message', 'id_message='.$t['id_message']
+				'url' => generer_url_ecrire('message', 'id_message='.$t['id_message']
 							   ));
 			$rss[] = $item;
 		}
@@ -273,8 +271,7 @@ function rss_suivi_messagerie($a) {
 				'description' => propre($t['texte']),
 				'author' => typo($t['auteur']),
 				'email' => $t['email_auteur'],
-				'url' => generer_url_ecrire(_DIR_RESTREINT_ABS
-							   .'message', 'id_message='.$t['id_message']
+				'url' => generer_url_ecrire('message', 'id_message='.$t['id_message']
 					.'#'.$t['id_forum']
 							   ));
 			$rss[] = $item;
@@ -310,8 +307,7 @@ function rss_articles($critere) {
 			'author' => typo($auteur['nom']),
 			'email' => $auteur['email'],
 			'description' => propre(couper("{{".$t['chapo']."}}\n\n".$t['texte'],300)),
-			'url' => generer_url_ecrire(_DIR_RESTREINT_ABS
-						   .'articles', 'id_article='.$t['id_article']
+			'url' => generer_url_ecrire('articles', 'id_article='.$t['id_article']
 						   ));
 		if ($t['statut'] == 'prop')
 		  $item['title'] = _T('info_article_propose').' : '.$item['title'];
@@ -331,8 +327,7 @@ function rss_breves($critere) {
 			'title' => typo($t['titre']),
 			'date' => $t['date_heure'],
 			'description' => propre(couper($t['texte'],300)),
-			'url' => generer_url_ecrire(_DIR_RESTREINT_ABS
-						   .'breves_voir', 'id_breve='.$t['id_breve']
+			'url' => generer_url_ecrire('breves_voir', 'id_breve='.$t['id_breve']
 						   ));
 		if ($t['statut'] == 'prop')
 			$item['title'] = _T('titre_breve_proposee').' : '.$item['title'];
@@ -352,8 +347,7 @@ function rss_sites($critere) {
 			'title' => typo($t['titre']." ".$t['url_site']),
 			'date' => $t['date'],
 			'description' => propre(couper($t['texte'],300)),
-			'url' => generer_url_ecrire(_DIR_RESTREINT_ABS
-						   .'sites', 'id_syndic='.$t['id_syndic']
+			'url' => generer_url_ecrire('sites', 'id_syndic='.$t['id_syndic']
 						   ));
 		if ($t['statut'] == 'prop')
 			$item['title'] = _T('info_site_attente').' : '.$item['title'];
@@ -430,7 +424,7 @@ switch($op) {
 		$critere = critere_statut_controle_forum($a['page']);
 		$rss = rss_suivi_forums($a, $critere, true);
 		$title = _T("ecrire:titre_page_forum_suivi")." (".$a['page'].")";
-		$url = generer_url_ecrire(_DIR_RESTREINT_ABS .'controle_forum', 'page='.$a['page']);
+		$url = generer_url_ecrire('controle_forum', 'page='.$a['page']);
 		break;
 	# revisions des articles
 	case 'revisions':
@@ -439,13 +433,13 @@ switch($op) {
 		$url = "";
 		foreach (array('id_secteur', 'id_auteur', 'lang_choisie') as $var)
 			if ($a[$var]) $url.= $var.'='.$a[$var] . '&';
-		$url = generer_url_ecrire(_DIR_RESTREINT_ABS .'suivi_revisions', $url);
+		$url = generer_url_ecrire('suivi_revisions', $url);
 		break;
 	# messagerie privee
 	case 'messagerie':
 		$rss = rss_suivi_messagerie($a);
 		$title = _T("icone_messagerie_personnelle");
-		$url = generer_url_ecrire(_DIR_RESTREINT_ABS .'messagerie');
+		$url = generer_url_ecrire('messagerie');
 		break;
 	# a suivre
 	case 'a-suivre':
diff --git a/ecrire/inc_spip_action_test_dirs.php b/ecrire/inc_spip_action_test_dirs.php
index 53b33e6118..4cc616d0cb 100644
--- a/ecrire/inc_spip_action_test_dirs.php
+++ b/ecrire/inc_spip_action_test_dirs.php
@@ -105,7 +105,7 @@ if ($bad_dirs OR $absent_dirs) {
 
  } else {
 	if (!_FILE_CONNECT)
-		header("Location: " . generer_url_ecrire(_DIR_RESTREINT_ABS . "install",  "etape=1"));
+		header("Location: " . generer_url_ecrire("install",  "etape=1"));
 	else
 		header("Location: " . _DIR_RESTREINT_ABS);
  }
diff --git a/ecrire/inc_suivi_revisions.php b/ecrire/inc_suivi_revisions.php
index b13441db02..0b8bef9e83 100644
--- a/ecrire/inc_suivi_revisions.php
+++ b/ecrire/inc_suivi_revisions.php
@@ -236,7 +236,7 @@ function afficher_suivi_versions ($debut = 0, $id_secteur = 0, $id_auteur = fals
 			} else {
 				$item = array(
 					'title' => $titre,
-					'url' => generer_url_ecrire($GLOBALS['meta']['adresse_site'].'/'._DIR_RESTREINT_ABS."articles_versions","id_article=$id_article&id_version=$id_version"),
+					'url' => generer_url_ecrire("articles_versions","id_article=$id_article&id_version=$id_version"),
 					'date' => $date,
 					'author' => $nom,
 					'email' => $email
diff --git a/ecrire/inc_utils.php b/ecrire/inc_utils.php
index 8b8173d7b9..2175d98505 100644
--- a/ecrire/inc_utils.php
+++ b/ecrire/inc_utils.php
@@ -20,7 +20,7 @@ $included_files = array();
 
 function include_local($file, $silence=false) {
 	$nom = preg_replace("/\.php[3]?$/",'', $file);
-#	spip_log("$nom $file");
+#	spip_log("'$nom' '$file'");
 	if (@$GLOBALS['included_files'][$nom]++) return;
 	if (is_readable($f = $nom . '.php'))
 	  include($f);
@@ -614,9 +614,12 @@ function charger_generer_url() {
 // entre les scripts ecrire/*.php[3] et le script generique ecrire/index.php
 
 function generer_url_ecrire($script, $args="", $retour="", $retour_args="") {
-	return $script .
-		(ereg('.php[3]?$', $script) ? '' :_EXTENSION_PHP) .
-		(!$args ? "" : ('?'  .str_replace('&', '&amp;', $args))) .
+	$site = $GLOBALS['meta']["adresse_site"];
+	$site .= ((substr($site, -1) <> '/') ? '/' : '') . _DIR_RESTREINT_ABS;
+	$args = str_replace('&', '&amp;', $args);
+	$ext =  (ereg('.php[3]?$', $script) ? '' :_EXTENSION_PHP).($args ? '?' : "");
+
+	return $site . $script . $ext . $args .
 		(!$retour ? "" : 
 		urlencode($retour . _EXTENSION_PHP .
 			  (!$retour_args ? "" : ('?' . $retour_args))));
@@ -626,11 +629,13 @@ function generer_url_ecrire($script, $args="", $retour="", $retour_args="") {
 // il faudra substituer a l'appel ci-dessous la definition ci-dessus
 // lorsque celle-ci deviendra generique
 
-function generer_url_public($script, $args="", $retour="", $retour_args="") {
+function generer_url_public($script, $args="") {
 	if (!($site = $GLOBALS['meta']["adresse_site"]))
 		$site = _DIR_RACINE;
 	$site .= (($site[strlen($site)-1] <> '/') ?'/':'') . $script;
-	return generer_url_ecrire($site, $args, $retour, $retour_args);
+	return $site . 
+	  (ereg('.php[3]?$', $script) ? '' :_EXTENSION_PHP) .
+	  (!$args ? "" : ('?'  .str_replace('&', '&amp;', $args)));
 }
 
 ?>
diff --git a/formulaires/inc-formulaire_admin.php3 b/formulaires/inc-formulaire_admin.php3
index 5b4d737852..6f387e935b 100644
--- a/formulaires/inc-formulaire_admin.php3
+++ b/formulaires/inc-formulaire_admin.php3
@@ -152,12 +152,12 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') {
 			'id_breve' => $id_breve,
 			'id_mot' => $id_mot,
 			'id_syndic' => $id_syndic,
-			'voir_article' => generer_url_ecrire(_DIR_RESTREINT_ABS . 'articles', "id_article=$id_article"),
-			'voir_breve' => generer_url_ecrire(_DIR_RESTREINT_ABS . 'breves_voir', "id_breve=$id_breve"),
-			'voir_rubrique' => generer_url_ecrire(_DIR_RESTREINT_ABS . 'naviguer', "id_rubrique=$id_rubrique"),
-			'voir_mot' => generer_url_ecrire(_DIR_RESTREINT_ABS . 'mots_edit', "id_mot=$id_mot"),
-			'voir_site' => generer_url_ecrire(_DIR_RESTREINT_ABS . 'sites', "id_syndic=$id_syndic"),
-			'voir_auteur' => generer_url_ecrire(_DIR_RESTREINT_ABS . 'auteurs_edit', "id_auteur=$id_auteur"),
+			'voir_article' => generer_url_ecrire('articles', "id_article=$id_article"),
+			'voir_breve' => generer_url_ecrire('breves_voir', "id_breve=$id_breve"),
+			'voir_rubrique' => generer_url_ecrire('naviguer', "id_rubrique=$id_rubrique"),
+			'voir_mot' => generer_url_ecrire('mots_edit', "id_mot=$id_mot"),
+			'voir_site' => generer_url_ecrire('sites', "id_syndic=$id_syndic"),
+			'voir_auteur' => generer_url_ecrire('auteurs_edit', "id_auteur=$id_auteur"),
 			'ecrire' => $ecrire,
 			'action' => $action,
 			'preview' => $preview,
-- 
GitLab