From 798c3464afda73f4a851e815c2199e0eaaf9cffc Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Sat, 24 Mar 2007 16:00:38 +0000
Subject: [PATCH] suite de [8926], introduit en particulier #FICHIER* qui donne
 le chemin du document a partir de _DIR_IMG

---
 .gitattributes                                |  2 +-
 .../{autoriser.php => acceder_document.php}   |  4 +--
 ecrire/inc/ajouter_documents.php              |  7 +---
 ecrire/inc/documents.php                      | 36 +++++++++++++++++++
 ecrire/inc/urls.php                           | 15 ++------
 ecrire/inc/utils.php                          |  8 -----
 ecrire/public/interfaces.php                  |  1 +
 ecrire/urls/html.php                          |  9 ++---
 ecrire/urls/page.php                          |  9 ++---
 ecrire/urls/propres.php                       |  9 ++---
 ecrire/urls/standard.php                      |  9 ++---
 11 files changed, 51 insertions(+), 58 deletions(-)
 rename ecrire/action/{autoriser.php => acceder_document.php} (97%)

diff --git a/.gitattributes b/.gitattributes
index 39521284b3..f0caca3873 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -332,8 +332,8 @@ dist/vignettes/xls.png -text
 dist/vignettes/xml.png -text
 dist/vignettes/zip.png -text
 dist/win_width.htc -text
+ecrire/action/acceder_document.php -text
 ecrire/action/activer_plugins.php -text
-ecrire/action/autoriser.php -text
 ecrire/action/converser.php -text
 ecrire/action/dater.php -text
 ecrire/action/desinstaller_plugin.php -text
diff --git a/ecrire/action/autoriser.php b/ecrire/action/acceder_document.php
similarity index 97%
rename from ecrire/action/autoriser.php
rename to ecrire/action/acceder_document.php
index 67a0e6f5fa..3ae875359f 100644
--- a/ecrire/action/autoriser.php
+++ b/ecrire/action/acceder_document.php
@@ -21,8 +21,8 @@ include_spip('base/abstract_sql');
 //  il verifie soit que le demandeur est authentifie
 // soit que le fichier est joint a au moins 1 article, breve ou rubrique publie
 
