source: spip-zone/_plugins_/coordonnees/trunk/coordonnees_administrations.php @ 99581

Last change on this file since 99581 was 99581, checked in by toutati@…, 3 years ago

On change province par etat_federal avant que quelqu'un·e update !

File size: 7.0 KB
Line 
1<?php
2/**
3 * Fichier gérant l'installation et désinstallation du plugin Coordonnees
4 *
5 * @plugin     Coordonnees
6 * @copyright  2013
7 * @author     Marcimat / Ateliers CYM
8 * @licence    GNU/GPL
9 * @package    SPIP\Coordonnees\Installation
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) return;
13
14
15/**
16 * Fonction d'installation et de mise à jour du plugin Coordonnees
17 *
18 * @param string $nom_meta_base_version
19 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
20 * @param string $version_cible
21 *     Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
22 * @return void
23 */
24function coordonnees_upgrade($nom_meta_base_version, $version_cible) {
25        $maj = array();
26        $maj['create'] = array(
27                array('maj_tables', array('spip_adresses')),
28                array('maj_tables', array('spip_adresses_liens')),
29                array('maj_tables', array('spip_numeros')),
30                array('maj_tables', array('spip_numeros_liens')),
31                array('maj_tables', array('spip_emails')),
32                array('maj_tables', array('spip_emails_liens')),
33                array('ecrire_meta', 'coordonnees', serialize(array('objets' => array('spip_auteurs'))))
34        );
35        $maj['1.1'] = array(
36                array('sql_update', array(array("voie" => "CONCAT(numero, ' ', voie)"),array("numero IS NOT NULL", "numero <> ''"))),
37                array('sql_alter', "TABLE spip_adresses DROP COLUMN numero")
38        );
39
40        $maj['1.2'] = array(
41                array('sql_alter', 'TABLE spip_adresses CHANGE type_adresse titre varchar(255) not null default ""'),
42                array('sql_alter', 'TABLE spip_numeros CHANGE type_numero titre varchar(255) not null default ""'),
43                array('sql_alter', 'TABLE spip_emails CHANGE type_email titre varchar(255) not null default ""')
44        );
45
46        // On passe les pays en code ISO, beaucoup plus génériques que les ids SQL
47        $maj['1.3'] = array(
48                array('sql_alter', 'TABLE spip_adresses ADD pays_code varchar(2) not null default ""'),
49                array('coordonnees_upgrade_1_3'),
50                array('sql_alter', 'TABLE spip_adresses DROP pays'),
51                array('sql_alter', 'TABLE spip_adresses CHANGE pays_code pays varchar(2) not null default ""'),
52        );
53
54        // On avait supprime les types, mais ils reviennent en force mais dans les LIENS
55        $maj['1.4'] = array(
56                        array('sql_alter', 'TABLE spip_adresses_liens ADD type varchar(25) not null default ""'),
57                        array('sql_alter', 'TABLE spip_adresses_liens DROP PRIMARY KEY'),
58                        array('sql_alter', 'TABLE spip_adresses_liens ADD PRIMARY KEY (id_adresse, id_objet, objet, type)'),
59                        array('sql_alter', 'TABLE spip_numeros_liens ADD type varchar(25) not null default ""'),
60                        array('sql_alter', 'TABLE spip_numeros_liens DROP PRIMARY KEY'),
61                        array('sql_alter', 'TABLE spip_numeros_liens ADD PRIMARY KEY (id_numero, id_objet, objet, type)'),
62                        array('sql_alter', 'TABLE spip_emails_liens ADD type varchar(25) not null default ""'),
63                        array('sql_alter', 'TABLE spip_emails_liens DROP PRIMARY KEY'),
64                        array('sql_alter', 'TABLE spip_emails_liens ADD PRIMARY KEY (id_email, id_objet, objet, type)'),
65
66                        );
67        // mettre les auteurs par defaut comme objet «coordonnable»
68        $maj['1.5'] = array(
69                array('ecrire_meta','coordonnees', serialize(array('objets' => array('spip_auteurs')))),
70        );
71
72        // ajout du champs region a la table adresses
73        $maj['1.6'] = array(
74                array('maj_tables', array('spip_adresses')),
75        );
76
77        // migration de certaines valeurs pour pouvoir faire fonctionner les selecteurs pendant l'edition
78        //!\ comme on n'est pas certain de tous les migrer il y a donc rupture de compatibilite ? :-S
79        $maj['1.7'] = array(
80                array('sql_updateq', "spip_adresses_liens", array('type' => 'work'), "LOWER(type) LIKE 'pro%'"),
81                array('sql_updateq', "spip_numeros_liens", array('type' => 'work'), "LOWER(type) LIKE 'pro%'"),
82                array('sql_updateq', "spip_adresses_liens", array('type' => 'home'), "LOWER(type) LIKE 'perso%'"),
83                array('sql_updateq', "spip_adresses_liens", array('type' => 'home'), "LOWER(type) LIKE 'dom%'"),
84                array('sql_updateq', "spip_numeros_liens", array('type' => 'home'), "LOWER(type) LIKE 'perso%'"),
85                array('sql_updateq', "spip_numeros_liens", array('type' => 'cell'), "LOWER(type) LIKE 'cel%'"),
86                array('sql_updateq', "spip_numeros_liens", array('type' => 'cell'), "LOWER(type) LIKE 'mob%'"),
87        );
88
89        // Definition des tables principales par declarer_tables_objets_sql au lieu de declarer_tables_principales
90        $maj['1.8'] = array(
91                array('maj_tables', array('spip_adresses', 'spip_adresses_liens', 'spip_numeros', 'spip_numeros_liens', 'spip_emails', 'spip_emails_liens')),
92        );
93        // Oublié le champ 'type' dans les tables de liens
94        $maj['1.8.1'] = array(
95                array('maj_tables', array('spip_adresses_liens', 'spip_numeros_liens', 'spip_emails_liens')),
96        );
97
98        // Metas : conversion des objets «coordonnables» : on utilise les noms des tables (auteur -> spip_auteurs)
99        $maj['1.8.2'] = array(
100                array('coordonnees_upgrade_1_8_2'),
101        );
102
103        // index (id_objet et objet) sur les tables de liaisons
104        $maj['1.8.3'] = array(
105                array('sql_alter', 'TABLE spip_adresses_liens ADD INDEX (id_objet)'),
106                array('sql_alter', 'TABLE spip_adresses_liens ADD INDEX (objet)'),
107                array('sql_alter', 'TABLE spip_numeros_liens ADD INDEX (id_objet)'),
108                array('sql_alter', 'TABLE spip_numeros_liens ADD INDEX (objet)'),
109                array('sql_alter', 'TABLE spip_emails_liens ADD INDEX (id_objet)'),
110                array('sql_alter', 'TABLE spip_emails_liens ADD INDEX (objet)'),
111        );
112       
113        //ajout du champ etat_federal
114        $maj['1.8.4'] = array(
115                array('maj_tables', array('spip_adresses')),
116        );
117
118        include_spip('base/upgrade');
119        maj_plugin($nom_meta_base_version, $version_cible, $maj);
120}
121
122
123/**
124 * Fonction de désinstallation du plugin Coordonnees
125 *
126 * @param string $nom_meta_base_version
127 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
128 * @return void
129 */
130function coordonnees_vider_tables($nom_meta_base_version) {
131
132        sql_drop_table("spip_adresses");
133        sql_drop_table("spip_adresses_liens");
134        sql_drop_table("spip_numeros");
135        sql_drop_table("spip_numeros_liens");
136        sql_drop_table("spip_emails");
137        sql_drop_table("spip_emails_liens");
138
139        effacer_meta('coordonnees');
140        effacer_meta($nom_meta_base_version);
141}
142
143
144/**
145 * Fonction mise a jour du plugin Coordonnees vers 1.3
146 * @return void
147 */
148function coordonnees_upgrade_1_3() {
149        // On parcourt les adresses pour remplir le code du pays
150        $adresses = sql_allfetsel('id_adresse,pays', 'spip_adresses');
151        if ($adresses and is_array($adresses)){
152                foreach ($adresses as $adresse){
153                        $ok &= sql_update(
154                                'spip_adresses',
155                                array('pays_code' => '(SELECT code FROM spip_pays WHERE id_pays='.intval($adresse['pays']).')'),
156                                'id_adresse='.intval($adresse['id_adresse'])
157                        );
158                }
159        }
160}
161
162
163/**
164 * Fonction mise a jour du plugin Coordonnees vers 1.8.2
165 * Metas : conversion des objets «coordonnables» : on utilise les noms des tables (auteur -> spip_auteurs)
166 * @return void
167 */
168function coordonnees_upgrade_1_8_2() {
169        include_spip('inc/config');
170        if ($objets = lire_config('coordonnees/objets', null, true) and is_array($objets) and count($objets) > 0) {
171                foreach ($objets as $objet) $objets_sql[] = table_objet_sql($objet);
172                effacer_config('coordonnees/objets');
173                ecrire_config('coordonnees/objets', $objets_sql);
174        }
175}
Note: See TracBrowser for help on using the repository browser.