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