source: spip-zone/_core_/plugins/mots/formulaires/editer_mot.php @ 93617

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

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

File size: 8.3 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 du formulaire d'édition d'un mot
15 *
16 * @package SPIP\Mots\Formulaires
17 **/
18if (!defined("_ECRIRE_INC_VERSION")) {
19        return;
20}
21
22include_spip('inc/actions');
23include_spip('inc/editer');
24
25/**
26 * Chargement du formulaire d'édition d'un mot
27 *
28 * @see formulaires_editer_objet_charger()
29 *
30 * @param int|string $id_mot
31 *     Identifiant du mot. 'new' pour un nouveau mot.
32 * @param int $id_groupe
33 *     Identifiant du groupe parent (si connu)
34 * @param string $retour
35 *     URL de redirection après le traitement
36 * @param string $associer_objet
37 *     Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
38 *     tel que 'article|3'
39 * @param string $dummy1 ?
40 * @param string $dummy2 ?
41 * @param string $config_fonc
42 *     Nom de la fonction ajoutant des configurations particulières au formulaire
43 * @param array $row
44 *     Valeurs de la ligne SQL du mot, si connu
45 * @param string $hidden
46 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
47 * @return array
48 *     Environnement du formulaire
49 **/
50function formulaires_editer_mot_charger_dist(
51        $id_mot = 'new',
52        $id_groupe = 0,
53        $retour = '',
54        $associer_objet = '',
55        $dummy1 = '',
56        $dummy2 = '',
57        $config_fonc = 'mots_edit_config',
58        $row = array(),
59        $hidden = ''
60) {
61        $valeurs = formulaires_editer_objet_charger('mot', $id_mot, $id_groupe, '', $retour, $config_fonc, $row, $hidden);
62        if ($valeurs['id_parent'] && !$valeurs['id_groupe']) {
63                $valeurs['id_groupe'] = $valeurs['id_parent'];
64        }
65
66        if ($associer_objet) {
67                if (intval($associer_objet)) {
68                        // compat avec l'appel de la forme ajouter_id_article
69                        $objet = 'article';
70                        $id_objet = intval($associer_objet);
71                } else {
72                        list($objet, $id_objet) = explode('|', $associer_objet);
73                }
74        }
75        $valeurs['table'] = ($associer_objet ? table_objet($objet) : '');
76
77        // Si nouveau et titre dans l'url : fixer le titre
78        if ($id_mot == 'oui'
79                AND strlen($titre = _request('titre'))
80        ) {
81                $valeurs['titre'] = $titre;
82        }
83
84        return $valeurs;
85}
86
87
88/**
89 * Identifier le formulaire en faisant abstraction des paramètres qui
90 * ne representent pas l'objet edité
91 *
92 * @param int|string $id_mot
93 *     Identifiant du mot. 'new' pour un nouveau mot.
94 * @param int $id_groupe
95 *     Identifiant du groupe parent (si connu)
96 * @param string $retour
97 *     URL de redirection après le traitement
98 * @param string $associer_objet
99 *     Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
100 *     tel que 'article|3'
101 * @param string $dummy1 ?
102 * @param string $dummy2 ?
103 * @param string $config_fonc
104 *     Nom de la fonction ajoutant des configurations particulières au formulaire
105 * @param array $row
106 *     Valeurs de la ligne SQL du mot, si connu
107 * @param string $hidden
108 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
109 * @return string
110 *     Hash du formulaire
111 **/
112function formulaires_editer_mot_identifier_dist(
113        $id_mot = 'new',
114        $id_groupe = 0,
115        $retour = '',
116        $associer_objet = '',
117        $dummy1 = '',
118        $dummy2 = '',
119        $config_fonc = 'mots_edit_config',
120        $row = array(),
121        $hidden = ''
122) {
123        return serialize(array(intval($id_mot), $associer_objet));
124}
125
126/**
127 * Choix par défaut des options de présentation
128 *
129 * @param array $row
130 *     Valeurs de la ligne SQL d'un mot, si connu
131 * return array
132 *     Configuration pour le formulaire
133 */
134function mots_edit_config($row) {
135        global $spip_ecran, $spip_lang;
136
137        $config = $GLOBALS['meta'];
138        $config['lignes'] = ($spip_ecran == "large") ? 8 : 5;
139        $config['langue'] = $spip_lang;
140        $config['restreint'] = false;
141
142        return $config;
143}
144
145/**
146 * Vérification du formulaire d'édition d'un mot
147 *
148 * @see formulaires_editer_objet_verifier()
149 *
150 * @param int|string $id_mot
151 *     Identifiant du mot. 'new' pour un nouveau mot.
152 * @param int $id_groupe
153 *     Identifiant du groupe parent (si connu)
154 * @param string $retour
155 *     URL de redirection après le traitement
156 * @param string $associer_objet
157 *     Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
158 *     tel que 'article|3'
159 * @param string $dummy1 ?
160 * @param string $dummy2 ?
161 * @param string $config_fonc
162 *     Nom de la fonction ajoutant des configurations particulières au formulaire
163 * @param array $row
164 *     Valeurs de la ligne SQL du mot, si connu
165 * @param string $hidden
166 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
167 * @return array
168 *     Tableau des erreurs
169 **/
170function formulaires_editer_mot_verifier_dist(
171        $id_mot = 'new',
172        $id_groupe = 0,
173        $retour = '',
174        $associer_objet = '',
175        $dummy1 = '',
176        $dummy2 = '',
177        $config_fonc = 'mots_edit_config',
178        $row = array(),
179        $hidden = ''
180) {
181
182        $erreurs = formulaires_editer_objet_verifier('mot', $id_mot, array('titre'));
183        // verifier qu'un mot du meme groupe n'existe pas avec le meme titre
184        // la comparaison accepte un numero absent ou different
185        // sinon avertir
186        // on ne fait la verification que si c'est une creation de mot ou un retitrage
187        if (!intval($id_mot)
188                OR supprimer_numero(_request('titre')) !== supprimer_numero(sql_getfetsel('titre', 'spip_mots',
189                        'id_mot=' . intval($id_mot)))
190        ) {
191                if (!count($erreurs) AND !_request('confirm_titre_mot')) {
192                        if (sql_countsel("spip_mots",
193                                "titre REGEXP " . sql_quote("^([0-9]+[.] )?" . preg_quote(supprimer_numero(_request('titre'))) . "$")
194                                . " AND id_mot<>" . intval($id_mot))) {
195                                $erreurs['titre'] =
196                                        _T('mots:avis_doublon_mot_cle')
197                                        . " <input type='hidden' name='confirm_titre_mot' value='1' />";
198                        }
199                }
200        }
201
202        return $erreurs;
203}
204
205/**
206 * Traitements du formulaire d'édition d'un mot
207 *
208 * @param int|string $id_mot
209 *     Identifiant du mot. 'new' pour un nouveau mot.
210 * @param int $id_groupe
211 *     Identifiant du groupe parent (si connu)
212 * @param string $retour
213 *     URL de redirection après le traitement
214 * @param string $associer_objet
215 *     Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
216 *     tel que 'article|3'
217 * @param string $dummy1 ?
218 * @param string $dummy2 ?
219 * @param string $config_fonc
220 *     Nom de la fonction ajoutant des configurations particulières au formulaire
221 * @param array $row
222 *     Valeurs de la ligne SQL du mot, si connu
223 * @param string $hidden
224 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
225 * @return array
226 *     Retour des traitements
227 **/
228function formulaires_editer_mot_traiter_dist(
229        $id_mot = 'new',
230        $id_groupe = 0,
231        $retour = '',
232        $associer_objet = '',
233        $dummy1 = '',
234        $dummy2 = '',
235        $config_fonc = 'mots_edit_config',
236        $row = array(),
237        $hidden = ''
238) {
239        $res = array();
240        set_request('redirect', '');
241        $action_editer = charger_fonction("editer_mot", 'action');
242        list($id_mot, $err) = $action_editer();
243        if ($err) {
244                $res['message_erreur'] = $err;
245        } else {
246                $res['message_ok'] = "";
247                if ($retour) {
248                        if (strncmp($retour, 'javascript:', 11) == 0) {
249                                $res['message_ok'] .= '<script type="text/javascript">/*<![CDATA[*/' . substr($retour, 11) . '/*]]>*/</script>';
250                                $res['editable'] = true;
251                        } else {
252                                $res['redirect'] = $retour;
253                                if (strlen(parametre_url($retour, 'id_mot'))) {
254                                        $res['redirect'] = parametre_url($res['redirect'], 'id_mot', $id_mot);
255                                }
256                        }
257                }
258
259                if ($associer_objet) {
260                        if (intval($associer_objet)) {
261                                // compat avec l'appel de la forme ajouter_id_article
262                                $objet = 'article';
263                                $id_objet = intval($associer_objet);
264                        } else {
265                                list($objet, $id_objet) = explode('|', $associer_objet);
266                        }
267                        if ($objet AND $id_objet AND autoriser('modifier', $objet, $id_objet)) {
268                                include_spip('action/editer_mot');
269                                mot_associer($id_mot, array($objet => $id_objet));
270                                if (isset($res['redirect'])) {
271                                        $res['redirect'] = parametre_url($res['redirect'], "id_lien_ajoute", $id_mot, '&');
272                                }
273                        }
274                }
275
276        }
277
278        return $res;
279}
280
281
282?>
Note: See TracBrowser for help on using the repository browser.