Completed
Push — master ( d593dc...91e0b1 )
by cam
01:24
created
ecrire/public/aiguiller.php 2 patches
Indentation   +289 added lines, -289 removed lines patch added patch discarded remove patch
@@ -11,164 +11,164 @@  discard block
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 function securiser_redirect_action($redirect) {
18
-	// cas d'un double urlencode : si un urldecode de l'url n'est pas secure, on retient ca comme redirect
19
-	if (strpos($redirect, '%') !== false) {
20
-		$r2 = urldecode($redirect);
21
-		if (($r3 = securiser_redirect_action($r2)) !== $r2) {
22
-			return $r3;
23
-		}
24
-	}
25
-	if (
26
-		(tester_url_absolue($redirect) or preg_match(',^\w+:,', trim($redirect)))
27
-		and !defined('_AUTORISER_ACTION_ABS_REDIRECT')
28
-	) {
29
-		// si l'url est une url du site, on la laisse passer sans rien faire
30
-		// c'est encore le plus simple
31
-		$base = $GLOBALS['meta']['adresse_site'] . '/';
32
-		if (strlen($base) and strncmp($redirect, $base, strlen($base)) == 0) {
33
-			return $redirect;
34
-		}
35
-		$base = url_de_base();
36
-		if (strlen($base) and strncmp($redirect, $base, strlen($base)) == 0) {
37
-			return $redirect;
38
-		}
18
+    // cas d'un double urlencode : si un urldecode de l'url n'est pas secure, on retient ca comme redirect
19
+    if (strpos($redirect, '%') !== false) {
20
+        $r2 = urldecode($redirect);
21
+        if (($r3 = securiser_redirect_action($r2)) !== $r2) {
22
+            return $r3;
23
+        }
24
+    }
25
+    if (
26
+        (tester_url_absolue($redirect) or preg_match(',^\w+:,', trim($redirect)))
27
+        and !defined('_AUTORISER_ACTION_ABS_REDIRECT')
28
+    ) {
29
+        // si l'url est une url du site, on la laisse passer sans rien faire
30
+        // c'est encore le plus simple
31
+        $base = $GLOBALS['meta']['adresse_site'] . '/';
32
+        if (strlen($base) and strncmp($redirect, $base, strlen($base)) == 0) {
33
+            return $redirect;
34
+        }
35
+        $base = url_de_base();
36
+        if (strlen($base) and strncmp($redirect, $base, strlen($base)) == 0) {
37
+            return $redirect;
38
+        }
39 39
 
40
-		return '';
41
-	}
40
+        return '';
41
+    }
42 42
 
43
-	return $redirect;
43
+    return $redirect;
44 44
 }
45 45
 
46 46
 // https://code.spip.net/@traiter_appels_actions