-// http://doc.spip.org/@action_autoriser_dist
-function action_autoriser_dist()
+// http://doc.spip.org/@action_acceder_document_dist
+function action_acceder_document_dist()
 {
   global $auteur_session; // positionne par verifier_visiteur dans inc_version
   if ($auteur_session['statut'] == '0minirezo' 
diff --git a/ecrire/inc/ajouter_documents.php b/ecrire/inc/ajouter_documents.php
index 470619e1c6..340127439a 100644
--- a/ecrire/inc/ajouter_documents.php
+++ b/ecrire/inc/ajouter_documents.php
@@ -229,13 +229,8 @@ function inc_ajouter_documents_dist ($source, $nom_envoye, $type_lien, $id_lien,
 		$update = "mode='$mode', ";
 	}
 
-	// Pour les fichiers distants remettre l'URL de base
-	$path =  ($distant == 'oui')
-	  ? _q($source)
-	  : ("'" . addslashes(set_spip_doc($fichier)) . "'");
-
 	// Mise a jour des donnees
-	spip_query("UPDATE spip_documents SET $update taille='$taille', largeur='$largeur', hauteur='$hauteur', fichier=$path WHERE id_document=$id_document");
+	spip_query("UPDATE spip_documents SET $update taille='$taille', largeur='$largeur', hauteur='$hauteur', fichier="._q(set_spip_doc($fichier))." WHERE id_document=$id_document");
 
 	if ($id_document_lie) {
 		spip_query("UPDATE spip_documents SET id_vignette=$id_document	WHERE id_document=$id_document_lie");
diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php
index 9c6a82c09f..cf9a6f5bf5 100644
--- a/ecrire/inc/documents.php
+++ b/ecrire/inc/documents.php
@@ -16,6 +16,42 @@ include_spip('inc/actions'); // *action_auteur et determine_upload
 include_spip('inc/date');
 include_spip('base/abstract_sql');
 
+
+// donne le chemin du fichier relatif a _DIR_IMG
+// pour stockage 'tel quel' dans la base de donnees
+// http://doc.spip.org/@set_spip_doc
+function set_spip_doc($fichier) {
+	if (strpos(_DIR_IMG, $fichier) === 0)
+		return substr($fichier, strlen(_DIR_IMG));
+	else
+		return $fichier; // ex: fichier distant
+}
+
+// donne le chemin complet du fichier
+// http://doc.spip.org/@get_spip_doc
+function get_spip_doc($fichier) {
+	if (preg_match(',^\w+://,', $fichier))
+		return $fichier;
+	else
+		return (strpos(_DIR_IMG, $fichier) === false)
+			? _DIR_IMG . $fichier
+			: $fichier;
+}
+
+function generer_url_document_dist($id_document) {
+	if (intval($id_document) <= 0)
+		return '';
+	$row = spip_fetch_array(spip_query("SELECT fichier,distant FROM spip_documents WHERE id_document = $id_document"));
+	if ($row) {
+		if ($GLOBALS['meta']["creer_htaccess"] == 'oui'
+		AND $row['distant'] == 'oui')
+			return generer_url_action('acceder_document', "arg=$id_document", true);
+		else
+			return get_spip_doc($row['fichier']);
+	}
+	return '';
+}
+
 //
 // Vignette pour les documents lies
 //
diff --git a/ecrire/inc/urls.php b/ecrire/inc/urls.php
index 8397e4a7cc..5f819339f5 100644
--- a/ecrire/inc/urls.php
+++ b/ecrire/inc/urls.php
@@ -77,19 +77,8 @@ function generer_url_ecrire_forum($id_forum, $statut='') {
 
 // http://doc.spip.org/@generer_url_ecrire_document
 function generer_url_ecrire_document($id_document, $statut='') {
-	if (intval($id_document) <= 0) 
-		return '';
-	$row = @spip_fetch_array(spip_query("SELECT fichier,distant	FROM spip_documents WHERE id_document = $id_document"));
-	  if ($row) {
-		if ($row['distant'] == 'oui') {
-			return $row['fichier'];
-		} else {
-			if (($GLOBALS['meta']["creer_htaccess"]) != 'oui')
-				return get_spip_doc($row['fichier']);
-			else 	return generer_url_action('autoriser', "arg=$id_document");
-		}
-	}
-
+	include_spip('inc/documents');
+	return generer_url_document_dist($id_document);
 }
 
 // http://doc.spip.org/@generer_url_ecrire_statistiques
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 758eb6ed34..df732aff94 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -235,14 +235,6 @@ function _q($a) {
 	return (is_int($a)) ? strval($a) : ("'" . addslashes($a) . "'");
 }
 
-// http://doc.spip.org/@set_spip_doc
-//function set_spip_doc($fichier) {return $fichier;}
-// http://doc.spip.org/@get_spip_doc
-//function get_spip_doc($fichier) {return _DIR_RACINE . $fichier;}
-// pour bientot:
-function set_spip_doc($fichier) {return substr($fichier, strlen(_DIR_IMG));}
-function get_spip_doc($fichier) {return _DIR_IMG . $fichier;}
-
 // Renvoie le _GET ou le _POST emis par l'utilisateur
 // ou pioche dans $c si c'est un array()
 // http://doc.spip.org/@_request
diff --git a/ecrire/public/interfaces.php b/ecrire/public/interfaces.php
index 98dc2b7c2f..4a8f900d3d 100644
--- a/ecrire/public/interfaces.php
+++ b/ecrire/public/interfaces.php
@@ -275,6 +275,7 @@ $table_des_traitements['DATE_MODIF'][]= 'vider_date(%s)';
 $table_des_traitements['DATE_NOUVEAUTES'][]= 'vider_date(%s)';
 $table_des_traitements['DATE_REDAC'][]= 'vider_date(%s)';
 $table_des_traitements['DESCRIPTIF'][]= 'propre(%s)';
+$table_des_traitements['FICHIER']['documents']= 'get_spip_doc(%s)';
 $table_des_traitements['LIEN_TITRE'][]= 'typo(%s)';
 $table_des_traitements['LIEN_URL'][]= 'vider_url(%s)';
 $table_des_traitements['MESSAGE'][]= 'propre(%s)';
diff --git a/ecrire/urls/html.php b/ecrire/urls/html.php
index d8e197cd53..c6bd0cc9cb 100644
--- a/ecrire/urls/html.php
+++ b/ecrire/urls/html.php
@@ -68,13 +68,8 @@ function generer_url_auteur($id_auteur) {
 
 // http://doc.spip.org/@generer_url_document
 function generer_url_document($id_document) {
-	if (intval($id_document) <= 0)
-		return '';
-	if (($GLOBALS['meta']["creer_htaccess"]) == 'oui')
-		return generer_url_action('autoriser', "arg=$id_document", true);
-	$row = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_document"));
-	if ($row) return get_spip_doc($row['fichier']);
-	return '';
+	include_spip('inc/documents');
+	return generer_url_document_dist($id_document);
 }
 
 
diff --git a/ecrire/urls/page.php b/ecrire/urls/page.php
index a7915bfb4f..bbb6147fed 100644
--- a/ecrire/urls/page.php
+++ b/ecrire/urls/page.php
@@ -63,13 +63,8 @@ function generer_url_auteur($id_auteur) {
 
 // http://doc.spip.org/@generer_url_document
 function generer_url_document($id_document) {
-	if (($id_document = intval($id_document)) <= 0)
-		return '';
-	if (($GLOBALS['meta']["creer_htaccess"]) == 'oui')
-		return generer_url_action('autoriser',"arg=$id_document", true);
-	$row = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_document"));
-	if ($row) return get_spip_doc($row['fichier']);
-	return '';
+	include_spip('inc/documents');
+	return generer_url_document_dist($id_document);
 }
 
 // http://doc.spip.org/@recuperer_parametres_url
diff --git a/ecrire/urls/propres.php b/ecrire/urls/propres.php
index d36c53940c..16a4324c1e 100644
--- a/ecrire/urls/propres.php
+++ b/ecrire/urls/propres.php
@@ -197,13 +197,8 @@ function generer_url_site($id_syndic) {
 
 // http://doc.spip.org/@generer_url_document
 function generer_url_document($id_document) {
-	if (($id_document = intval($id_document)) <= 0)
-		return '';
-	if (($GLOBALS['meta']["creer_htaccess"]) == 'oui')
-	  return generer_url_action('autoriser',"arg=$id_document", true);
-	$row = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_document"));
-	if ($row) return get_spip_doc($row['fichier']);
-	return '';
+	include_spip('inc/documents');
+	return generer_url_document_dist($id_document);
 }
 
 // http://doc.spip.org/@recuperer_parametres_url
diff --git a/ecrire/urls/standard.php b/ecrire/urls/standard.php
index af57ffb6f9..f1b2e18c16 100644
--- a/ecrire/urls/standard.php
+++ b/ecrire/urls/standard.php
@@ -48,13 +48,8 @@ function generer_url_auteur($id_auteur) {
 
 // http://doc.spip.org/@generer_url_document
 function generer_url_document($id_document) {
-	if (intval($id_document) <= 0)
-		return '';
-	if (($GLOBALS['meta']["creer_htaccess"]) == 'oui')
-		return generer_url_action('autoriser',"arg=$id_document", true);
-	$row = @spip_fetch_array(spip_query("SELECT fichier FROM spip_documents WHERE id_document = $id_document"));
-	if ($row) return get_spip_doc($row['fichier']);
-	return '';
+	include_spip('inc/documents');
+	return generer_url_document_dist($id_document);
 }
 
 // http://doc.spip.org/@recuperer_parametres_url
-- 
GitLab