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