47 47
 function traiter_appels_actions() {
48
-	// cas de l'appel qui renvoie une redirection (302) ou rien (204)
49
-	if ($action = _request('action')) {
50
-		include_spip('base/abstract_sql'); // chargement systematique pour les actions
51
-		include_spip('inc/autoriser');
52
-		include_spip('inc/headers');
53
-		include_spip('inc/actions');
54
-		// des actions peuvent appeler _T
55
-		if (!isset($GLOBALS['spip_lang'])) {
56
-			include_spip('inc/lang');
57
-			utiliser_langue_visiteur();
58
-		}
59
-		// si l'action est provoque par un hit {ajax}
60
-		// il faut transmettre l'env ajax au redirect
61
-		// on le met avant dans la query string au cas ou l'action fait elle meme sa redirection
62
-		if (
63
-			($v = _request('var_ajax'))
64
-			and ($v !== 'form')
65
-			and ($args = _request('var_ajax_env'))
66
-			and ($url = _request('redirect'))
67
-		) {
68
-			$url = parametre_url($url, 'var_ajax', $v, '&');
69
-			$url = parametre_url($url, 'var_ajax_env', $args, '&');
70
-			set_request('redirect', $url);
71
-		} else {
72
-			if (_request('redirect')) {
73
-				set_request('redirect', securiser_redirect_action(_request('redirect')));
74
-			}
75
-		}
76
-		$var_f = charger_fonction($action, 'action');
77
-		$var_f();
78
-		if (!isset($GLOBALS['redirect'])) {
79
-			$GLOBALS['redirect'] = _request('redirect');
80
-			if ($_SERVER['REQUEST_METHOD'] == 'POST') {
81
-				$GLOBALS['redirect'] = urldecode($GLOBALS['redirect']);
82
-			}
83
-			$GLOBALS['redirect'] = securiser_redirect_action($GLOBALS['redirect']);
84
-		}
85
-		if ($url = $GLOBALS['redirect']) {
86
-			// si l'action est provoque par un hit {ajax}
87
-			// il faut transmettre l'env ajax au redirect
88
-			// qui a pu etre defini par l'action
89
-			if (
90
-				($v = _request('var_ajax'))
91
-				and ($v !== 'form')
92
-				and ($args = _request('var_ajax_env'))
93
-			) {
94
-				$url = parametre_url($url, 'var_ajax', $v, '&');
95
-				$url = parametre_url($url, 'var_ajax_env', $args, '&');
96
-				// passer l'ancre en variable pour pouvoir la gerer cote serveur
97
-				$url = preg_replace(',#([^#&?]+)$,', "&var_ajax_ancre=\\1", $url);
98
-			}
99
-			$url = str_replace('&', '&', $url); // les redirections se font en &, pas en en &
100
-			redirige_par_entete($url);
101
-		}
48
+    // cas de l'appel qui renvoie une redirection (302) ou rien (204)
49
+    if ($action = _request('action')) {
50
+        include_spip('base/abstract_sql'); // chargement systematique pour les actions
51
+        include_spip('inc/autoriser');
52
+        include_spip('inc/headers');
53
+        include_spip('inc/actions');
54
+        // des actions peuvent appeler _T
55
+        if (!isset($GLOBALS['spip_lang'])) {
56
+            include_spip('inc/lang');
57
+            utiliser_langue_visiteur();
58
+        }
59
+        // si l'action est provoque par un hit {ajax}
60
+        // il faut transmettre l'env ajax au redirect
61
+        // on le met avant dans la query string au cas ou l'action fait elle meme sa redirection
62
+        if (
63
+            ($v = _request('var_ajax'))
64
+            and ($v !== 'form')
65
+            and ($args = _request('var_ajax_env'))
66
+            and ($url = _request('redirect'))
67
+        ) {
68
+            $url = parametre_url($url, 'var_ajax', $v, '&');
69
+            $url = parametre_url($url, 'var_ajax_env', $args, '&');
70
+            set_request('redirect', $url);
71
+        } else {
72
+            if (_request('redirect')) {
73
+                set_request('redirect', securiser_redirect_action(_request('redirect')));
74
+            }
75
+        }
76
+        $var_f = charger_fonction($action, 'action');
77
+        $var_f();
78
+        if (!isset($GLOBALS['redirect'])) {
79
+            $GLOBALS['redirect'] = _request('redirect');
80
+            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
81
+                $GLOBALS['redirect'] = urldecode($GLOBALS['redirect']);
82
+            }
83
+            $GLOBALS['redirect'] = securiser_redirect_action($GLOBALS['redirect']);
84
+        }
85
+        if ($url = $GLOBALS['redirect']) {
86
+            // si l'action est provoque par un hit {ajax}
87
+            // il faut transmettre l'env ajax au redirect
88
+            // qui a pu etre defini par l'action
89
+            if (
90
+                ($v = _request('var_ajax'))
91
+                and ($v !== 'form')
92
+                and ($args = _request('var_ajax_env'))
93
+            ) {
94
+                $url = parametre_url($url, 'var_ajax', $v, '&');
95
+                $url = parametre_url($url, 'var_ajax_env', $args, '&');
96
+                // passer l'ancre en variable pour pouvoir la gerer cote serveur
97
+                $url = preg_replace(',#([^#&?]+)$,', "&var_ajax_ancre=\\1", $url);
98
+            }
99
+            $url = str_replace('&', '&', $url); // les redirections se font en &, pas en en &
100
+            redirige_par_entete($url);
101
+        }
102 102
 
103
-		// attention : avec zlib.output_compression=1 on a vu des cas de ob_get_length() qui renvoi 0
104
-		// et du coup en renvoi un status 204 a tort (vu sur le menu rubriques notamment)
105
-		if (
106
-			!headers_sent()
107
-			and !ob_get_length()
108
-		) {
109
-			http_status(204);
110
-		} // No Content
111
-		return true;
112
-	}
103
+        // attention : avec zlib.output_compression=1 on a vu des cas de ob_get_length() qui renvoi 0
104
+        // et du coup en renvoi un status 204 a tort (vu sur le menu rubriques notamment)
105
+        if (
106
+            !headers_sent()
107
+            and !ob_get_length()
108
+        ) {
109
+            http_status(204);
110
+        } // No Content
111
+        return true;
112
+    }
113 113
 
