From b256c480cb1a4f70ca0c7e18f0dc3fb42e183a42 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Tue, 18 Sep 2007 09:41:41 +0000
Subject: [PATCH] =?UTF-8?q?Multi-base:=20les=20liens=20des=20raccourcis=20?=
 =?UTF-8?q?({{{=20[titre->rub1]=20}}}=20etc)=20d'une=20base=20externe=20so?=
 =?UTF-8?q?nt=20=C3=A0=20pr=C3=A9sent=20correctement=20construits.=20Ces?=
 =?UTF-8?q?=20liens=20ont=20finalement=20la=20forme=20{{{=C2=A0site=5Floca?=
 =?UTF-8?q?l=3F}}}''objet''{{{&connect=3D}}}''base''=20ce=20qui=20permet?=
 =?UTF-8?q?=20de=20naviguer=20dans=20l'interpr=C3=A9tation=20du=20site=20e?=
 =?UTF-8?q?xterne=20par=20les=20squelettes=20du=20site=20local,=20=C3=A7a?=
 =?UTF-8?q?=20semble=20plus=20utile=20que=20de=20reproduire=20le=20site=20?=
 =?UTF-8?q?distant=20=C3=A0=20l'identique=20(autant=20y=20aller=20alors).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Cette stratégie met fin au suspense de [10313]. Ses modifications de action/redirect et inc/urls ne sont finalement pas utiles, mais sont laissées car elles pourront servir: si l'on veut agir en écriture sur la base externe, il faut justement transmettre le paramètre {{{ $connect }}} aux scripts de {{{ action/}}}, le modèle est donc en place. Dans la foulée, on tempère le refus des balises dynamiques sur base externe: plutot qu'un message d'erreur envoyé au client, le code produit est vide, comme si l'option n'était pas disponible, et on notifie seulement dans {{{spip.log}}}.
---
 ecrire/inc/texte.php         | 9 ++++-----
 ecrire/public/references.php | 6 ++++--
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index b047c11863..bb0ad6079c 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -615,11 +615,10 @@ function calculer_url ($lien, $texte='', $pour='url', $connect='') {
 		@list($f,,$id,,$param,,$ancre) = $match;
 		$res = '';
 		if ($connect) {
-			include_spip('inc/urls');
-			$g = 'generer_url_ecrire_' . $f;
-			$param .= ($param ? '&' : '') . "connect=" . $connect;
-			if (function_exists($g))
-				$res = $g($id, $param, $ancre, 'publie', $connect);
+			$id_type = ($f != 'site') ? "id_$f" : 'id_syndic';
+			$res = get_spip_script('./')
+			. "?page=$f&$id_type=$id&connect=$connect"
+			. (!$params ? '' : "&$param");
 		} else {
 			charger_generer_url();
 			$g = 'generer_url_' . $f;
diff --git a/ecrire/public/references.php b/ecrire/public/references.php
index 490d7c9bb1..d5614b76bb 100644
--- a/ecrire/public/references.php
+++ b/ecrire/public/references.php
@@ -260,7 +260,7 @@ print $p->code."\n<hr/>\n";
 // http://doc.spip.org/@calculer_balise_dynamique
 function calculer_balise_dynamique($p, $nom, $l) {
 
-	balise_distante_interdite($p);
+	if (!balise_distante_interdite($p)) return $p;
 	$param = "";
 	if ($a = $p->param) {
 		$c = array_shift($a);
@@ -307,8 +307,10 @@ function collecter_balise_dynamique($l, &$p, $nom) {
 function balise_distante_interdite($p) {
 	$nom = $p->id_boucle;
 	if ($nom AND $p->boucles[$nom]->sql_serveur) {
-		erreur_squelette($p->nom_champ .' '._T('zbug_distant_interdit'), $nom);
+		spip__log( $nom .':' . $p->nom_champ .' '._T('zbug_distant_interdit'));
+		return false;
 	}
+	return true;
 }
 
 
-- 
GitLab