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

Last change on this file since 61875 was 61875, checked in by rastapopoulos@…, 7 years ago

Report des modifs faites dans les deux versions pour égaliser.

Pour l'instant elles sont absolument équivalentes mise à part que le trunk a les infos pour SPIP 3, et du coup c'est le même numéro de version. Il faudra évidemment changer ça.

File size: 4.2 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6include_spip('inc/meta');
7
8// Installation et mise à jour
9function dictionnaires_upgrade($nom_meta_version_base, $version_cible){
10
11        $version_actuelle = '0.0.0';
12        if (
13                (!isset($GLOBALS['meta'][$nom_meta_version_base]))
14                || (($version_actuelle = $GLOBALS['meta'][$nom_meta_version_base]) != $version_cible)
15        ){
16               
17                if (version_compare($version_actuelle,'0.0.0','=')){
18                        // Création des tables
19                        include_spip('base/create');
20                        include_spip('base/abstract_sql');
21                        creer_base();
22                       
23                        // Valeurs de config par défaut
24                        include_spip('inc/config');
25                        ecrire_config('dictionnaires/remplacer_premier_defaut', 'on');
26                        ecrire_config('dictionnaires/remplacer_premier_abbr', 'on');
27                       
28                        // Migration depuis F&T si présent
29                        dictionnaires_migrer_acronymes();
30                       
31                        echo "Installation du plugin dictionnaires<br/>";
32                        ecrire_meta($nom_meta_version_base, $version_actuelle=$version_cible, 'non');
33                }
34               
35                if (version_compare($version_actuelle,$version_cible='0.2.0','<')){
36                        include_spip('base/create');
37                        include_spip('base/abstract_sql');
38                       
39                        // On ajoute un champ pour choisir le type par défaut dans un dictionnaire
40                        maj_tables('spip_dictionnaires');
41                       
42                        // On change la version
43                        ecrire_meta($nom_meta_version_base, $version_actuelle=$version_cible, 'non');
44                }
45               
46                if (version_compare($version_actuelle,$version_cible='0.3.0','<')){
47                        include_spip('base/create');
48                        include_spip('base/abstract_sql');
49                       
50                        // On ajoute un champ pour forcer la prise en compte de la casse pour une définition
51                        maj_tables('spip_definitions');
52                       
53                        // On change la version
54                        ecrire_meta($nom_meta_version_base, $version_actuelle=$version_cible, 'non');
55                }
56        }
57
58}
59
60function dictionnaires_migrer_acronymes(){
61        // Si F&T est actif là tout de suite et qu'il y a une table d'acronymes
62        if (
63                _DIR_PLUGIN_FORMS
64                and include_spip('base/forms_base_api')
65                and count($liste=Forms_liste_tables('acronymes_sigles'))
66        ){
67                include_spip('forms_fonctions');
68                $id_form = intval(reset($liste));
69                spip_query("SELECT id_donnee FROM spip_forms_donnees WHERE id_form="._q($id_form)." AND statut='publie'");
70                $acronymes = sql_allfetsel('id_donnee, statut, date', 'spip_forms_donnees', 'id_form = '.$id_form);
71                if ($acronymes and is_array($acronymes)){
72                        // On commence par créer un dictionnaire pour l'importation
73                        include_spip('action/editer_dictionnaire');
74                        if ($id_dictionnaire = insert_dictionnaire()){
75                                // On lui met des champs par défaut
76                                dictionnaire_set($id_dictionnaire, array(
77                                        'titre' => _T('dictionnaire:importer_acronymes_titre'),
78                                        'actif' => 1,
79                                        'descriptif' => _T('dictionnaire:importer_acronymes_descriptif'),
80                                        'type_defaut' => 'abbr',
81                                ));
82                               
83                                // On parcourt ensuite les acronymes à importer pour récupérer leurs infos
84                                foreach ($acronymes as $acronyme){
85                                        if ($titre = trim(str_replace("." , "", forms_calcule_les_valeurs('forms_donnees_champs', $acronyme['id_donnee'], 'ligne_1', $id_form,' ', true)))){
86                                                $definition = array(
87                                                        'id_dictionnaire' => $id_dictionnaire,
88                                                        'titre' => $titre,
89                                                        'texte' => forms_calcule_les_valeurs('forms_donnees_champs', $acronyme['id_donnee'], 'texte_1', $id_form,' ', true),
90                                                        'type' => 'abbr',
91                                                        'casse' => 1,
92                                                        'date' => $acronyme['date'],
93                                                        'statut' => ($acronyme['statut'] == 'publie') ? 'publie' : 'prop',
94                                                        'lang' => forms_calcule_les_valeurs('forms_donnees_champs', $acronyme['id_donnee'], 'select_2', $id_form,' ', true)
95                                                );
96                                               
97                                                // On crée la définition dans la base SANS calculer le cache
98                                                include_spip('action/editer_definition');
99                                                if ($id_definition = insert_definition()){
100                                                        definition_set($id_definition, $definition, false);
101                                                }
102                                        }
103                                }
104                               
105                                // On calcule le cache des définitions une seule fois à la fin
106                                include_spip('inc/dictionnaires');
107                                dictionnaires_lister_definitions(true);
108                        }
109                }
110        }
111}
112
113// Désinstallation
114function dictionnaires_vider_tables($nom_meta_version_base){
115
116        include_spip('base/abstract_sql');
117       
118        // On efface les tables du plugin
119        sql_drop_table('spip_dictionnaires');
120        sql_drop_table('spip_definitions');
121        sql_drop_table('spip_definitions_liens');
122               
123        // On efface la version entregistrée
124        effacer_meta($nom_meta_version_base);
125
126}
127
128?>
Note: See TracBrowser for help on using the repository browser.