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

Last change on this file since 70504 was 70504, checked in by tcharlss@…, 6 years ago
  • Langues : un fichier de langue par objet éditorial + formattage des chaînes de langue pour SPIP 3. Mise à jour des chaînes de langue dans les fichiers afférents.
  • Commentaires façon "la fabrique" dans les fichiers php
File size: 6.4 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('auteur')))),
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        include_spip('base/upgrade');
104        maj_plugin($nom_meta_base_version, $version_cible, $maj);
105}
106
107
108/**
109 * Fonction de désinstallation du plugin Coordonnees
110 *
111 * @param string $nom_meta_base_version
112 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
113 * @return void
114**/
115function coordonnees_vider_tables($nom_meta_base_version) {
116
117        sql_drop_table("spip_adresses");
118        sql_drop_table("spip_adresses_liens");
119        sql_drop_table("spip_numeros");
120        sql_drop_table("spip_numeros_liens");
121        sql_drop_table("spip_emails");
122        sql_drop_table("spip_emails_liens");
123
124        effacer_meta('coordonnees');
125        effacer_meta($nom_meta_base_version);
126}
127
128
129/**
130 * Fonction mise a jour du plugin Coordonnees vers 1.3
131 * @return void
132**/
133function coordonnees_upgrade_1_3() {
134        // On parcourt les adresses pour remplir le code du pays
135        $adresses = sql_allfetsel('id_adresse,pays', 'spip_adresses');
136        if ($adresses and is_array($adresses)){
137                foreach ($adresses as $adresse){
138                        $ok &= sql_update(
139                                'spip_adresses',
140                                array('pays_code' => '(SELECT code FROM spip_pays WHERE id_pays='.intval($adresse['pays']).')'),
141                                'id_adresse='.intval($adresse['id_adresse'])
142                        );
143                }
144        }
145}
146
147
148/**
149 * Fonction mise a jour du plugin Coordonnees vers 1.8.2
150 * Metas : conversion des objets «coordonnables» : on utilise les noms des tables (auteur -> spip_auteurs)
151 * @return void
152**/
153function coordonnees_upgrade_1_8_2() {
154        include_spip('inc/config');
155        if ( $objets = lire_config('coordonnees/objets', null, true) AND is_array($objets) AND count($objets) > 0 ) {
156                foreach ($objets as $objet) $objets_sql[] = table_objet_sql($objet);
157                effacer_config('coordonnees/objets');
158                ecrire_config('coordonnees/objets', $objets_sql);
159        }
160}
161
162?>
Note: See TracBrowser for help on using the repository browser.