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.21, $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.21); } }
/** * Action de réparation de la base de données * * Tente de réparer les tables, recalcule les héritages et secteurs * de rubriques. Affiche les erreurs s'il y en a eu. * * @pipeline_appel base_admin_repair * @uses admin_repair_tables() * @uses calculer_rubriques() * @uses propager_les_secteurs() * * @param string $titre Inutilisé * @param string $reprise Inutilisé **/ function base_repair_dist($titre = '', $reprise = '') { $res = admin_repair_tables(); if (!$res) { $res = "<div class='error'>" . _T('avis_erreur_mysql') . ' ' . sql_errno() . ': ' . sql_error() . "</div>\n"; } else { include_spip('inc/rubriques'); calculer_rubriques(); propager_les_secteurs(); } include_spip('inc/minipres'); $res .= pipeline('base_admin_repair', $res); echo minipres(_T('texte_tentative_recuperation'), $res . generer_form_ecrire('accueil', '', '', _T('public:accueil_site'))); }
/** * On arrive ici depuis inc/admin * - au lancement * - puis apres chaque timeout avec dans ce cas $reprise=true * * import_all_debut() est appele la premiere fois et initialise le dump * import_all_milieu() est appele a chaque retour ici * quand on en sort, * - soit on relance pour la seconde etape de fusion * - soit on finit * * @param string $titre * @param bool $reprise */ function base_import_all_dist($titre='', $reprise=false) { if (!$titre) return; // anti-testeur automatique if (!$reprise) import_all_debut(); $request = unserialize($GLOBALS['meta']['import_all']); $archive = $request['dir'] . ($request['archive'] ? $request['archive'] : $request['archive_perso']); // au rappel, on commence (voire on continue) @ini_set("zlib.output_compression","0"); // pour permettre l'affichage au fur et a mesure include_spip('inc/import'); @ignore_user_abort(1); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page($titre, "accueil", "accueil"); echo debut_gauche('', true); echo debut_droite('', true); $res = import_all_milieu($request, $archive); // Cas particulier de la fusion/insertion : // a la fin de la premiere passe on relance pour l'etape suivante if (!$res AND $request['insertion'] == 'on') { $request['insertion'] = 'passe2'; if ($request['url_site'] AND substr($request['url_site'],-1) != '/') $request['url_site'] .= '/'; ecrire_meta("import_all", serialize($request),'non'); import_all_debut(); $res = import_all_milieu($request, $archive); } echo $res, "</body></html>\n"; if ($charset = $GLOBALS['meta']['charset_restauration']) { ecrire_meta('charset', $charset); } detruit_restaurateur(); import_all_fin($request); include_spip('inc/rubriques'); calculer_rubriques(); if (!$res) ecrire_acces(); // Mise a jour du fichier htpasswd affiche_progression_javascript('100 %', 0, '', $request['retour']); }
function base_admin_repair_dist($titre='', $reprise='') { $f = sql_repair('repair', NULL, true); if ($f) { $res = admin_repair_tables(); } else { if ($titre) spip_log("Pas d'instruction REPAIR dans ce serveur SQL"); $res = ' '; } if (!$res) { $res = "<br /><br /><span style='color: red; font-weight: bold;'><tt>"._T('avis_erreur_mysql').' '.sql_errno().': '.sql_error() ."</tt></span><br /><br /><br />\n"; } else { include_spip('inc/rubriques'); calculer_rubriques(); propager_les_secteurs(); } include_spip('inc/minipres'); $res .= pipeline('base_admin_repair',$res); $res .= admin_repair_plat(); echo minipres(_T('texte_tentative_recuperation'), $res . generer_form_ecrire('accueil', '','',_T('public:accueil_site'))); }
/** * 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\tADD statut_tmp VARCHAR(10) NOT NULL,\tADD 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,\tmaman.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.81, $version_installee, $version_cible)) { sql_delete("spip_forum", "statut='redac'"); maj_version(1.81); } 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\tADD 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.82, $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.82); } // 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); } }