114
-	return false;
114
+    return false;
115 115
 }
116 116
 
117 117
 
118 118
 // https://code.spip.net/@refuser_traiter_formulaire_ajax
119 119
 function refuser_traiter_formulaire_ajax() {
120
-	if (
121
-		$v = _request('var_ajax')
122
-		and $v == 'form'
123
-		and $form = _request('formulaire_action')
124
-		and $args = _request('formulaire_action_args')
125
-		and decoder_contexte_ajax($args, $form) !== false
126
-	) {
127
-		// on est bien dans le contexte de traitement d'un formulaire en ajax
128
-		// mais traiter ne veut pas
129
-		// on le dit a la page qui va resumbit
130
-		// sans ajax
131
-		include_spip('inc/actions');
132
-		ajax_retour('noajax', false);
133
-		exit;
134
-	}
120
+    if (
121
+        $v = _request('var_ajax')
122
+        and $v == 'form'
123
+        and $form = _request('formulaire_action')
124
+        and $args = _request('formulaire_action_args')
125
+        and decoder_contexte_ajax($args, $form) !== false
126
+    ) {
127
+        // on est bien dans le contexte de traitement d'un formulaire en ajax
128
+        // mais traiter ne veut pas
129
+        // on le dit a la page qui va resumbit
130
+        // sans ajax
131
+        include_spip('inc/actions');
132
+        ajax_retour('noajax', false);
133
+        exit;
134
+    }
135 135
 }
136 136
 
137 137
 // https://code.spip.net/@traiter_appels_inclusions_ajax
138 138
 function traiter_appels_inclusions_ajax() {
139
-	// traiter les appels de bloc ajax (ex: pagination)
140
-	if (
141
-		$v = _request('var_ajax')
142
-		and $v !== 'form'
143
-		and $args = _request('var_ajax_env')
144
-	) {
145
-		include_spip('inc/filtres');
146
-		include_spip('inc/actions');
147
-		if (
148
-			$args = decoder_contexte_ajax($args)
149
-			and $fond = $args['fond']
150
-		) {
151
-			include_spip('public/assembler');
152
-			$contexte = calculer_contexte();
153
-			$contexte = array_merge($args, $contexte);
154
-			$page = recuperer_fond($fond, $contexte, ['trim' => false]);
155
-			$texte = $page;
156
-			if ($ancre = _request('var_ajax_ancre')) {
157
-				// pas n'importe quoi quand meme dans la variable !
158
-				$ancre = str_replace(['<', '"', "'"], ['&lt;', '&quot;', ''], $ancre);
159
-				$texte = "<a href='#$ancre' name='ajax_ancre' style='display:none;'>anchor</a>" . $texte;
160
-			}
161
-		} else {
162
-			include_spip('inc/headers');
163
-			http_response_code(400);
164
-			$texte = _L('signature ajax bloc incorrecte');
165
-		}
166
-		ajax_retour($texte, false);
139
+    // traiter les appels de bloc ajax (ex: pagination)
140
+    if (
141
+        $v = _request('var_ajax')
142
+        and $v !== 'form'
143
+        and $args = _request('var_ajax_env')
144
+    ) {
145
+        include_spip('inc/filtres');
146
+        include_spip('inc/actions');
147
+        if (
148
+            $args = decoder_contexte_ajax($args)
149
+            and $fond = $args['fond']
150
+        ) {
151
+            include_spip('public/assembler');
152
+            $contexte = calculer_contexte();
153
+            $contexte = array_merge($args, $contexte);
154
+            $page = recuperer_fond($fond, $contexte, ['trim' => false]);
155
+            $texte = $page;
156
+            if ($ancre = _request('var_ajax_ancre')) {
157
+                // pas n'importe quoi quand meme dans la variable !
158
+                $ancre = str_replace(['<', '"', "'"], ['&lt;', '&quot;', ''], $ancre);
159
+                $texte = "<a href='#$ancre' name='ajax_ancre' style='display:none;'>anchor</a>" . $texte;
160
+            }
161
+        } else {
162
+            include_spip('inc/headers');
163
+            http_response_code(400);
164
+            $texte = _L('signature ajax bloc incorrecte');
165
+        }
166
+        ajax_retour($texte, false);
167 167
 
168
-		return true; // on a fini le hit
169
-	}
168
+        return true; // on a fini le hit
169
+    }
170 170
 
171
-	return false;
171
+    return false;
172 172
 }
