1 | <?php |
---|
2 | |
---|
3 | /** |
---|
4 | * spip.icio.us |
---|
5 | * Gestion de tags lies aux auteurs |
---|
6 | * |
---|
7 | * Auteurs : |
---|
8 | * kent1 (kent1@arscenic.info) |
---|
9 | * Erational |
---|
10 | * |
---|
11 | * © 2007-2011 - Distribue sous licence GNU/GPL |
---|
12 | * |
---|
13 | */ |
---|
14 | |
---|
15 | |
---|
16 | function spipicious_upgrade($nom_meta_base_version,$version_cible){ |
---|
17 | $current_version = 0.0; |
---|
18 | if ((!isset($GLOBALS['meta'][$nom_meta_base_version]) ) |
---|
19 | || (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){ |
---|
20 | include_spip('base/spipicious'); |
---|
21 | include_spip('base/create'); |
---|
22 | if (version_compare($current_version,'0.0','<=')){ |
---|
23 | creer_base(); |
---|
24 | ecrire_meta($nom_meta_base_version,$current_version=$version_base,'non'); |
---|
25 | |
---|
26 | /** |
---|
27 | * On crée un groupe de mots dédié qui servira à la configuration |
---|
28 | * On active les mots clés dans le site si ce n'est déjà fait |
---|
29 | * On active une configuration du plugin par défaut |
---|
30 | */ |
---|
31 | $titre_groupe = '- Tags -'; |
---|
32 | $id_groupe = sql_getfetsel('id_groupe','spip_groupes_mots','titre='.sql_quote($titre_groupe)); |
---|
33 | if(!$id_groupe){ |
---|
34 | $id_groupe = sql_insertq('spip_groupes_mots',array('titre' => $titre_groupe,'tables_liees' => 'articles','minirezo'=>'oui','comite'=>'oui','forum'=>'oui')); |
---|
35 | } |
---|
36 | if($GLOBALS['meta']['config_precise_groupes'] == 'non'){ |
---|
37 | ecrire_meta('config_precise_groupes','oui','oui'); |
---|
38 | } |
---|
39 | if($GLOBALS['meta']['articles_mots'] == 'non'){ |
---|
40 | ecrire_meta('articles_mots','oui','oui'); |
---|
41 | } |
---|
42 | $config_spipicious = array('people' => array('0minirezo'),'groupe_mot' => $id_groupe); |
---|
43 | ecrire_meta('spipicious',serialize($config_spipicious),'oui'); |
---|
44 | echo _T('spipicious:message_installation_activation'); |
---|
45 | } |
---|
46 | if(version_compare($current_version,'0.2','<')){ |
---|
47 | sql_alter("TABLE `spip_spipicious` ADD PRIMARY KEY (`id_mot`) "); |
---|
48 | sql_alter("TABLE `spip_spipicious` ADD KEY (`id_auteur`) "); |
---|
49 | sql_alter("TABLE `spip_spipicious` ADD maj timestamp AFTER position "); |
---|
50 | echo _T('spipicious:message_upgrade_database',array('version'=>0.2)); |
---|
51 | ecrire_meta($nom_meta_base_version,$current_version=0.2,'non'); |
---|
52 | } |
---|
53 | if(version_compare($current_version,'0.3','<')){ |
---|
54 | sql_alter("TABLE `spip_spipicious` ADD id_rubrique bigint(21) NOT NULL AFTER`id_article` "); |
---|
55 | sql_alter("TABLE `spip_spipicious` ADD id_document bigint(21) NOT NULL AFTER`id_rubrique` "); |
---|
56 | echo _T('spipicious:message_upgrade_database',array('version'=>0.3)); |
---|
57 | ecrire_meta($nom_meta_base_version,$current_version=0.3,'non'); |
---|
58 | } |
---|
59 | if(version_compare($current_version,'0.4','<')){ |
---|
60 | $desc = sql_showtable("spip_spipicious", true); |
---|
61 | if (isset($desc['PRIMARY KEY']['id_mot'])){ |
---|
62 | sql_alter("TABLE `spip_spipicious` DROP PRIMARY KEY (`id_mot`) "); |
---|
63 | sql_alter("TABLE `spip_spipicious` ADD KEY (`id_mot`) "); |
---|
64 | } |
---|
65 | $desc_mots_docs = sql_showtable("spip_mots_documents", true); |
---|
66 | if(!isset($desc_mots_docs['field']['id_mot'])){ |
---|
67 | include_spip('base/create'); |
---|
68 | include_spip('base/abstract_sql'); |
---|
69 | creer_base(); |
---|
70 | echo "Creation de la table spip_mots_documents<br/>"; |
---|
71 | } |
---|
72 | echo _T('spipicious:message_upgrade_database',array('version'=>0.4)); |
---|
73 | ecrire_meta($nom_meta_base_version,$current_version=0.4,'non'); |
---|
74 | } |
---|
75 | if(version_compare($current_version,'0.5','<')){ |
---|
76 | sql_alter("TABLE `spip_spipicious` ADD id_syndic bigint(21) NOT NULL AFTER`id_document` "); |
---|
77 | sql_alter("TABLE `spip_spipicious` ADD id_evenement bigint(21) NOT NULL AFTER`id_syndic` "); |
---|
78 | echo _T('spipicious:message_upgrade_database',array('version'=>0.5)); |
---|
79 | ecrire_meta($nom_meta_base_version,$current_version=0.5,'non'); |
---|
80 | } |
---|
81 | if(version_compare($current_version,'0.6','<')){ |
---|
82 | sql_alter("TABLE `spip_spipicious` ADD id_objet bigint(21) NOT NULL AFTER `id_auteur` "); |
---|
83 | sql_alter("TABLE `spip_spipicious` ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER `id_objet` "); |
---|
84 | spipicious_id_objet_objet_upgrade(); |
---|
85 | sql_alter("TABLE `spip_spipicious` DROP PRIMARY KEY"); |
---|
86 | sql_alter("TABLE `spip_spipicious` ADD PRIMARY KEY (`id_mot`,`id_auteur`,`id_objet`,`objet`)"); |
---|
87 | sql_alter("TABLE `spip_spipicious` DROP COLUMN `id_article`"); |
---|
88 | sql_alter("TABLE `spip_spipicious` DROP COLUMN `id_document`"); |
---|
89 | sql_alter("TABLE `spip_spipicious` DROP COLUMN `id_rubrique`"); |
---|
90 | sql_alter("TABLE `spip_spipicious` DROP COLUMN `id_syndic`"); |
---|
91 | sql_alter("TABLE `spip_spipicious` DROP COLUMN `id_evenement`"); |
---|
92 | echo _T('spipicious:message_upgrade_database',array('version'=>0.6)); |
---|
93 | ecrire_meta($nom_meta_base_version,$current_version=0.6,'non'); |
---|
94 | } |
---|
95 | if(version_compare($current_version,'0.6.1','<')){ |
---|
96 | $id_groupe = lire_config('spipicious/groupe_mot'); |
---|
97 | if($id_groupe){ |
---|
98 | sql_updateq('spip_groupes_mots',array('tables_liees' => 'articles','minirezo'=>'oui','comite'=>'oui','forum'=>'oui'),'id_groupe='.$id_groupe); |
---|
99 | } |
---|
100 | ecrire_meta($nom_meta_base_version,$current_version='0.6.1','non'); |
---|
101 | } |
---|
102 | if(version_compare($current_version,'0.6.2','<')){ |
---|
103 | maj_tables(array('spip_spipicious')); |
---|
104 | $spipicious = sql_select('*','spip_spipicious'); |
---|
105 | while($iter = sql_fetch($spipicious)){ |
---|
106 | $table = table_objet_sql($iter['objet']); |
---|
107 | $id_table_objet = id_table_objet($iter['objet']); |
---|
108 | $objet = sql_fetsel('*',$table,$id_table_objet.'='.intval($iter['id_objet'])); |
---|
109 | if(isset($objet['statut']) && $objet['statut'] != 'publie'){ |
---|
110 | sql_updateq('spip_spipicious',array('statut'=>'prop'),'id_objet='.intval($iter['id_objet'].' AND objet='.sql_quote($iter['objet']))); |
---|
111 | }else if(!is_array($objet)){ |
---|
112 | sql_updateq('spip_spipicious',array('statut'=>'prop'),'id_objet='.intval($iter['id_objet'].' AND objet='.sql_quote($iter['objet']))); |
---|
113 | } |
---|
114 | } |
---|
115 | ecrire_meta($nom_meta_base_version,$current_version='0.6.2','non'); |
---|
116 | } |
---|
117 | ecrire_metas(); |
---|
118 | } |
---|
119 | } |
---|
120 | |
---|
121 | function spipicious_vider_tables($nom_meta_version_base) { |
---|
122 | sql_drop_table("spip_spipicious"); |
---|
123 | effacer_meta($nom_meta_version_base); |
---|
124 | effacer_meta('spipicious'); |
---|
125 | ecrire_metas(); |
---|
126 | } |
---|
127 | |
---|
128 | |
---|
129 | /** |
---|
130 | * Reunir en un seul champs id_objet/objet |
---|
131 | */ |
---|
132 | function spipicious_id_objet_objet_upgrade () { |
---|
133 | // Recopier les donnees avec le coupe id_objet / objet |
---|
134 | foreach (array('article', 'rubrique', 'document', 'evenement', 'syndic') as $liste => $l) { |
---|
135 | $s = sql_select('*', 'spip_spipicious','id_'.$l.' > 0'); |
---|
136 | while ($t = sql_fetch($s)) { |
---|
137 | $t['id_objet'] = $t["id_$l"]; |
---|
138 | $t['objet'] = $l; |
---|
139 | sql_updateq('spip_spipicious',$t,'id_'.$l.' = '.intval($t['id_'.$l]).' AND id_mot='.intval($t['id_mot'].' AND id_auteur='.intval($t{'id_auteur'}))); |
---|
140 | } |
---|
141 | } |
---|
142 | } |
---|
143 | ?> |
---|