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