From 40898f8a72d938c07788080d29a1ee6db7fc2cac Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Sat, 22 Dec 2007 20:08:22 +0000 Subject: [PATCH] =?UTF-8?q?Nouvelle=20num=C3=A9rotation=20pour=20$spip=5Fv?= =?UTF-8?q?ersion=20et=20introduction=20des=20types=20de=20documents=20''s?= =?UTF-8?q?ty''=20et=20''cls''=20li=C3=A9=20=C3=A0=20LaTeX.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La numérotation de $spip_version sous forme d'un nombre réel déduit de $spip_version_code allant atteindre ses limites, on prend à présent comme valeur le numéro de dépot SVN introduisant un changement dans la base. A nouveau, adaptation rétrospective du code de mise à jour à partir de la 1.9.2: en multipliant par 1000 ces valeurs de $spip_versions, on obtient des valeurs entières inférieures au numéro SVN actuel, et ça devient compatible avec le nouveau schéma général de mise à jour. Ça evite un quasi doublon de code et ça permet un test en vraie grandeur. A noter que SVN ne donne pas accès automatiquement au dernier numéro de version d'un fichier, il faut toujours affecter $spip_version manuellement; du coup il y aura peut-etre parfois des dépots simultanés qui feront que le numéro affecté vaudra 1 de moins que celui qu'il faudrait. Pas dramatique. --- .gitattributes | 1 + ecrire/base/typedoc.php | 7 ++-- ecrire/base/upgrade.php | 67 +++++++++++++++++++++------------- ecrire/inc_version.php | 8 ++--- ecrire/maj/svn10000.php | 21 +++++++++++ ecrire/maj/v019.php | 80 +++++++++++++++++------------------------ 6 files changed, 105 insertions(+), 79 deletions(-) create mode 100644 ecrire/maj/svn10000.php diff --git a/.gitattributes b/.gitattributes index e42e3a7f0c..5edc37daa4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -710,6 +710,7 @@ ecrire/lib/safehtml/index.php -text ecrire/lib/safehtml/license.txt -text ecrire/lib/safehtml/readme-SPIP.txt -text ecrire/lib/safehtml/readme.txt -text +ecrire/maj/svn10000.php -text ecrire/maj/v009.php -text ecrire/maj/v010.php -text ecrire/maj/v011.php -text diff --git a/ecrire/base/typedoc.php b/ecrire/base/typedoc.php index 490e420c15..ee13ed9ca7 100644 --- a/ecrire/base/typedoc.php +++ b/ecrire/base/typedoc.php @@ -61,6 +61,7 @@ $tables_documents = array( 'bin' => 'Binary Data', 'blend' => 'Blender', 'c' => 'C source', + 'cls' => 'LaTeX Class', 'css' => 'Cascading Style Sheet', 'csv' => 'Comma Separated Values', 'deb' => 'Debian', @@ -84,6 +85,7 @@ $tables_documents = array( 'sdd' => 'StarOffice', 'sdw' => 'StarOffice', 'sit' => 'Stuffit', + 'sty' => 'LaTeX Style Sheet', 'sxc' => 'OpenOffice Calc', 'sxi' => 'OpenOffice Impress', 'sxw' => 'OpenOffice', @@ -203,8 +205,9 @@ $tables_mime = array( 'ott' => 'application/vnd.oasis.opendocument.text-template', 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', 'otp' => 'application/vnd.oasis.opendocument.presentation-template', - 'otg' => 'application/vnd.oasis.opendocument.graphics-template' - + 'otg' => 'application/vnd.oasis.opendocument.graphics-template', + 'cls'=>'text/x-tex', + 'sty'=>'text/x-tex', ); diff --git a/ecrire/base/upgrade.php b/ecrire/base/upgrade.php index 8a6a3cb37b..d882997246 100644 --- a/ecrire/base/upgrade.php +++ b/ecrire/base/upgrade.php @@ -59,21 +59,35 @@ function maj_base($version_cible = 0) { return; } if (!upgrade_test()) return; - - $n = floor($version_installee * 10); - $cible = ($version_cible ? $version_cible : $spip_version) * 10; - while ($n < $cible) { - $nom = sprintf("v%03d",$n); - $f = charger_fonction($nom, 'maj', true); - if ($f) { - spip_log("$f repercute les modifications de la version " . ($n/10)); - $f($version_installee, $spip_version); - } else spip_log("pas de fonction pour la maj $n $nom"); - $n++; + + $cible = ($version_cible ? $version_cible : $spip_version); + + if ($version_installee <= 1.926) { + $n = floor($version_installee * 10); + while ($n < 19) { + $nom = sprintf("v%03d",$n); + $f = charger_fonction($nom, 'maj', true); + if ($f) { + spip_log("$f repercute les modifications de la version " . ($n/10)); + $f($version_installee, $spip_version); + } else spip_log("pas de fonction pour la maj $n $nom"); + $n++; + } + include_spip('maj/v019_pre193'); + v019_pre193($version_installee, $version_cible); } + if ($version_installee < 2) { + $version_installee = $version_installee*1000; + include_spip('maj/v019'); + } + if ($cible < 2) + $cible = $cible*1000; + + maj_while($version_installee, $cible); } -// A partir des > 1.926 (i.e SPIP > 1.9.2), le while ci-dessus aboutit ici. + +// A partir des > 1.926 (i.e SPIP > 1.9.2), cette fonction gere les MAJ. // Se relancer soi-meme pour eviter l'interruption pendant une operation SQL // (qu'on espere pas trop longue chacune) // evidemment en ecrivant dans la meta a quel numero on en est. @@ -81,24 +95,21 @@ function maj_base($version_cible = 0) { define('_UPGRADE_TIME_OUT', 20); // http://doc.spip.org/@maj_while -function maj_while($version_installee, $version_cible) +function maj_while($installee, $cible) { - $pref = floor($version_installee); - $cible = substr($version_cible*1000,-3); - $installee = substr($version_installee*1000,-3); - $time = time(); + include_spip('maj/svn10000'); + $n = 0; + $time = time(); - $chgt = $GLOBALS['maj'][$pref]; while ($installee < $cible) { $installee++; - $version = ($pref . '.' . $installee); - if (isset($chgt[$installee])) { - serie_alter($installee, $chgt[$installee]); + if (isset($GLOBALS['maj'][$installee])) { + serie_alter($installee, $GLOBALS['maj'][$installee]); $n = time() - $time; - spip_log("MAJ de $version_installee a $version en $n secondes",'maj'); - } else spip_log("MAJ $version: rien pour SQL", 'maj'); - ecrire_meta('version_installee', $version,'non'); + spip_log("MAJ vers $installee en $n secondes",'maj'); + } // rien pour SQL + ecrire_meta('version_installee', $installee,'non'); if ($n >= _UPGRADE_TIME_OUT) { redirige_par_entete(generer_url_ecrire('upgrade', "reinstall=$installee", true)); } @@ -142,6 +153,14 @@ function convertir_un_champ_blob_en_text($table,$champ,$type){ } } +// La fonction a appeler dans le tableau global $maj +// quand on rajoute des types MIME. cf par exemple la 1.953 + +function upgrade_types_documents() { + include_spip('base/create'); + creer_base_types_doc(); +} + // http://doc.spip.org/@upgrade_test function upgrade_test() { sql_drop_table("spip_test", true); diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php index f4fdb2b1e5..453304907b 100644 --- a/ecrire/inc_version.php +++ b/ecrire/inc_version.php @@ -289,12 +289,8 @@ $liste_des_forums = array( // Droits d'acces maximum par defaut @umask(0); -// Version courante de SPIP -// Stockee sous forme de nombre decimal afin de faciliter les comparaisons -// (utilise pour les modifs de la base de donnees) - -// version de la base -$spip_version = 1.958; +// version de la base (= numero SVN de sa derniere modif) +$spip_version = 10990; // version de l'interface a la base $spip_sql_version = 1; diff --git a/ecrire/maj/svn10000.php b/ecrire/maj/svn10000.php new file mode 100644 index 0000000000..83d416cb64 --- /dev/null +++ b/ecrire/maj/svn10000.php @@ -0,0 +1,21 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2007 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + +/*--------------------------------------------------------------------- */ +/* Gestion des MAJ par tableau indexe par le numero SVN du chgt */ +/*--------------------------------------------------------------------- */ + +$GLOBALS['maj'][10990] = array(array('upgrade_types_documents')); + +?> diff --git a/ecrire/maj/v019.php b/ecrire/maj/v019.php index e350b794d8..a5921f6324 100644 --- a/ecrire/maj/v019.php +++ b/ecrire/maj/v019.php @@ -12,29 +12,22 @@ if (!defined("_ECRIRE_INC_VERSION")) return; -function maj_v019_dist($version_installee, $version_cible) -{ - if (1.926 >= $version_installee) { - include_spip('maj/v019_pre193'); - v019_pre193($version_installee, $version_cible); - } - maj_while($version_installee, $version_cible); -} - /*--------------------------------------------------------------------- */ -/* Nouvelle gestion des MAJ */ -/* ca coincide avec l'�tat de la 1.9.2, mais c'est un peu retroactif */ +/* Nouvelle gestion des MAJ (par tableau) */ /*--------------------------------------------------------------------- */ +// on la fait coincider retroactivement avec l'�tat de la 1.9.2 +// => l'index numerique entier est la * par 1000 (resultat < SVN c'est ok) + // FLV est incrustable, la MAJ precedente l'avait oublie -$GLOBALS['maj'][1][931] = array( +$GLOBALS['maj'][1931] = array( array('spip_query', "UPDATE spip_types_documents SET `inclus`='embed' WHERE `extension`='flv'") ); // Ajout de spip_forum.date_thread, et on essaie de le remplir // a coup de table temporaire (est-ce autorise partout... sinon // tant pis, ca ne marchera que pour les forums recemment modifies) -$GLOBALS['maj'][1][932] = array( +$GLOBALS['maj'][1932] = array( array('sql_alter', "TABLE spip_forum ADD `date_thread` datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"), array('sql_alter', "TABLE spip_forum ADD INDEX `date_thread` (`date_thread`)"), @@ -53,7 +46,7 @@ function maj_1_934 () { spip_query("UPDATE spip_documents SET `fichier`=substring(fichier,$n) WHERE `fichier` LIKE " . _q($dir_img . '%')); } -$GLOBALS['maj'][1][934] = array(array('maj_1_934')); +$GLOBALS['maj'][1934] = array(array('maj_1_934')); function maj_1_935 () { include_spip('inc/texte'); @@ -73,14 +66,14 @@ function maj_1_935 () { } } -$GLOBALS['maj'][1][935] = array( +$GLOBALS['maj'][1935] = array( array('sql_alter', "TABLE spip_documents_articles ADD `vu` ENUM('non', 'oui') DEFAULT 'non' NOT NULL"), array('sql_alter', "TABLE spip_documents_rubriques ADD `vu` ENUM('non', 'oui') DEFAULT 'non' NOT NULL"), array('sql_alter', "TABLE spip_documents_breves ADD `vu` ENUM('non', 'oui') DEFAULT 'non' NOT NULL"), array('maj_1_935') ); -$GLOBALS['maj'][1][937] = array( +$GLOBALS['maj'][1937] = array( // convertir les champs blob des tables spip en champs texte array('convertir_un_champ_blob_en_text',"spip_articles","texte","LONGTEXT"), array('convertir_un_champ_blob_en_text',"spip_articles","extra","LONGTEXT"), @@ -112,7 +105,7 @@ function maj_1_938 () { } } -$GLOBALS['maj'][1][938] = array( +$GLOBALS['maj'][1938] = array( // Des champs NULL a l'installation // Ajouter un champ extension aux spip_documents, et le // remplir avec les valeurs ad hoc @@ -131,7 +124,7 @@ $GLOBALS['maj'][1][938] = array( array('sql_alter', "TABLE spip_types_documents ADD PRIMARY KEY (`extension`)"), ); -$GLOBALS['maj'][1][939] = array( +$GLOBALS['maj'][1939] = array( array('sql_alter', "TABLE spip_visites CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_visites_articles CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_referers CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL"), @@ -140,18 +133,18 @@ $GLOBALS['maj'][1][939] = array( array('sql_alter', "TABLE spip_referers_articles CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL") ); -$GLOBALS['maj'][1][940] = array( +$GLOBALS['maj'][1940] = array( array('spip_query', "DROP TABLE spip_caches"), ); -$GLOBALS['maj'][1][941] = array( +$GLOBALS['maj'][1941] = array( array('spip_query', "UPDATE spip_meta SET `valeur` = '' WHERE `nom`='preview' AND `valeur`='non' "), array('spip_query', "UPDATE spip_meta SET `valeur` = ',0minirezo,1comite,' WHERE `nom`='preview' AND `valeur`='1comite' "), array('spip_query', "UPDATE spip_meta SET `valeur` = ',0minirezo,' WHERE `nom`='preview' AND `valeur`='oui' "), ); -$GLOBALS['maj'][1][942] = array( +$GLOBALS['maj'][1942] = array( array('sql_alter', "TABLE spip_auteurs CHANGE `statut` `statut` varchar(255) DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_breves CHANGE `statut` `statut` varchar(6) DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_messages CHANGE `statut` `statut` varchar(6) DEFAULT '0' NOT NULL"), @@ -165,7 +158,7 @@ $GLOBALS['maj'][1][942] = array( // suppression de l'indexation dans la version standard -$GLOBALS['maj'][1][943] = array( +$GLOBALS['maj'][1943] = array( array('sql_alter', "TABLE spip_articles DROP KEY `idx`"), array('sql_alter', "TABLE spip_articles DROP `idx`"), array('sql_alter', "TABLE spip_auteurs DROP KEY `idx`"), @@ -189,13 +182,13 @@ $GLOBALS['maj'][1][943] = array( array('spip_query', "DROP TABLE spip_index_dico"), ); -$GLOBALS['maj'][1][944] = array( +$GLOBALS['maj'][1944] = array( array('sql_alter', "TABLE spip_documents CHANGE `taille` `taille` integer"), array('sql_alter', "TABLE spip_documents CHANGE `largeur` `largeur` integer"), array('sql_alter', "TABLE spip_documents CHANGE `hauteur` `hauteur` integer") ); -$GLOBALS['maj'][1][945] = array( +$GLOBALS['maj'][1945] = array( array('sql_alter', "TABLE spip_petitions CHANGE `email_unique` `email_unique` CHAR (3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_petitions CHANGE `site_obli` `site_obli` CHAR (3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_petitions CHANGE `site_unique` `site_unique` CHAR (3) DEFAULT '' NOT NULL"), @@ -284,7 +277,7 @@ $GLOBALS['maj'][1][945] = array( ); -$GLOBALS['maj'][1][946] = array( +$GLOBALS['maj'][1946] = array( array('sql_alter', "TABLE spip_forum DROP INDEX `id_parent`"), array('sql_alter', "TABLE spip_forum DROP INDEX `id_article`"), array('sql_alter', "TABLE spip_forum DROP INDEX `id_breve`"), @@ -296,7 +289,7 @@ $GLOBALS['maj'][1][946] = array( ); -$GLOBALS['maj'][1][947] = array( +$GLOBALS['maj'][1947] = array( array('sql_alter', "TABLE spip_articles DROP INDEX `url_site`"), array('sql_alter', "TABLE spip_articles DROP INDEX `date_modif`"), @@ -304,7 +297,7 @@ $GLOBALS['maj'][1][947] = array( ); // mauvaise manip -$GLOBALS['maj'][1][949] = array( +$GLOBALS['maj'][1949] = array( array('sql_alter', "TABLE spip_versions DROP INDEX `date`"), array('sql_alter', "TABLE spip_versions DROP INDEX `id_auteur`") @@ -314,9 +307,9 @@ $GLOBALS['maj'][1][949] = array( function maj_1_950($installee) { // oubli de gerer le prefixe lors l'introduction de l'abstraction // => Relancer les MAJ concernees si la version dont on part les avait fait - if ($installe >= 1.946) serie_alter('950a', $GLOBALS['maj'][1][946]); - if ($installe >= 1.947) serie_alter('950b', $GLOBALS['maj'][1][947]); - if ($installe >= 1.949) @serie_alter('950c', $GLOBALS['maj'][1][949]); + if ($installe >= 1.946) serie_alter('950a', $GLOBALS['maj'][1946]); + if ($installe >= 1.947) serie_alter('950b', $GLOBALS['maj'][1947]); + if ($installe >= 1.949) @serie_alter('950c', $GLOBALS['maj'][1949]); global $tables_auxiliaires; include_spip('base/auxiliaires'); $v = $tables_auxiliaires[$k='spip_urls']; @@ -344,13 +337,13 @@ function maj_1_950($installee) { // Donner a la fonction ci-dessus le numero de version installee // AVANT que la mise a jour ait commencee -$GLOBALS['maj'][1][950] = array(array('maj_1_950', $GLOBALS['meta']['version_installee'] )); +$GLOBALS['maj'][1950] = array(array('maj_1_950', $GLOBALS['meta']['version_installee'] )); // Erreur dans maj_1_948(): // // http://trac.rezo.net/trac/spip/changeset/10194 // // Gestion du verrou SQL par PHP -$GLOBALS['maj'][1][951] = array( +$GLOBALS['maj'][1951] = array( array('sql_alter', "TABLE spip_versions CHANGE `id_version` `id_version` bigint(21) DEFAULT 0 NOT NULL") ); @@ -378,18 +371,11 @@ function maj_1_952() { if (!$ok) die('echec sur maj_1_952()'); } -$GLOBALS['maj'][1][952] = array(array('maj_1_952')); - -function maj_1_953() -{ - global $tables_principales; - include_spip('base/create'); - creer_base_types_doc(); -} +$GLOBALS['maj'][1952] = array(array('maj_1_952')); -$GLOBALS['maj'][1][953] = array(array('maj_1_953')); +$GLOBALS['maj'][1953] = array(array('upgrade_types_documents')); -$GLOBALS['maj'][1][954] = array( +$GLOBALS['maj'][1954] = array( //pas de psd en <img> array('spip_query', "UPDATE spip_types_documents SET `inclus`='non' WHERE `extension`='psd'"), @@ -412,14 +398,14 @@ $GLOBALS['maj'][1][954] = array( if ($GLOBALS['meta']['version_installee'] > 1.950) // 1.950 lisait un bug dans auxiliaires.php corrige a present - $GLOBALS['maj'][1][955] = array( + $GLOBALS['maj'][1955] = array( array('sql_alter', "TABLE spip_urls CHANGE `maj` date DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL") ); // la mise a jour vers 1.938 contient une erreur // il faut supprimer l'autoincrement avant de supprimer la PRIMARY KEY -$GLOBALS['maj'][1][938] = array( +$GLOBALS['maj'][1938] = array( # creer un champ plus informatif, et son index array('sql_alter', "TABLE spip_documents ADD `extension` VARCHAR(10) DEFAULT '' NOT NULL "), @@ -439,18 +425,18 @@ function maj_1_938_catastrophe () } if ($GLOBALS['meta']['version_installee'] > 1.938) - $GLOBALS['maj'][1][956] = array(array('maj_1_938_catastrophe')); + $GLOBALS['maj'][1956] = array(array('maj_1_938_catastrophe')); // PG veut une valeur par defaut a l'insertion // http://trac.rezo.net/trac/spip/changeset/10482 -$GLOBALS['maj'][1][957] = array( +$GLOBALS['maj'][1957] = array( array('sql_alter', "TABLE spip_mots CHANGE `id_groupe` `id_groupe` bigint(21) DEFAULT 0 NOT NULL"), array('sql_alter', "TABLE spip_documents CHANGE `mode` `mode` ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL") ); // Ce champ est inutile et provoque une erreur a l'insertion qui l'oublie -$GLOBALS['maj'][1][958] = array( +$GLOBALS['maj'][1958] = array( array('sql_alter', "TABLE spip_referers_articles DROP date") ); ?> -- GitLab