4 if (!defined('_ECRIRE_INC_VERSION')) {
8 function action_exporter_menu_dist() {
10 $securiser_action = charger_fonction('securiser_action', 'inc');
11 $arg = $securiser_action();
12 $id_menu = intval($arg);
16 include_spip('base/abstract_sql');
17 include_spip('inc/yaml');
19 // On récupère l'identifiant du menu pour le nom de fichier
20 $identifiant = sql_getfetsel(
26 // On calcule le tableau des entrees
27 $entrees = exporter_menu_recursif($id_menu);
30 $export = yaml_encode($entrees);
33 Header('Content-Type: text/x-yaml;');
34 Header("Content-Disposition: attachment; filename=menu-$identifiant.yaml");
35 Header('Content-Length: '.strlen($export));
40 function exporter_menu_recursif($id_menu) {
41 $entrees = sql_allfetsel(
42 'id_menus_entree, type_entree, parametres',
44 'id_menu = '.$id_menu,
49 // Pour chaque entree on nettoie et on ajoute le sous-menu eventuel
50 foreach ($entrees as $cle => $entree) {
51 // On remet au propre les parametres
52 $entrees[$cle]['parametres'] = unserialize($entree['parametres']);
54 // On regarde s'il existe un sous-menu
55 $id_sous_menu = intval(sql_getfetsel(
58 'id_menus_entree = '.$entree['id_menus_entree']
61 // Si le menu existe, il faut l'ajouter au tableau
62 if ($id_sous_menu > 0) {
63 $entrees[$cle]['sous_menu'] = exporter_menu_recursif($id_sous_menu);
66 // On enleve id_menus_entree car on en a pas besoin
67 unset($entrees[$cle]['id_menus_entree']);