source: spip-zone/_plugins_/rang/branches/automatique/rang_administrations.php @ 110177

Last change on this file since 110177 was 110177, checked in by rastapopoulos@…, 23 months ago

Nettoyage : aucune raison de stocker la config dans une liste à virgule avec ensuite des explode partout dans le code ensuite, alors qu'on sait parfaitement enregistrer nos configs en tableaux et listes. Donc on met à jour la base pour transformer l'ancien stockage, et on met à jour le code en conséquence. Au passage aussi, pas besoin de remettre un préfixe rang_ devant le nom de la config puisque désormais on est déjà dans un casier rang/.

  • Property svn:executable set to *
File size: 2.5 KB
Line 
1<?php
2/**
3 * Fichier gérant l'installation et désinstallation du plugin Rang
4 *
5 * @plugin     Rang
6 * @copyright  2016
7 * @author     Peetdu
8 * @licence    GNU/GPL
9 * @package    SPIP\Rang\Installation
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16
17/**
18 * Fonction d'installation et de mise à jour du plugin Rang.
19 *
20 * @param string $nom_meta_base_version
21 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
22 * @param string $version_cible
23 *     Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
24 * @return void
25**/
26function rang_upgrade($nom_meta_base_version, $version_cible) {
27        $maj = array();
28       
29        // Déplacer l'ancienne config
30        $maj['1.0.0'] = array(
31                array('rang_maj_1_0_0'),
32        );
33       
34        // Transformation de la config en liste tableau normal, pas à virgule
35        $maj['1.0.1'] = array(
36                array('rang_maj_1_0_1'),
37        );
38       
39        include_spip('base/upgrade');
40        maj_plugin($nom_meta_base_version, $version_cible, $maj);
41}
42
43/**
44 * Maj 1.0.0 : déplacer l'ancienne config
45 **/
46function rang_maj_1_0_0() {
47        include_spip('inc/config');
48       
49        if ($objets = lire_config('rang_objets')) {
50                ecrire_config('rang/rang_objets', $objets);
51                effacer_config('rang_objets');
52        }
53}
54
55/**
56 * Maj 1.0.1 : pas de config à virgule alors qu'on sait très bien stocker des listes et tableaux
57 **/
58function rang_maj_1_0_1() {
59        include_spip('inc/config');
60       
61        if (
62                $config_actuelle = lire_config('rang/rang_objets')
63                and is_string($config_actuelle)
64        ) {
65                // On transforme en tableau liste
66                $config_nouvelle = explode(',', $config_actuelle);
67                $config_nouvelle = array_map('trim', $config_nouvelle);
68                $config_nouvelle = array_filter($config_nouvelle);
69               
70                // On enregistre
71                ecrire_config('rang/objets', $config_nouvelle);
72                effacer_config('rang/rang_objets');
73        }
74}
75
76/**
77 * Fonction de désinstallation du plugin Rang.
78 *
79 * @param string $nom_meta_base_version
80 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
81 * @return void
82**/
83function rang_vider_tables($nom_meta_base_version) {
84        include_spip('inc/rang_api');
85
86        // supprimer les champs 'rang'
87        // note : ici que faire si un objet a ete selectionne, puis deselectionne dans la config ?
88        $objets = lire_config('rang/objets');
89        foreach ($objets as $value) {
90                $champs_table = sql_showtable($value);
91                if (isset($champs_table['field']['rang'])) {
92                        sql_alter("TABLE $value DROP rang");
93                }
94        }
95
96        // Effacer les metas
97        effacer_meta('rang');
98        effacer_meta($nom_meta_base_version);
99}
Note: See TracBrowser for help on using the repository browser.