173 173
 
174 174
 // au 1er appel, traite les formulaires dynamiques charger/verifier/traiter
@@ -177,173 +177,173 @@  discard block
 block discarded – undo
177 177
 
178 178
 // https://code.spip.net/@traiter_formulaires_dynamiques
179 179
 function traiter_formulaires_dynamiques($get = false) {
180
-	static $post = [];
181
-	static $done = false;
180
+    static $post = [];
181
+    static $done = false;
182 182
 
183
-	if ($get) {
184
-		return $post;
185
-	}
186
-	if ($done) {
187
-		return false;
188
-	}
189
-	$done = true;
183
+    if ($get) {
184
+        return $post;
185
+    }
186
+    if ($done) {
187
+        return false;
188
+    }
189
+    $done = true;
190 190
 
191
-	if (
192
-		!($form = _request('formulaire_action')
193
-		and $args = _request('formulaire_action_args'))
194
-	) {
195
-		return false;
196
-	} // le hit peut continuer normalement
191
+    if (
192
+        !($form = _request('formulaire_action')
193
+        and $args = _request('formulaire_action_args'))
194
+    ) {
195
+        return false;
196
+    } // le hit peut continuer normalement
197 197
 
198
-	// verifier que le post est licite (du meme auteur ou d'une session anonyme)
199
-	$sign = _request('formulaire_action_sign');
200
-	if (!empty($GLOBALS['visiteur_session']['id_auteur'])) {
201
-		if (empty($sign)) {
202
-			spip_log("signature ajax form incorrecte : $form (formulaire non signe mais on a une session)", 'formulaires' . _LOG_ERREUR);
203
-			return false;
204
-		}
205
-		$securiser_action = charger_fonction('securiser_action', 'inc');
206
-		$secu = $securiser_action($form, $args, '', -1);
207
-		if ($sign !== $secu['hash']) {
208
-			spip_log("signature ajax form incorrecte : $form (formulaire signe mais ne correspond pas a la session)", 'formulaires' . _LOG_ERREUR);
209
-			return false;
210
-		}
211
-	}
212
-	else {
213
-		if (!empty($sign)) {
214
-			spip_log("signature ajax form incorrecte : $form (formulaire signe mais pas de session)", 'formulaires' . _LOG_ERREUR);
215
-			return false;
216
-		}
217
-	}
198
+    // verifier que le post est licite (du meme auteur ou d'une session anonyme)
199
+    $sign = _request('formulaire_action_sign');
200
+    if (!empty($GLOBALS['visiteur_session']['id_auteur'])) {
201
+        if (empty($sign)) {
202
+            spip_log("signature ajax form incorrecte : $form (formulaire non signe mais on a une session)", 'formulaires' . _LOG_ERREUR);
203
+            return false;
204
+        }
205
+        $securiser_action = charger_fonction('securiser_action', 'inc');
206
+        $secu = $securiser_action($form, $args, '', -1);
207
+        if ($sign !== $secu['hash']) {
208
+            spip_log("signature ajax form incorrecte : $form (formulaire signe mais ne correspond pas a la session)", 'formulaires' . _LOG_ERREUR);
209
+            return false;
210
+        }
211
+    }
212
+    else {
213
+        if (!empty($sign)) {
214
+            spip_log("signature ajax form incorrecte : $form (formulaire signe mais pas de session)", 'formulaires' . _LOG_ERREUR);
215
+            return false;
216
+        }
217
+    }
218 218
 
219
-	include_spip('inc/filtres');
220
-	if (($args = decoder_contexte_ajax($args, $form)) === false) {
221
-		spip_log("signature ajax form incorrecte : $form (encodage corrompu)", 'formulaires' . _LOG_ERREUR);
219
+    include_spip('inc/filtres');
220
+    if (($args = decoder_contexte_ajax($args, $form)) === false) {
221
+        spip_log("signature ajax form incorrecte : $form (encodage corrompu)", 'formulaires' . _LOG_ERREUR);
222 222
 
223
-		return false; // continuons le hit comme si de rien etait
224
-	} else {
225
-		include_spip('inc/lang');
226
-		// sauvegarder la lang en cours
227
-		$old_lang = $GLOBALS['spip_lang'];
228
-		// changer la langue avec celle qui a cours dans le formulaire
229
-		// on la depile de $args car c'est un argument implicite masque
230
-		changer_langue(array_shift($args));
223
+        return false; // continuons le hit comme si de rien etait
224
+    } else {
225
+        include_spip('inc/lang');
226
+        // sauvegarder la lang en cours
227
+        $old_lang = $GLOBALS['spip_lang'];
228
+        // changer la langue avec celle qui a cours dans le formulaire
229
+        // on la depile de $args car c'est un argument implicite masque
230
+        changer_langue(array_shift($args));
231 231
 
232 232
 
233
-		// inclure mes_fonctions et autres filtres avant verifier/traiter
234
-		include_fichiers_fonctions();
235
-		// ainsi que l'API SQL bien utile dans verifier/traiter
236
-		include_spip('base/abstract_sql');
233
+        // inclure mes_fonctions et autres filtres avant verifier/traiter
234
+        include_fichiers_fonctions();
235
+        // ainsi que l'API SQL bien utile dans verifier/traiter
236
+        include_spip('base/abstract_sql');
237 237
 
238
-		/**
239
-		 * Pipeline exécuté lors de la soumission d'un formulaire,
240
-		 * mais avant l'appel de la fonction de vérification.
241
-		 */
242
-		pipeline(
243
-			'formulaire_receptionner',
244
-			[
245
-				'args' => ['form' => $form, 'args' => $args],
246
-				'data' => null,
247
-			]
248
-		);
238
+        /**
239
+         * Pipeline exécuté lors de la soumission d'un formulaire,
240
+         * mais avant l'appel de la fonction de vérification.
241
+         */
242
+        pipeline(
243
+            'formulaire_receptionner',
244
+            [
245
+                'args' => ['form' => $form, 'args' => $args],
246
+                'data' => null,
247
+            ]
248
+        );
249 249
 
250
-		$verifier = charger_fonction('verifier', "formulaires/$form/", true);
251
-		$post["erreurs_$form"] = pipeline(
252
-			'formulaire_verifier',
253
-			[
254
-				'args' => ['form' => $form, 'args' => $args],
255
-				'data' => $verifier ? call_user_func_array($verifier, $args) : []
256
-			]
257
-		);
258
-		// prise en charge CVT multi etape si besoin
259
-		if (_request('cvtm_prev_post')) {
260
-			include_spip('inc/cvt_multietapes');
261
-			$post["erreurs_$form"] = cvtmulti_formulaire_verifier_etapes(
262
-				['form' => $form, 'args' => $args],
263
-				$post["erreurs_$form"]
264
-			);
265
-		}
250
+        $verifier = charger_fonction('verifier', "formulaires/$form/", true);
251
+        $post["erreurs_$form"] = pipeline(
252
+            'formulaire_verifier',
253
+            [
254
+                'args' => ['form' => $form, 'args' => $args],
255
+                'data' => $verifier ? call_user_func_array($verifier, $args) : []
256
+            ]
257
+        );
258
+        // prise en charge CVT multi etape si besoin
259
+        if (_request('cvtm_prev_post')) {
260
+            include_spip('inc/cvt_multietapes');
261
+            $post["erreurs_$form"] = cvtmulti_formulaire_verifier_etapes(
262
+                ['form' => $form, 'args' => $args],
263
+                $post["erreurs_$form"]
264
+            );
265
+        }
266 266
 
267
-		// accessibilite : si des erreurs mais pas de message general l'ajouter
268
-		if ((isset($post["erreurs_$form"]) and count($post["erreurs_$form"])) and !isset($post["erreurs_$form"]['message_erreur'])) {
269
-			$post["erreurs_$form"]['message_erreur'] = singulier_ou_pluriel(
270
-				count($post["erreurs_$form"]),
271
-				'avis_1_erreur_saisie',
272
-				'avis_nb_erreurs_saisie'
273
-			);
274
-		}
267
+        // accessibilite : si des erreurs mais pas de message general l'ajouter
268
+        if ((isset($post["erreurs_$form"]) and count($post["erreurs_$form"])) and !isset($post["erreurs_$form"]['message_erreur'])) {
269
+            $post["erreurs_$form"]['message_erreur'] = singulier_ou_pluriel(
270
+                count($post["erreurs_$form"]),
271
+                'avis_1_erreur_saisie',
272
+                'avis_nb_erreurs_saisie'
273
+            );
274
+        }
275 275
 
276
-		// si on ne demandait qu'une verif json
277
-		if (_request('formulaire_action_verifier_json')) {
278
-			include_spip('inc/json');
279
-			include_spip('inc/actions');
280
-			ajax_retour(json_encode($post["erreurs_$form"]), 'text/plain');
276
+        // si on ne demandait qu'une verif json
277
+        if (_request('formulaire_action_verifier_json')) {
278
+            include_spip('inc/json');
279
+            include_spip('inc/actions');
280
+            ajax_retour(json_encode($post["erreurs_$form"]), 'text/plain');
281 281
 
282
-			return true; // on a fini le hit
283
-		}
284
-		$retour = '';
285
-		if (isset($post["erreurs_$form"]) and (count($post["erreurs_$form"]) == 0)) {
286
-			$rev = '';
287
-			if ($traiter = charger_fonction('traiter', "formulaires/$form/", true)) {
288
-				$rev = call_user_func_array($traiter, $args);
289
-			}
282
+            return true; // on a fini le hit
283
+        }
284
+        $retour = '';
285
+        if (isset($post["erreurs_$form"]) and (count($post["erreurs_$form"]) == 0)) {
286
+            $rev = '';
287
+            if ($traiter = charger_fonction('traiter', "formulaires/$form/", true)) {
288
+                $rev = call_user_func_array($traiter, $args);
289
+            }
290 290
 
291
-			$rev = pipeline(
292
-				'formulaire_traiter',
293
-				[
294
-					'args' => ['form' => $form, 'args' => $args],
295
-					'data' => $rev
296
-				]
297
-			);
298
-			// le retour de traiter est
299
-			// un tableau explicite ('editable'=>$editable,'message_ok'=>$message,'redirect'=>$redirect,'id_xx'=>$id_xx)
300
-			// il permet le pipelinage, en particulier
301
-			// en y passant l'id de l'objet cree/modifie
302
-			// si message_erreur est present, on considere que le traitement a echoue
303
-			$post["message_ok_$form"] = '';
304
-			// on peut avoir message_ok et message_erreur
305
-			if (isset($rev['message_ok'])) {
306
-				$post["message_ok_$form"] = $rev['message_ok'];
307
-			}
291
+            $rev = pipeline(
292
+                'formulaire_traiter',
293
+                [
294
+                    'args' => ['form' => $form, 'args' => $args],
295
+                    'data' => $rev
296
+                ]
297
+            );
298
+            // le retour de traiter est
299
+            // un tableau explicite ('editable'=>$editable,'message_ok'=>$message,'redirect'=>$redirect,'id_xx'=>$id_xx)
300
+            // il permet le pipelinage, en particulier
301
+            // en y passant l'id de l'objet cree/modifie
302
+            // si message_erreur est present, on considere que le traitement a echoue
303
+            $post["message_ok_$form"] = '';
304
+            // on peut avoir message_ok et message_erreur
305
+            if (isset($rev['message_ok'])) {
306
+                $post["message_ok_$form"] = $rev['message_ok'];
307
+            }
308 308
 
309
-			// verifier si traiter n'a pas echoue avec une erreur :
310
-			if (isset($rev['message_erreur'])) {
311
-				$post["erreurs_$form"]['message_erreur'] = $rev['message_erreur'];
312
-				// si il y a une erreur on ne redirige pas
313
-			} else {
314
-				// sinon faire ce qu'il faut :
315
-				if (isset($rev['editable'])) {
316
-					$post["editable_$form"] = $rev['editable'];
317
-				}
318
-				// si une redirection est demandee, appeler redirigae_formulaire qui choisira
319
-				// le bon mode de redirection (302 et on ne revient pas ici, ou javascript et on continue)
320
-				if (isset($rev['redirect']) and $rev['redirect']) {
321
-					include_spip('inc/headers');
322
-					list($masque, $message) = redirige_formulaire($rev['redirect'], '', 'ajaxform');
323
-					$post["message_ok_$form"] .= $message;
324
-					$retour .= $masque;
325
-				}
326
-			}
327
-		}
328
-		// si le formulaire a ete soumis en ajax, on le renvoie direct !
329
-		if (_request('var_ajax')) {
330
-			if (find_in_path('formulaire_.php', 'balise/', true)) {
331
-				include_spip('inc/actions');
332
-				include_spip('public/assembler');
333
-				array_unshift($args, $form);
334
-				$retour .= inclure_balise_dynamique(call_user_func_array('balise_formulaire__dyn', $args), false);
335
-				// on ajoute un br en display none en tete du retour ajax pour regler un bug dans IE6/7
336
-				// sans cela le formulaire n'est pas actif apres le hit ajax
337
-				// la classe ajax-form-is-ok sert a s'assurer que le retour ajax s'est bien passe
338
-				$retour = "<br class='bugajaxie ajax-form-is-ok' style='display:none;'/>" . $retour;
339
-				ajax_retour($retour, false);
309
+            // verifier si traiter n'a pas echoue avec une erreur :
310
+            if (isset($rev['message_erreur'])) {
311
+                $post["erreurs_$form"]['message_erreur'] = $rev['message_erreur'];
312
+                // si il y a une erreur on ne redirige pas
313
+            } else {
314
+                // sinon faire ce qu'il faut :
315
+                if (isset($rev['editable'])) {
316
+                    $post["editable_$form"] = $rev['editable'];
317
+                }
318
+                // si une redirection est demandee, appeler redirigae_formulaire qui choisira
319
+                // le bon mode de redirection (302 et on ne revient pas ici, ou javascript et on continue)
320
+                if (isset($rev['redirect']) and $rev['redirect']) {
321
+                    include_spip('inc/headers');
322
+                    list($masque, $message) = redirige_formulaire($rev['redirect'], '', 'ajaxform');
323
+                    $post["message_ok_$form"] .= $message;
324
+                    $retour .= $masque;
325
+                }
326
+            }
327
+        }
328
+        // si le formulaire a ete soumis en ajax, on le renvoie direct !
329
+        if (_request('var_ajax')) {
330
+            if (find_in_path('formulaire_.php', 'balise/', true)) {
331
+                include_spip('inc/actions');
332
+                include_spip('public/assembler');
333
+                array_unshift($args, $form);
334
+                $retour .= inclure_balise_dynamique(call_user_func_array('balise_formulaire__dyn', $args), false);
335
+                // on ajoute un br en display none en tete du retour ajax pour regler un bug dans IE6/7
336
+                // sans cela le formulaire n'est pas actif apres le hit ajax
337
+                // la classe ajax-form-is-ok sert a s'assurer que le retour ajax s'est bien passe
338
+                $retour = "<br class='bugajaxie ajax-form-is-ok' style='display:none;'/>" . $retour;
339
+                ajax_retour($retour, false);
340 340
 
341
-				return true; // on a fini le hit
342
-			}
343
-		}
344
-		// restaurer la lang en cours
345
-		changer_langue($old_lang);
346
-	}
341
+                return true; // on a fini le hit
342
+            }
343
+        }
344
+        // restaurer la lang en cours
345
+        changer_langue($old_lang);
346
+    }
347 347
 
348
-	return false; // le hit peut continuer normalement
348
+    return false; // le hit peut continuer normalement
349 349
 }
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -208,8 +208,7 @@
 block discarded – undo
208 208
 			spip_log("signature ajax form incorrecte : $form (formulaire signe mais ne correspond pas a la session)", 'formulaires' . _LOG_ERREUR);
209 209
 			return false;
210 210
 		}
211
-	}
212
-	else {
211
+	} else {
213 212
 		if (!empty($sign)) {
214 213
 			spip_log("signature ajax form incorrecte : $form (formulaire signe mais pas de session)", 'formulaires' . _LOG_ERREUR);
215 214
 			return false;
Please login to merge, or discard this patch.