[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins / menus_1 / action / exporter_menu.php
1 <?php
2
3 // Sécurité
4 if (!defined('_ECRIRE_INC_VERSION')) {
5 return;
6 }
7
8 function action_exporter_menu_dist() {
9
10 $securiser_action = charger_fonction('securiser_action', 'inc');
11 $arg = $securiser_action();
12 $id_menu = intval($arg);
13 $export = '';
14
15 if ($id_menu > 0) {
16 include_spip('base/abstract_sql');
17 include_spip('inc/yaml');
18
19 // On récupère l'identifiant du menu pour le nom de fichier
20 $identifiant = sql_getfetsel(
21 'identifiant',
22 'spip_menus',
23 'id_menu = '.$id_menu
24 );
25
26 // On calcule le tableau des entrees
27 $entrees = exporter_menu_recursif($id_menu);
28
29 // On envode en yaml
30 $export = yaml_encode($entrees);
31 }
32
33 Header('Content-Type: text/x-yaml;');
34 Header("Content-Disposition: attachment; filename=menu-$identifiant.yaml");
35 Header('Content-Length: '.strlen($export));
36 echo $export;
37 exit();
38 }
39
40 function exporter_menu_recursif($id_menu) {
41 $entrees = sql_allfetsel(
42 'id_menus_entree, type_entree, parametres',
43 'spip_menus_entrees',
44 'id_menu = '.$id_menu,
45 '',
46 'rang'
47 );
48
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']);
53
54 // On regarde s'il existe un sous-menu
55 $id_sous_menu = intval(sql_getfetsel(
56 'id_menu',
57 'spip_menus',
58 'id_menus_entree = '.$entree['id_menus_entree']
59 ));
60
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);
64 }
65
66 // On enleve id_menus_entree car on en a pas besoin
67 unset($entrees[$cle]['id_menus_entree']);
68 }
69
70 return $entrees;
71 }