source: spip-zone/_plugins_/ieconfig/trunk/formulaires/ieconfig_export.php

Last change on this file was 111328, checked in by eric@…, 3 years ago

Modernisons le code des saisies PHP en utilisant la fonction _saisies au lieu du _charger et du _verifier qui ne servent plus à rien. La fonction en cause pour le chargement des valeurs par défaut est donc devenue inutile.

File size: 5.7 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6
7function formulaires_ieconfig_export_saisies_dist() {
8        $saisies = array(
9                // Options d'export
10                array(
11                        'saisie' => 'fieldset',
12                        'options' => array(
13                                'nom' => 'ieconfig_export',
14                                'label' => '<:ieconfig:label_ieconfig_export:>',
15                                'icone' => 'img/ieconfig-export.png',
16                        ),
17                        'saisies' => array(
18                                array(
19                                        'saisie' => 'input',
20                                        'options' => array(
21                                                'nom' => 'ieconfig_export_nom',
22                                                'label' => '<:ieconfig:label_ieconfig_export_nom:>',
23                                                'obligatoire' => 'oui',
24                                                'defaut' => $GLOBALS['meta']['nom_site'] . ' - ' . date('Y/m/d'),
25                                        ),
26                                ),
27                                array(
28                                        'saisie' => 'textarea',
29                                        'options' => array(
30                                                'nom' => 'ieconfig_export_description',
31                                                'label' => '<:ieconfig:label_ieconfig_export_description:>',
32                                                'rows' => 4,
33                                        ),
34                                ),
35                                array(
36                                        'saisie' => 'explication',
37                                        'options' => array(
38                                                'nom' => 'ieconfig_export_explication',
39                                                'texte' => '<:ieconfig:texte_ieconfig_export_explication:>',
40                                        ),
41                                ),
42                                array(
43                                        'saisie' => 'selection',
44                                        'options' => array(
45                                                'nom' => 'ieconfig_export_choix',
46                                                'label' => '<:ieconfig:label_ieconfig_export_choix:>',
47                                                'cacher_option_intro' => 'oui',
48                                                'defaut' => 'telecharger',
49                                                'datas' => array(
50                                                        'sauvegarder' => '<:ieconfig:item_sauvegarder:>',
51                                                        'telecharger' => '<:ieconfig:item_telecharger:>',
52                                                )
53                                        ),
54                                ),
55                        ),
56                ),
57        );
58        // Gestion des plugins utilisant le pipeline ieconfig_metas
59        $ieconfig_metas = array();
60        foreach (pipeline('ieconfig_metas', array()) as $prefixe => $data) {
61                if (isset($data['icone'])) {
62                        $icone = chemin_image($data['icone']);
63                        if (!$icone) {
64                                $icone = find_in_path($data['icone']);
65                        }
66                        if ($icone) {
67                                $icone = '<img src="' . $icone . '" alt="" style="margin-left:0px; margin-right:0.5em;" />';
68                        }
69                } else {
70                        $icone = '';
71                }
72                $ieconfig_metas[$prefixe] = $icone . (isset($data['titre']) ? $data['titre'] : $prefixe);
73        }
74        ksort($ieconfig_metas);
75        if (count($ieconfig_metas) > 0) {
76                $saisies[] = array(
77                        'saisie' => 'fieldset',
78                        'options' => array(
79                                'nom' => 'metas_fieldset',
80                                'label' => _T('ieconfig:label_configurations_a_exporter'),
81                                'icone' => 'config-export-16.png',
82                        ),
83                        'saisies' => array(
84                                array(
85                                        'saisie' => 'checkbox',
86                                        'options' => array(
87                                                'nom' => 'export_metas',
88                                                'label' => _T('ieconfig:label_configurations_a_exporter'),
89                                                'tout_selectionner' => 'oui',
90                                                'datas' => $ieconfig_metas,
91                                        ),
92                                ),
93                        ),
94                );
95        }
96
97        // On passe via le pipeline ieconfig (pour les cas particuliers)
98        $saisies = pipeline('ieconfig', array(
99                'args' => array(
100                        'action' => 'form_export',
101                ),
102                'data' => $saisies,
103        ));
104
105        return $saisies;
106}
107
108
109function formulaires_ieconfig_export_traiter_dist() {
110        $export = array();
111        $export['nom'] = _request('ieconfig_export_nom');
112        if (_request('ieconfig_export_description') != '') {
113                $export['description'] = _request('ieconfig_export_description');
114        }
115
116        // On passe via le pipeline ieconfig
117        $export = pipeline('ieconfig', array(
118                'args' => array(
119                        'action' => 'export',
120                ),
121                'data' => $export,
122        ));
123
124        // Gestion des plugins utilisant le pipeline ieconfig_metas
125        $export_metas = _request('export_metas');
126        if (!is_array($export_metas)) {
127                $export_metas = array();
128        }
129
130        foreach (pipeline('ieconfig_metas', array()) as $prefixe => $data) {
131                if (in_array($prefixe, $export_metas)) {
132                        $export_plugin = array();
133                        if (isset($data['metas_brutes'])) {
134                                foreach (explode(',', $data['metas_brutes']) as $meta) {
135                                        // On teste le cas ou un prefixe est indique (dernier caractere est *)
136                                        if (substr($meta, -1) == '*') {
137                                                $p = substr($meta, 0, -1);
138                                                foreach ($GLOBALS['meta'] as $m => $v) {
139                                                        if (substr($m, 0, strlen($p)) == $p) {
140                                                                $export_plugin[$m] = $v;
141                                                        }
142                                                }
143                                        } elseif (isset($GLOBALS['meta'][$meta])) {
144                                                $export_plugin[$meta] = $GLOBALS['meta'][$meta];
145                                        }
146                                }
147                        }
148                        if (isset($data['metas_serialize'])) {
149                                foreach (explode(',', $data['metas_serialize']) as $meta) {
150                                        // On teste le cas ou un prefixe est indique (dernier caractere est *)
151                                        if (substr($meta, -1) == '*') {
152                                                $p = substr($meta, 0, -1);
153                                                foreach ($GLOBALS['meta'] as $m => $v) {
154                                                        if (substr($m, 0, strlen($p)) == $p) {
155                                                                $export_plugin[$m] = unserialize($v);
156                                                        }
157                                                }
158                                        } elseif (isset($GLOBALS['meta'][$meta])) {
159                                                $export_plugin[$meta] = unserialize($GLOBALS['meta'][$meta]);
160                                        }
161                                }
162                        }
163                        if (count($export_plugin) > 0) {
164                                $export[$prefixe] = $export_plugin;
165                        }
166                }
167        }
168
169        // On encode en yaml
170        include_spip('inc/yaml');
171        $export = yaml_encode($export, array('inline' => 20));
172
173        // Nom du fichier
174        include_spip('inc/texte');
175        $site = isset($GLOBALS['meta']['nom_site']) ? preg_replace(array(",\W,is", ',_(?=_),', ',_$,'), array(
176                '_',
177                '',
178                '',
179        ), couper(translitteration(trim($GLOBALS['meta']['nom_site'])), 30, '')) : 'spip';
180        $filename = $site . '_' . date('Y-m-d_H-i') . '.yaml';
181
182        // Si telechargement
183        if (_request('ieconfig_export_choix') == 'telecharger') {
184                refuser_traiter_formulaire_ajax();
185                set_request('action', 'courcircuiter_affichage_usage_memoire'); // Pour empêcher l'extension dev d'ajouter un div avec l'usage mémoire.
186                header('Content-Type: text/x-yaml;');
187                header("Content-Disposition: attachment; filename=$filename");
188                header('Content-Length: ' . strlen($export));
189                echo $export;
190                exit;
191        } else {
192                sous_repertoire(_DIR_TMP, 'ieconfig');
193                if (ecrire_fichier(_DIR_TMP . 'ieconfig/' . $filename, $export)) {
194                        return array('message_ok' => _T('ieconfig:message_ok_export', array('filename' => $filename)));
195                } else {
196                        return array('message_erreur' => _T('ieconfig:message_erreur_export', array('filename' => $filename)));
197                }
198        }
199}
Note: See TracBrowser for help on using the repository browser.