source: spip-zone/_plugins_/formidable/trunk/action/editer_formulaire.php @ 93549

Last change on this file since 93549 was 93549, checked in by cedric@…, 5 years ago

Fix https://core.spip.net/issues/3617 : passer $set a objet_modifier_champs pour qu'elle ne detecte les conflits sur $_POST que quand c'est pertinent

File size: 2.6 KB
Line 
1<?php
2
3// Sécurité
4if (!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 */
11function 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 */
41function 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 */
77function 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                        'data' => $set,
96                        'nonvide' => array('titre' => _T('info_sans_titre')),
97                        'invalideur' => $invalideur,
98                ),
99                $c))
100                return $err;
101
102        // Modification de statut, changement de rubrique ?
103        $c = collecter_requests(array('statut'),array(),$set);
104        include_spip("action/editer_objet");
105        $err = objet_instituer('formulaire',$id_formulaire, $c);
106
107        return $err;
108}
109
110
111
112function revision_formulaire($id_formulaire, $c=false) { return formulaire_modifier($id_formulaire, $c);}
113function insert_formulaire() {  return formulaire_inserer();}
114function formulaire_set($id_formulaire, $set=null) {    return formulaire_modifier($id_formulaire, $set);}
Note: See TracBrowser for help on using the repository browser.