13ec60a009a5b32e9f754210a00b098ed38cd266
[lhc/web/www.git] / www / plugins / formidable / action / editer_formulaire.php
1 <?php
2
3 // Sécurité
4 if (!defined("_ECRIRE_INC_VERSION")) return;
5
6 /**
7 * Action de création / Modification d'un formulaire
8 * @param unknown_type $arg
9 * @return unknown_type
10 */
11 function action_editer_formulaire_dist($arg=null) {
12 if (is_null($arg)){
13 $securiser_action = charger_fonction('securiser_action', 'inc');
14 $arg = $securiser_action();
15 }
16
17 // si id_formulaire n'est pas un nombre, c'est une creation
18 if (!$id_formulaire = intval($arg)) {
19 $id_formulaire = formulaire_inserer();
20 }
21
22 // Enregistre l'envoi dans la BD
23 if ($id_formulaire > 0) $err = formulaire_modifier($id_formulaire);
24
25 if (_request('redirect')) {
26 $redirect = parametre_url(urldecode(_request('redirect')),
27 'id_formulaire', $id_formulaire, '&') . $err;
28
29 include_spip('inc/headers');
30 redirige_par_entete($redirect);
31 }
32 else
33 return array($id_formulaire,$err);
34 }
35
36 /**
37 * Crée un nouveau formulaire et retourne son ID
38 *
39 * @return int id_formulaire
40 */
41 function formulaire_inserer() {
42 $champs = array(
43 'statut' => 'prop',
44 'date_creation' => date('Y-m-d H:i:s'),
45 );
46 // Envoyer aux plugins
47 $champs = pipeline('pre_insertion',
48 array(
49 'args' => array(
50 'table' => 'spip_formulaires',
51 ),
52 'data' => $champs
53 )
54 );
55 $id_formulaire = sql_insertq("spip_formulaires", $champs);
56
57 pipeline('post_insertion',
58 array(
59 'args' => array(
60 'table' => 'spip_formulaires',
61 'id_objet' => $id_formulaire
62 ),
63 'data' => $champs
64 )
65 );
66
67 return $id_formulaire;
68 }
69
70 /**
71 * Appelle la fonction de modification d'un formulaire
72 *
73 * @param int $id_formulaire
74 * @param array|null $set
75 * @return string
76 */
77 function formulaire_modifier($id_formulaire, $set=null) {
78 include_spip('inc/modifier');
79 include_spip('inc/filtres');
80 $err = '';
81
82 $c = collecter_requests(
83 // white list
84 objet_info('formulaire','champs_editables'),
85 // black list
86 array('statut'),
87 // donnees eventuellement fournies
88 $set
89 );
90
91
92 $invalideur = "id='id_formulaire/$id_formulaire'";
93 if ($err = objet_modifier_champs('formulaire', $id_formulaire,
94 array(
95 'nonvide' => array('titre' => _T('info_sans_titre')),
96 'invalideur' => $invalideur,
97 ),
98 $c))
99 return $err;
100
101 // Modification de statut, changement de rubrique ?
102 $c = collecter_requests(array('statut'),array(),$set);
103 include_spip("action/editer_objet");
104 $err = objet_instituer('formulaire',$id_formulaire, $c);
105
106 return $err;
107 }
108
109
110
111 function revision_formulaire($id_formulaire, $c=false) { return formulaire_modifier($id_formulaire, $c);}
112 function insert_formulaire() { return formulaire_inserer();}
113 function formulaire_set($id_formulaire, $set=null) { return formulaire_modifier($id_formulaire, $set);}