[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / menus / menus_ieconfig.php
diff --git a/www/plugins/menus/menus_ieconfig.php b/www/plugins/menus/menus_ieconfig.php
new file mode 100644 (file)
index 0000000..c07647b
--- /dev/null
@@ -0,0 +1,139 @@
+<?php\r
+\r
+if (!defined("_ECRIRE_INC_VERSION")) return;\r
+\r
+/**\r
+ * Pipeline ieconfig pour l'import/export de configuration\r
+ *\r
+ * @param array $flux\r
+ * @return array\r
+ */\r
+function menus_ieconfig($flux){\r
+       include_spip('inc/texte');\r
+       $action = $flux['args']['action'];\r
+       \r
+       // Formulaire d'export\r
+       if ($action=='form_export') {\r
+               $saisies = array(\r
+                       array(\r
+                               'saisie' => 'fieldset',\r
+                               'options' => array(\r
+                                       'nom' => 'menus_export',\r
+                                       'label' => '<:menus:editer_menus_titre:>',\r
+                                       'icone' => 'images/menus-24.png'\r
+                               ),\r
+                               'saisies' => array(\r
+                                       array(\r
+                                               'saisie' => 'menus_multiple',\r
+                                               'options' => array(\r
+                                                       'nom' => 'menus_a_exporter',\r
+                                                       'label' => '<:menus:formulaire_ieconfig_menus_a_exporter:>',\r
+                                                       'cacher_option_intro' => 'oui'\r
+                                               )\r
+                                       )\r
+                               )\r
+                       )\r
+               );\r
+               $flux['data'] = array_merge($flux['data'],$saisies);\r
+       }\r
+       \r
+       // Tableau d'export\r
+       if ($action=='export' && is_array(_request('menus_a_exporter')) && count(_request('menus_a_exporter'))>0) {\r
+               $flux['data']['menus'] = array();\r
+               include_spip('base/abstract_sql');\r
+               include_spip('action/exporter_menu');\r
+               foreach (_request('menus_a_exporter') as $identifiant) {\r
+                       $menu = sql_fetsel(array('id_menu','titre','css'),'spip_menus','identifiant = '.sql_quote($identifiant));\r
+                       $id_menu = $menu['id_menu'];\r
+                       unset($menu['id_menu']);\r
+                       $menu['entrees'] = exporter_menu_recursif($id_menu);\r
+                       $flux['data']['menus'][$identifiant] = $menu;\r
+               }\r
+       }\r
+       \r
+       // Formulaire d'import\r
+       if ($action=='form_import' && isset($flux['args']['config']['menus']) && is_array($flux['args']['config']['menus']) && count($flux['args']['config']['menus'])>0) {\r
+               $saisies = array(\r
+                       array(\r
+                               'saisie' => 'fieldset',\r
+                               'options' => array(\r
+                                       'nom' => 'menus_import',\r
+                                       'label' => '<:menus:editer_menus_titre:>',\r
+                                       'icone' => 'images/menus-24.png'\r
+                               ),\r
+                               'saisies' => array(\r
+                                       array(\r
+                                               'saisie' => 'explication',\r
+                                               'options' => array(\r
+                                                       'nom' => 'menus_import_explication',\r
+                                                       'texte' => '<:menus:formulaire_ieconfig_choisir_menus_a_importer:>'\r
+                                               )\r
+                                       )\r
+                               )\r
+                       )\r
+               );\r
+               foreach ($flux['args']['config']['menus'] as $identifiant => $menu) {\r
+                       if (sql_countsel('spip_menus','identifiant = '.sql_quote($identifiant))>0) {\r
+                               $saisies[0]['saisies'][] = array(\r
+                                       'saisie' => 'selection',\r
+                                       'options' => array(\r
+                                               'nom' => 'menus_importer_'.$identifiant,\r
+                                               'label' => $identifiant.(isset($menu['titre']) ? ' ('.typo($menu['titre']).')' : ''),\r
+                                               'cacher_option_intro' => 'oui',\r
+                                               'attention' => '<:menus:formulaire_ieconfig_menu_meme_identifiant:>',\r
+                                               'datas' => array(\r
+                                                       'non' => '<:menus:formulaire_ieconfig_ne_pas_importer:>',\r
+                                                       'renommer' => '<:menus:formulaire_ieconfig_renommer:>',\r
+                                                       'remplacer' => '<:menus:formulaire_ieconfig_remplacer:>'\r
+                                               )\r
+                                       )\r
+                               );\r
+                       } else {\r
+                               $saisies[0]['saisies'][] = array(\r
+                                       'saisie' => 'selection',\r
+                                       'options' => array(\r
+                                               'nom' => 'menus_importer_'.$identifiant,\r
+                                               'label' => $identifiant.(isset($menu['titre']) ? ' ('.typo($menu['titre']).')' : ''),\r
+                                               'cacher_option_intro' => 'oui',\r
+                                               'datas' => array(\r
+                                                       'non' => '<:menus:formulaire_ieconfig_ne_pas_importer:>',\r
+                                                       'importer' => '<:menus:formulaire_ieconfig_importer:>'\r
+                                               )\r
+                                       )\r
+                               );\r
+                       }\r
+               }\r
+               $flux['data'] = array_merge($flux['data'],$saisies);\r
+       }\r
+       \r
+       // Import de la configuration\r
+       if ($action=='import' && isset($flux['args']['config']['menus']) && is_array($flux['args']['config']['menus']) && count($flux['args']['config']['menus'])>0) {\r
+               foreach ($flux['args']['config']['menus'] as $identifiant => $menu) {\r
+                       $choix = _request('menus_importer_'.$identifiant);\r
+                       include_spip('base/abstract_sql');\r
+                       include_spip('inc/menus');\r
+                       include_spip('action/editer_menu');\r
+                       if ($choix == 'remplacer') {\r
+                               $id_menu = intval(sql_getfetsel('id_menu','spip_menus','identifiant = '.sql_quote($identifiant)));\r
+                               menus_supprimer_menu($id_menu);\r
+                       }\r
+                       if ($choix == 'renommer')\r
+                               $identifiant = $identifiant.'_'.time();\r
+                       if (in_array($choix,array('importer','remplacer','renommer'))) {\r
+                               $titre = isset($menu['titre']) ? $menu['titre'] : '';\r
+                               $css = isset($menu['css']) ? $menu['css'] : '';\r
+                               $id_menu = sql_insertq('spip_menus',array(\r
+                                       'identifiant' => $identifiant,\r
+                                       'titre' => $titre,\r
+                                       'css' => $css\r
+                               ));\r
+                               if (isset($menu['entrees']))\r
+                                       menus_importer($menu['entrees'], $id_menu);\r
+                       }\r
+               }\r
+       }\r
+       \r
+       return($flux);\r
+}\r
+\r
+?>
\ No newline at end of file