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

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

Poursuite du passage à SPIP 3 du plugin dictionnaire. On utilise l'api d'objets éditoriaux et on ne met que les squelettes nécessaires dans le plugin. Au passage on PHPDoc toutes les fonctions.

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