source: spip-zone/_plugins_/dictionnaires/trunk/dictionnaires_administrations.php @ 111125

Last change on this file since 111125 was 111125, checked in by real3t@…, 5 months ago

Bien vérifier qu'il y a une table des sigles et acronymes (comme le précédent code le faisait)

File size: 5.6 KB
Line 
1<?php
2
3/**
4 * Fichier gérant l'installation et désinstallation du plugin
5 *
6 * @package SPIP\Dictionnaire\Installation
7**/
8
9// Sécurité
10if (!defined('_ECRIRE_INC_VERSION')) return;
11
12/**
13 * Installation/maj des tables dictionnaires et définitions...
14 *
15 * @param string $nom_meta_base_version
16 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
17 * @param string $version_cible
18 *     Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
19 * @return void
20 */
21function dictionnaires_upgrade($nom_meta_base_version, $version_cible) {
22
23        include_spip('inc/config');
24        include_spip('base/create');
25
26        $maj = array();
27        $maj['create'] = array(
28                array('maj_tables', array('spip_dictionnaires', 'spip_definitions', 'spip_definitions_liens')),
29                array('ecrire_config', 'dictionnaires/remplacer_premier_defaut', 'on'),
30                array('ecrire_config', 'dictionnaires/remplacer_premier_abbr', 'on'),
31                array('dictionnaires_migrer_acronymes'),
32        );
33
34        $maj['0.2.0'] = array(array('maj_tables', 'spip_dictionnaires'));
35        $maj['0.3.0'] = array(array('maj_tables', 'spip_definitions'));
36
37        // deplacer les statuts du dictionnaires de 'actif' a 'statut'
38        $maj['0.4.0'] = array(
39                array('maj_tables', 'spip_dictionnaires'),
40                array('sql_update', 'spip_dictionnaires', array('statut'=>'actif'), 'actif=1'),
41                array('sql_update', 'spip_dictionnaires', array('statut'=>'inactif'), 'actif=0'),
42                array('sql_alter', 'TABLE spip_dictionnaires DROP COLUMN actif'),
43        );
44        // pas de not null sans integer pour sqlite
45        $maj['0.4.1'] = array(
46                array('sql_alter', 'TABLE spip_definitions CHANGE COLUMN id_dictionnaire id_dictionnaire bigint(21) not null default 0')
47        );
48        // Ajout du champ url_extense dans la table spip_definitions
49        $maj['0.4.2'] = array(array('maj_tables', 'spip_definitions'));
50       
51        // Ajout du champ id_trad sur les définitions
52        $maj['0.4.3'] = array(array('maj_tables', 'spip_definitions'));
53        // Ajouter les langues sur les définitions anciennes
54        $maj['0.4.4'] = array(array('definitions_langues'));
55
56        include_spip('base/upgrade');
57        maj_plugin($nom_meta_base_version, $version_cible, $maj);
58}
59
60
61function definitions_langues(){
62        sql_updateq('spip_definitions',array('lang'=>$GLOBALS['meta']['langue_site']),'lang = ""');
63       
64}
65/**
66 * Migre les acronymes du plugins Forms & Tables (s'il est actif)
67 * dans ce plugin.
68**/
69function dictionnaires_migrer_acronymes(){
70        // Si F&T contient une table d'acronymes
71        if (count($liste = sql_fetsel('id_form', 'spip_forms', "type_form='acronymes_sigles'"))) {
72                $id_form = intval(reset($liste));
73                $acronymes = sql_allfetsel('id_donnee, statut, date', 'spip_forms_donnees', 'id_form = '.$id_form);
74                if ($acronymes and is_array($acronymes)){
75                        // On commence par créer un dictionnaire pour l'importation
76                        include_spip('action/editer_dictionnaire');
77                        if ($id_dictionnaire = insert_dictionnaire()){
78                                // On lui met des champs par défaut
79                                autoriser_exception('modifier', 'dictionnaire', $id_dictionnaire);
80                                dictionnaire_set($id_dictionnaire, array(
81                                        'titre' => _T('dictionnaire:importer_acronymes_titre'),
82                                        'statut' => 'actif',
83                                        'descriptif' => _T('dictionnaire:importer_acronymes_descriptif'),
84                                        'type_defaut' => 'abbr',
85                                ));
86                                autoriser_exception('modifier', 'dictionnaire', $id_dictionnaire, false);
87                               
88                                // On parcourt ensuite les acronymes à importer pour récupérer leurs infos
89                                foreach ($acronymes as $acronyme){
90                                        if ($titre = trim(str_replace("." , "", reset(sql_fetsel("valeur", "spip_forms_donnees_champs", array('id_donnee='.$acronyme['id_donnee'], "champ='ligne_1'")))))){
91                                                $lang_select = reset(sql_fetsel("valeur", "spip_forms_donnees_champs", array('id_donnee='.$acronyme['id_donnee'], "champ='select_2'")));
92                                                $lang = reset(sql_fetsel("titre", "spip_forms_champs_choix", array("champ='select_2'", "choix='$lang_select'")));
93                                                $definition = array(
94                                                        'id_dictionnaire' => $id_dictionnaire,
95                                                        'titre' => $titre,
96                                                        'texte' => reset(sql_fetsel("valeur", "spip_forms_donnees_champs", array('id_donnee='.$acronyme['id_donnee'], "champ='texte_1'"))),
97                                                        'type' => 'abbr',
98                                                        'casse' => 1,
99                                                        'date' => $acronyme['date'],
100                                                        'statut' => ($acronyme['statut'] == 'publie') ? 'publie' : 'prop',
101                                                        'lang' => $lang
102                                                );
103                                               
104                                                // On crée la définition dans la base SANS calculer le cache
105                                                include_spip('action/editer_definition');
106                                                if ($id_definition = insert_definition()){
107                                                        // 0 et pas $id_dictionnaire
108                                                        // car insert_definition a utilisé les valeurs par défaut
109                                                        autoriser_exception('publierdans', 'dictionnaire', 0);
110                                                        autoriser_exception('modifier', 'definition', $id_definition);
111                                                        definition_set($id_definition, $definition, false);
112                                                        autoriser_exception('modifier', 'definition', $id_definition, false);
113                                                        autoriser_exception('publierdans', 'dictionnaire', 0, false);
114                                                }
115                                        }
116                                }
117                               
118                                // On calcule le cache des définitions une seule fois à la fin
119                                include_spip('inc/dictionnaires');
120                                dictionnaires_lister_definitions(true);
121                        }
122                }
123        }
124}
125
126/**
127 * Désinstallation/suppression des tables dictionnaires et definitions
128 *
129 * @param string $nom_meta_base_version
130 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
131 * @return void
132 */
133function dictionnaires_vider_tables($nom_meta_base_version){
134
135        include_spip('base/abstract_sql');
136
137        // On efface les tables du plugin
138        sql_drop_table('spip_dictionnaires');
139        sql_drop_table('spip_definitions');
140        sql_drop_table('spip_definitions_liens');
141
142        // Effacer les configurations
143        effacer_meta('dictionnaires');
144
145        // On efface la version entregistrée
146        effacer_meta($nom_meta_base_version);
147
148}
149
150?>
Note: See TracBrowser for help on using the repository browser.