[PLUGINS] ~maj globale
[lhc/web/www.git] / www / plugins / gis / gis_administrations.php
1 <?php
2
3 // Sécurité
4 if (!defined('_ECRIRE_INC_VERSION')) {
5 return;
6 }
7
8 /**
9 * Installation/maj des tables gis
10 *
11 * @param string $nom_meta_base_version
12 * @param string $version_cible
13 */
14 function gis_upgrade($nom_meta_base_version, $version_cible) {
15 $maj = array();
16
17 // Première installation
18 $maj['create'] = array(
19 array('maj_tables', array('spip_gis')),
20 array('maj_tables', array('spip_gis_liens')),
21 );
22
23 // Mise à jour depuis GIS 1
24 $maj['2.0'] = array(
25 // On ajoute la nouvelle table
26 array('maj_tables', array('spip_gis_liens')),
27 // On renomme le champ #LONX en #LON
28 array('sql_alter', 'TABLE spip_gis CHANGE lonx lon float(21) NULL NULL'),
29 // On déplace les liaisons articles, rubriques et mots
30 array('gis_upgrade_2_0'),
31 // Virer les champs id_article et id_rubrique
32 array('sql_alter', 'TABLE spip_gis DROP id_article'),
33 array('sql_alter', 'TABLE spip_gis DROP id_rubrique'),
34 // Virer les index id_article et id_rubrique
35 array('sql_alter', 'TABLE spip_gis DROP INDEX id_article'),
36 array('sql_alter', 'TABLE spip_gis DROP INDEX id_rubrique'),
37 // Virer la table pour les mots
38 array('sql_drop_table', 'spip_gis_mots'),
39 );
40
41 // Des nouveaux champs
42 $maj['2.0.1'] = array(
43 array('maj_tables', array('spip_gis')),
44 );
45
46 // Augmenter la précision des champs de coordonnées
47 $maj['2.0.2'] = array(
48 array('sql_alter', 'TABLE spip_gis CHANGE lat lat DOUBLE NULL NULL'),
49 array('sql_alter', 'TABLE spip_gis CHANGE lon lon DOUBLE NULL NULL'),
50 );
51
52 // Ajouter des INDEX sur les champs potentiellement utilisables dans des comparaisons/group by/etc.
53 $maj['2.0.4'] = array(
54 array('sql_alter', 'TABLE spip_gis ADD INDEX (lat)'),
55 array('sql_alter', 'TABLE spip_gis ADD INDEX (lon)'),
56 array('sql_alter', 'TABLE spip_gis ADD INDEX (pays(500))'),
57 array('sql_alter', 'TABLE spip_gis ADD INDEX (code_pays)'),
58 array('sql_alter', 'TABLE spip_gis ADD INDEX (region(500))'),
59 array('sql_alter', 'TABLE spip_gis ADD INDEX (ville(500))'),
60 array('sql_alter', 'TABLE spip_gis ADD INDEX (code_postal)'),
61 );
62
63 // Ajout du département dans les champs de coordonnées
64 $maj['2.0.5'] = array(
65 array('maj_tables',array('spip_gis')),
66 );
67
68 // Transformer les titres des points de varchar(255) à text
69 $maj['2.0.6'] = array(
70 array('sql_alter', 'TABLE spip_gis CHANGE titre titre text NOT NULL'),
71 );
72
73 // Ajouter un index sur toutes les colonnes de la table de liens, pas juste id_gis
74 $maj['2.0.8'] = array(
75 array('sql_alter', 'TABLE spip_gis_liens DROP INDEX id_objet'), // virer l'ancien d'abord (nommé id_objet)
76 array('sql_alter', 'TABLE spip_gis_liens ADD INDEX (id_gis)'),
77 array('sql_alter', 'TABLE spip_gis_liens ADD INDEX (objet)'),
78 array('sql_alter', 'TABLE spip_gis_liens ADD INDEX (id_objet)'),
79 );
80
81 // Ajout des champs de styles (color, weight, opacity, fillcolor & fillopacity)
82 $maj['2.1.0'] = array(
83 array('maj_tables',array('spip_gis')),
84 );
85
86 include_spip('base/upgrade');
87 maj_plugin($nom_meta_base_version, $version_cible, $maj);
88 }
89
90 function gis_upgrade_2_0() {
91 include_spip('action/editer_gis');
92
93 // On déplace les liaisons articles et rubriques
94 $res = sql_select('*', 'spip_gis');
95 while ($row = sql_fetch($res)) {
96 if ($row['id_article'] != 0) {
97 lier_gis($row['id_gis'], 'article', $row['id_article']);
98 }
99 if ($row['id_rubrique'] != 0) {
100 lier_gis($row['id_gis'], 'article', $row['id_rubrique']);
101 }
102 }
103
104 // On déplace les liaisons mots
105 $res = sql_select('*', 'spip_gis_mots');
106 while ($row = sql_fetch($res)) {
107 $titre_mot = sql_getfetsel('titre', 'spip_mots', 'id_mot='.$row['id_mot']);
108 $c = array(
109 'titre' => $titre_mot,
110 'lat'=> $row['lat'],
111 'lon' => $row['lonx'],
112 'zoom' => $row['zoom']
113 );
114 $id_gis = insert_gis();
115 revisions_gis($id_gis, $c);
116 lier_gis($id_gis, 'mot', $row['id_mot']);
117 }
118 }
119
120 /**
121 * Desinstallation/suppression des tables gis
122 *
123 * @param string $nom_meta_base_version
124 */
125 function gis_vider_tables($nom_meta_base_version) {
126 sql_drop_table('spip_gis');
127 sql_drop_table('spip_gis_liens');
128 effacer_meta($nom_meta_base_version);
129 // Effacer la config
130 effacer_meta('gis');
131 }