source: spip-zone/_plugins_/inscription2/inscription2_2_0/base/inscription2_installer.php @ 29482

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

On crée les champs après l'inscription dans les métas

File size: 7.8 KB
Line 
1<?php
2
3$GLOBALS['inscription2_version'] = 0.71;
4
5function inscription2_upgrade(){
6        spip_log('INSCRIPTION 2 : installation','inscription2');
7        $exceptions_des_champs_auteurs_elargis = pipeline('i2_exceptions_des_champs_auteurs_elargis',array());
8        include_spip('cfg_options');
9       
10        //On force le fait d accepter les visiteurs
11        $accepter_visiteurs = $GLOBALS['meta']['accepter_visiteurs'];
12        if($accepter_visiteurs != 'oui'){
13                ecrire_meta("accepter_visiteurs", "oui");
14        }
15       
16        $version_base = $GLOBALS['inscription2_version'];
17        $current_version = 0.0;
18
19        //insertion des infos par defaut
20        $inscription2_meta = $GLOBALS['meta']['inscription2'];
21       
22        //Certaines montées de version ont oublié de corriger la meta de I2
23        //si ce n'est pas un array alors il faut reconfigurer la meta
24        if ($inscription2_meta && !is_array(unserialize($inscription2_meta))) {
25                spip_log("INSCRIPTION 2 : effacer la meta inscription2 et relancer l'install","inscription2");
26                echo "La configuration du plugin Inscription 2 a &eacute;t&eacute; effac&eacute;e.<br />";
27                effacer_meta('inscription2');
28                $GLOBALS['meta']['inscription2_version']=0.0;
29        }
30
31        // Si la version installee est la derniere en date, on ne fait rien
32        if ( (isset($GLOBALS['meta']['inscription2_version']) )
33                && (($current_version = $GLOBALS['meta']['inscription2_version'])==$version_base))
34        return;
35               
36        //Si c est une nouvelle installation toute fraiche
37        if ($current_version==0.0){
38                //inclusion des fonctions pour les requetes sql
39                include_spip('base/abstract_sql');
40               
41                // à passer en sous plugin
42
43                if(!$inscription2_meta){
44                ecrire_meta(
45                        'inscription2',
46                                serialize(array(
47                                        'nom' => 'on',
48                                        'nom_obligatoire' => 'on',
49                                        'nom_fiche_mod' => 'on',
50                                        'email' => 'on',
51                                        'email_obligatoire' => 'on',
52                                        'nom_famille' => 'on',
53                                        'nom_famille_table' => 'on',
54                                        'prenom' => 'on',
55                                        'prenom_table' => 'on',
56                                        'login' => 'on',
57                                        'login_fiche_mod' => 'on',
58                                        'adresse' => 'on',
59                                        'adresse_fiche_mod' => 'on',
60                                        'code_postal' => 'on',
61                                        'code_postal_fiche_mod' => 'on',
62                                        'ville' => 'on',
63                                        'ville_fiche_mod' => 'on',
64                                        'ville_table' => 'on',
65                                        'telephone' => 'on',
66                                        'telephone_fiche_mod' => 'on',
67                                        'statut_nouveau' => '6forum',
68                                        'statut_interne' => ''
69                                ))
70                        );
71                }
72       
73                //inserer les auteurs qui existent deja dans la table spip_auteurs en non pas dans la table elargis
74                $s = sql_select("a.id_auteur","spip_auteurs a left join spip_auteurs_elargis b on a.id_auteur=b.id_auteur","b.id_auteur is null");
75                while($q = sql_fetch($s)){
76                        sql_insertq("spip_auteurs_elargis",array('id_auteur' => $q['id_auteur']));
77                }
78               
79                /** Inscription 2 (0.70)
80                 * Les pays sont maintenant pris dans le plugin Geographie
81                 * On ne les installe si le plugin n'est pas actif,
82                 * pour ne pas en etre dependant.
83                 */
84                i2_installer_pays();
85
86                echo "Inscription2 installe @ ".$version_base;
87                ecrire_meta('inscription2_version',$current_version=$version_base);
88                $current_version = $version_base;
89        }
90
91        // Si la version installee est inferieur a O.6 on fait l homogeneisation avec spip_geo
92        if ($current_version<0.6){
93                include_spip('base/abstract_sql');
94                include(_DIR_PLUGIN_INSCRIPTION2."/inc/pays.php");
95                $table_pays = "spip_geo_pays";
96                $descpays = sql_showtable($table_pays, '', false);
97               
98                $descpays_old = sql_showtable('spip_pays', '', false);
99                if(isset($descpays_old['field'])){
100                        sql_drop_table("spip_pays");
101                }
102               
103                if(!isset($descpays['field']['pays'])){
104                        spip_query("CREATE TABLE spip_geo_pays (id_pays SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY, nom varchar(255) NOT NULL );");
105                        spip_query("INSERT INTO spip_geo_pays (nom) VALUES (\"".join('"), ("',$liste_pays)."\")");
106                }
107               
108                echo "Inscription2 update @ 0.6<br/>Spip_pays devient spip_geo_pays homogeneite avec spip_geo";
109                ecrire_meta('inscription2_version',$current_version=0.6);
110        }
111                // Si la version installee est inferieur a 0.6 on fait l homogeneisation avec spip_geo
112        if ($current_version<0.61){
113                include_spip('base/abstract_sql');
114                $table_pays = "spip_geo_pays";
115                $descpays = sql_showtable($table_pays, '', false);
116               
117                if((isset($descpays['field']['nom'])) && (!isset($descpays['field']['pays']))){
118                        sql_alter("TABLE spip_geo_pays CHANGE nom pays varchar(255) NOT NULL");
119                }
120               
121                echo "Inscription2 update @ 0.61<br/>On retablit le champs pays sur la table pays et pas nom";
122                ecrire_meta('inscription2_version',$current_version=0.61);
123        }
124        if ($current_version<0.63){
125                include_spip('base/abstract_sql');
126                // Suppression du champs id et on remet la primary key sur id_auteur...
127                sql_alter("TABLE spip_auteurs_elargis DROP id, DROP INDEX id_auteur, ADD PRIMARY KEY (id_auteur)");
128                echo "Inscription2 update @ 0.63<br />On supprime le champs id pour privilegier id_auteur";
129                ecrire_meta('inscription2_version',$current_version=0.63);
130        }
131        if ($current_version<0.65){
132                ecrire_meta('inscription2_version',$current_version=0.65);
133        }
134       
135        if ($current_version<0.71){
136                /*
137                 * Reinstaller les pays de Geographie
138                 * pour ne pas etre dependant de ce plugin
139                 */
140                i2_installer_pays();
141                spip_log("Inscription2 update @ 0.71 : installation de la table pays de geographie", "maj");
142                ecrire_meta('inscription2_version',$current_version=0.71);
143        }
144       
145        ecrire_metas();
146       
147        // Creation de la table et des champs
148        $verifier_tables = charger_fonction('inscription2_verifier_tables','inc');
149        $verifier_tables();
150}
151
152
153//supprime les donnees depuis la table spip_auteurs_elargis
154function inscription2_vider_tables() {
155        $exceptions_des_champs_auteurs_elargis = pipeline('i2_exceptions_des_champs_auteurs_elargis',array());
156        include_spip('cfg_options');
157        include_spip('base/abstract_sql');
158       
159        //supprime la table spip_auteurs_elargis
160        if (is_array(lire_config('inscription2'))){
161                $clef_passee = array();
162                $desc = sql_showtable('spip_auteurs_elargis','', '', true);
163                foreach(lire_config('inscription2',array()) as $cle => $val){
164                        $cle = ereg_replace("_(obligatoire|fiche|table).*", "", $cle);
165                        if(!in_array($cle,$clef_passee)){
166                                if(isset($desc['field'][$cle]) and !in_array($cle,$exceptions_des_champs_auteurs_elargis)){
167                                        spip_log("INSCRIPTION 2 : suppression de $cle","inscription2");
168                                        $a = sql_alter('TABLE spip_auteurs_elargis DROP COLUMN '.$cle);
169                                        $desc['field'][$cle]='';
170                                }
171                                $clef_passee[] = $cle;
172                        }
173                }
174        }
175        if (!lire_config('plugin/SPIPLISTES')){
176                sql_drop_table('spip_auteurs_elargis');
177        }
178        if(!lire_config('spip_geo_base_version')
179        and !defined('_DIR_PLUGIN_GEOGRAPHIE')){
180                sql_drop_table('spip_geo_pays');
181                spip_log("INSCRIPTION 2 : suppression de la table spip_geo");
182        }
183        effacer_meta('inscription2');
184        effacer_meta('inscription2_version');
185        ecrire_metas();
186}
187
188
189// reinstaller la table de pays
190function i2_installer_pays() {
191        if (!defined('_DIR_PLUGIN_GEOGRAPHIE')) {
192                // 1) suppression de la table existante
193                // pour redemarrer les insert a zero
194                sql_drop_table("spip_geo_pays");
195                // 2) recreation de la table
196                include_spip('base/create');
197                creer_base();
198                // 3) installation des entrees
199                // importer les pays
200                include_spip('imports/pays');
201                include_spip('inc/charset');
202                foreach($GLOBALS['liste_pays'] as $k=>$p)
203                        sql_insertq('spip_geo_pays',array('id_pays'=>$k,'nom'=>unicode2charset(html2unicode($p))));             
204        }
205}
206
207/*
208 * Surcharge de l'installe de SPIP par defaut
209 * car inscription2 gere une seconde meta pour tester son installation correcte.
210 */
211function inscription2_install($action){
212        $version_base = $GLOBALS['inscription2_version'];
213        switch ($action){
214                case 'test':
215                        if (!is_array(unserialize($GLOBALS['meta']['inscription2'])) OR !$GLOBALS['meta']['inscription2'] OR ($GLOBALS['meta']['inscription2']=='')){
216                                // Si cette meta n'est pas un array ... vaut mieux relancer l'ensemble du processus d'install
217                                return false;
218                        }
219                        return (isset($GLOBALS['meta']['inscription2_version']) AND ($GLOBALS['meta']['inscription2_version']>=$version_base));
220                        break;
221                case 'install':
222                        inscription2_upgrade();
223                        break;
224                case 'uninstall':
225                        inscription2_vider_tables();
226                        break;
227        }
228}
229?>
Note: See TracBrowser for help on using the repository browser.