From aaa022de00f5cbbfd2d5e1468c6db901a95846a8 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Thu, 17 Jan 2008 13:25:33 +0000
Subject: [PATCH] =?UTF-8?q?Acc=C3=A8s=20au=20documents.=20[11072]=C2=A0ava?=
 =?UTF-8?q?it=20r=C3=A9introduit=20maladroitement=20l'appel=20=C3=A0=20aut?=
 =?UTF-8?q?oriser=5Fvoir=20disparu=20avec=20[10998]:=20il=20est=20inutilem?=
 =?UTF-8?q?ent=20couteux=20de=20produire=20une=20cl=C3=A9=20s'il=20n'y=20a?=
 =?UTF-8?q?=20pas=20de=20.htaccess,=20on=20am=C3=A9liore.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Mais [10998] pose un autre problème: le code compilé des balises #URL_* sur base externe ne permet plus d'accéder à un document du site distant puisque ce script refuse à présent toute demande non émise par son espace privé.

Du coup, on introduit _DIR_IMG comme nouvelle meta, permettant de demander à un site distant le répertoire de ses documents. Le code compilé des balises #URL_* l'utilise pour produire la bonne URL. Evidemment si un .htaccess est présent, cette URL conduira à un 403.

A moyen terme, cette meta devrait permettre de résoudre le problème de l'accès aux vignettes et logos du site distant.
---
 ecrire/balise/url_.php   |  5 +++--
 ecrire/inc/autoriser.php |  4 ++--
 ecrire/inc/config.php    | 14 ++++++++------
 ecrire/inc/documents.php |  5 ++++-
 ecrire/inc_version.php   |  2 +-
 5 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/ecrire/balise/url_.php b/ecrire/balise/url_.php
index 41948547fa..60b23db70b 100644
--- a/ecrire/balise/url_.php
+++ b/ecrire/balise/url_.php
@@ -43,8 +43,9 @@ function generer_generer_url($type, $p)
 			return "'./?page=$type&amp;id_$type=' . $_id . '&amp;connect=$s'";
 		else {
 			$u = "quete_meta('adresse_site', '$s')";
-			$f = "$_id . '&amp;file=' . quete_fichier($_id,'$s')";
-			return "$u . '?action=acceder_document&amp;arg=' .$f";
+			$d = "quete_meta('dir_img', '$s')";
+			$f = "quete_fichier($_id,'$s')";
+			return "$u . '/' .\n\t$d . $f";
 		}
 	}
 }
diff --git a/ecrire/inc/autoriser.php b/ecrire/inc/autoriser.php
index 5f5aabce1d..850d41813e 100644
--- a/ecrire/inc/autoriser.php
+++ b/ecrire/inc/autoriser.php
@@ -520,11 +520,11 @@ function autoriser_chargerftp_dist($faire, $type, $id, $qui, $opt) {
 // http://doc.spip.org/@autoriser_document_voir_dist
 function autoriser_document_voir_dist($faire, $type, $id, $qui, $opt) {
 
-	if (($id = intval($id)) <= 0) return false;
-
 	if ($GLOBALS['meta']["creer_htaccess"] != 'oui')
 		return true;
 
+	if (($id = intval($id)) <= 0) return false;
+
 	if (in_array($qui['statut'], array('0minirezo', '1comite')))
 		return true;
 
diff --git a/ecrire/inc/config.php b/ecrire/inc/config.php
index 87842e64b1..518dd728ee 100644
--- a/ecrire/inc/config.php
+++ b/ecrire/inc/config.php
@@ -80,8 +80,9 @@ function liste_metas()
 
 		'documents_article' => 'non',
 		'documents_rubrique' => 'non',
-		'charset' => _DEFAULT_CHARSET,
 		'syndication_integrale' => 'oui',
+		'charset' => _DEFAULT_CHARSET,
+		'dir_img' => substr(_DIR_IMG,strlen(_DIR_RACINE)),
 
 		'multi_articles' => 'non',
 		'multi_rubriques' => 'non',
@@ -196,8 +197,6 @@ function appliquer_modifs_config() {
 		set_request('langues_multilingue', join($i, ","));
 	}
 
-	$liste_meta = array_keys(liste_metas());
-
 	// Modification du reglage accepter_inscriptions => vider le cache
 	// (pour repercuter la modif sur le panneau de login)
 	if ($i = _request('accepter_inscriptions')
@@ -206,9 +205,12 @@ function appliquer_modifs_config() {
 		suivre_invalideur("1"); # tout effacer
 	}
 
-	foreach($liste_meta as $i)
-		if (!(_request($i)===NULL))
-			ecrire_meta($i, _request($i));
+	foreach(liste_metas() as $i => $v) {
+		if (($x =_request($i))!==NULL)
+			ecrire_meta($i, $x);
+		elseif  (!isset($GLOBALS['meta'][$i]))
+			ecrire_meta($i, $v);
+	}
 
 	if ($lang = _request('changer_langue_site')) {
 		include_spip('inc/lang');
diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php
index 3fcaacd004..32e83c374c 100644
--- a/ecrire/inc/documents.php
+++ b/ecrire/inc/documents.php
@@ -63,7 +63,10 @@ function generer_url_document_dist($id_document, $args='', $ancre='') {
 
 	$f = $row['fichier'];
 
-	if ($row['distant'] == 'oui') return get_spip_doc($f);
+	// Si droit de voir tous les docs, pas seulement celui-ci
+	// il est inutilement couteux de rajouter une protection
+	if (($row['distant'] == 'oui') OR !autoriser('voir', 'document'))
+		return get_spip_doc($f);
 
 	include_spip('inc/securiser_action');
 
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index 52f3c1432b..d9e4fd8fcf 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -293,7 +293,7 @@ $liste_des_forums = array(
 // (= numero SVN de leur derniere modif cassant la compatibilite)
 $spip_version_code = 11056;
 // version de la base SQL (= numero SVN de sa derniere modif)
-$spip_version = 11042;
+$spip_version = 11088;
 // version de l'interface a la base
 $spip_sql_version = 1;
 
-- 
GitLab