[SPIP] v3.2.1-->v3.2.3
[lhc/web/www.git] / www / plugins-dist / forum / forum_administrations.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2019 *
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 }