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

Last change on this file since 110957 was 92115, checked in by kent1@…, 5 years ago

Pouvoir avoir des traductions de définition

version 1.1.0 (grosse modification)

File size: 5.0 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 est actif là tout de suite et qu'il y a une table d'acronymes
71        if (
72                _DIR_PLUGIN_FORMS
73                and include_spip('base/forms_base_api')
74                and count($liste=Forms_liste_tables('acronymes_sigles'))
75        ){
76                include_spip('forms_fonctions');
77                $id_form = intval(reset($liste));
78                $acronymes = sql_allfetsel('id_donnee, statut, date', 'spip_forms_donnees', 'id_form = '.$id_form);
79                if ($acronymes and is_array($acronymes)){
80                        // On commence par créer un dictionnaire pour l'importation
81                        include_spip('action/editer_dictionnaire');
82                        if ($id_dictionnaire = insert_dictionnaire()){
83                                // On lui met des champs par défaut
84                                dictionnaire_set($id_dictionnaire, array(
85                                        'titre' => _T('dictionnaire:importer_acronymes_titre'),
86                                        'statut' => 'actif',
87                                        'descriptif' => _T('dictionnaire:importer_acronymes_descriptif'),
88                                        'type_defaut' => 'abbr',
89                                ));
90                               
91                                // On parcourt ensuite les acronymes à importer pour récupérer leurs infos
92                                foreach ($acronymes as $acronyme){
93                                        if ($titre = trim(str_replace("." , "", forms_calcule_les_valeurs('forms_donnees_champs', $acronyme['id_donnee'], 'ligne_1', $id_form,' ', true)))){
94                                                $definition = array(
95                                                        'id_dictionnaire' => $id_dictionnaire,
96                                                        'titre' => $titre,
97                                                        'texte' => forms_calcule_les_valeurs('forms_donnees_champs', $acronyme['id_donnee'], 'texte_1', $id_form,' ', true),
98                                                        'type' => 'abbr',
99                                                        'casse' => 1,
100                                                        'date' => $acronyme['date'],
101                                                        'statut' => ($acronyme['statut'] == 'publie') ? 'publie' : 'prop',
102                                                        'lang' => forms_calcule_les_valeurs('forms_donnees_champs', $acronyme['id_donnee'], 'select_2', $id_form,' ', true)
103                                                );
104                                               
105                                                // On crée la définition dans la base SANS calculer le cache
106                                                include_spip('action/editer_definition');
107                                                if ($id_definition = insert_definition()){
108                                                        definition_set($id_definition, $definition, false);
109                                                }
110                                        }
111                                }
112                               
113                                // On calcule le cache des définitions une seule fois à la fin
114                                include_spip('inc/dictionnaires');
115                                dictionnaires_lister_definitions(true);
116                        }
117                }
118        }
119}
120
121/**
122 * Désinstallation/suppression des tables dictionnaires et definitions
123 *
124 * @param string $nom_meta_base_version
125 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
126 * @return void
127 */
128function dictionnaires_vider_tables($nom_meta_base_version){
129
130        include_spip('base/abstract_sql');
131
132        // On efface les tables du plugin
133        sql_drop_table('spip_dictionnaires');
134        sql_drop_table('spip_definitions');
135        sql_drop_table('spip_definitions_liens');
136
137        // Effacer les configurations
138        effacer_meta('dictionnaires');
139
140        // On efface la version entregistrée
141        effacer_meta($nom_meta_base_version);
142
143}
144
145?>
Note: See TracBrowser for help on using the repository browser.