uawdijnntqw1x1x1
IP : 216.73.217.6
Hostname : webm002.cluster111.gra.hosting.ovh.net
Kernel : Linux webm002.cluster111.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
OS : Linux
PATH:
/
home
/
atelierpru
/
provence
/
plugins
/
..
/
52177
/
maj.tar
/
/
v018.php000066600000021757152442517720006004 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, versions 1.8* * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Mises à jour de SPIP n°018 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v018_dist($version_installee, $version_cible) { if (upgrade_vers(1.801, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_rubriques ADD statut_tmp VARCHAR(10) NOT NULL, ADD date_tmp datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); include_spip('inc/rubriques'); calculer_rubriques(); maj_version(1.801); } // Nouvelles tables d'invalidation if (upgrade_vers(1.802, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_id_article_caches"); spip_query("DROP TABLE spip_id_auteur_caches"); spip_query("DROP TABLE spip_id_breve_caches"); spip_query("DROP TABLE spip_id_document_caches"); spip_query("DROP TABLE spip_id_forum_caches"); spip_query("DROP TABLE spip_id_groupe_caches"); spip_query("DROP TABLE spip_id_message_caches"); spip_query("DROP TABLE spip_id_mot_caches"); spip_query("DROP TABLE spip_id_rubrique_caches"); spip_query("DROP TABLE spip_id_signature_caches"); spip_query("DROP TABLE spip_id_syndic_article_caches"); spip_query("DROP TABLE spip_id_syndic_caches"); spip_query("DROP TABLE spip_id_type_caches"); spip_query("DROP TABLE spip_inclure_caches"); maj_version(1.802); } if (upgrade_vers(1.803, $version_installee, $version_cible)) { # 27 AOUT 2004 : conservons cette table pour autoriser les retours # de SPIP 1.8a6 CVS vers 1.7.2 # spip_query("DROP TABLE spip_forum_cache"); spip_query("DROP TABLE spip_inclure_caches"); maj_version(1.803); } if (upgrade_vers(1.804, $version_installee, $version_cible)) { // recreer la table spip_caches spip_query("DROP TABLE spip_caches"); creer_base(); maj_version(1.804); } /** * Recalculer tous les threads * * Fonction du plugin forum recopiee ici pour assurer la montee * de version dans tous les cas de figure **/ function maj_v018_calculer_threads() { // fixer les id_thread des debuts de discussion sql_update('spip_forum', array('id_thread' => 'id_forum'), "id_parent=0"); // reparer les messages qui n'ont pas l'id_secteur de leur parent do { $discussion = "0"; $precedent = 0; $r = sql_select("fille.id_forum AS id, maman.id_thread AS thread", 'spip_forum AS fille, spip_forum AS maman', "fille.id_parent = maman.id_forum AND fille.id_thread <> maman.id_thread", '', "thread"); while ($row = sql_fetch($r)) { if ($row['thread'] == $precedent) { $discussion .= "," . $row['id']; } else { if ($precedent) { sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ($discussion)"); } $precedent = $row['thread']; $discussion = $row['id']; } } sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ($discussion)"); } while ($discussion != "0"); } if (upgrade_vers(1.805, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_forum ADD id_thread bigint(21) DEFAULT '0' NOT NULL"); maj_v018_calculer_threads(); maj_version(1.805); } // tables d'orthographe #if ($version_installee < 1.806) # maj_version(1.806); // URLs propres (inc_version = 0.12) if (upgrade_vers(1.807, $version_installee, $version_cible)) { foreach (array('articles', 'breves', 'rubriques', 'mots') as $objets) { spip_query("ALTER TABLE spip_$objets ADD url_propre VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_$objets ADD INDEX url_propre (url_propre)"); } maj_version(1.807); } // referers de la veille if (upgrade_vers(1.808, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_referers ADD visites_veille INT UNSIGNED NOT NULL"); maj_version(1.808); } // corrections diverses if (upgrade_vers(1.809, $version_installee, $version_cible)) { // plus de retour possible vers 1.7.2 spip_query("DROP TABLE spip_forum_cache"); // les requetes ci-dessous ne s'appliqueront que si on est passe // par une certaine version de developpement - oublie de le faire // plus tot, car le code d'alors recreait purement et simplement // cette table spip_query("ALTER TABLE spip_versions DROP chapo"); spip_query("ALTER TABLE spip_versions DROP texte"); spip_query("ALTER TABLE spip_versions DROP ps"); spip_query("ALTER TABLE spip_versions DROP extra"); spip_query("ALTER TABLE spip_versions ADD champs text NOT NULL"); maj_version(1.809); } // Annuler les brouillons de forum jamais valides if (upgrade_vers(1.810, $version_installee, $version_cible)) { sql_delete("spip_forum", "statut='redac'"); maj_version(1.810); } if (upgrade_vers(1.811, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD extra longblob NULL"); maj_version(1.811); } if (upgrade_vers(1.812, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_documents ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); maj_version(1.812); } // Mise a jour des types MIME if (upgrade_vers(1.813, $version_installee, $version_cible)) { # rien a faire car c'est creer_base() qui s'en charge maj_version(1.813); } // URLs propres auteurs if (upgrade_vers(1.814, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD url_propre VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_auteurs ADD INDEX url_propre (url_propre)"); maj_version(1.814); } // Mots-cles sur les documents // + liens documents <-> sites et articles syndiques (podcasting) if (upgrade_vers(1.815, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_documents ADD distant VARCHAR(3) DEFAULT 'non'"); maj_version(1.815); } // Indexation des documents (rien a faire sauf reinstaller inc_auxbase) if (upgrade_vers(1.816, $version_installee, $version_cible)) { maj_version(1.816); } // Texte et descriptif des groupes de mots-cles if (upgrade_vers(1.817, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_groupes_mots ADD descriptif text NOT NULL AFTER titre"); spip_query("ALTER TABLE spip_groupes_mots ADD COLUMN texte longblob NOT NULL AFTER descriptif"); maj_version(1.817); } // Conformite des noms de certains champs (0minirezo => minirezo) if (upgrade_vers(1.818, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 0minirezo minirezo char(3) NOT NULL"); spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 1comite comite char(3) NOT NULL"); spip_query("ALTER TABLE spip_groupes_mots CHANGE COLUMN 6forum forum char(3) NOT NULL"); maj_version(1.818); } // Options de syndication : miroir + oubli if (upgrade_vers(1.819, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD miroir VARCHAR(3) DEFAULT 'non'"); spip_query("ALTER TABLE spip_syndic ADD oubli VARCHAR(3) DEFAULT 'non'"); maj_version(1.819); } // Un bug dans les 1.730 (il manquait le "ADD") if (upgrade_vers(1.820, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_auteurs ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_breves ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_mots ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_rubriques ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_syndic ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_forum ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_signatures ADD INDEX idx (idx)"); maj_version(1.820); } // reindexer les articles (on avait oublie les auteurs) if (upgrade_vers(1.821, $version_installee, $version_cible)) { spip_query("UPDATE spip_articles SET idx='1' WHERE idx='oui'"); maj_version(1.821); } // le 'type' des mots doit etre du texte, sinon on depasse en champ multi if (upgrade_vers(1.822, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_mots DROP INDEX type"); spip_query("ALTER TABLE spip_mots CHANGE type type TEXT NOT NULL"); maj_version(1.822); } // ajouter une table de fonctions pour ajax if (upgrade_vers(1.825, $version_installee, $version_cible)) { maj_version(1.825); } if (upgrade_vers(1.826, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_ajax_fonc DROP fonction"); maj_version(1.826); } } v016.php000066600000004343152442517720005772 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, versions 1.6* * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Mises à jour de SPIP n°016 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v016_dist($version_installee, $version_cible) { if (upgrade_vers(1.600, $version_installee, $version_cible)) { #8/08/07 plus d'indexation dans le core # include_spip('inc/indexation'); # purger_index(); # creer_liste_indexation(); maj_version(1.600); } if (upgrade_vers(1.601, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_forum ADD INDEX id_syndic (id_syndic)"); maj_version(1.601); } if (upgrade_vers(1.603, $version_installee, $version_cible)) { // supprimer les fichiers deplaces spip_unlink('inc_meta_cache.php'); spip_unlink('inc_meta_cache.php3'); spip_unlink('data/engines-list.ini'); maj_version(1.603); } if (upgrade_vers(1.604, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD lang VARCHAR(10) DEFAULT '' NOT NULL"); $u = spip_query("SELECT * FROM spip_auteurs WHERE prefs LIKE '%spip_lang%'"); while ($row = sql_fetch($u)) { $prefs = unserialize($row['prefs']); $l = $prefs['spip_lang']; unset($prefs['spip_lang']); spip_query("UPDATE spip_auteurs SET lang=" . _q($l) . ", prefs='" . addslashes(serialize($prefs)) . "' WHERE id_auteur=" . $row['id_auteur']); } $u = spip_query("SELECT lang FROM spip_auteurs"); maj_version(1.604, $u); } } v011.php000066600000002336152442517720005765 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, versions 1.1* * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Mises à jour de SPIP n°011 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v011_dist($version_installee, $version_cible) { if (upgrade_vers(1.1, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_petition"); spip_query("DROP TABLE spip_signatures_petition"); maj_version(1.1); } } v009.php000066600000013343152442517720005774 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, versions 0.9* * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Mises à jour de SPIP n°009 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v009_dist($version_installee, $version_cible) { if (upgrade_vers(0.98, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_articles ADD export VARCHAR(10) DEFAULT 'oui'"); spip_query("ALTER TABLE spip_articles ADD images TEXT DEFAULT ''"); spip_query("ALTER TABLE spip_articles ADD date_redac datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); spip_query("ALTER TABLE spip_articles DROP INDEX id_article"); spip_query("ALTER TABLE spip_articles ADD INDEX id_rubrique (id_rubrique)"); spip_query("ALTER TABLE spip_articles ADD visites INTEGER DEFAULT '0' NOT NULL"); spip_query("ALTER TABLE spip_articles ADD referers BLOB NOT NULL"); spip_query("ALTER TABLE spip_auteurs ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_auteurs ADD pgp BLOB NOT NULL"); spip_query("ALTER TABLE spip_auteurs_articles ADD INDEX id_auteur (id_auteur), ADD INDEX id_article (id_article)"); spip_query("ALTER TABLE spip_rubriques ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_rubriques ADD export VARCHAR(10) DEFAULT 'oui', ADD id_import BIGINT DEFAULT '0'"); spip_query("ALTER TABLE spip_breves ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_breves DROP INDEX id_breve"); spip_query("ALTER TABLE spip_breves DROP INDEX id_breve_2"); spip_query("ALTER TABLE spip_breves ADD INDEX id_rubrique (id_rubrique)"); spip_query("ALTER TABLE spip_forum ADD ip VARCHAR(16)"); spip_query("ALTER TABLE spip_forum ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_forum DROP INDEX id_forum"); spip_query("ALTER TABLE spip_forum ADD INDEX id_parent (id_parent), ADD INDEX id_rubrique (id_rubrique), ADD INDEX id_article(id_article), ADD INDEX id_breve(id_breve)"); maj_version(0.98); } if (upgrade_vers(0.99, $version_installee, $version_cible)) { $result = spip_query("SELECT DISTINCT id_article FROM spip_forum WHERE id_article!=0 AND id_parent=0"); while ($row = sql_fetch($result)) { unset($forums_article); $id_article = $row['id_article']; $result2 = spip_query("SELECT id_forum FROM spip_forum WHERE id_article=$id_article"); for (; ;) { unset($forums); while ($row2 = sql_fetch($result2)) { $forums[] = $row2['id_forum']; } if (!$forums) { break; } $forums = join(',', $forums); $forums_article[] = $forums; $result2 = spip_query("SELECT id_forum FROM spip_forum WHERE id_parent IN ($forums)"); } $forums_article = join(',', $forums_article); spip_query("UPDATE spip_forum SET id_article=$id_article WHERE id_forum IN ($forums_article)"); } $result = spip_query("SELECT DISTINCT id_breve FROM spip_forum WHERE id_breve!=0 AND id_parent=0"); while ($row = sql_fetch($result)) { unset($forums_breve); $id_breve = $row['id_breve']; $result2 = spip_query("SELECT id_forum FROM spip_forum WHERE id_breve=$id_breve"); for (; ;) { unset($forums); while ($row2 = sql_fetch($result2)) { $forums[] = $row2['id_forum']; } if (!$forums) { break; } $forums = join(',', $forums); $forums_breve[] = $forums; $result2 = spip_query("SELECT id_forum FROM spip_forum WHERE id_parent IN ($forums)"); } $forums_breve = join(',', $forums_breve); spip_query("UPDATE spip_forum SET id_breve=$id_breve WHERE id_forum IN ($forums_breve)"); } $result = spip_query("SELECT DISTINCT id_rubrique FROM spip_forum WHERE id_rubrique!=0 AND id_parent=0"); while ($row = sql_fetch($result)) { unset($forums_rubrique); $id_rubrique = $row['id_rubrique']; $result2 = spip_query("SELECT id_forum FROM spip_forum WHERE id_rubrique=$id_rubrique"); for (; ;) { unset($forums); while ($row2 = sql_fetch($result2)) { $forums[] = $row2['id_forum']; } if (!$forums) { break; } $forums = join(',', $forums); $forums_rubrique[] = $forums; $result2 = spip_query("SELECT id_forum FROM spip_forum WHERE id_parent IN ($forums)"); } $forums_rubrique = join(',', $forums_rubrique); spip_query("UPDATE spip_forum SET id_rubrique=$id_rubrique WHERE id_forum IN ($forums_rubrique)"); } maj_version(0.99); } if (upgrade_vers(0.997, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_index"); maj_version(0.997); } if (upgrade_vers(0.999, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs CHANGE pass pass tinyblob NOT NULL"); spip_query("ALTER TABLE spip_auteurs ADD htpass tinyblob NOT NULL"); $result = spip_query("SELECT id_auteur, pass FROM spip_auteurs WHERE pass!=''"); while ($r = sql_fetch($result)) { $htpass = generer_htpass($r['pass']); $pass = md5($pass); spip_query("UPDATE spip_auteurs SET pass='$pass', htpass='$htpass' WHERE id_auteur=" . $r['id_auteur']); } maj_version(0.999); } } v010.php000066600000003510152442517720005757 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, versions 1.0* * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Mises à jour de SPIP n°010 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v010_dist($version_installee, $version_cible) { if (upgrade_vers(1.01, $version_installee, $version_cible)) { spip_query("UPDATE spip_forum SET statut='publie' WHERE statut=''"); maj_version(1.01); } if (upgrade_vers(1.02, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_forum ADD id_auteur BIGINT DEFAULT '0' NOT NULL"); maj_version(1.02); } if (upgrade_vers(1.03, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_maj"); maj_version(1.03); } if (upgrade_vers(1.04, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD accepter_forum VARCHAR(3)"); maj_version(1.04); } if (upgrade_vers(1.05, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_petition"); spip_query("DROP TABLE spip_signatures_petition"); maj_version(1.05); } } v017.php000066600000021751152442517720005775 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, versions 1.7* * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Mises à jour de SPIP n°017 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v017_dist($version_installee, $version_cible) { if (upgrade_vers(1.702, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD extra longblob NULL"); spip_query("ALTER TABLE spip_auteurs ADD extra longblob NULL"); spip_query("ALTER TABLE spip_breves ADD extra longblob NULL"); spip_query("ALTER TABLE spip_rubriques ADD extra longblob NULL"); spip_query("ALTER TABLE spip_mots ADD extra longblob NULL"); // recuperer les eventuels 'supplement' installes en 1.701 if ($version_installee == 1.701) { spip_query("UPDATE spip_articles SET extra = supplement"); spip_query("ALTER TABLE spip_articles DROP supplement"); spip_query("UPDATE spip_auteurs SET extra = supplement"); spip_query("ALTER TABLE spip_auteurs DROP supplement"); spip_query("UPDATE spip_breves SET extra = supplement"); spip_query("ALTER TABLE spip_breves DROP supplement"); spip_query("UPDATE spip_rubriques SET extra = supplement"); spip_query("ALTER TABLE spip_rubriques DROP supplement"); spip_query("UPDATE spip_mots SET extra = supplement"); spip_query("ALTER TABLE spip_mots DROP supplement"); } $u = spip_query("SELECT extra FROM spip_articles"); $u &= spip_query("SELECT extra FROM spip_auteurs"); $u &= spip_query("SELECT extra FROM spip_breves"); $u &= spip_query("SELECT extra FROM spip_rubriques"); $u &= spip_query("SELECT extra FROM spip_mots"); maj_version(1.702, $u); } if (upgrade_vers(1.703, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD lang VARCHAR(10) DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_rubriques ADD lang VARCHAR(10) DEFAULT '' NOT NULL"); maj_version(1.703); } if (upgrade_vers(1.704, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD INDEX lang (lang)"); spip_query("ALTER TABLE spip_auteurs ADD INDEX lang (lang)"); spip_query("ALTER TABLE spip_rubriques ADD INDEX lang (lang)"); maj_version(1.704); } if (upgrade_vers(1.705, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD langue_choisie VARCHAR(3) DEFAULT 'non'"); spip_query("ALTER TABLE spip_rubriques ADD langue_choisie VARCHAR(3) DEFAULT 'non'"); maj_version(1.705); } if (upgrade_vers(1.707, $version_installee, $version_cible)) { spip_query("UPDATE spip_articles SET langue_choisie='oui' WHERE MID(lang,1,1) != '.' AND lang != ''"); spip_query("UPDATE spip_articles SET lang=MID(lang,2,8) WHERE langue_choisie = 'non'"); spip_query("UPDATE spip_rubriques SET langue_choisie='oui' WHERE MID(lang,1,1) != '.' AND lang != ''"); spip_query("UPDATE spip_rubriques SET lang=MID(lang,2,8) WHERE langue_choisie = 'non'"); maj_version(1.707); } if (upgrade_vers(1.708, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_breves ADD lang VARCHAR(10) DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_breves ADD langue_choisie VARCHAR(3) DEFAULT 'non'"); maj_version(1.708); } if (upgrade_vers(1.709, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD id_trad bigint(21) DEFAULT '0' NOT NULL"); spip_query("ALTER TABLE spip_articles ADD INDEX id_trad (id_trad)"); maj_version(1.709); } if (upgrade_vers(1.717, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD INDEX date_modif (date_modif)"); maj_version(1.717); } if (upgrade_vers(1.718, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_referers DROP domaine"); spip_query("ALTER TABLE spip_referers_articles DROP domaine"); spip_query("ALTER TABLE spip_referers_temp DROP domaine"); maj_version(1.718); } if (upgrade_vers(1.722, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD nom_site tinytext NOT NULL"); spip_query("ALTER TABLE spip_articles ADD url_site VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_articles ADD INDEX url_site (url_site)"); if ($version_installee >= 1.720) { spip_query("UPDATE spip_articles SET url_site=url_ref"); spip_query("ALTER TABLE spip_articles DROP INDEX url_ref"); spip_query("ALTER TABLE spip_articles DROP url_ref"); } maj_version(1.722); } if (upgrade_vers(1.723, $version_installee, $version_cible)) { if ($version_installee == 1.722) { spip_query("ALTER TABLE spip_articles MODIFY url_site VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_articles DROP INDEX url_site;"); spip_query("ALTER TABLE spip_articles ADD INDEX url_site (url_site);"); } maj_version(1.723); } if (upgrade_vers(1.724, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_messages ADD date_fin datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); maj_version(1.724); } if (upgrade_vers(1.726, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD low_sec tinytext NOT NULL"); maj_version(1.726); } if (upgrade_vers(1.727, $version_installee, $version_cible)) { // occitans : oci_xx -> oc_xx spip_query("UPDATE spip_auteurs SET lang=REPLACE(lang,'oci_', 'oc_') WHERE lang LIKE 'oci_%'"); spip_query("UPDATE spip_rubriques SET lang=REPLACE(lang,'oci_', 'oc_') WHERE lang LIKE 'oci_%'"); spip_query("UPDATE spip_articles SET lang=REPLACE(lang,'oci_', 'oc_') WHERE lang LIKE 'oci_%'"); spip_query("UPDATE spip_breves SET lang=REPLACE(lang,'oci_', 'oc_') WHERE lang LIKE 'oci_%'"); maj_version(1.727); } // Ici version 1.7 officielle if (upgrade_vers(1.728, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD id_version int unsigned DEFAULT '0' NOT NULL"); maj_version(1.728); } if (upgrade_vers(1.730, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_articles ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_auteurs ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_auteurs ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_breves ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_breves ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_mots ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_mots ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_rubriques ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_rubriques ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_syndic ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_syndic ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_forum ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_forum ADD INDEX idx (idx)"); spip_query("ALTER TABLE spip_signatures ADD idx ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_signatures ADD INDEX idx (idx)"); maj_version(1.730); } if (upgrade_vers(1.731, $version_installee, $version_cible)) { spip_query("UPDATE spip_articles SET idx='1' where lang IN ('de','vi')"); spip_query("UPDATE spip_rubriques SET idx='1' where lang IN ('de','vi')"); spip_query("UPDATE spip_breves SET idx='1' where lang IN ('de','vi')"); spip_query("UPDATE spip_auteurs SET idx='1' where lang IN ('de','vi')"); maj_version(1.731); } if (upgrade_vers(1.732, $version_installee, $version_cible)) { // en correction d'un vieux truc qui avait fait sauter le champ inclus sur les bases version 1.415 spip_query("ALTER TABLE spip_documents ADD inclus VARCHAR(3) DEFAULT 'non'"); maj_version(1.732); } if (upgrade_vers(1.733, $version_installee, $version_cible)) { // spip_query("ALTER TABLE spip_articles ADD id_version int unsigned DEFAULT '0' NOT NULL"); spip_query("DROP TABLE spip_versions"); spip_query("DROP TABLE spip_versions_fragments"); creer_base(); maj_version(1.733); } #if ($version_installee < 1.734) { # // integrer nouvelles tables auxiliaires du compilateur ESJ # creer_base(); # maj_version(1.734); #} } v019.php000066600000067177152442517720006013 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, versions >= 1.9.3-dev * * Cette version de SPIP introduit une nouvelle gestion des * mises à jour par tableau * * On la fait coincider rétroactivement avec l'état de la 1.9.2 * L'index numérique entier est multiplié par 1000 (resultat < SVN c'est ok) * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } // FLV est incrustable, la MAJ precedente l'avait oublie $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'][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`)"), array('spip_query', "DROP TABLE IF EXISTS spip_tmp"), array( 'spip_query', "CREATE TABLE spip_tmp SELECT `id_thread`,MAX(`date_heure`) AS dt FROM spip_forum GROUP BY `id_thread`" ), array('sql_alter', "TABLE spip_tmp ADD INDEX `p` (`id_thread`)"), array('spip_query', "UPDATE spip_forum AS F JOIN spip_tmp AS T ON F.id_thread=T.id_thread SET F.date_thread=T.dt"), array('spip_query', "DROP TABLE spip_tmp"), ); /** * Mise à jour 1_934 : Retrait de `_DIR_IMG` dans le champ fichier de la table des doc **/ function maj_1_934() { // attention, en cas de mutualisation _DIR_IMG contient quelque chose comme sites/urldusite/IMG/ // essayons en ne prenant que le dernier segment $dir_img = basename(_DIR_IMG) . '/'; $res = spip_query("SELECT fichier FROM spip_documents WHERE fichier LIKE " . _q($dir_img . '%') . " LIMIT 0,1"); if (!$row = spip_fetch_array($res)) { //Êsinon on essaye avec le chemin complet // il faut donc verifier qu'on a bien le bon nom de repertoire $dir_img = substr(_DIR_IMG, strlen(_DIR_RACINE)); } $n = strlen($dir_img) + 1; spip_query("UPDATE spip_documents SET `fichier`=substring(fichier,$n) WHERE `fichier` LIKE " . _q($dir_img . '%')); } $GLOBALS['maj'][1934] = array(array('maj_1_934')); /** * Mise à jour 1_935 : calcul du nouveau champ 'vu' sur les associations documents_xx **/ function maj_1_935() { include_spip('inc/texte'); foreach (array( 'article' => 'id_article', 'rubrique' => 'id_rubrique', 'breve' => 'id_breve' ) as $type => $id_table_objet) { $table_objet = "$type" . "s"; $chapo = $type == 'article' ? ",a.chapo" : ""; $res = spip_query("SELECT a.$id_table_objet,a.texte $chapo FROM spip_documents_$table_objet AS d JOIN spip_$table_objet AS a ON a.$id_table_objet=d.$id_table_objet GROUP BY $id_table_objet"); while ($row = sql_fetch($res)) { $GLOBALS['doublons_documents_inclus'] = array(); traiter_modeles(($chapo ? $row['chapo'] : "") . $row['texte'], true); // detecter les doublons if (count($GLOBALS['doublons_documents_inclus'])) { $id = $row[$id_table_objet]; $liste = "(" . implode(",$id,'oui'),(", $GLOBALS['doublons_documents_inclus']) . ",$id,'oui')"; spip_query("REPLACE INTO spip_documents_$table_objet (`id_document`,`$id_table_objet`,`vu`) VALUES $liste"); } } } } $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') ); /** * Convertit un champ de type `blob` en champ de type `text` * * @param string $table Nom de la table * @param string $champ Nom du champ dans la table * @param string $type Type de champ de destination, par exemple `LONGTEXT` **/ function convertir_un_champ_blob_en_text($table, $champ, $type) { // precaution : definir le charset par defaut de la table, car c'est lui qui prevaut // et il faut qu'il corresponde au charset de la connexion qui est celui // dans lequel on a ecrit le champ en blob if ($charset = sql_getfetsel('@@character_set_connection')) { sql_alter("TABLE $table DEFAULT CHARACTER SET " . $charset); } $res = spip_query("SHOW FULL COLUMNS FROM $table LIKE '$champ'"); if ($row = sql_fetch($res)) { if (strtolower($row['Type']) != strtolower($type)) { $default = $row['Default'] ? (" DEFAULT " . sql_quote($row['Default'])) : ""; $notnull = ($row['Null'] == 'YES') ? "" : " NOT NULL"; sql_alter("TABLE $table CHANGE $champ $champ $type $default $notnull"); } } } $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"), array('convertir_un_champ_blob_en_text', "spip_auteurs", "extra", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_breves", "texte", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_breves", "extra", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_messages", "texte", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_mots", "texte", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_mots", "extra", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_groupes_mots", "texte", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_rubriques", "texte", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_rubriques", "extra", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_syndic", "nom_site", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_syndic", "descriptif", "TEXT"), array('convertir_un_champ_blob_en_text', "spip_syndic", "extra", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_syndic_articles", "descriptif", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_petitions", "texte", "LONGTEXT"), array('convertir_un_champ_blob_en_text', "spip_ortho_cache", "suggest", "TEXT"), ); /** * Mise à jour 1_938 : suppression des id_type de documents, remplacés par extension **/ function maj_1_938() { $res = sql_select('extension', 'spip_documents', "extension='' OR extension is NULL"); if ($n = sql_count($res)) { $repli = false; // verifier que la colonne id_type est toujours la (update post 1.938) $desc = sql_showtable('spip_documents'); if (!$desc or !isset($desc['field']['id_type'])) { $repli = true; } $s = sql_select('extension' . ($repli ? '' : ',id_type'), 'spip_types_documents'); while ($t = sql_fetch($s)) { if (isset($t['id_type'])) { spip_query("UPDATE spip_documents SET `extension`=" . _q($t['extension']) . " WHERE `id_type`=" . _q($t['id_type'])); } else { spip_query("UPDATE spip_documents SET `extension`=" . _q($t['extension']) . " WHERE fichier LIKE " . _q("%." . $t['extension'])); } } $res = sql_select('extension', 'spip_documents', "extension='' OR extension is NULL"); if ($n = sql_count($res)) { spip_log("Table spip_documents : Colonne extension incomplete : $n lignes vides"); } } } $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 array('sql_alter', "TABLE spip_documents ADD `extension` VARCHAR(10) DEFAULT '' NOT NULL "), array('sql_alter', "TABLE spip_documents ADD INDEX `extension` (`extension`)"), array('maj_1_938'), array('sql_alter', "TABLE spip_documents DROP INDEX `id_type`, DROP `id_type`"), ## supprimer l'autoincrement avant de supprimer la PRIMARY KEY array('sql_alter', "TABLE spip_types_documents CHANGE `id_type` `id_type` BIGINT( 21 ) NOT NULL "), array('sql_alter', "TABLE spip_types_documents DROP PRIMARY KEY"), array('sql_alter', "TABLE spip_types_documents DROP `id_type`"), array('sql_alter', "TABLE spip_types_documents DROP INDEX `extension`"), ## recreer la PRIMARY KEY sur spip_types_documents.extension array('sql_alter', "TABLE spip_types_documents ADD PRIMARY KEY (`extension`)"), ); $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"), array('sql_alter', "TABLE spip_referers CHANGE `visites_jour` `visites_jour` INT UNSIGNED DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_referers CHANGE `visites_veille` `visites_veille` INT UNSIGNED DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_referers_articles CHANGE `visites` `visites` INT UNSIGNED DEFAULT '0' NOT NULL") ); $GLOBALS['maj'][1940] = array( array('spip_query', "DROP TABLE spip_caches"), ); $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'][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"), array('sql_alter', "TABLE spip_rubriques CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_rubriques CHANGE `statut_tmp` `statut_tmp` varchar(10) DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_syndic CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_syndic_articles CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_forum CHANGE `statut` `statut` varchar(8) DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_signatures CHANGE `statut` `statut` varchar(10) DEFAULT '0' NOT NULL") ); // suppression de l'indexation dans la version standard $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`"), array('sql_alter', "TABLE spip_auteurs DROP `idx`"), array('sql_alter', "TABLE spip_breves DROP KEY `idx`"), array('sql_alter', "TABLE spip_breves DROP `idx`"), array('sql_alter', "TABLE spip_mots DROP KEY `idx`"), array('sql_alter', "TABLE spip_mots DROP `idx`"), array('sql_alter', "TABLE spip_rubriques DROP KEY `idx`"), array('sql_alter', "TABLE spip_rubriques DROP `idx`"), # array('sql_alter', "TABLE spip_documents DROP KEY `idx`"), array('sql_alter', "TABLE spip_documents DROP `idx`"), array('sql_alter', "TABLE spip_syndic DROP KEY `idx`"), array('sql_alter', "TABLE spip_syndic DROP `idx`"), array('sql_alter', "TABLE spip_forum DROP KEY `idx`"), array('sql_alter', "TABLE spip_forum DROP `idx`"), array('sql_alter', "TABLE spip_signatures DROP KEY `idx`"), array('sql_alter', "TABLE spip_signatures DROP `idx`"), array('spip_query', "DROP TABLE spip_index"), array('spip_query', "DROP TABLE spip_index_dico"), ); $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'][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"), array('sql_alter', "TABLE spip_petitions CHANGE `message` `message` CHAR (3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_petitions CHANGE `texte` `texte` LONGTEXT DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_articles CHANGE `surtitre` `surtitre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_articles CHANGE `titre` `titre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_articles CHANGE `soustitre` `soustitre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_articles CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_articles CHANGE `chapo` `chapo` mediumtext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_articles CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_articles CHANGE `ps` `ps` mediumtext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_articles CHANGE `accepter_forum` `accepter_forum` CHAR(3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_articles CHANGE `nom_site` `nom_site` tinytext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_articles CHANGE `url_site` `url_site` VARCHAR(255) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_articles CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_auteurs CHANGE `nom` `nom` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_auteurs CHANGE `bio` `bio` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_auteurs CHANGE `email` `email` tinytext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_auteurs CHANGE `nom_site` `nom_site` tinytext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_auteurs CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_auteurs CHANGE `pass` `pass` tinytext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_auteurs CHANGE `low_sec` `low_sec` tinytext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_auteurs CHANGE `pgp` `pgp` TEXT DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_auteurs CHANGE `htpass` `htpass` tinytext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_breves CHANGE `titre` `titre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_breves CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_breves CHANGE `lien_titre` `lien_titre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_breves CHANGE `lien_url` `lien_url` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_messages CHANGE `titre` `titre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_messages CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_messages CHANGE `type` `type` varchar(6) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_messages CHANGE `rv` `rv` varchar(3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_mots CHANGE `titre` `titre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_mots CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_mots CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_mots CHANGE `type` `type` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_mots CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_groupes_mots CHANGE `titre` `titre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_groupes_mots CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_groupes_mots CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_groupes_mots CHANGE `unseul` `unseul` varchar(3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_groupes_mots CHANGE `obligatoire` `obligatoire` varchar(3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_groupes_mots CHANGE `articles` `articles` varchar(3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_groupes_mots CHANGE `breves` `breves` varchar(3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_groupes_mots CHANGE `rubriques` `rubriques` varchar(3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_groupes_mots CHANGE `syndic` `syndic` varchar(3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_groupes_mots CHANGE `minirezo` `minirezo` varchar(3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_groupes_mots CHANGE `comite` `comite` varchar(3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_groupes_mots CHANGE `forum` `forum` varchar(3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_rubriques CHANGE `titre` `titre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_rubriques CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_rubriques CHANGE `texte` `texte` longtext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_rubriques CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_documents CHANGE `extension` `extension` VARCHAR(10) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_documents CHANGE `titre` `titre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_documents CHANGE `date` `date` datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"), array('sql_alter', "TABLE spip_documents CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_documents CHANGE `fichier` `fichier` varchar(255) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_types_documents CHANGE `extension` `extension` varchar(10) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_types_documents CHANGE `titre` `titre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_types_documents CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_types_documents CHANGE `mime_type` `mime_type` varchar(100) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_syndic CHANGE `nom_site` `nom_site` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_syndic CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_syndic CHANGE `url_syndic` `url_syndic` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_syndic CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_syndic CHANGE `url_propre` `url_propre` VARCHAR(255) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_syndic CHANGE `syndication` `syndication` VARCHAR(3) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_syndic_articles CHANGE `titre` `titre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_syndic_articles CHANGE `url` `url` VARCHAR(255) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_syndic_articles CHANGE `lesauteurs` `lesauteurs` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_syndic_articles CHANGE `descriptif` `descriptif` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_forum CHANGE `titre` `titre` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_forum CHANGE `texte` `texte` mediumtext DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_forum CHANGE `auteur` `auteur` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_forum CHANGE `email_auteur` `email_auteur` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_forum CHANGE `nom_site` `nom_site` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_forum CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_forum CHANGE `ip` `ip` varchar(16) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_signatures CHANGE `nom_email` `nom_email` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_signatures CHANGE `ad_email` `ad_email` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_signatures CHANGE `nom_site` `nom_site` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_signatures CHANGE `url_site` `url_site` text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_signatures CHANGE `message` `message` mediumtext DEFAULT '' NOT NULL") ); $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`"), array('sql_alter', "TABLE spip_forum DROP INDEX `id_syndic`"), array('sql_alter', "TABLE spip_forum DROP INDEX `id_rubrique`"), array('sql_alter', "TABLE spip_forum DROP INDEX `date_thread`"), array('sql_alter', "TABLE spip_forum DROP INDEX `statut`"), array( 'sql_alter', "TABLE spip_forum ADD INDEX `optimal` (`statut`,`id_parent`,`id_article`,`date_heure`,`id_breve`,`id_syndic`,`id_rubrique`)" ) ); $GLOBALS['maj'][1947] = array( array('sql_alter', "TABLE spip_articles DROP INDEX `url_site`"), array('sql_alter', "TABLE spip_articles DROP INDEX `date_modif`"), array('sql_alter', "TABLE spip_auteurs DROP INDEX `lang`") ); // mauvaise manip $GLOBALS['maj'][1949] = array( array('sql_alter', "TABLE spip_versions DROP INDEX `date`"), array('sql_alter', "TABLE spip_versions DROP INDEX `id_auteur`") ); /** * Mise à jour 1_950 : Gestion du prefixe pour la table des urls * * @param float $installee Numéro de version actuellement installée **/ 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 ($installee >= 1.946) { serie_alter('950a', $GLOBALS['maj'][1946]); } if ($installee >= 1.947) { serie_alter('950b', $GLOBALS['maj'][1947]); } if ($installee >= 1.949) { @serie_alter('950c', $GLOBALS['maj'][1949]); } global $tables_auxiliaires; include_spip('base/auxiliaires'); $v = $tables_auxiliaires[$k = 'spip_urls']; sql_create($k, $v['field'], $v['key'], false, false); foreach (array( 'article' => 'id_article', 'rubrique' => 'id_rubrique', 'breve' => 'id_breve', 'auteur' => 'id_auteur', 'mot' => 'id_mot', 'syndic' => 'id_syndic' ) as $type => $id_objet) { $table = ($type == 'syndic') ? $type : ($type . "s"); $date = ($type == 'breve') ? 'date_heure' : (($type == 'auteur') ? 'maj' : (($type == 'mot') ? 'maj' : 'date')); $q = @sql_select("url_propre AS url, $id_objet AS id_objet, '$type' AS type, $date as date", "spip_$table", "url_propre<>''"); if (!$q) { return; } // anormal, mais ne pas boucler en erreur while ($r = sql_fetch($q)) { sql_replace('spip_urls', $r); } spip_log("table $table : " . sql_count($q) . " urls propres copiees"); sql_alter("TABLE spip_$table DROP INDEX `url_propre`"); sql_alter("TABLE spip_$table DROP `url_propre`"); } } // Donner a la fonction ci-dessus le numero de version installee // AVANT que la mise a jour ait commencee $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'][1951] = array( array('sql_alter', "TABLE spip_versions CHANGE `id_version` `id_version` bigint(21) DEFAULT 0 NOT NULL") ); /** * Mise à jour 1_952 : Transformation des documents * * - image => mode=image * - vignette => mode=vignette **/ function maj_1_952() { $ok = sql_alter("TABLE spip_documents CHANGE `mode` `mode` enum('vignette','image','document') DEFAULT NULL"); if ($ok) { $s = sql_select("v.id_document as id_document", "spip_documents as d join spip_documents as v ON d.id_vignette=v.id_document"); $vignettes = array(); while ($t = sql_fetch($s)) { $vignettes[] = intval($t['id_document']); } $ok &= spip_query("UPDATE spip_documents SET `mode`='image' WHERE `mode`='vignette'"); $ok &= spip_query("UPDATE spip_documents SET `mode`='vignette' WHERE `mode`='image' AND " . sql_in('id_document', $vignettes)); } if (!$ok) { die('echec sur maj_1_952()'); } } $GLOBALS['maj'][1952] = array(array('maj_1_952')); $GLOBALS['maj'][1953] = array(array('upgrade_types_documents')); $GLOBALS['maj'][1954] = array( //pas de psd en <img> array('spip_query', "UPDATE spip_types_documents SET `inclus`='non' WHERE `extension`='psd'"), //ajout csv array('spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`) VALUES ('csv', 'CSV')"), array('spip_query', "UPDATE spip_types_documents SET `mime_type`='text/csv' WHERE `extension`='csv'"), //ajout mkv array( 'spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('mkv', 'Matroska Video', 'embed')" ), array('spip_query', "UPDATE spip_types_documents SET `mime_type`='video/x-mkv' WHERE `extension`='mkv'"), //ajout mka array( 'spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('mka', 'Matroska Audio', 'embed')" ), array('spip_query', "UPDATE spip_types_documents SET `mime_type`='audio/x-mka' WHERE `extension`='mka'"), //ajout kml array( 'spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`) VALUES ('kml', 'Keyhole Markup Language')" ), array( 'spip_query', "UPDATE spip_types_documents SET `mime_type`='application/vnd.google-earth.kml+xml' WHERE `extension`='kml'" ), //ajout kmz array( 'spip_query', "INSERT IGNORE INTO spip_types_documents (`extension`, `titre`) VALUES ('kmz', 'Google Earth Placemark File')" ), array( 'spip_query', "UPDATE spip_types_documents SET `mime_type`='application/vnd.google-earth.kmz' WHERE `extension`='kmz'" ) ); if ($GLOBALS['meta']['version_installee'] > 1.950) // 1.950 lisait un bug dans auxiliaires.php corrige a present { $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'][1938] = array( # creer un champ plus informatif, et son index array('sql_alter', "TABLE spip_documents ADD `extension` VARCHAR(10) DEFAULT '' NOT NULL "), # recopier l'ancien champ dans le nouveau array('maj_1_938'), # supprimer l'ancien champ et son index array('sql_alter', "TABLE spip_documents DROP INDEX `id_type`, DROP `id_type`"), ## supprimer l'autoincrement avant de supprimer la PRIMARY KEY array('sql_alter', "TABLE spip_types_documents CHANGE `id_type` `id_type` BIGINT( 21 ) NOT NULL "), # le champ id_type devient superflu array('sql_alter', "TABLE spip_types_documents DROP `id_type`"), array('sql_alter', "TABLE spip_types_documents ADD PRIMARY KEY (`extension`)") ); // PG veut une valeur par defaut a l'insertion // http://trac.rezo.net/trac/spip/changeset/10482 $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'][1958] = array( array('sql_alter', "TABLE spip_referers_articles DROP date") ); v019_pre193.php000066600000035222152442517720007100 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, versions 1.9* * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Mises à jour de SPIP n°019 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function v019_pre193($version_installee, $version_cible) { // Syndication : ajout de l'option resume=oui/non et de la langue if (upgrade_vers(1.901, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD `resume` VARCHAR(3) DEFAULT 'oui'"); spip_query("ALTER TABLE spip_syndic_articles ADD `lang` VARCHAR(10) DEFAULT '' NOT NULL"); maj_version(1.901); } // Syndication : ajout de source, url_source, tags if (upgrade_vers(1.902, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic_articles ADD `url_source` TINYTEXT DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_syndic_articles ADD `source` TINYTEXT DEFAULT '' NOT NULL"); spip_query("ALTER TABLE spip_syndic_articles ADD `tags` TEXT DEFAULT '' NOT NULL"); maj_version(1.902); } // URLs propres des sites (sait-on jamais) // + oubli des KEY url_propre sur les auteurs si installation neuve if (upgrade_vers(1.903, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD `url_propre` VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_syndic ADD INDEX `url_propre` (`url_propre`)"); spip_query("ALTER TABLE spip_auteurs ADD INDEX `url_propre` (`url_propre`)"); maj_version(1.903); } // suppression des anciennes tables temporaires des visites // (maintenant stockees sous forme de fichiers) if (upgrade_vers(1.904, $version_installee, $version_cible)) { spip_query("DROP TABLE IF EXISTS spip_visites_temp"); spip_query("DROP TABLE IF EXISTS spip_referers_temp"); maj_version(1.904); } // fusion des 10 tables index en une seule // pour fonctions futures evoluees du moteur de recherche if (upgrade_vers(1.905, $version_installee, $version_cible)) { // agrandir le champ "valeur" de spip_meta pour pouvoir y stocker // des choses plus sympa spip_query("ALTER TABLE spip_meta DROP INDEX `valeur`"); spip_query("ALTER TABLE spip_meta CHANGE `valeur` `valeur` TEXT"); // table des correspondances table->id_table $liste_tables = array(); $liste_tables[1] = 'spip_articles'; $liste_tables[2] = 'spip_auteurs'; $liste_tables[3] = 'spip_breves'; $liste_tables[4] = 'spip_documents'; $liste_tables[5] = 'spip_forum'; $liste_tables[6] = 'spip_mots'; $liste_tables[7] = 'spip_rubriques'; $liste_tables[8] = 'spip_signatures'; $liste_tables[9] = 'spip_syndic'; ecrire_meta('index_table', serialize($liste_tables)); ## devenu inutile car suppression totale de l'indexation /* spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_article` as id_objet,'1' as id_table FROM spip_index_articles"); spip_query("DROP TABLE IF EXISTS spip_index_articles"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_auteur` as id_objet,'2' as id_table FROM spip_index_auteurs"); spip_query("DROP TABLE IF EXISTS spip_index_auteurs"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_breve` as id_objet,'3' as id_table FROM spip_index_breves"); spip_query("DROP TABLE IF EXISTS spip_index_breves"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_document` as id_objet,'4' as id_table FROM spip_index_documents"); spip_query("DROP TABLE IF EXISTS spip_index_documents"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_forum` as id_objet,'5' as id_table FROM spip_index_forum"); spip_query("DROP TABLE IF EXISTS spip_index_forum"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_mot` as id_objet,'6' as id_table FROM spip_index_mots"); spip_query("DROP TABLE IF EXISTS spip_index_mots"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_rubrique` as id_objet,'7' as id_table FROM spip_index_rubriques"); spip_query("DROP TABLE IF EXISTS spip_index_rubriques"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_signature` as id_objet,'8' as id_table FROM spip_index_signatures"); spip_query("DROP TABLE IF EXISTS spip_index_signatures"); spip_query("INSERT INTO spip_index (`hash`,`points`,`id_objet`,`id_table`) SELECT `hash`,`points`,`id_syndic` as id_objet,'9' as `id_table FROM spip_index_syndic"); spip_query("DROP TABLE IF EXISTS spip_index_syndic"); */ maj_version(1.905); } // cette table est desormais geree par le plugin "podcast_client", on la // supprime si le plugin n'est pas active ; risque inherent a l'utilisation // de versions alpha :-) if (upgrade_vers(1.906, $version_installee, $version_cible)) { if (!@in_array('podcast_client', $GLOBALS['plugins'])) { spip_query("DROP TABLE spip_documents_syndic"); } maj_version(1.906); } if (upgrade_vers(1.907, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_forum ADD INDEX `idx` (`idx`)"); maj_version(1.907); } // Oups ! on stockait les tags de syndication sous la forme rel="category" // au lieu de rel="directory" - http://microformats.org/wiki/rel-directory if (upgrade_vers(1.908, $version_installee, $version_cible)) { spip_query("UPDATE spip_syndic_articles SET `tags` = REPLACE(`tags`, 'rel=\"category\">', 'rel=\"directory\">') WHERE `tags` like '%category%'"); maj_version(1.908); } if (upgrade_vers(1.909, $version_installee, $version_cible)) { spip_query("ALTER IGNORE TABLE spip_mots_articles ADD PRIMARY KEY (`id_article`, `id_mot`)"); spip_query("ALTER IGNORE TABLE spip_mots_breves ADD PRIMARY KEY (`id_breve`, `id_mot`)"); spip_query("ALTER IGNORE TABLE spip_mots_rubriques ADD PRIMARY KEY (`id_rubrique`, `id_mot`)"); spip_query("ALTER IGNORE TABLE spip_mots_syndic ADD PRIMARY KEY (`id_syndic`, `id_mot`)"); spip_query("ALTER IGNORE TABLE spip_mots_documents ADD PRIMARY KEY (`id_document`, `id_mot`)"); spip_query("ALTER IGNORE TABLE spip_mots_forum ADD PRIMARY KEY (`id_forum`, `id_mot`)"); maj_version(1.909); } if (upgrade_vers(1.910, $version_installee, $version_cible)) { spip_query("ALTER IGNORE TABLE spip_auteurs_articles ADD PRIMARY KEY (`id_auteur`, `id_article`)"); spip_query("ALTER IGNORE TABLE spip_auteurs_rubriques ADD PRIMARY KEY (`id_auteur`, `id_rubrique`)"); spip_query("ALTER IGNORE TABLE spip_auteurs_messages ADD PRIMARY KEY (`id_auteur`, `id_message`)"); maj_version(1.910); } if (upgrade_vers(1.911, $version_installee, $version_cible)) { spip_query("ALTER IGNORE TABLE spip_auteurs_articles DROP INDEX `id_auteur`"); spip_query("ALTER IGNORE TABLE spip_auteurs_rubriques DROP INDEX `id_auteur`"); spip_query("ALTER IGNORE TABLE spip_auteurs_messages DROP INDEX `id_auteur`"); spip_query("ALTER IGNORE TABLE spip_mots_articles DROP INDEX `id_article`"); spip_query("ALTER IGNORE TABLE spip_mots_breves DROP INDEX `id_breve`"); spip_query("ALTER IGNORE TABLE spip_mots_rubriques DROP INDEX `id_rubrique`"); spip_query("ALTER IGNORE TABLE spip_mots_syndic DROP INDEX `id_syndic`"); spip_query("ALTER IGNORE TABLE spip_mots_forum DROP INDEX `id_forum`"); spip_query("ALTER IGNORE TABLE spip_mots_documents DROP INDEX `id_document`"); # 18 juillet 2007: table depreciee # spip_query("ALTER IGNORE TABLE spip_caches DROP INDEX fichier"); maj_version(1.911); } // Le logo du site n'est plus le logo par defaut des rubriques // mais pour assurer la compatibilite ascendante, on le duplique if (upgrade_vers(1.912, $version_installee, $version_cible)) { @copy(_DIR_LOGOS . 'rubon0.gif', _DIR_LOGOS . 'siteon0.gif'); @copy(_DIR_LOGOS . 'ruboff0.gif', _DIR_LOGOS . 'siteoff0.gif'); @copy(_DIR_LOGOS . 'rubon0.jpg', _DIR_LOGOS . 'siteon0.jpg'); @copy(_DIR_LOGOS . 'ruboff0.jpg', _DIR_LOGOS . 'siteoff0.jpg'); @copy(_DIR_LOGOS . 'rubon0.png', _DIR_LOGOS . 'siteon0.png'); @copy(_DIR_LOGOS . 'ruboff0.png', _DIR_LOGOS . 'siteoff0.png'); maj_version(1.912); } // suppression de auteur_modif qui n'est plus utilise nulle part if (upgrade_vers(1.913, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles DROP `auteur_modif`"); maj_version(1.913); } // Ajout de SVG if (upgrade_vers(1.914, $version_installee, $version_cible)) { spip_query("INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('svg', 'Scalable Vector Graphics', 'embed')"); spip_query("UPDATE spip_types_documents SET `mime_type`='image/svg+xml' WHERE `extension`='svg'"); maj_version(1.914); } // Ajout de plein de type mime if (upgrade_vers(1.915, $version_installee, $version_cible)) { maj_version(1.915); } // refaire l'upgrade 1.905 qui a pu foirer en partie a cause de la requete ALTER sur spip_meta if (upgrade_vers(1.916, $version_installee, $version_cible)) { // agrandir le champ "valeur" de spip_meta pour pouvoir y stocker // des choses plus sympa spip_query("ALTER TABLE spip_meta DROP INDEX `valeur`"); spip_query("ALTER TABLE spip_meta CHANGE `valeur` `valeur` TEXT"); #8/08/07 plus d'indexation dans le core //include_spip('inc/indexation'); //update_index_tables(); maj_version(1.916); } if (upgrade_vers(1.917, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_documents DROP `inclus`"); maj_version(1.917); } // Permettre d'enregistrer un numero IP dans les revisions d'articles // a la place de l'id_auteur if (upgrade_vers(1.918, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_versions CHANGE `id_auteur` `id_auteur` VARCHAR(23)"); maj_version(1.918); } if (upgrade_vers(1.919, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_ajax_fonc DROP `id_auteur`"); maj_version('1.919'); } if (upgrade_vers(1.920, $version_installee, $version_cible)) { spip_query("ALTER IGNORE TABLE spip_documents_articles ADD PRIMARY KEY (`id_article`, `id_document`)"); spip_query("ALTER IGNORE TABLE spip_documents_breves ADD PRIMARY KEY (`id_breve`, `id_document`)"); spip_query("ALTER IGNORE TABLE spip_documents_rubriques ADD PRIMARY KEY (`id_rubrique`, `id_document`)"); spip_query("ALTER IGNORE TABLE spip_documents_articles DROP INDEX `id_article`"); spip_query("ALTER IGNORE TABLE spip_documents_breves DROP INDEX `id_breve`"); spip_query("ALTER IGNORE TABLE spip_documents_rubriques DROP INDEX `id_rubrique`"); maj_version('1.920'); } if (upgrade_vers(1.922, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_meta ADD `impt` ENUM('non', 'oui') DEFAULT 'oui' NOT NULL AFTER `valeur`"); $meta_serveur = array( 'version_installee', 'adresse_site', 'alea_ephemere_ancien', 'alea_ephemere', 'alea_ephemere_date', 'langue_site', 'langues_proposees', 'date_calcul_rubriques', 'derniere_modif', 'optimiser_table', 'drapeau_edition', 'creer_preview', 'taille_preview', 'creer_htpasswd', 'creer_htaccess', 'gd_formats_read', 'gd_formats', 'netpbm_formats', 'formats_graphiques', 'image_process', 'plugin_header', 'plugin' ); foreach ($meta_serveur as $nom) { spip_query("UPDATE spip_meta SET `impt`='non' WHERE `nom`=" . _q($nom)); } maj_version('1.922'); } if (upgrade_vers(1.923, $version_installee, $version_cible)) { if (isset($GLOBALS['meta']['IMPORT_tables_noimport'])) { $IMPORT_tables_noimport = unserialize($GLOBALS['meta']['IMPORT_tables_noimport']); foreach ($IMPORT_tables_noimport as $key => $table) { if ($table == 'spip_meta') { unset($IMPORT_tables_noimport[$key]); } } ecrire_meta('IMPORT_tables_noimport', serialize($IMPORT_tables_noimport), 'non'); } maj_version('1.923'); } if (upgrade_vers(1.924, $version_installee, $version_cible)) { spip_query('DROP TABLE spip_ajax_fonc'); maj_version('1.924'); } if (upgrade_vers(1.925, $version_installee, $version_cible)) { include_spip('inc/flock'); /* deplacement des sessions */ $f_session = preg_files('data', 'session_'); $repertoire = _DIR_SESSIONS; if (!@file_exists($repertoire)) { $repertoire = preg_replace(',' . _DIR_TMP . ',', '', $repertoire); $repertoire = sous_repertoire(_DIR_TMP, $repertoire); } foreach ($f_session as $f) { $d = basename($f); @copy($f, $repertoire . $d); } /* deplacement des visites */ $f_visites = preg_files('data/visites'); $repertoire = sous_repertoire(_DIR_TMP, 'visites'); foreach ($f_visites as $f) { $d = basename($f); @copy($f, $repertoire . $d); } /* deplacement des upload */ $auteurs = array(); $req = spip_query("SELECT `login` FROM spip_auteurs WHERE `statut` = '0minirezo'"); while ($row = sql_fetch($req)) { $auteurs[] = $row['login']; } $f_upload = preg_files('upload', -1, 10000, $auteurs); $repertoire = _DIR_TRANSFERT; if (!@file_exists($repertoire)) { $repertoire = preg_replace(',' . _DIR_TMP . ',', '', $repertoire); $repertoire = sous_repertoire(_DIR_TMP, $repertoire); } foreach ($auteurs as $login) { if (is_dir('upload/' . $login)) { $sous_repertoire = sous_repertoire(_DIR_TRANSFERT, $login); } } foreach ($f_upload as $f) { @copy($f, _DIR_TMP . $f); } /* deplacement des dumps */ $f_session = preg_files('data', 'dump'); $repertoire = _DIR_DUMP; if (!@file_exists($repertoire)) { $repertoire = preg_replace(',' . _DIR_TMP . ',', '', $repertoire); $repertoire = sous_repertoire(_DIR_TMP, $repertoire); } foreach ($f_session as $f) { $d = basename($f); @copy($f, $repertoire . $d); } maj_version('1.925'); } // Ajout de MP4 if (upgrade_vers(1.926, $version_installee, $version_cible)) { spip_query("INSERT IGNORE INTO spip_types_documents (`extension`, `titre`, `inclus`) VALUES ('mp4', 'MPEG4', 'embed')"); spip_query("UPDATE spip_types_documents SET `mime_type`='application/mp4' WHERE `extension`='mp4'"); maj_version('1.926'); } } v014.php000066600000033527152442517720005776 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, versions 1.4* * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Mises à jour de SPIP n°014 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v014_dist($version_installee, $version_cible) { if (upgrade_vers(1.404, $version_installee, $version_cible)) { spip_query("UPDATE spip_mots SET type='Mots sans groupe...' WHERE type=''"); $result = spip_query("SELECT * FROM spip_mots GROUP BY type"); while ($row = sql_fetch($result)) { $type = addslashes($row['type']); // Old style, doit echouer spip_log('ne pas tenir compte de l erreur spip_groupes_mots ci-dessous:', 'mysql'); spip_query("INSERT INTO spip_groupes_mots (titre, unseul, obligatoire, articles, breves, rubriques, syndic, 0minirezo, 1comite, 6forum) VALUES (\"$type\", 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')"); // New style, devrait marcher spip_query("INSERT INTO spip_groupes_mots (titre, unseul, obligatoire, articles, breves, rubriques, syndic, minirezo, comite, forum) VALUES (\"$type\", 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')"); } sql_delete("spip_mots", "titre='kawax'"); maj_version(1.404); } if (upgrade_vers(1.405, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_mots ADD id_groupe bigint(21) NOT NULL"); $result = spip_query("SELECT * FROM spip_groupes_mots"); while ($row = sql_fetch($result)) { $id_groupe = addslashes($row['id_groupe']); $type = addslashes($row['titre']); spip_query("UPDATE spip_mots SET id_groupe = '$id_groupe' WHERE type='$type'"); } maj_version(1.405); } if (upgrade_vers(1.408, $version_installee, $version_cible)) { // Images articles passent dans spip_documents $result = spip_query("SELECT id_article, images FROM spip_articles WHERE LENGTH(images) > 0"); $types = array('jpg' => 1, 'png' => 2, 'gif' => 3); while ($row = @sql_fetch($result)) { $id_article = $row['id_article']; $images = $row['images']; $images = explode(",", $images); reset($images); $replace = '_orig_'; foreach ($images as $val) { $image = explode("|", $val); $fichier = $image[0]; $largeur = $image[1]; $hauteur = $image[2]; preg_match(",-([0-9]+)\.(gif|jpg|png)$,i", $fichier, $match); $id_type = intval($types[$match[2]]); $num_img = $match[1]; $fichier = _DIR_IMG . $fichier; $taille = @filesize($fichier); // ici on n'a pas les fonctions absctract ! spip_query("INSERT INTO spip_documents (titre, id_type, fichier, mode, largeur, hauteur, taille) VALUES ('image $largeur x $hauteur', $id_type, '$fichier', 'vignette', '$largeur', '$hauteur', '$taille')"); $id_document = mysqli_insert_id(_mysql_link()); if ($id_document > 0) { spip_query("INSERT INTO spip_documents_articles (id_document, id_article) VALUES ($id_document, $id_article)"); $replace = "REPLACE($replace, '<IMG$num_img|', '<IM_$id_document|')"; } else { echo _T('texte_erreur_mise_niveau_base', array('fichier' => $fichier, 'id_article' => $id_article)); exit; } } $replace = "REPLACE($replace, '<IM_', '<IMG')"; $replace_chapo = str_replace('_orig_', 'chapo', $replace); $replace_descriptif = str_replace('_orig_', 'descriptif', $replace); $replace_texte = str_replace('_orig_', 'texte', $replace); $replace_ps = str_replace('_orig_', 'ps', $replace); spip_query("UPDATE spip_articles SET chapo=$replace_chapo, descriptif=$replace_descriptif, texte=$replace_texte, ps=$replace_ps WHERE id_article=$id_article"); } spip_query("ALTER TABLE spip_articles DROP images"); maj_version(1.408); } if (upgrade_vers(1.414, $version_installee, $version_cible)) { // Forum par defaut "en dur" dans les spip_articles // -> non, prio (priori), pos (posteriori), abo (abonnement) $accepter_forum = substr($GLOBALS['meta']["forums_publics"], 0, 3); $result = spip_query("ALTER TABLE spip_articles CHANGE accepter_forum accepter_forum CHAR(3) NOT NULL"); $result = spip_query("UPDATE spip_articles SET accepter_forum='$accepter_forum' WHERE accepter_forum != 'non'"); maj_version(1.414); } /* if ($version_installee == 1.415) { spip_query("ALTER TABLE spip_documents DROP inclus"); maj_version (1.415); } */ if (upgrade_vers(1.417, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic_articles DROP date_index"); maj_version(1.417); } if (upgrade_vers(1.418, $version_installee, $version_cible)) { $result = spip_query("SELECT * FROM spip_auteurs WHERE statut = '0minirezo' AND email != '' ORDER BY id_auteur LIMIT 1"); if ($webmaster = sql_fetch($result)) { ecrire_meta('email_webmaster', $webmaster['email']); } maj_version(1.418); } if (upgrade_vers(1.419, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD alea_actuel TINYTEXT DEFAULT ''"); spip_query("ALTER TABLE spip_auteurs ADD alea_futur TINYTEXT DEFAULT ''"); spip_query("UPDATE spip_auteurs SET alea_futur = FLOOR(32000*RAND())"); maj_version(1.419); } if (upgrade_vers(1.420, $version_installee, $version_cible)) { spip_query("UPDATE spip_auteurs SET alea_actuel='' WHERE statut='nouveau'"); maj_version(1.420); } if (upgrade_vers(1.421, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD auteur_modif bigint(21) DEFAULT '0' NOT NULL"); spip_query("ALTER TABLE spip_articles ADD date_modif datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); maj_version(1.421); } if (upgrade_vers(1.432, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles DROP referers"); spip_query("ALTER TABLE spip_articles ADD referers INTEGER DEFAULT '0' NOT NULL"); spip_query("ALTER TABLE spip_articles ADD popularite INTEGER DEFAULT '0' NOT NULL"); maj_version(1.432); } if (upgrade_vers(1.436, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_documents ADD date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); maj_version(1.436); } if (upgrade_vers(1.437, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_visites ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_visites_referers ADD maj TIMESTAMP"); maj_version(1.437); } if (upgrade_vers(1.438, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD INDEX id_secteur (id_secteur)"); spip_query("ALTER TABLE spip_articles ADD INDEX statut (statut, date)"); maj_version(1.438); } if (upgrade_vers(1.439, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD INDEX statut (statut, date_syndic)"); spip_query("ALTER TABLE spip_syndic_articles ADD INDEX statut (statut)"); spip_query("ALTER TABLE spip_syndic_articles CHANGE url url VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_syndic_articles ADD INDEX url (url)"); maj_version(1.439); } if (upgrade_vers(1.440, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_visites_temp CHANGE ip ip INTEGER UNSIGNED NOT NULL"); maj_version(1.440); } if (upgrade_vers(1.441, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_visites_temp CHANGE date date DATE NOT NULL"); spip_query("ALTER TABLE spip_visites CHANGE date date DATE NOT NULL"); spip_query("ALTER TABLE spip_visites_referers CHANGE date date DATE NOT NULL"); maj_version(1.441); } if (upgrade_vers(1.442, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD prefs TINYTEXT NOT NULL"); maj_version(1.442); } if (upgrade_vers(1.443, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs CHANGE login login VARCHAR(255) BINARY NOT NULL"); spip_query("ALTER TABLE spip_auteurs CHANGE statut statut VARCHAR(255) NOT NULL"); spip_query("ALTER TABLE spip_auteurs ADD INDEX login (login)"); spip_query("ALTER TABLE spip_auteurs ADD INDEX statut (statut)"); maj_version(1.443); } if (upgrade_vers(1.444, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD moderation VARCHAR(3) NOT NULL"); maj_version(1.444); } if (upgrade_vers(1.457, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_visites"); spip_query("DROP TABLE spip_visites_temp"); spip_query("DROP TABLE spip_visites_referers"); creer_base(); // crade, a ameliorer :-(( maj_version(1.457); } if (upgrade_vers(1.458, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD cookie_oubli TINYTEXT NOT NULL"); maj_version(1.458); } if (upgrade_vers(1.459, $version_installee, $version_cible)) { $result = spip_query("SELECT type FROM spip_mots GROUP BY type"); while ($row = sql_fetch($result)) { $type = addslashes($row['type']); $res = spip_query("SELECT * FROM spip_groupes_mots WHERE titre='$type'"); if (sql_count($res) == 0) { spip_query("INSERT INTO spip_groupes_mots (titre, unseul, obligatoire, articles, breves, rubriques, syndic, minirezo, comite, forum) VALUES ('$type', 'non', 'non', 'oui', 'oui', 'non', 'oui', 'oui', 'oui', 'non')"); if ($id_groupe = mysqli_insert_id(_mysql_link())) { spip_query("UPDATE spip_mots SET id_groupe = '$id_groupe' WHERE type='$type'"); } } } spip_query("UPDATE spip_articles SET popularite=0"); maj_version(1.459); } if (upgrade_vers(1.460, $version_installee, $version_cible)) { // remettre les mots dans les groupes dupliques par erreur // dans la precedente version du paragraphe de maj 1.459 // et supprimer ceux-ci $result = spip_query("SELECT * FROM spip_groupes_mots ORDER BY id_groupe"); while ($row = sql_fetch($result)) { $titre = addslashes($row['titre']); if (!$vu[$titre]) { $vu[$titre] = true; $id_groupe = $row['id_groupe']; spip_query("UPDATE spip_mots SET id_groupe=$id_groupe WHERE type='$titre'"); sql_delete("spip_groupes_mots", "titre='$titre' AND id_groupe<>$id_groupe"); } } maj_version(1.460); } if (upgrade_vers(1.462, $version_installee, $version_cible)) { spip_query("UPDATE spip_types_documents SET inclus='embed' WHERE inclus!='non' AND extension IN ('aiff', 'asf', 'avi', 'mid', 'mov', 'mp3', 'mpg', 'ogg', 'qt', 'ra', 'ram', 'rm', 'swf', 'wav', 'wmv')"); maj_version(1.462); } if (upgrade_vers(1.463, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles CHANGE popularite popularite DOUBLE"); spip_query("ALTER TABLE spip_visites_temp ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_referers_temp ADD maj TIMESTAMP"); maj_version(1.463); } // l'upgrade < 1.462 ci-dessus etait fausse, d'ou correctif if (upgrade_vers(1.464, $version_installee, $version_cible) and ($version_installee >= 1.462)) { $res = spip_query("SELECT id_type, extension FROM spip_types_documents WHERE id_type NOT IN (1,2,3)"); while ($row = sql_fetch($res)) { $extension = $row['extension']; $id_type = $row['id_type']; spip_query("UPDATE spip_documents SET id_type=$id_type WHERE fichier like '%.$extension'"); } maj_version(1.464); } if (upgrade_vers(1.465, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles CHANGE popularite popularite DOUBLE NOT NULL"); maj_version(1.465); } if (upgrade_vers(1.466, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD source VARCHAR(10) DEFAULT 'spip' NOT NULL"); maj_version(1.466); } if (upgrade_vers(1.468, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD INDEX en_ligne (en_ligne)"); spip_query("ALTER TABLE spip_forum ADD INDEX statut (statut, date_heure)"); maj_version(1.468); } if (upgrade_vers(1.470, $version_installee, $version_cible)) { if ($version_installee >= 1.467) { // annule les "listes de diff" spip_query("DROP TABLE spip_listes"); spip_query("ALTER TABLE spip_auteurs DROP abonne"); spip_query("ALTER TABLE spip_auteurs DROP abonne_pass"); } maj_version(1.470); } if (upgrade_vers(1.471, $version_installee, $version_cible)) { if ($version_installee >= 1.470) { // annule les "maj" spip_query("ALTER TABLE spip_auteurs_articles DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_auteurs_rubriques DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_auteurs_messages DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_documents_articles DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_documents_rubriques DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_documents_breves DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_mots_articles DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_mots_breves DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_mots_rubriques DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_mots_syndic DROP maj TIMESTAMP"); spip_query("ALTER TABLE spip_mots_forum DROP maj TIMESTAMP"); } maj_version(1.471); } if (upgrade_vers(1.472, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_referers ADD visites_jour INTEGER UNSIGNED NOT NULL"); maj_version(1.472); } if (upgrade_vers(1.473, $version_installee, $version_cible)) { spip_query("UPDATE spip_syndic_articles SET url = REPLACE(url, '&', '&')"); spip_query("UPDATE spip_syndic SET url_site = REPLACE(url_site, '&', '&')"); maj_version(1.473); } } v013.php000066600000006204152442517720005765 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, versions 1.3* * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Mises à jour de SPIP n°013 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v013_dist($version_installee, $version_cible) { if (upgrade_vers(1.3, $version_installee, $version_cible)) { // Modifier la syndication (pour liste de sites) spip_query("ALTER TABLE spip_syndic ADD syndication VARCHAR(3) NOT NULL"); spip_query("ALTER TABLE spip_syndic ADD statut VARCHAR(10) NOT NULL"); spip_query("ALTER TABLE spip_syndic ADD date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); spip_query("UPDATE spip_syndic SET syndication='oui', statut='publie', date=NOW()"); // Statut pour articles syndication, pour pouvoir desactiver un article spip_query("ALTER TABLE spip_syndic_articles ADD statut VARCHAR(10) NOT NULL"); spip_query("UPDATE spip_syndic_articles SET statut='publie'"); maj_version(1.3); } if (upgrade_vers(1.301, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_forum ADD id_syndic bigint(21) DEFAULT '0' NOT NULL"); maj_version(1.301); } if (upgrade_vers(1.302, $version_installee, $version_cible)) { # spip_query("ALTER TABLE spip_forum_cache DROP PRIMARY KEY"); # spip_query("ALTER TABLE spip_forum_cache DROP INDEX fichier"); # spip_query("ALTER TABLE spip_forum_cache ADD PRIMARY KEY (fichier, id_forum, id_article, id_rubrique, id_breve, id_syndic)"); spip_query("ALTER TABLE spip_forum ADD INDEX id_syndic (id_syndic)"); maj_version(1.302); } if (upgrade_vers(1.303, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_rubriques ADD date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); spip_query("ALTER TABLE spip_syndic ADD date_syndic datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); spip_query("UPDATE spip_syndic SET date_syndic=date"); maj_version(1.303); } if (upgrade_vers(1.306, $version_installee, $version_cible)) { spip_query("DROP TABLE spip_index_syndic_articles"); spip_query("ALTER TABLE spip_syndic ADD date_index datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); spip_query("ALTER TABLE spip_syndic ADD INDEX date_index (date_index)"); maj_version(1.306); } if (upgrade_vers(1.307, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic_articles ADD descriptif blob NOT NULL"); maj_version(1.307); } } svn10000.php000066600000056127152442517720006474 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, version >= 10000 * * Gestion des mises à jour du cœur de SPIP par un tableau global `maj` * indexé par le numero SVN du changement * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } // Type cls et sty pour LaTeX $GLOBALS['maj'][10990] = array(array('upgrade_types_documents')); // Type 3gp: http://www.faqs.org/rfcs/rfc3839.html // Aller plus vite pour les vieilles versions en redeclarant une seule les doc unset($GLOBALS['maj'][10990]); $GLOBALS['maj'][11042] = array(array('upgrade_types_documents')); // Un bug permettait au champ 'upload' d'etre vide, provoquant // l'impossibilite de telecharger une image // http://trac.rezo.net/trac/spip/ticket/1238 $GLOBALS['maj'][11171] = array( array('spip_query', "UPDATE spip_types_documents SET upload='oui' WHERE upload IS NULL OR upload!='non'") ); /** * Mise à jour 11268 : renommer spip_recherches la mal nommée en spip_resultats **/ function maj_11268() { global $tables_auxiliaires; include_spip('base/auxiliaires'); $v = $tables_auxiliaires[$k = 'spip_resultats']; sql_create($k, $v['field'], $v['key'], false, false); } $GLOBALS['maj'][11268] = array(array('maj_11268')); /** * Mise à jour 11276 : réparer les éventuelles tables spip_documents * en se fondant sur l'extension de la colonne fichier * * @uses maj_1_938() **/ function maj_11276() { include_spip('maj/v019'); maj_1_938(); } $GLOBALS['maj'][11276] = array(array('maj_11276')); /** * Mise à jour 11388 : réparer les referers d'article, qui sont vides depuis r10572 */ function maj_11388() { $s = sql_select('referer_md5', 'spip_referers_articles', "referer='' OR referer IS NULL"); while ($t = sql_fetch($s)) { $k = sql_fetsel('referer', 'spip_referers', 'referer_md5=' . sql_quote($t['referer_md5'])); if ($k['referer']) { spip_query('UPDATE spip_referers_articles SET referer=' . sql_quote($k['referer']) . ' WHERE referer_md5=' . sql_quote($t['referer_md5']) . " AND (referer='' OR referer IS NULL)" ); } } } $GLOBALS['maj'][11388] = array(array('maj_11388')); /** * Mise à jour 11431 : réparer spip_mots.type = titre du groupe */ function maj_11431() { // mysql only // spip_query("UPDATE spip_mots AS a LEFT JOIN spip_groupes_mots AS b ON (a.id_groupe = b.id_groupe) SET a.type=b.titre"); // selection des mots cles dont le type est different du groupe $res = sql_select( array("a.id_mot AS id_mot", "b.titre AS type"), array("spip_mots AS a LEFT JOIN spip_groupes_mots AS b ON (a.id_groupe = b.id_groupe)"), array("a.type != b.titre")); // mise a jour de ces mots la if ($res) { while ($r = sql_fetch($res)) { sql_updateq('spip_mots', array('type' => $r['type']), 'id_mot=' . sql_quote($r['id_mot'])); } } } $GLOBALS['maj'][11431] = array(array('maj_11431')); /** * Mise à jour 11778 : réparer spip_types_documents.id_type qui est parfois encore présent */ function maj_11778() { // si presence id_type $s = sql_showtable('spip_types_documents'); if (isset($s['field']['id_type'])) { sql_alter('TABLE spip_types_documents CHANGE id_type id_type BIGINT(21) NOT NULL'); sql_alter('TABLE spip_types_documents DROP id_type'); sql_alter('TABLE spip_types_documents ADD PRIMARY KEY (extension)'); } } $GLOBALS['maj'][11778] = array(array('maj_11778')); /** * Mise à jour 11790 : Optimisation des forums */ function maj_11790() { # sql_alter('TABLE spip_forum DROP INDEX id_message id_message'); sql_alter('TABLE spip_forum ADD INDEX id_parent (id_parent)'); sql_alter('TABLE spip_forum ADD INDEX id_auteur (id_auteur)'); sql_alter('TABLE spip_forum ADD INDEX id_thread (id_thread)'); } $GLOBALS['maj'][11790] = array(array('maj_11790')); $GLOBALS['maj'][11794] = array(); // ajout de spip_documents_forum $GLOBALS['maj'][11961] = array( array('sql_alter', "TABLE spip_groupes_mots CHANGE `tables` tables_liees text DEFAULT '' NOT NULL AFTER obligatoire"), // si tables a ete cree on le renomme array('sql_alter', "TABLE spip_groupes_mots ADD tables_liees text DEFAULT '' NOT NULL AFTER obligatoire"), // sinon on l'ajoute array('sql_update', 'spip_groupes_mots', array('tables_liees' => "''"), "articles REGEXP '.*'"), // si le champ articles est encore la, on reinit la conversion array( 'sql_update', 'spip_groupes_mots', array('tables_liees' => "concat(tables_liees,'articles,')"), "articles='oui'" ), // sinon ces 4 requetes ne feront rien array('sql_update', 'spip_groupes_mots', array('tables_liees' => "concat(tables_liees,'breves,')"), "breves='oui'"), array( 'sql_update', 'spip_groupes_mots', array('tables_liees' => "concat(tables_liees,'rubriques,')"), "rubriques='oui'" ), array('sql_update', 'spip_groupes_mots', array('tables_liees' => "concat(tables_liees,'syndic,')"), "syndic='oui'"), ); /** * Mise à jour 12008 : Réunir en une seule table les liens de documents * spip_documents_articles et spip_documents_forum */ function maj_12008() { // Creer spip_documents_liens global $tables_auxiliaires; include_spip('base/auxiliaires'); $v = $tables_auxiliaires[$k = 'spip_documents_liens']; sql_create($k, $v['field'], $v['key'], false, false); // Recopier les donnees foreach (array('article', 'breve', 'rubrique', 'auteur', 'forum') as $l) { if ($s = sql_select('*', 'spip_documents_' . $l . 's') or $s = sql_select('*', 'spip_documents_' . $l) ) { $tampon = array(); while ($t = sql_fetch($s)) { // transformer id_xx=N en (id_objet=N, objet=xx) $t['id_objet'] = $t["id_$l"]; $t['objet'] = $l; unset($t["id_$l"]); unset($t['maj']); $tampon[] = $t; if (count($tampon) > 10000) { sql_insertq_multi('spip_documents_liens', $tampon); $tampon = array(); } } if (count($tampon)) { sql_insertq_multi('spip_documents_liens', $tampon); } } } } $GLOBALS['maj'][12008] = array( //array('sql_drop_table',"spip_documents_liens"), // tant pis pour ceux qui ont joue a 11974 array('sql_alter', "TABLE spip_documents_liens DROP PRIMARY KEY"), array('sql_alter', "TABLE spip_documents_liens ADD id_objet bigint(21) DEFAULT '0' NOT NULL AFTER id_document"), array('sql_alter', "TABLE spip_documents_liens ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"), array( 'sql_update', 'spip_documents_liens', array('id_objet' => "id_article", 'objet' => "'article'"), "id_article IS NOT NULL AND id_article>0" ), array( 'sql_update', 'spip_documents_liens', array('id_objet' => "id_rubrique", 'objet' => "'rubrique'"), "id_rubrique IS NOT NULL AND id_rubrique>0" ), array( 'sql_update', 'spip_documents_liens', array('id_objet' => "id_breve", 'objet' => "'breve'"), "id_breve IS NOT NULL AND id_breve>0" ), array( 'sql_update', 'spip_documents_liens', array('id_objet' => "id_auteur", 'objet' => "'auteur'"), "id_auteur IS NOT NULL AND id_auteur>0" ), array( 'sql_update', 'spip_documents_liens', array('id_objet' => "id_forum", 'objet' => "'forum'"), "id_forum IS NOT NULL AND id_forum>0" ), array('sql_alter', "TABLE spip_documents_liens ADD PRIMARY KEY (id_document,id_objet,objet)"), array('sql_alter', "TABLE spip_documents_liens DROP id_article"), array('sql_alter', "TABLE spip_documents_liens DROP id_rubrique"), array('sql_alter', "TABLE spip_documents_liens DROP id_breve"), array('sql_alter', "TABLE spip_documents_liens DROP id_auteur"), array('sql_alter', "TABLE spip_documents_liens DROP id_forum"), array('maj_12008'), ); // destruction des tables spip_documents_articles etc, cf. 12008 $GLOBALS['maj'][12009] = array( array('sql_drop_table', "spip_documents_articles"), array('sql_drop_table', "spip_documents_breves"), array('sql_drop_table', "spip_documents_rubriques"), array('sql_drop_table', "spip_documents_auteurs"), # plugin #FORMULAIRE_UPLOAD array('sql_drop_table', "spip_documents_syndic") # plugin podcast_client ); // destruction des champs articles breves rubriques et syndic, cf. 11961 $GLOBALS['maj'][12010] = array( array('sql_alter', "TABLE spip_groupes_mots DROP articles"), array('sql_alter', "TABLE spip_groupes_mots DROP breves"), array('sql_alter', "TABLE spip_groupes_mots DROP rubriques"), array('sql_alter', "TABLE spip_groupes_mots DROP syndic"), ); /** * Mise à jour 13135 : réparer le calcul des rubriques ayant des articles postdatés */ function maj_13135() { include_spip('inc/rubriques'); calculer_prochain_postdate(); // supprimer les eventuels vieux cache plugin qui n'utilisaient pas _chemin @spip_unlink(_CACHE_PLUGINS_OPT); @spip_unlink(_CACHE_PLUGINS_FCT); } $GLOBALS['maj'][13135] = array(array('maj_13135')); // Type flac: http://flac.sourceforge.net $GLOBALS['maj'][13333] = array(array('upgrade_types_documents')); // http://archives.rezo.net/spip-zone.mbox/200903.mbox/%3Cbfc33ad70903141606q2e4c53f2k4fef6b45e611a04f@mail.gmail.com%3E $GLOBALS['maj'][13833] = array( array('sql_alter', "TABLE spip_documents_liens ADD INDEX objet(id_objet,objet)") ); // Fin upgrade commun branche 2.0 $GLOBALS['maj'][13904] = array( array('sql_alter', "TABLE spip_auteurs ADD webmestre varchar(3) DEFAULT 'non' NOT NULL"), array( 'sql_update', 'spip_auteurs', array('webmestre' => "'oui'"), sql_in("id_auteur", defined('_ID_WEBMESTRES') ? explode(':', _ID_WEBMESTRES) : (autoriser('configurer') ? array($GLOBALS['visiteur_session']['id_auteur']) : array(0))) ) // le webmestre est celui qui fait l'upgrade si rien de defini ); // sites plantes en mode "'su" au lieu de "sus" $GLOBALS['maj'][13929] = array( array('sql_update', "spip_syndic", array('syndication' => "'sus'"), "syndication LIKE '\\'%'") ); // Types de fichiers m4a/m4b/m4p/m4u/m4v/dv // Types de fichiers Open XML (cro$oft) $GLOBALS['maj'][14558] = array(array('upgrade_types_documents')); // refaire les upgrade dont les numeros sont inferieurs a ceux de la branche 2.0 // etre sur qu'ils sont bien unipotents(?)... $GLOBALS['maj'][14559] = $GLOBALS['maj'][13904] + $GLOBALS['maj'][13929] + $GLOBALS['maj'][14558]; // La version 14588 etait une mauvaise piste: // Retour en arriere pour ceux qui l'ont subi, ne rien faire sinon if (@$GLOBALS['meta']['version_installee'] >= 14588) { // "mode" est un mot-cle d'Oracle $GLOBALS['maj'][14588] = array( array('sql_alter', "TABLE spip_documents DROP INDEX mode"), array( 'sql_alter', "TABLE spip_documents CHANGE mode genre ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL" ), array('sql_alter', "TABLE spip_documents ADD INDEX genre(genre)") ); // solution moins intrusive au pb de mot-cle d'Oracle, retour avant 14588 $GLOBALS['maj'][14598] = array( array('sql_alter', "TABLE spip_documents DROP INDEX genre"), array( 'sql_alter', "TABLE spip_documents CHANGE genre mode ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL" ), array('sql_alter', "TABLE spip_documents ADD INDEX mode(mode)") ); } // Restauration correcte des types mime des fichiers Ogg // http://trac.rezo.net/trac/spip/ticket/1941 // + Types de fichiers : f4a/f4b/f4p/f4v/mpc http://en.wikipedia.org/wiki/Flv#File_formats // + Report du commit oublié : http://trac.rezo.net/trac/spip/changeset/14272 $GLOBALS['maj'][15676] = array(array('upgrade_types_documents')); // Type de fichiers : webm http://en.wikipedia.org/wiki/Flv#File_formats $GLOBALS['maj'][15827] = array(array('upgrade_types_documents')); $GLOBALS['maj'][16428] = array( array('maj_liens', 'auteur'), // creer la table liens array('maj_liens', 'auteur', 'article'), array('sql_drop_table', "spip_auteurs_articles"), array('maj_liens', 'auteur', 'rubrique'), array('sql_drop_table', "spip_auteurs_rubriques"), array('maj_liens', 'auteur', 'message'), array('sql_drop_table', "spip_auteurs_messages"), ); /** * Mise à jour des tables de liens * * Crée la table de lien au nouveau format (spip_xx_liens) ou insère * les données d'ancien format dans la nouveau format. * * Par exemple pour réunir en une seule table les liens de documents, * spip_documents_articles et spip_documents_forum * * Supprime la table au vieux format une fois les données transférées. * * @uses creer_ou_upgrader_table() * @uses maj_liens_insertq_multi_check() * * @param string $pivot * Nom de la table pivot, tel que `auteur` * @param string $l * Vide : crée la table de lien pivot. * Sinon, nom de la table à lier, tel que `article`, et dans ce cas là, * remplit spip_auteurs_liens à partir de spip_auteurs_articles. */ function maj_liens($pivot, $l = '') { @define('_LOG_FILTRE_GRAVITE', 8); $exceptions_pluriel = array('forum' => 'forum', 'syndic' => 'syndic'); $pivot = preg_replace(',[^\w],', '', $pivot); // securite $pivots = (isset($exceptions_pluriel[$pivot]) ? $exceptions_pluriel[$pivot] : $pivot . "s"); $liens = "spip_" . $pivots . "_liens"; $id_pivot = "id_" . $pivot; // Creer spip_auteurs_liens global $tables_auxiliaires; if (!$l) { include_spip('base/auxiliaires'); include_spip('base/create'); creer_ou_upgrader_table($liens, $tables_auxiliaires[$liens], false); } else { // Preparer $l = preg_replace(',[^\w],', '', $l); // securite $primary = "id_$l"; $objet = ($l == 'syndic' ? 'site' : $l); $ls = (isset($exceptions_pluriel[$l]) ? $exceptions_pluriel[$l] : $l . "s"); $ancienne_table = 'spip_' . $pivots . '_' . $ls; $pool = 400; $trouver_table = charger_fonction('trouver_table', 'base'); if (!$desc = $trouver_table($ancienne_table)) { return; } // securite pour ne pas perdre de donnees if (!$trouver_table($liens)) { return; } $champs = $desc['field']; if (isset($champs['maj'])) { unset($champs['maj']); } if (isset($champs[$primary])) { unset($champs[$primary]); } $champs = array_keys($champs); // ne garder que les champs qui existent sur la table destination if ($desc_cible = $trouver_table($liens)) { $champs = array_intersect($champs, array_keys($desc_cible['field'])); } $champs[] = "$primary as id_objet"; $champs[] = "'$objet' as objet"; $champs = implode(', ', $champs); // Recopier les donnees $sub_pool = 100; while ($ids = array_map('reset', sql_allfetsel("$primary", $ancienne_table, '', '', '', "0,$sub_pool"))) { $insert = array(); foreach ($ids as $id) { $n = sql_countsel($liens, "objet='$objet' AND id_objet=" . intval($id)); while ($t = sql_allfetsel($champs, $ancienne_table, "$primary=" . intval($id), '', $id_pivot, "$n,$pool")) { $n += count($t); // empiler en s'assurant a minima de l'unicite while ($r = array_shift($t)) { $insert[$r[$id_pivot] . ':' . $r['id_objet']] = $r; } if (count($insert) >= $sub_pool) { maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]); $insert = array(); } // si timeout, sortir, la relance nous ramenera dans cette fonction // et on verifiera/repartira de la if (time() >= _TIME_OUT) { return; } } if (time() >= _TIME_OUT) { return; } } if (count($insert)) { maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]); } sql_delete($ancienne_table, sql_in($primary, $ids)); } } } /** * Insère des données dans une table de liaison de façon un peu sécurisée * * Si une insertion multiple échoue, on réinsère ligne par ligne. * * @param string $table Table de liaison * @param array $couples Tableau de couples de données à insérer * @param array $desc Description de la table de liaison * @return void **/ function maj_liens_insertq_multi_check($table, $couples, $desc = array()) { $n_before = sql_countsel($table); sql_insertq_multi($table, $couples, $desc); $n_after = sql_countsel($table); if (($n_after - $n_before) == count($couples)) { return; } // si ecart, on recommence l'insertion ligne par ligne... // moins rapide mais secure : seul le couple en doublon echouera, et non toute la serie foreach ($couples as $c) { sql_insertq($table, $c, $desc); } } $GLOBALS['maj'][17311] = array( array( 'ecrire_meta', "multi_objets", implode(',', array_diff( array( (isset($GLOBALS['meta']['multi_rubriques']) and $GLOBALS['meta']['multi_rubriques'] == 'oui') ? 'spip_rubriques' : '', (isset($GLOBALS['meta']['multi_articles']) and $GLOBALS['meta']['multi_articles'] == 'oui') ? 'spip_articles' : '' ), array('') )) ), array( 'ecrire_meta', "gerer_trad_objets", implode(',', array_diff( array( (isset($GLOBALS['meta']['gerer_trad']) and $GLOBALS['meta']['gerer_trad'] == 'oui') ? 'spip_articles' : '' ), array('') )) ), ); $GLOBALS['maj'][17555] = array( array('sql_alter', "TABLE spip_resultats ADD table_objet varchar(30) DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_resultats ADD serveur char(16) DEFAULT '' NOT NULL"), ); $GLOBALS['maj'][17563] = array( array('sql_alter', "TABLE spip_articles ADD virtuel VARCHAR(255) DEFAULT '' NOT NULL"), array('sql_update', 'spip_articles', array('virtuel' => 'SUBSTRING(chapo,2)', 'chapo' => "''"), "chapo LIKE '=_%'"), ); $GLOBALS['maj'][17577] = array( array('maj_tables', array('spip_jobs', 'spip_jobs_liens')), ); $GLOBALS['maj'][17743] = array( array('sql_update', 'spip_auteurs', array('prefs' => 'bio', 'bio' => "''"), "statut='nouveau' AND bio<>''"), ); $GLOBALS['maj'][18219] = array( array('sql_alter', "TABLE spip_rubriques DROP id_import"), array('sql_alter', "TABLE spip_rubriques DROP export"), ); $GLOBALS['maj'][18310] = array( array('sql_alter', "TABLE spip_auteurs_liens CHANGE vu vu VARCHAR(6) DEFAULT 'non' NOT NULL"), ); $GLOBALS['maj'][18597] = array( array('sql_alter', "TABLE spip_rubriques ADD profondeur smallint(5) DEFAULT '0' NOT NULL"), array('maj_propager_les_secteurs'), ); $GLOBALS['maj'][18955] = array( array('sql_alter', "TABLE spip_auteurs_liens ADD INDEX id_objet (id_objet)"), array('sql_alter', "TABLE spip_auteurs_liens ADD INDEX objet (objet)"), ); /** * Mise à jour pour recalculer les secteurs des rubriques * * @uses propager_les_secteurs() **/ function maj_propager_les_secteurs() { include_spip('inc/rubriques'); propager_les_secteurs(); } /** * Mise à jour des bdd SQLite pour réparer les collation des champs texte * pour les passer en NOCASE * * @uses base_lister_toutes_tables() * @uses _sqlite_remplacements_definitions_table() **/ function maj_collation_sqlite() { include_spip('base/dump'); $tables = base_lister_toutes_tables(); // rien a faire si base non sqlite if (strncmp($GLOBALS['connexions'][0]['type'], 'sqlite', 6) !== 0) { return; } $trouver_table = charger_fonction('trouver_table', 'base'); // forcer le vidage de cache $trouver_table(''); // cas particulier spip_auteurs : retablir le collate binary sur le login $desc = $trouver_table("spip_auteurs"); spip_log("spip_auteurs : " . var_export($desc['field'], true), "maj." . _LOG_INFO_IMPORTANTE); if (stripos($desc['field']['login'], "BINARY") === false) { spip_log("Retablir champ login BINARY sur table spip_auteurs", "maj"); sql_alter("table spip_auteurs change login login VARCHAR(255) BINARY"); $trouver_table(''); $new_desc = $trouver_table("spip_auteurs"); spip_log("Apres conversion spip_auteurs : " . var_export($new_desc['field'], true), "maj." . _LOG_INFO_IMPORTANTE); } foreach ($tables as $table) { if (time() >= _TIME_OUT) { return; } if ($desc = $trouver_table($table)) { $desc_collate = _sqlite_remplacements_definitions_table($desc['field']); if ($d = array_diff($desc['field'], $desc_collate)) { spip_log("Table $table COLLATE incorrects", "maj"); // cas particulier spip_urls : // supprimer les doublons avant conversion sinon echec (on garde les urls les plus recentes) if ($table == 'spip_urls') { // par date DESC pour conserver les urls les plus recentes $data = sql_allfetsel("*", "spip_urls", '', '', 'date DESC'); $urls = array(); foreach ($data as $d) { $key = $d['id_parent'] . "::" . strtolower($d['url']); if (!isset($urls[$key])) { $urls[$key] = true; } else { spip_log("Suppression doublon dans spip_urls avant conversion : " . serialize($d), "maj." . _LOG_INFO_IMPORTANTE); sql_delete("spip_urls", "id_parent=" . sql_quote($d['id_parent']) . " AND url=" . sql_quote($d['url'])); } } } foreach ($desc['field'] as $field => $type) { if ($desc['field'][$field] !== $desc_collate[$field]) { spip_log("Conversion COLLATE table $table", "maj." . _LOG_INFO_IMPORTANTE); sql_alter("table $table change $field $field " . $desc_collate[$field]); $trouver_table(''); $new_desc = $trouver_table($table); spip_log("Apres conversion $table : " . var_export($new_desc['field'], true), "maj." . _LOG_INFO_IMPORTANTE); continue 2; // inutile de continuer pour cette table : un seul alter remet tout a jour en sqlite } } } } } // forcer le vidage de cache $trouver_table(''); } $GLOBALS['maj'][19236] = array( array('sql_updateq', 'spip_meta', array('impt' => 'oui'), "nom='version_installee'"), // version base principale array('sql_updateq', 'spip_meta', array('impt' => 'oui'), "nom LIKE '%_base_version'"), // version base plugins array('maj_collation_sqlite'), ); $GLOBALS['maj'][19268] = array( array('supprimer_toutes_sessions'), ); /** * Supprime toutes les sessions des auteurs * * Obligera tous les auteurs à se reconnecter ! **/ function supprimer_toutes_sessions() { spip_log("supprimer sessions auteur"); if ($dir = opendir(_DIR_SESSIONS)) { while (($f = readdir($dir)) !== false) { spip_unlink(_DIR_SESSIONS . $f); if (time() >= _TIME_OUT) { return; } } } } $GLOBALS['maj'][21676] = array( array('ranger_cache_gd2'), ); /** * Ranger les images de local/cache-gd2 dans des sous-rep * * http://core.spip.net/issues/3277 */ function ranger_cache_gd2() { spip_log("ranger_cache_gd2"); $base = _DIR_VAR . "cache-gd2/"; if (is_dir($base) and is_readable($base)) { if ($dir = opendir($base)) { while (($f = readdir($dir)) !== false) { if (!is_dir($base . $f) and strncmp($f, ".", 1) !== 0 and preg_match(",[0-9a-f]{32}\.\w+,", $f) ) { $sub = substr($f, 0, 2); $sub = sous_repertoire($base, $sub); @rename($base . $f, $sub . substr($f, 2)); @unlink($base . $f); // au cas ou le rename a foire (collision) } if (time() >= _TIME_OUT) { return; } } } } } $GLOBALS['maj'][21742] = array( array('sql_alter', "TABLE spip_articles CHANGE url_site url_site text DEFAULT '' NOT NULL"), array('sql_alter', "TABLE spip_articles CHANGE virtuel virtuel text DEFAULT '' NOT NULL"), ); $GLOBALS['maj'][23375] = array( array('sql_alter', "TABLE spip_auteurs CHANGE prefs prefs text"), ); v012.php000066600000010173152442517720005764 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, versions 1.2* * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Mises à jour de SPIP n°012 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v012_dist($version_installee, $version_cible) { // Correction de l'oubli des modifs creations depuis 1.04 if (upgrade_vers(1.204, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD accepter_forum VARCHAR(3) NOT NULL"); spip_query("ALTER TABLE spip_forum ADD id_message bigint(21) NOT NULL"); spip_query("ALTER TABLE spip_forum ADD INDEX id_message (id_message)"); spip_query("ALTER TABLE spip_auteurs ADD en_ligne datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); spip_query("ALTER TABLE spip_auteurs ADD imessage VARCHAR(3) not null"); spip_query("ALTER TABLE spip_auteurs ADD messagerie VARCHAR(3) not null"); maj_version(1.204); } if (upgrade_vers(1.207, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_rubriques DROP INDEX id_rubrique"); spip_query("ALTER TABLE spip_rubriques ADD INDEX id_parent (id_parent)"); spip_query("ALTER TABLE spip_rubriques ADD statut VARCHAR(10) NOT NULL"); // Declencher le calcul des rubriques publiques include_spip('inc/rubriques'); calculer_rubriques(); maj_version(1.207); } if (upgrade_vers(1.208, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs_messages CHANGE forum vu CHAR(3) NOT NULL"); spip_query("UPDATE spip_auteurs_messages SET vu='oui'"); spip_query("UPDATE spip_auteurs_messages SET vu='non' WHERE statut='a'"); spip_query("ALTER TABLE spip_messages ADD id_auteur bigint(21) NOT NULL"); spip_query("ALTER TABLE spip_messages ADD INDEX id_auteur (id_auteur)"); $result = spip_query("SELECT id_auteur, id_message FROM spip_auteurs_messages WHERE statut='de'"); while ($row = sql_fetch($result)) { $id_auteur = $row['id_auteur']; $id_message = $row['id_message']; spip_query("UPDATE spip_messages SET id_auteur=$id_auteur WHERE id_message=$id_message"); } spip_query("ALTER TABLE spip_auteurs_messages DROP statut"); maj_version(1.208); } if (upgrade_vers(1.209, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_syndic_articles ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_messages ADD maj TIMESTAMP"); maj_version(1.209); } if (upgrade_vers(1.210, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_messages DROP page"); stripslashes_base('spip_articles', array('surtitre', 'titre', 'soustitre', 'descriptif', 'chapo', 'texte', 'ps')); stripslashes_base('spip_auteurs', array('nom', 'bio', 'nom_site')); stripslashes_base('spip_breves', array('titre', 'texte', 'lien_titre')); stripslashes_base('spip_forum', array('titre', 'texte', 'auteur', 'nom_site')); stripslashes_base('spip_messages', array('titre', 'texte')); stripslashes_base('spip_mots', array('type', 'titre', 'descriptif', 'texte')); stripslashes_base('spip_petitions', array('texte')); stripslashes_base('spip_rubriques', array('titre', 'descriptif', 'texte')); stripslashes_base('spip_signatures', array('nom_email', 'nom_site', 'message')); stripslashes_base('spip_syndic', array('nom_site', 'descriptif')); stripslashes_base('spip_syndic_articles', array('titre', 'lesauteurs')); maj_version(1.210); } } v015.php000066600000002051152442517720005763 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2019 * * 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. * \***************************************************************************/ /** * Gestion des mises à jour de SPIP, versions 1.5* * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Mises à jour de SPIP n°015 * * @param float $version_installee Version actuelle * @param float $version_cible Version de destination **/ function maj_v015_dist($version_installee, $version_cible) { }
/home/atelierpru/provence/plugins/../52177/maj.tar