[PLUGINS] +les plugins de bases
[ptitvelo/web/www.git] / www / plugins / menus_1 / formulaires / editer_menu.php
1 <?php
2
3 // Sécurité
4 if (!defined("_ECRIRE_INC_VERSION")) return;
5
6 include_spip('inc/editer');
7
8 function formulaires_editer_menu_charger($id_menu, $nouveau){
9 include_spip('base/abstract_sql');
10 include_spip('inc/autoriser');
11 $contexte = array();
12 $contexte['editable'] = true;
13
14 // Seulement si on a le droit de modifier les menus
15 if (autoriser('modifier', 'menu')){
16 $nouveau = ($nouveau == 'oui') ? true : false;
17 $id_menu = intval($id_menu) ? intval($id_menu) : false;
18
19 // Si on demande un id_menu
20 if ($id_menu){
21 // On désactive de toute façon le nouveau
22 $nouveau = false;
23
24 // On teste si le menu existe bien dans les menus principaux
25 $id_menu_ok = intval(sql_getfetsel(
26 'id_menu',
27 'spip_menus',
28 array(
29 array('=', 'id_menu', $id_menu),
30 array('=', 'id_menus_entree', 0)
31 )
32 ));
33
34 // S'il n'existe pas
35 if (!$id_menu_ok){
36 $contexte['editable'] = false;
37 $contexte['message_erreur'] = _T('menus:erreur_menu_inexistant', array('id'=>$id_menu));
38 }
39 }
40 elseif (!$nouveau){
41 $contexte['editable'] = false;
42 $contexte['message_erreur'] = _T('menus:erreur_parametres');
43 }
44
45 // Si on peut bien éditer le menu, on déclare ce qu'il faut
46 if ($contexte['editable']){
47 $contexte['id_menu'] = $id_menu;
48 $contexte['nouveau'] = $nouveau;
49
50 // Les champs du menu principal
51 $contexte['titre'] = '';
52 $contexte['identifiant'] = '';
53 $contexte['css'] = '';
54 $contexte['import'] = '';
55
56 $valeurs = formulaires_editer_objet_charger('menu',$id_menu,0,0,'', '', '', '');
57
58 $contexte = array_merge($contexte, $valeurs);
59
60 // Déclarer l'action pour SPIP 2.0
61 $contexte['_action'] = array('editer_menu', $id_menu);
62 // On sait toujours si on est sur un menu déjà créé ou pas
63 $contexte['_hidden'] .= '<input type="hidden" name="id_menu" value="'.$id_menu.'" />';
64 }
65 }
66 else{
67 $contexte['editable'] = false;
68 $contexte['message_erreur'] = _T('menus:erreur_autorisation');
69 }
70
71 return $contexte;
72 }
73
74 function formulaires_editer_menu_verifier($id_menu, $nouveau){
75 include_spip('base/abstract_sql');
76 $erreurs = array();
77
78 $oblis = array('titre','identifiant');
79 $erreurs = formulaires_editer_objet_verifier('menu',$id_menu,$oblis);
80
81 $identifiant = _request('identifiant');
82
83 // On vérifie que l'identifiant est bon
84 if (!$erreurs['identifiant'] and !preg_match('/^[\w]+$/', $identifiant))
85 $erreurs['identifiant'] = _T('menus:erreur_identifiant_forme');
86 // On vérifie que l'identifiant n'est pas déjà utilisé
87 if (!$erreurs['identifiant']){
88 $deja = sql_getfetsel(
89 'id_menu',
90 'spip_menus',
91 array(
92 'identifiant = '.sql_quote($identifiant),
93 'id_menu > 0',
94 'id_menu !='.intval(_request('id_menu'))
95 )
96 );
97 if ($deja)
98 $erreurs['identifiant'] = _T('menus:erreur_identifiant_deja');
99 }
100
101 return $erreurs;
102 }
103
104 function formulaires_editer_menu_traiter($id_menu, $nouveau){
105 $res = formulaires_editer_objet_traiter('menu', $id_menu, 0, 0, '', '', '', '');
106
107 // Si ça va pas on errorise
108 if (!$res['id_menu']){
109 $res['message_erreur'] = _T('menus:erreur_mise_a_jour');
110 }
111 else{
112 // Si on est dans l'espace privé on force la redirection
113 if (_request('exec') == 'menus_editer')
114 $res['redirect'] = generer_url_ecrire('menus_editer', "id_menu=".$res['id_menu']);
115 }
116 // Dans tous les cas le formulaire est toujours éditable
117 $res['editable'] = true;
118
119 return $res;
120 }
121
122 ?>