1 | <?php |
---|
2 | |
---|
3 | /***************************************************************************\ |
---|
4 | * SPIP, Systeme de publication pour l'internet * |
---|
5 | * * |
---|
6 | * Copyright (c) 2001-2020 * |
---|
7 | * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
---|
8 | * * |
---|
9 | * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
---|
10 | * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
---|
11 | \***************************************************************************/ |
---|
12 | |
---|
13 | /** |
---|
14 | * Fichier gérant l'installation et désinstallation du plugin |
---|
15 | * |
---|
16 | * @package SPIP\Forum\Installation |
---|
17 | **/ |
---|
18 | |
---|
19 | if (!defined("_ECRIRE_INC_VERSION")) { |
---|
20 | return; |
---|
21 | } |
---|
22 | |
---|
23 | /** |
---|
24 | * Installation/maj des tables forum |
---|
25 | * |
---|
26 | * @param string $nom_meta_base_version |
---|
27 | * @param string $version_cible |
---|
28 | */ |
---|
29 | function forum_upgrade($nom_meta_base_version, $version_cible) { |
---|
30 | |
---|
31 | // cas particulier : |
---|
32 | // si plugin pas installe mais que la table existe |
---|
33 | // considerer que c'est un upgrade depuis v 1.0.0 |
---|
34 | // pour gerer l'historique des installations SPIP <=2.1 |
---|
35 | if (!isset($GLOBALS['meta'][$nom_meta_base_version])) { |
---|
36 | $trouver_table = charger_fonction('trouver_table', 'base'); |
---|
37 | $trouver_table(''); // vider le cache des descriptions ! |
---|
38 | if ($desc = $trouver_table('spip_forum') |
---|
39 | and isset($desc['field']['id_article']) |
---|
40 | ) { |
---|
41 | ecrire_meta($nom_meta_base_version, '1.0.0'); |
---|
42 | } |
---|
43 | // si pas de table en base, on fera une simple creation de base |
---|
44 | } |
---|
45 | |
---|
46 | $maj = array(); |
---|
47 | $maj['create'] = array( |
---|
48 | array('maj_tables', array('spip_forum')), |
---|
49 | ); |
---|
50 | $maj['1.1.0'] = array( |
---|
51 | array('sql_alter', "TABLE spip_forum ADD id_objet bigint(21) DEFAULT 0 NOT NULL AFTER id_forum"), |
---|
52 | array('sql_alter', "TABLE spip_forum ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"), |
---|
53 | #array('sql_alter',"TABLE spip_forum DROP INDEX optimal"), |
---|
54 | #array('sql_alter',"TABLE spip_forum ADD INDEX optimal (statut,id_parent,id_objet,objet,date_heure)"), |
---|
55 | ); |
---|
56 | $maj['1.1.1'] = array( |
---|
57 | array('sql_update', "spip_forum", array('objet' => "'breve'", 'id_objet' => 'id_breve'), 'id_breve> 0'), |
---|
58 | #array('sql_alter',"TABLE spip_forum DROP id_breve"), |
---|
59 | array('sql_update', "spip_forum", array('objet' => "'article'", 'id_objet' => 'id_article'), 'id_article>0'), |
---|
60 | #array('sql_alter',"TABLE spip_forum DROP id_article"), |
---|
61 | array('sql_update', "spip_forum", array('objet' => "'site'", 'id_objet' => 'id_syndic'), 'id_syndic>0'), |
---|
62 | #array('sql_alter',"TABLE spip_forum DROP id_syndic"), |
---|
63 | array('sql_update', "spip_forum", array('objet' => "'message'", 'id_objet' => 'id_message'), 'id_message>0'), |
---|
64 | #array('sql_alter',"TABLE spip_forum DROP id_message"), |
---|
65 | array('sql_update', "spip_forum", array('objet' => "'rubrique'", 'id_objet' => 'id_rubrique'), 'id_rubrique>0'), |
---|
66 | #array('sql_alter',"TABLE spip_forum DROP id_rubrique"), |
---|
67 | ); |
---|
68 | |
---|
69 | # champ ip sur 40 car (compat IPv6) |
---|
70 | $maj['1.2.0'] = array( |
---|
71 | array('sql_alter', "TABLE spip_forum CHANGE ip ip VARCHAR(40) DEFAULT '' NOT NULL"), |
---|
72 | ); |
---|
73 | # rejouer la suppression/creation de l'index optimal |
---|
74 | # et la suppression des vieux champs, car la premiere sequence avait echoue |
---|
75 | # en raison d'un DROP KEY au lieu de DROP INDEX |
---|
76 | $maj['1.2.1'] = array( |
---|
77 | array('sql_alter', "TABLE spip_forum DROP INDEX optimal"), |
---|
78 | array('sql_alter', "TABLE spip_forum ADD INDEX optimal (statut,id_parent,id_objet,objet,date_heure)"), |
---|
79 | array('sql_alter', "TABLE spip_forum DROP id_breve"), |
---|
80 | array('sql_alter', "TABLE spip_forum DROP id_article"), |
---|
81 | array('sql_alter', "TABLE spip_forum DROP id_syndic"), |
---|
82 | array('sql_alter', "TABLE spip_forum DROP id_message"), |
---|
83 | array('sql_alter', "TABLE spip_forum DROP id_rubrique"), |
---|
84 | ); |
---|
85 | $maj['1.2.2'] = array( |
---|
86 | array( |
---|
87 | 'ecrire_meta', |
---|
88 | 'forum_prive_objets', |
---|
89 | ($GLOBALS['meta']['forum_prive_objets'] == 'non') ? '' : 'spip_articles,spip_breves,spip_syndic' |
---|
90 | ), |
---|
91 | ); |
---|
92 | |
---|
93 | |
---|
94 | include_spip('base/upgrade'); |
---|
95 | maj_plugin($nom_meta_base_version, $version_cible, $maj); |
---|
96 | } |
---|
97 | |
---|
98 | /** |
---|
99 | * Désinstallation/suppression des tables forum |
---|
100 | * |
---|
101 | * @param string $nom_meta_base_version |
---|
102 | */ |
---|
103 | function forum_vider_tables($nom_meta_base_version) { |
---|
104 | sql_drop_table("spip_forum"); |
---|
105 | |
---|
106 | effacer_meta("mots_cles_forums"); |
---|
107 | effacer_meta("forums_titre"); |
---|
108 | effacer_meta("forums_texte"); |
---|
109 | effacer_meta("forums_urlref"); |
---|
110 | effacer_meta("forums_afficher_barre"); |
---|
111 | effacer_meta("forums_forcer_previsu"); |
---|
112 | effacer_meta("formats_documents_forum"); |
---|
113 | effacer_meta("forums_publics"); |
---|
114 | effacer_meta("forum_prive"); |
---|
115 | effacer_meta("forum_prive_objets"); |
---|
116 | effacer_meta("forum_prive_admin"); |
---|
117 | |
---|
118 | effacer_meta($nom_meta_base_version); |
---|
119 | } |
---|