source: spip-zone/_core_/plugins/mots/action/editer_groupe_mots.php @ 93543

Last change on this file since 93543 was 93543, 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: 6.0 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2015                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13/**
14 * Gestion de l'action editer_groupes_mots
15 *
16 * @package SPIP\Mots\Actions
17 */
18if (!defined("_ECRIRE_INC_VERSION")) return;
19
20include_spip('inc/filtres');
21
22/**
23 * Action d'édition d'un groupe de mots clés dans la base de données dont
24 * l'identifiant du groupe est donné en paramètre de cette fonction ou
25 * en argument de l'action sécurisée
26 *
27 * Si aucun identifiant n'est donné, on crée alors un nouveau groupe de
28 * mots clés.
29 *
30 * @param null|int $id_groupe
31 *     Identifiant du groupe de mot-clé. En absence utilise l'argument
32 *     de l'action sécurisée.
33 * @return array
34 *     Liste (identifiant du groupe de mot clé, Texte d'erreur éventuel)
35**/
36function action_editer_groupe_mots_dist($id_groupe = null)
37{
38        if (is_null($id_groupe)){
39                $securiser_action = charger_fonction('securiser_action', 'inc');
40                $id_groupe = $securiser_action();
41        }
42
43        if (!intval($id_groupe)) {
44                $id_groupe = groupe_mots_inserer();
45        }
46
47        if ($id_groupe>0)
48                $err = groupe_mots_modifier($id_groupe);
49
50        return array($id_groupe,$err);
51}
52
53
54/**
55 * Insertion d'un groupe de mots clés
56 *
57 * @pipeline_appel pre_insertion
58 * @pipeline_appel post_insertion
59 *
60 * @param int $id_parent
61 *     inutilise, pour consistance de l'API
62 * @param null|array $set
63 * @return int|bool
64 *     Identifiant du nouveau groupe de mots clés.
65 */
66function groupe_mots_inserer($id_parent = null, $set = null) {
67
68        // support de la signature derogatoire pour compat
69        // groupe_mots_inserer($table='')
70        if (is_string($id_parent) AND strlen($id_parent)){
71                if (is_null($set)){
72                        $set = array();
73                }
74                $set['tables_liees'] = $id_parent;
75        }
76
77
78        $champs = array(
79                'titre' => '',
80                'unseul' => 'non',
81                'obligatoire' => 'non',
82                'tables_liees' => '',
83                'minirezo' =>  'oui',
84                'comite' =>  'non',
85                'forum' => 'non'
86        );
87
88        if ($set)
89                $champs = array_merge($champs, $set);
90
91        // Envoyer aux plugins
92        $champs = pipeline('pre_insertion',
93                array(
94                        'args' => array(
95                                'table' => 'spip_groupes_mots',
96                        ),
97                        'data' => $champs
98                )
99        );
100
101        $id_groupe = sql_insertq("spip_groupes_mots", $champs) ;
102
103        pipeline('post_insertion',
104                array(
105                        'args' => array(
106                                'table' => 'spip_groupes_mots',
107                                'id_objet' => $id_groupe
108                        ),
109                        'data' => $champs
110                )
111        );
112
113        return $id_groupe;
114}
115
116
117/**
118 * Modifier un groupe de mot
119 *
120 * @param int $id_groupe
121 *     Identifiant du grope de mots clés à modifier
122 * @param array|null $set
123 *     Couples (colonne => valeur) de données à modifier.
124 *     En leur absence, on cherche les données dans les champs éditables
125 *     qui ont été postés
126 * @return string|null
127 *     Chaîne vide si aucune erreur,
128 *     Null si aucun champ à modifier,
129 *     Chaîne contenant un texte d'erreur sinon.
130 */
131function groupe_mots_modifier($id_groupe, $set = null) {
132        $err = '';
133
134        include_spip('inc/modifier');
135        $c = collecter_requests(
136                // white list
137                array(
138                 'titre', 'descriptif', 'texte', 'tables_liees',
139                 'obligatoire', 'unseul',
140                 'comite', 'forum', 'minirezo',
141                ),
142                // black list
143                array(),
144                // donnees eventuellement fournies
145                $set
146        );
147        // normaliser les champ oui/non
148        foreach (array(
149                'obligatoire', 'unseul',
150                'comite', 'forum', 'minirezo'
151        ) as $champ)
152                if (isset($c[$champ]))
153                        $c[$champ] = ($c[$champ]=='oui'?'oui':'non');
154
155        if (isset($c['tables_liees']) AND is_array($c['tables_liees']))
156                $c['tables_liees'] = implode(',',array_diff($c['tables_liees'],array('')));
157
158        $err = objet_modifier_champs('groupe_mot', $id_groupe,
159                array(
160                        'data' => $set,
161                        'nonvide' => array('titre' => _T('info_sans_titre'))
162                ),
163                $c);
164
165        return $err;
166}
167
168// Fonctions Dépréciées
169// --------------------
170
171/**
172 * Créer une révision sur un groupe de mot
173 *
174 * @deprecated Utiliser groupe_mots_modifier()
175 * @see groupe_mots_modifier()
176 *
177 * @param int $id_groupe
178 *     Identifiant du grope de mots clés à modifier
179 * @param array|null $c
180 *     Couples (colonne => valeur) de données à modifier.
181 *     En leur absence, on cherche les données dans les champs éditables
182 *     qui ont été postés
183 * @return string|null
184 *     Chaîne vide si aucune erreur,
185 *     Null si aucun champ à modifier,
186 *     Chaîne contenant un texte d'erreur sinon.
187 */
188function revision_groupe_mot($id_groupe, $c = false) {
189        return groupe_mots_modifier($id_groupe,$c);
190}
191
192
193/**
194 * Insertion d'un groupe de mots clés
195 *
196 * @deprecated Utiliser groupe_mots_inserer() ou objet_inserer()
197 * @see groupe_mots_inserer()
198 *
199 * @param string $table
200 *     Tables sur lesquels des mots de ce groupe pourront être liés
201 * @param null|array $set
202 * @return int|bool
203 *     Identifiant du nouveau groupe de mots clés.
204 */
205function groupemots_inserer($table = '', $set = null) {
206        return groupe_mots_inserer($table, $set);
207}
208
209/**
210 * Modifier un groupe de mot
211 *
212 * @deprecated Utiliser groupe_mots_modifier() ou objet_modifier()
213 * @see groupe_mots_modifier()
214 *
215 * @param int $id_groupe
216 *     Identifiant du grope de mots clés à modifier
217 * @param array|null $set
218 *     Couples (colonne => valeur) de données à modifier.
219 *     En leur absence, on cherche les données dans les champs éditables
220 *     qui ont été postés
221 * @return string|null
222 *     Chaîne vide si aucune erreur,
223 *     Null si aucun champ à modifier,
224 *     Chaîne contenant un texte d'erreur sinon.
225 */
226function groupemots_modifier($id_groupe, $set = null) {
227        return groupe_mots_modifier($id_groupe, $set);
228}
229?>
Note: See TracBrowser for help on using the repository browser.