[PLUGINS] +les plugins de bases
[ptitvelo/web/www.git] / www / plugins / menus_1 / menus_ieconfig.php
1 <?php
2
3 if (!defined("_ECRIRE_INC_VERSION")) return;
4
5 /**
6 * Pipeline ieconfig pour l'import/export de configuration
7 *
8 * @param array $flux
9 * @return array
10 */
11 function menus_ieconfig($flux){
12 include_spip('inc/texte');
13 $action = $flux['args']['action'];
14
15 // Formulaire d'export
16 if ($action=='form_export') {
17 $saisies = array(
18 array(
19 'saisie' => 'fieldset',
20 'options' => array(
21 'nom' => 'menus_export',
22 'label' => '<:menus:editer_menus_titre:>',
23 'icone' => 'menu-16.png'
24 ),
25 'saisies' => array(
26 array(
27 'saisie' => 'menus_multiple',
28 'options' => array(
29 'nom' => 'menus_a_exporter',
30 'label' => '<:menus:formulaire_ieconfig_menus_a_exporter:>',
31 'cacher_option_intro' => 'oui'
32 )
33 )
34 )
35 )
36 );
37 $flux['data'] = array_merge($flux['data'],$saisies);
38 }
39
40 // Tableau d'export
41 if ($action=='export' && is_array(_request('menus_a_exporter')) && count(_request('menus_a_exporter'))>0) {
42 $flux['data']['menus'] = array();
43 include_spip('base/abstract_sql');
44 include_spip('action/exporter_menu');
45 foreach (_request('menus_a_exporter') as $identifiant) {
46 $menu = sql_fetsel(array('id_menu','titre','css'),'spip_menus','identifiant = '.sql_quote($identifiant));
47 $id_menu = $menu['id_menu'];
48 unset($menu['id_menu']);
49 $menu['entrees'] = exporter_menu_recursif($id_menu);
50 $flux['data']['menus'][$identifiant] = $menu;
51 }
52 }
53
54 // Formulaire d'import
55 if ($action=='form_import' && isset($flux['args']['config']['menus']) && is_array($flux['args']['config']['menus']) && count($flux['args']['config']['menus'])>0) {
56 $saisies = array(
57 array(
58 'saisie' => 'fieldset',
59 'options' => array(
60 'nom' => 'menus_import',
61 'label' => '<:menus:editer_menus_titre:>',
62 'icone' => 'menu-16.png'
63 ),
64 'saisies' => array(
65 array(
66 'saisie' => 'explication',
67 'options' => array(
68 'nom' => 'menus_import_explication',
69 'texte' => '<:menus:formulaire_ieconfig_choisir_menus_a_importer:>'
70 )
71 )
72 )
73 )
74 );
75 foreach ($flux['args']['config']['menus'] as $identifiant => $menu) {
76 if (sql_countsel('spip_menus','identifiant = '.sql_quote($identifiant))>0) {
77 $saisies[0]['saisies'][] = array(
78 'saisie' => 'selection',
79 'options' => array(
80 'nom' => 'menus_importer_'.$identifiant,
81 'label' => $identifiant.(isset($menu['titre']) ? ' ('.typo($menu['titre']).')' : ''),
82 'cacher_option_intro' => 'oui',
83 'attention' => '<:menus:formulaire_ieconfig_menu_meme_identifiant:>',
84 'datas' => array(
85 'non' => '<:menus:formulaire_ieconfig_ne_pas_importer:>',
86 'renommer' => '<:menus:formulaire_ieconfig_renommer:>',
87 'remplacer' => '<:menus:formulaire_ieconfig_remplacer:>'
88 )
89 )
90 );
91 } else {
92 $saisies[0]['saisies'][] = array(
93 'saisie' => 'selection',
94 'options' => array(
95 'nom' => 'menus_importer_'.$identifiant,
96 'label' => $identifiant.(isset($menu['titre']) ? ' ('.typo($menu['titre']).')' : ''),
97 'cacher_option_intro' => 'oui',
98 'datas' => array(
99 'non' => '<:menus:formulaire_ieconfig_ne_pas_importer:>',
100 'importer' => '<:menus:formulaire_ieconfig_importer:>'
101 )
102 )
103 );
104 }
105 }
106 $flux['data'] = array_merge($flux['data'],$saisies);
107 }
108
109 // Import de la configuration
110 if ($action=='import' && isset($flux['args']['config']['menus']) && is_array($flux['args']['config']['menus']) && count($flux['args']['config']['menus'])>0) {
111 foreach ($flux['args']['config']['menus'] as $identifiant => $menu) {
112 $choix = _request('menus_importer_'.$identifiant);
113 include_spip('base/abstract_sql');
114 include_spip('inc/menus');
115 include_spip('action/editer_menu');
116 if ($choix == 'remplacer') {
117 $id_menu = intval(sql_getfetsel('id_menu','spip_menus','identifiant = '.sql_quote($identifiant)));
118 menus_supprimer_menu($id_menu);
119 }
120 if ($choix == 'renommer')
121 $identifiant = $identifiant.'_'.time();
122 if (in_array($choix,array('importer','remplacer','renommer'))) {
123 $titre = isset($menu['titre']) ? $menu['titre'] : '';
124 $css = isset($menu['css']) ? $menu['css'] : '';
125 $id_menu = sql_insertq('spip_menus',array(
126 'identifiant' => $identifiant,
127 'titre' => $titre,
128 'css' => $css
129 ));
130 if (isset($menu['entrees']))
131 menus_importer($menu['entrees'], $id_menu);
132 }
133 }
134 }
135
136 return($flux);
137 }
138
139 ?>