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