From 8b4e2a93ab6d8edc4dcf605b9299190e1f2dad0d Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Sat, 24 Mar 2007 14:48:50 +0000
Subject: [PATCH] =?UTF-8?q?Suite=20de=20[8918]:disparition=20de=20=5FDIR?=
 =?UTF-8?q?=5FIMG=20dans=20le=20champ=20"fichier"=20de=20la=20table=20des?=
 =?UTF-8?q?=20documents:=20les=202=20=20fonctions=20get=5Fspip=5Fdoc=20et?=
 =?UTF-8?q?=20set=5Fspip=5Fdoc=20convertissent=20les=20infos=20dans=20la?=
 =?UTF-8?q?=20table=20SQL=20en=20l'adresse=20effective=20du=20fichier=20su?=
 =?UTF-8?q?r=20le=20disque.=20La=20mis=C3=A9=20jour=20=C3=A0=20cette=20ver?=
 =?UTF-8?q?sion=20de=20la=20base=20SQL=20(1.934)=20retire=20ce=20pr=C3=A9f?=
 =?UTF-8?q?ixe=20dans=20tous=20les=20champs=20"fichier"=20de=20la=20table?=
 =?UTF-8?q?=20des=20documents=20commen=C3=A7ant=20=5FDIR=5FIMG.=20De=20man?=
 =?UTF-8?q?i=C3=A8re=20exceptionnelle,=20si=20l'on=20installe=20ou=20fusio?=
 =?UTF-8?q?nne=20une=20sauvegarde=20ant=C3=A9rieure=20=C3=A0=20ce=20num?=
 =?UTF-8?q?=C3=A9ro=20de=20version=20de=20la=20base,=20il=20y=20aura=20ex?=
 =?UTF-8?q?=C3=A9cution=20d'un=20code=20=C3=A9quivalent=20=C3=A0=20cette?=
 =?UTF-8?q?=20MAJ=201.934.=20Si=20l'attribut=20dir=5Fimg=20est=20pr=C3=A9s?=
 =?UTF-8?q?ent=20dans=20la=20balise=20SPIP=20de=20la=20sauvegarde,=20sa=20?=
 =?UTF-8?q?valeur=20sera=20le=20pr=C3=A9fixe=20retir=C3=A9=20des=20champs?=
 =?UTF-8?q?=20"fichier",=20sinon=20IMG/=20sera=20pris=20par=20d=C3=A9faut.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/base/upgrade.php   | 13 +++++++++++--
 ecrire/inc/import_1_3.php | 19 +++++++++++++++----
 ecrire/inc/utils.php      |  8 ++++----
 ecrire/inc_version.php    |  2 +-
 4 files changed, 31 insertions(+), 11 deletions(-)

diff --git a/ecrire/base/upgrade.php b/ecrire/base/upgrade.php
index d25e8cb663..351a3555e4 100644
--- a/ecrire/base/upgrade.php
+++ b/ecrire/base/upgrade.php
@@ -48,16 +48,17 @@ function maj_base($version_cible = 0) {
 	// Si pas de version mentionnee dans spip_meta, c'est qu'il s'agit
 	// d'une nouvelle installation
 	//   => ne pas passer par le processus de mise a jour
+	// De meme en cas de version superieure: ca devait etre un test,
+	// il y a eu le message d'avertissement il doit savoir ce qu'il fa
 	//
 	// $version_installee = 1.702; quand on a besoin de forcer une MAJ
 
-	if (!$version_installee) {
+	if (!$version_installee OR ($spip_version < $version_installee)) {
 		spip_query_db("REPLACE spip_meta (nom, valeur,impt)
 			VALUES ('version_installee', '$spip_version','non')");
 		return true;
 	}
 
-
 	//
 	// Verification des droits de modification sur la base
 	//
@@ -1330,6 +1331,14 @@ function maj_base($version_cible = 0) {
 		maj_version('1.933');
 	}
 
+	// Retrait de _DIR_IMG dans le champ fichier de la table des doc
+	if (upgrade_vers(1.934, $version_installee, $version_cible)) {
+	  $dir_img = substr(_DIR_IMG,strlen(_DIR_RACINE));
+	  $n = strlen($dir_img) + 1;
+	  spip_query("UPDATE spip_documents SET fichier=substr(fichier,$n) WHERE fichier LIKE " . _q($dir_img . '%'));
+	  maj_version('1.934');
+	}
+
 }
 
 ?>
diff --git a/ecrire/inc/import_1_3.php b/ecrire/inc/import_1_3.php
index e6fcff7b9f..92a167e36b 100644
--- a/ecrire/inc/import_1_3.php
+++ b/ecrire/inc/import_1_3.php
@@ -64,7 +64,8 @@ function inc_import_1_3_dist($lecteur, $request, $gz='fread', $atts=array()) {
 				     $desc['field'],
 				     $gz,
 				     $phpmyadmin,
-				     '/' . $table);
+				     '/' . $table,
+				     $atts);
 
 	if ($values === false) return  ($import_ok = false);
 
@@ -152,10 +153,18 @@ function import_replace($values, $table, $desc, $request, $atts='') {
 }
 
 // http://doc.spip.org/@import_lire_champs
-function import_lire_champs($f, $fields, $gz, $phpmyadmin, $table)
+function import_lire_champs($f, $fields, $gz, $phpmyadmin, $table, $atts)
 {
 	$values = array();
-	
+	$dir_img = 0;
+
+
+	if (($atts['version_base'] < '1.934')
+	AND $table == '/spip_documents') {
+
+	  $dir_img = '@^'. preg_quote (isset($atts['dir_img']) ? $atts['dir_img']:'IMG/') . '@';
+	}
+
 	if (!isset($GLOBALS['meta']['charset_insertion']))
 		$charset = '';
 	else {
@@ -163,7 +172,6 @@ function import_lire_champs($f, $fields, $gz, $phpmyadmin, $table)
 		if ($charset == $GLOBALS['meta']['charset'])
 			$charset = '';
 	}
-
 	for (;;) {
 		$b = false;
 		if (!($col = xml_fetch_tag($f, $b, $gz))) return false;
@@ -179,6 +187,9 @@ function import_lire_champs($f, $fields, $gz, $phpmyadmin, $table)
 		if ($b) {
 			if ($phpmyadmin)
 				$value = str_replace($phpmyadmin[0],$phpmyadmin[1],$value);
+			elseif ($dir_img) {
+			  $value = preg_replace($dir_img, '', $value);
+			}
 			if ($charset) 
 				$value = importer_charset($value, $charset);
 			$values[$col]= $value;
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 3dd3faa796..758eb6ed34 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -236,12 +236,12 @@ function _q($a) {
 }
 
 // http://doc.spip.org/@set_spip_doc
-function set_spip_doc($fichier) {return $fichier;}
+//function set_spip_doc($fichier) {return $fichier;}
 // http://doc.spip.org/@get_spip_doc
-function get_spip_doc($fichier) {return _DIR_RACINE . $fichier;}
+//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;}
+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()
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index 4e14005c66..56dddc7091 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -285,7 +285,7 @@ $tables_des_serveurs_sql['localhost'] =  &$tables_principales;
 // (utilise pour les modifs de la base de donnees)
 
 // version de la base
-$spip_version = 1.933;
+$spip_version = 1.934;
 
 // version de spip en chaine
 // et en numerique a incrementer sur les evolutions qui cassent la compatibilite descendante
-- 
GitLab