source: spip-zone/_plugins_/spipicious_jquery/base/spipicious_upgrade.php @ 51569

Last change on this file since 51569 was 51569, checked in by kent1@…, 10 years ago

Grosse amélioration en espérant ne rien casser :

On ajoute un statut à la table spipicious

On n'affiche que les spipicious avec le statut "publie" sauf si critère "tout" ou "statut"

A l'institution d'un objet, on met le statut en non publié ou publié des spipicious liés à cet objet

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