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