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

Last change on this file since 93121 was 93121, checked in by teddy.spip@…, 4 years ago

Indentation et formatage

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