source: spip-zone/_plugins_/noizetier_layout/trunk/noizetier_layout_administrations.php @ 118205

Last change on this file since 118205 was 118205, checked in by Charles Razack, 14 months ago

Allez on est sympa : migration des données suite aux derniers renommages. up z.

File size: 3.4 KB
Line 
1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) {
5        return;
6}
7
8/**
9 * Installation du schéma de données propre au plugin et gestion des migrations suivant
10 * les évolutions du schéma.
11 *
12 * Le schéma comprend des tables et des variables de configuration propres au plugin.
13 *
14 * @param string $nom_meta_base_version
15 *              Nom de la meta dans laquelle sera rangée la version du schéma
16 * @param string $version_cible
17 *              Version du schéma de données en fin d'upgrade
18 *
19 * @return void
20 */
21function noizetier_layout_upgrade($nom_meta_base_version, $version_cible) {
22        $maj = array();
23
24        // Configurations par défaut
25        $config = array(
26                'inclure_css_public' => 'on',
27        );
28
29        // 1ère installation
30        $maj['create'] = array(
31                array('ecrire_config', 'noizetier_layout', $config),
32        );
33
34        // schéma 0.2.0 : renommages
35        $maj['0.2.0'] = array(
36                array('noizetier_layout_maj_020'),
37        );
38
39        include_spip('base/upgrade');
40        maj_plugin($nom_meta_base_version, $version_cible, $maj);
41}
42
43/**
44 * Suppression de l'ensemble du schéma de données propre au plugin, c'est-à-dire
45 * les tables et les variables de configuration.
46 *
47 * @param string $nom_meta_base_version
48 *              Nom de la meta dans laquelle sera rangée la version du schéma
49 *
50 * @return void
51 */
52function noizetier_layout_vider_tables($nom_meta_base_version) {
53
54        // On efface la version enregistrée du schéma des données du plugin
55        effacer_meta($nom_meta_base_version);
56        // On efface la configuration du plugin
57        effacer_meta('noizetier_layout');
58}
59
60/**
61 * Mise à jour vers le schema 0.2.0
62 *
63 * Mettre à jour les noisettes suite à divers renommages.
64 *
65 * @return void
66 */
67function noizetier_layout_maj_020() {
68        include_spip('base/abstract_sql');
69        if ($noisettes = sql_allfetsel('*', 'spip_noisettes')) {
70                foreach ($noisettes as $noisette) {
71                        $set = array();
72                        $type_ancien = 'conteneur_row';
73                        $type_nouveau = 'conteneur';
74                        // type_noisette : `conteneur_row` → `conteneur`
75                        if ($noisette['type_noisette'] == $type_ancien) {
76                                $set['type_noisette'] = $type_nouveau;
77                        }
78                        // id_conteneur : `conteneur_row` → `conteneur`
79                        if (
80                                $id_conteneur = str_replace($type_ancien, $type_nouveau, $noisette['id_conteneur'])
81                                and $id_conteneur != $noisette['id_conteneur']
82                        ) {
83                                $set['id_conteneur'] = $id_conteneur;
84                        }
85                        // conteneur : `conteneur_row` → `conteneur`
86                        if (
87                                $conteneur = unserialize($noisette['conteneur'])
88                                and $conteneur['type_noisette'] == $type_ancien
89                        ) {
90                                $conteneur['type_noisette'] = $type_nouveau;
91                                $set['conteneur'] = serialize($conteneur);
92                        }
93                        // parametres : `css_container` → `css_grid_container` etc.
94                        if ($parametres = unserialize($noisette['parametres'])) {
95                                $map = array(
96                                        'css_container' => 'css_grid_container',
97                                        'css_row'       => 'css_grid_row',
98                                        'css_column'    => 'css_grid_column',
99                                );
100                                foreach ($map as $avant => $apres) {
101                                        if (isset($parametres[$avant])) {
102                                                $parametres[$apres] = $parametres[$avant];
103                                                unset($parametres[$avant]);
104                                        }
105                                }
106                                $parametres = serialize($parametres);
107                                if ($parametres != $noisette['parametres']) {
108                                        $set['parametres'] = $parametres;
109                                }
110                        }
111                        // màj
112                        if ($set) {
113                                sql_updateq(
114                                        'spip_noisettes',
115                                        $set,
116                                        'id_noisette='.intval($noisette['id_noisette'])
117                                );
118                        }
119                }
120        }
121        // Invalider le cache des types de noisettes
122        include_spip('inc/ncore_type_noisette');
123        type_noisette_charger('noizetier', true);
124}
Note: See TracBrowser for help on using the repository browser.