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

Last change on this file since 57394 was 57394, checked in by joseph@…, 8 years ago

Mise à jour vers SPIP 3. Utilisation des squelettes pour SPIP 3.
On retire la gestion des contenus et de l'interactivité. A intégrer dans les exentions ?

File size: 4.7 KB
Line 
1<?php
2if (!defined("_ECRIRE_INC_VERSION")) return;
3
4function ieconfig_saisies_export() {
5$saisies = array (
6                // Options d'export
7                array(
8                        'saisie' => 'fieldset',
9                        'options' => array(
10                                'nom' => 'ieconfig_export',
11                                'label' => '<:ieconfig:label_ieconfig_export:>',
12                                'icone' => 'img/ieconfig-export.png'
13                        ),
14                        'saisies' => array(
15                                array(
16                                        'saisie' => 'input',
17                                        'options' => array(
18                                                'nom' => 'ieconfig_export_nom',
19                                                'label' => '<:ieconfig:label_ieconfig_export_nom:>',
20                                                'obligatoire' => 'oui',
21                                                'defaut' => $GLOBALS['meta']['nom_site'].' - '.date('Y/m/d')
22                                        )
23                                ),
24                                array(
25                                        'saisie' => 'textarea',
26                                        'options' => array(
27                                                'nom' => 'ieconfig_export_description',
28                                                'label' => '<:ieconfig:label_ieconfig_export_description:>',
29                                                'rows' => 4
30                                        )
31                                ),
32                                array(
33                                        'saisie' => 'explication',
34                                        'options' => array(
35                                                'nom' => 'ieconfig_export_explication',
36                                                'texte' => '<:ieconfig:texte_ieconfig_export_explication:>'
37                                        )
38                                ),
39                                array(
40                                        'saisie' => 'selection',
41                                        'options' => array(
42                                                'nom' => 'ieconfig_export_choix',
43                                                'label' => '<:ieconfig:label_ieconfig_export_choix:>',
44                                                'cacher_option_intro' => 'oui',
45                                                'defaut' => 'telecharger',
46                                                'datas' => array(
47                                                        'sauvegarder' => '<:ieconfig:item_sauvegarder:>',
48                                                        'telecharger' => '<:ieconfig:item_telecharger:>'
49                                                )
50                                        )
51                                )
52                        )
53                )
54        );
55        // On passe via le pipeline ieconfig
56        $saisies = pipeline('ieconfig',array(
57                'args' => array(
58                        'action' => 'form_export'
59                ),
60                'data' => $saisies
61        ));
62        // Gestion des plugins utilisant le pipeline ieconfig_metas
63        foreach(pipeline('ieconfig_metas',array()) as $prefixe => $data){
64                $saisies[] = array(
65                        'saisie' => 'fieldset',
66                        'options' => array(
67                                'nom' => $prefixe,
68                                'label' => isset($data['titre']) ? $data['titre'] : $prefixe,
69                                'icone' => isset($data['icone']) ? $data['icone'] : ''
70                        ),
71                        'saisies' => array(
72                                array(
73                                        'saisie' => 'oui_non',
74                                        'options' => array(
75                                                'nom' => 'export_'.$prefixe,
76                                                'label' => _T('ieconfig:label_exporter'),
77                                                'defaut' => ''
78                                        )
79                                )
80                        )
81                );
82        }
83        return $saisies;
84}
85
86function formulaires_ieconfig_export_charger_dist() {
87        $saisies = ieconfig_saisies_export();
88        $contexte = array(
89                '_saisies' => $saisies
90        );
91       
92        return array_merge(saisies_charger_champs($saisies),$contexte);
93}
94
95function formulaires_ieconfig_export_verifier_dist() {
96        include_spip('inc/saisies');
97        return saisies_verifier(ieconfig_saisies_export());
98}
99
100function formulaires_ieconfig_export_traiter_dist() {
101        $export = array();
102        $export['nom'] = _request('ieconfig_export_nom');
103        if (_request('ieconfig_export_description') != '')
104                $export['description'] = _request('ieconfig_export_description');
105       
106        // On passe via le pipeline ieconfig
107        $export = pipeline('ieconfig',array(
108                'args' => array(
109                        'action' => 'export'
110                ),
111                'data' => $export
112        ));
113       
114        // Gestion des plugins utilisant le pipeline ieconfig_metas
115        foreach(pipeline('ieconfig_metas',array()) as $prefixe => $data){
116                if(_request('export_'.$prefixe)=='on') {
117                        $export_plugin = array();
118                        if(isset($data['metas_brutes']))
119                                foreach(explode(',',$data['metas_brutes']) as $meta)
120                                        if (isset($GLOBALS['meta'][$meta]))
121                                                $export_plugin[$meta] = $GLOBALS['meta'][$meta];
122                        if(isset($data['metas_serialize']))
123                                foreach(explode(',',$data['metas_serialize']) as $meta)
124                                        if (isset($GLOBALS['meta'][$meta]))
125                                                $export_plugin[$meta] = unserialize($GLOBALS['meta'][$meta]);
126                        if (count($export_plugin)>0)
127                                $export[$prefixe] = $export_plugin;
128                }
129        }
130       
131        // On encode en yaml
132        include_spip('inc/yaml');
133        $export = yaml_encode($export,array('inline'=>20));
134       
135        // Nom du fichier
136        include_spip('inc/texte');
137        $site = isset($GLOBALS['meta']['nom_site'])
138          ? preg_replace(array(",\W,is",",_(?=_),",",_$,"),array("_","",""), couper(translitteration(trim($GLOBALS['meta']['nom_site'])),30,""))
139          : 'spip';
140        $filename = $site.'_'.date('Y-m-d_H-i').'.yaml';
141       
142        // Si telechargement
143        if(_request('ieconfig_export_choix')=='telecharger') {
144                refuser_traiter_formulaire_ajax();
145                Header("Content-Type: text/x-yaml;");
146                Header("Content-Disposition: attachment; filename=$filename");
147                Header("Content-Length: ".strlen($export));
148                echo $export;
149                exit;
150        } else {
151                sous_repertoire(_DIR_TMP, 'ieconfig');
152                if (ecrire_fichier(_DIR_TMP . 'ieconfig/'.$filename , $export))
153                        return array('message_ok' => _T('ieconfig:message_ok_export',array('filename'=>$filename)));
154                else
155                        return array('message_erreur' => _T('ieconfig:message_erreur_export',array('filename'=>$filename)));
156        }
157}
158
159?>
Note: See TracBrowser for help on using the repository browser.