Completed
Push — master ( b6af38...6ad6a4 )
by cam
04:18
created
ecrire/balise/formulaire_.php 2 patches
Indentation   +256 added lines, -256 removed lines patch added patch discarded remove patch
@@ -15,7 +15,7 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\Formulaires
16 16
  **/
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 
21 21
 include_spip('inc/filtres');
@@ -34,24 +34,24 @@  discard block
 block discarded – undo
34 34
  *     Saisie protégée
35 35
  **/
36 36
 function protege_champ($texte) {
37
-	if (is_array($texte)) {
38
-		$texte = array_map('protege_champ', $texte);
39
-	} else {
40
-		// ne pas corrompre une valeur serialize
41
-		if ((preg_match(",^[abis]:\d+[:;],", $texte) and @unserialize($texte) != false) or is_null($texte)) {
42
-			return $texte;
43
-		}
44
-		if (is_string($texte)
45
-			and $texte
46
-			and strpbrk($texte, "&\"'<>") !== false
47
-		) {
48
-			$texte = spip_htmlspecialchars($texte, ENT_QUOTES);
49
-		} elseif (is_bool($texte)) {
50
-			$texte = ($texte ? '1' : '');
51
-		}
52
-	}
53
-
54
-	return $texte;
37
+    if (is_array($texte)) {
38
+        $texte = array_map('protege_champ', $texte);
39
+    } else {
40
+        // ne pas corrompre une valeur serialize
41
+        if ((preg_match(",^[abis]:\d+[:;],", $texte) and @unserialize($texte) != false) or is_null($texte)) {
42
+            return $texte;
43
+        }
44
+        if (is_string($texte)
45
+            and $texte
46
+            and strpbrk($texte, "&\"'<>") !== false
47
+        ) {
48
+            $texte = spip_htmlspecialchars($texte, ENT_QUOTES);
49
+        } elseif (is_bool($texte)) {
50
+            $texte = ($texte ? '1' : '');
51
+        }
52
+    }
53
+
54
+    return $texte;
55 55
 }
56 56
 
57 57
 /**
@@ -65,17 +65,17 @@  discard block
 block discarded – undo
65 65
  *     - false : pas de squelette trouvé
66 66
  **/
67 67
 function existe_formulaire($form) {
68
-	if (substr($form, 0, 11) == "FORMULAIRE_") {
69
-		$form = strtolower(substr($form, 11));
70
-	} else {
71
-		$form = strtolower($form);
72
-	}
68
+    if (substr($form, 0, 11) == "FORMULAIRE_") {
69
+        $form = strtolower(substr($form, 11));
70
+    } else {
71
+        $form = strtolower($form);
72
+    }
73 73
 
74
-	if (!$form) {
75
-		return '';
76
-	} // on ne sait pas, le nom du formulaire n'est pas fourni ici
74
+    if (!$form) {
75
+        return '';
76
+    } // on ne sait pas, le nom du formulaire n'est pas fourni ici
77 77
 
78
-	return trouver_fond($form, 'formulaires/') ? $form : false;
78
+    return trouver_fond($form, 'formulaires/') ? $form : false;
79 79
 }
80 80
 
81 81
 /**
@@ -84,29 +84,29 @@  discard block
 block discarded – undo
84 84
  * @return false|array
85 85
  */
86 86
 function test_formulaire_inclus_par_modele() {
87
-	$trace = debug_backtrace(null, 20);
88
-	$trace_fonctions = array_column($trace, 'function');
89
-	$trace_fonctions = array_map('strtolower', $trace_fonctions);
90
-
91
-	// regarder si un flag a ete leve juste avant l'appel de balise_FORMULAIRE_dyn
92
-	if (function_exists('arguments_balise_dyn_depuis_modele')
93
-		and $form = arguments_balise_dyn_depuis_modele(null, 'read')) {
94
-		if (in_array('balise_formulaire__dyn', $trace_fonctions)) {
95
-			$k = array_search('balise_formulaire__dyn', $trace_fonctions);
96
-			if ($trace[$k]['args'][0] === $form) {
97
-				return $trace[$k]['args'];
98
-			}
99
-		}
100
-	}
101
-
102
-	// fallback qui ne repose pas sur le flag lie a l'analyse de contexte_compil,
103
-	// mais ne marche pas si executer_balise_dynamique est appelee via du php dans le squelette
104
-	if (in_array('eval', $trace_fonctions) and in_array('inclure_modele', $trace_fonctions)) {
105
-		$k = array_search('inclure_modele', $trace_fonctions);
106
-		// les arguments de recuperer_fond() passes par inclure_modele()
107
-		return $trace[$k-1]['args'][1]['args'];
108
-	}
109
-	return false;
87
+    $trace = debug_backtrace(null, 20);
88
+    $trace_fonctions = array_column($trace, 'function');
89
+    $trace_fonctions = array_map('strtolower', $trace_fonctions);
90
+
91
+    // regarder si un flag a ete leve juste avant l'appel de balise_FORMULAIRE_dyn
92
+    if (function_exists('arguments_balise_dyn_depuis_modele')
93
+        and $form = arguments_balise_dyn_depuis_modele(null, 'read')) {
94
+        if (in_array('balise_formulaire__dyn', $trace_fonctions)) {
95
+            $k = array_search('balise_formulaire__dyn', $trace_fonctions);
96
+            if ($trace[$k]['args'][0] === $form) {
97
+                return $trace[$k]['args'];
98
+            }
99
+        }
100
+    }
101
+
102
+    // fallback qui ne repose pas sur le flag lie a l'analyse de contexte_compil,
103
+    // mais ne marche pas si executer_balise_dynamique est appelee via du php dans le squelette
104
+    if (in_array('eval', $trace_fonctions) and in_array('inclure_modele', $trace_fonctions)) {
105
+        $k = array_search('inclure_modele', $trace_fonctions);
106
+        // les arguments de recuperer_fond() passes par inclure_modele()
107
+        return $trace[$k-1]['args'][1]['args'];
108
+    }
109
+    return false;
110 110
 }
111 111
 
112 112
 /**
@@ -121,17 +121,17 @@  discard block
 block discarded – undo
121 121
  **/
122 122
 function balise_FORMULAIRE__dist($p) {
123 123
 
124
-	// Cas d'un #FORMULAIRE_TOTO inexistant : renvoyer la chaine vide.
125
-	// mais si #FORMULAIRE_{toto} on ne peut pas savoir a la compilation, continuer
126
-	if (existe_formulaire($p->nom_champ) === false) {
127
-		$p->code = "''";
128
-		$p->interdire_scripts = false;
124
+    // Cas d'un #FORMULAIRE_TOTO inexistant : renvoyer la chaine vide.
125
+    // mais si #FORMULAIRE_{toto} on ne peut pas savoir a la compilation, continuer
126
+    if (existe_formulaire($p->nom_champ) === false) {
127
+        $p->code = "''";
128
+        $p->interdire_scripts = false;
129 129
 
130
-		return $p;
131
-	}
130
+        return $p;
131
+    }
132 132
 
133
-	// sinon renvoyer un code php dynamique
134
-	return calculer_balise_dynamique($p, $p->nom_champ, array());
133
+    // sinon renvoyer un code php dynamique
134
+    return calculer_balise_dynamique($p, $p->nom_champ, array());
135 135
 }
136 136
 
137 137
 /**
@@ -144,27 +144,27 @@  discard block
 block discarded – undo
144 144
  *     - string : texte à afficher directement
145 145
  */
146 146
 function balise_FORMULAIRE__dyn($form) {
147
-	$form = existe_formulaire($form);
148
-	if (!$form) {
149
-		return '';
150
-	}
151
-
152
-	// deux moyen d'arriver ici : 
153
-	// soit #FORMULAIRE_XX reroute avec 'FORMULAIRE_XX' ajoute en premier arg
154
-	// soit #FORMULAIRE_{xx}
155
-
156
-	// recuperer les arguments passes a la balise
157
-	// on enleve le premier qui est le nom de la balise 
158
-	// deja recupere ci-dessus
159
-
160
-	$args = func_get_args();
161
-	array_shift($args);
162
-	$contexte = balise_FORMULAIRE__contexte($form, $args);
163
-	if (!is_array($contexte)) {
164
-		return $contexte;
165
-	}
166
-
167
-	return array("formulaires/$form", 3600, $contexte);
147
+    $form = existe_formulaire($form);
148
+    if (!$form) {
149
+        return '';
150
+    }
151
+
152
+    // deux moyen d'arriver ici : 
153
+    // soit #FORMULAIRE_XX reroute avec 'FORMULAIRE_XX' ajoute en premier arg
154
+    // soit #FORMULAIRE_{xx}
155
+
156
+    // recuperer les arguments passes a la balise
157
+    // on enleve le premier qui est le nom de la balise 
158
+    // deja recupere ci-dessus
159
+
160
+    $args = func_get_args();
161
+    array_shift($args);
162
+    $contexte = balise_FORMULAIRE__contexte($form, $args);
163
+    if (!is_array($contexte)) {
164
+        return $contexte;
165
+    }
166
+
167
+    return array("formulaires/$form", 3600, $contexte);
168 168
 }
169 169
 
170 170
 /**
@@ -178,132 +178,132 @@  discard block
 block discarded – undo
178 178
  *     Contexte d'environnement à envoyer au squelette
179 179
  **/
180 180
 function balise_FORMULAIRE__contexte($form, $args) {
181
-	// tester si ce formulaire vient d'etre poste (memes arguments)
182
-	// pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page
183
-	// si poste, on recupere les erreurs
184
-
185
-	$je_suis_poste = false;
186
-	if ($post_form = _request('formulaire_action')
187
-		and $post_form == $form
188
-		and $p = _request('formulaire_action_args')
189
-		and is_array($p = decoder_contexte_ajax($p, $post_form))
190
-	) {
191
-		// enlever le faux attribut de langue masque
192
-		array_shift($p);
193
-		if (formulaire__identifier($form, $args, $p)) {
194
-			$je_suis_poste = true;
195
-		}
196
-	}
197
-
198
-	$editable = true;
199
-	$erreurs = $post = array();
200
-	if ($je_suis_poste) {
201
-		$post = traiter_formulaires_dynamiques(true);
202
-		$e = "erreurs_$form";
203
-		$erreurs = isset($post[$e]) ? $post[$e] : array();
204
-		$editable = "editable_$form";
205
-		$editable = (!isset($post[$e]))
206
-			|| count($erreurs)
207
-			|| (isset($post[$editable]) && $post[$editable]);
208
-	}
209
-
210
-	$valeurs = formulaire__charger($form, $args, $je_suis_poste);
211
-
212
-	// si $valeurs n'est pas un tableau, le formulaire n'est pas applicable
213
-	// C'est plus fort qu'editable qui est gere par le squelette 
214
-	// Idealement $valeur doit etre alors un message explicatif.
215
-	if (!is_array($valeurs)) {
216
-		return is_string($valeurs) ? $valeurs : '';
217
-	}
218
-
219
-	// charger peut passer une action si le formulaire ne tourne pas sur self()
220
-	// ou une action vide si elle ne sert pas
221
-	$action = (isset($valeurs['action'])) ? $valeurs['action'] : self('&amp;', true);
222
-	// bug IEx : si action finit par / 
223
-	// IE croit que le <form ... action=../ > est autoferme
224
-	if (substr($action, -1) == '/') {
225
-		// on ajoute une ancre pour feinter IE, au pire ca tue l'ancre qui finit par un /
226
-		$action .= '#';
227
-	}
228
-
229
-	// recuperer la saisie en cours si erreurs
230
-	// seulement si c'est ce formulaire qui est poste
231
-	// ou si on le demande explicitement par le parametre _forcer_request = true
232
-	$dispo = ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request']));
233
-	foreach (array_keys($valeurs) as $champ) {
234
-		if ($champ[0] !== '_' and !in_array($champ, array('message_ok', 'message_erreur', 'editable'))) {
235
-			if ($dispo and (($v = _request($champ)) !== null)) {
236
-				$valeurs[$champ] = $v;
237
-			}
238
-			// nettoyer l'url des champs qui vont etre saisis
239
-			if ($action) {
240
-				$action = parametre_url($action, $champ, '');
241
-			}
242
-			// proteger les ' et les " dans les champs que l'on va injecter
243
-			$valeurs[$champ] = protege_champ($valeurs[$champ]);
244
-		}
245
-	}
246
-
247
-	if ($action) {
248
-		// nettoyer l'url
249
-		$action = parametre_url($action, 'formulaire_action', '');
250
-		$action = parametre_url($action, 'formulaire_action_args', '');
251
-	}
252
-
253
-	if (isset($valeurs['_action'])) {
254
-		$securiser_action = charger_fonction('securiser_action', 'inc');
255
-		$secu = $securiser_action(reset($valeurs['_action']), end($valeurs['_action']), '', -1);
256
-		$valeurs['_hidden'] = (isset($valeurs['_hidden']) ? $valeurs['_hidden'] : '') .
257
-			"<input type='hidden' name='arg' value='" . $secu['arg'] . "' />"
258
-			. "<input type='hidden' name='hash' value='" . $secu['hash'] . "' />";
259
-	}
260
-
261
-	// empiler la lang en tant que premier argument implicite du CVT
262
-	// pour permettre de la restaurer au moment du Verifier et du Traiter
263
-	array_unshift($args, $GLOBALS['spip_lang']);
264
-
265
-	$valeurs['formulaire_args'] = encoder_contexte_ajax($args, $form);
266
-	$valeurs['erreurs'] = $erreurs;
267
-	$valeurs['action'] = $action;
268
-	$valeurs['form'] = $form;
269
-
270
-	if (!isset($valeurs['id'])) {
271
-		$valeurs['id'] = 'new';
272
-	}
273
-	// editable peut venir de charger() ou de traiter() sinon
274
-	if (!isset($valeurs['editable'])) {
275
-		$valeurs['editable'] = $editable;
276
-	}
277
-	// dans tous les cas, renvoyer un espace ou vide (et pas un booleen)
278
-	$valeurs['editable'] = ($valeurs['editable'] ? ' ' : '');
279
-
280
-	if ($je_suis_poste) {
281
-		$valeurs['message_erreur'] = "";
282
-		if (isset($erreurs['message_erreur'])) {
283
-			$valeurs['message_erreur'] = $erreurs['message_erreur'];
284
-		}
285
-
286
-		$valeurs['message_ok'] = "";
287
-		if (isset($post["message_ok_$form"])) {
288
-			$valeurs['message_ok'] = $post["message_ok_$form"];
289
-		} elseif (isset($erreurs['message_ok'])) {
290
-			$valeurs['message_ok'] = $erreurs["message_ok"];
291
-		}
292
-
293
-		// accessibilite : encapsuler toutes les erreurs dans un role='alert'
294
-		// uniquement si c'est une string et au premier niveau (on ne touche pas au tableaux)
295
-		// et si $k ne commence pas par un _ (c'est bien une vrai erreur sur un vrai champ)
296
-		if (html5_permis()) {
297
-			foreach ($erreurs as $k => $v) {
298
-				if (is_string($v) and strpos($k,'_') !== 0) {
299
-					// on encapsule dans un span car ces messages sont en general simple, juste du texte, et deja dans un span dans le form
300
-					$valeurs['erreurs'][$k] = "<span role='alert'>".$erreurs[$k]."</span>";
301
-				}
302
-			}
303
-		}
304
-	}
305
-
306
-	return $valeurs;
181
+    // tester si ce formulaire vient d'etre poste (memes arguments)
182
+    // pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page
183
+    // si poste, on recupere les erreurs
184
+
185
+    $je_suis_poste = false;
186
+    if ($post_form = _request('formulaire_action')
187
+        and $post_form == $form
188
+        and $p = _request('formulaire_action_args')
189
+        and is_array($p = decoder_contexte_ajax($p, $post_form))
190
+    ) {
191
+        // enlever le faux attribut de langue masque
192
+        array_shift($p);
193
+        if (formulaire__identifier($form, $args, $p)) {
194
+            $je_suis_poste = true;
195
+        }
196
+    }
197
+
198
+    $editable = true;
199
+    $erreurs = $post = array();
200
+    if ($je_suis_poste) {
201
+        $post = traiter_formulaires_dynamiques(true);
202
+        $e = "erreurs_$form";
203
+        $erreurs = isset($post[$e]) ? $post[$e] : array();
204
+        $editable = "editable_$form";
205
+        $editable = (!isset($post[$e]))
206
+            || count($erreurs)
207
+            || (isset($post[$editable]) && $post[$editable]);
208
+    }
209
+
210
+    $valeurs = formulaire__charger($form, $args, $je_suis_poste);
211
+
212
+    // si $valeurs n'est pas un tableau, le formulaire n'est pas applicable
213
+    // C'est plus fort qu'editable qui est gere par le squelette 
214
+    // Idealement $valeur doit etre alors un message explicatif.
215
+    if (!is_array($valeurs)) {
216
+        return is_string($valeurs) ? $valeurs : '';
217
+    }
218
+
219
+    // charger peut passer une action si le formulaire ne tourne pas sur self()
220
+    // ou une action vide si elle ne sert pas
221
+    $action = (isset($valeurs['action'])) ? $valeurs['action'] : self('&amp;', true);
222
+    // bug IEx : si action finit par / 
223
+    // IE croit que le <form ... action=../ > est autoferme
224
+    if (substr($action, -1) == '/') {
225
+        // on ajoute une ancre pour feinter IE, au pire ca tue l'ancre qui finit par un /
226
+        $action .= '#';
227
+    }
228
+
229
+    // recuperer la saisie en cours si erreurs
230
+    // seulement si c'est ce formulaire qui est poste
231
+    // ou si on le demande explicitement par le parametre _forcer_request = true
232
+    $dispo = ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request']));
233
+    foreach (array_keys($valeurs) as $champ) {
234
+        if ($champ[0] !== '_' and !in_array($champ, array('message_ok', 'message_erreur', 'editable'))) {
235
+            if ($dispo and (($v = _request($champ)) !== null)) {
236
+                $valeurs[$champ] = $v;
237
+            }
238
+            // nettoyer l'url des champs qui vont etre saisis
239
+            if ($action) {
240
+                $action = parametre_url($action, $champ, '');
241
+            }
242
+            // proteger les ' et les " dans les champs que l'on va injecter
243
+            $valeurs[$champ] = protege_champ($valeurs[$champ]);
244
+        }
245
+    }
246
+
247
+    if ($action) {
248
+        // nettoyer l'url
249
+        $action = parametre_url($action, 'formulaire_action', '');
250
+        $action = parametre_url($action, 'formulaire_action_args', '');
251
+    }
252
+
253
+    if (isset($valeurs['_action'])) {
254
+        $securiser_action = charger_fonction('securiser_action', 'inc');
255
+        $secu = $securiser_action(reset($valeurs['_action']), end($valeurs['_action']), '', -1);
256
+        $valeurs['_hidden'] = (isset($valeurs['_hidden']) ? $valeurs['_hidden'] : '') .
257
+            "<input type='hidden' name='arg' value='" . $secu['arg'] . "' />"
258
+            . "<input type='hidden' name='hash' value='" . $secu['hash'] . "' />";
259
+    }
260
+
261
+    // empiler la lang en tant que premier argument implicite du CVT
262
+    // pour permettre de la restaurer au moment du Verifier et du Traiter
263
+    array_unshift($args, $GLOBALS['spip_lang']);
264
+
265
+    $valeurs['formulaire_args'] = encoder_contexte_ajax($args, $form);
266
+    $valeurs['erreurs'] = $erreurs;
267
+    $valeurs['action'] = $action;
268
+    $valeurs['form'] = $form;
269
+
270
+    if (!isset($valeurs['id'])) {
271
+        $valeurs['id'] = 'new';
272
+    }
273
+    // editable peut venir de charger() ou de traiter() sinon
274
+    if (!isset($valeurs['editable'])) {
275
+        $valeurs['editable'] = $editable;
276
+    }
277
+    // dans tous les cas, renvoyer un espace ou vide (et pas un booleen)
278
+    $valeurs['editable'] = ($valeurs['editable'] ? ' ' : '');
279
+
280
+    if ($je_suis_poste) {
281
+        $valeurs['message_erreur'] = "";
282
+        if (isset($erreurs['message_erreur'])) {
283
+            $valeurs['message_erreur'] = $erreurs['message_erreur'];
284
+        }
285
+
286
+        $valeurs['message_ok'] = "";
287
+        if (isset($post["message_ok_$form"])) {
288
+            $valeurs['message_ok'] = $post["message_ok_$form"];
289
+        } elseif (isset($erreurs['message_ok'])) {
290
+            $valeurs['message_ok'] = $erreurs["message_ok"];
291
+        }
292
+
293
+        // accessibilite : encapsuler toutes les erreurs dans un role='alert'
294
+        // uniquement si c'est une string et au premier niveau (on ne touche pas au tableaux)
295
+        // et si $k ne commence pas par un _ (c'est bien une vrai erreur sur un vrai champ)
296
+        if (html5_permis()) {
297
+            foreach ($erreurs as $k => $v) {
298
+                if (is_string($v) and strpos($k,'_') !== 0) {
299
+                    // on encapsule dans un span car ces messages sont en general simple, juste du texte, et deja dans un span dans le form
300
+                    $valeurs['erreurs'][$k] = "<span role='alert'>".$erreurs[$k]."</span>";
301
+                }
302
+            }
303
+        }
304
+    }
305
+
306
+    return $valeurs;
307 307
 }
308 308
 
309 309
 /**
@@ -315,51 +315,51 @@  discard block
 block discarded – undo
315 315
  * @return array
316 316
  */
317 317
 function formulaire__charger($form, $args, $poste) {
318
-	if ($charger_valeurs = charger_fonction("charger", "formulaires/$form", true)) {
319
-		$valeurs = call_user_func_array($charger_valeurs, $args);
320
-	} else {
321
-		$valeurs = array();
322
-	}
323
-
324
-	$valeurs = pipeline(
325
-		'formulaire_charger',
326
-		array(
327
-			'args' => array('form' => $form, 'args' => $args, 'je_suis_poste' => $poste),
328
-			'data' => $valeurs
329
-		)
330
-	);
331
-
332
-	// prise en charge CVT multi etape
333
-	if (is_array($valeurs) and isset($valeurs['_etapes'])) {
334
-		include_spip('inc/cvt_multietapes');
335
-		$valeurs = cvtmulti_formulaire_charger_etapes(
336
-			array('form' => $form, 'args' => $args, 'je_suis_poste' => $poste), 
337
-			$valeurs
338
-		);
339
-	}
340
-
341
-	// si $valeurs et false ou une chaine, pas de formulaire, donc pas de pipeline !
342
-	if (is_array($valeurs)) {
343
-		if (!isset($valeurs['_pipelines'])) {
344
-			$valeurs['_pipelines'] = array();
345
-		}
346
-		// l'ancien argument _pipeline devient maintenant _pipelines
347
-		// reinjectons le vieux _pipeline au debut de _pipelines
348
-		if (isset($valeurs['_pipeline'])) {
349
-			$pipe = is_array($valeurs['_pipeline']) ? reset($valeurs['_pipeline']) : $valeurs['_pipeline'];
350
-			$args = is_array($valeurs['_pipeline']) ? end($valeurs['_pipeline']) : array();
351
-
352
-			$pipelines = array($pipe => $args);
353
-			$valeurs['_pipelines'] = array_merge($pipelines, $valeurs['_pipelines']);
354
-		}
355
-
356
-		// et enfin, ajoutons systematiquement un pipeline sur le squelette du formulaire
357
-		// qui constitue le cas le plus courant d'utilisation du pipeline recuperer_fond
358
-		// (performance, cela evite de s'injecter dans recuperer_fond utilise pour *tous* les squelettes)
359
-		$valeurs['_pipelines']['formulaire_fond'] = array('form' => $form, 'args' => $args, 'je_suis_poste' => $poste);
360
-	}
361
-
362
-	return $valeurs;
318
+    if ($charger_valeurs = charger_fonction("charger", "formulaires/$form", true)) {
319
+        $valeurs = call_user_func_array($charger_valeurs, $args);
320
+    } else {
321
+        $valeurs = array();
322
+    }
323
+
324
+    $valeurs = pipeline(
325
+        'formulaire_charger',
326
+        array(
327
+            'args' => array('form' => $form, 'args' => $args, 'je_suis_poste' => $poste),
328
+            'data' => $valeurs
329
+        )
330
+    );
331
+
332
+    // prise en charge CVT multi etape
333
+    if (is_array($valeurs) and isset($valeurs['_etapes'])) {
334
+        include_spip('inc/cvt_multietapes');
335
+        $valeurs = cvtmulti_formulaire_charger_etapes(
336
+            array('form' => $form, 'args' => $args, 'je_suis_poste' => $poste), 
337
+            $valeurs
338
+        );
339
+    }
340
+
341
+    // si $valeurs et false ou une chaine, pas de formulaire, donc pas de pipeline !
342
+    if (is_array($valeurs)) {
343
+        if (!isset($valeurs['_pipelines'])) {
344
+            $valeurs['_pipelines'] = array();
345
+        }
346
+        // l'ancien argument _pipeline devient maintenant _pipelines
347
+        // reinjectons le vieux _pipeline au debut de _pipelines
348
+        if (isset($valeurs['_pipeline'])) {
349
+            $pipe = is_array($valeurs['_pipeline']) ? reset($valeurs['_pipeline']) : $valeurs['_pipeline'];
350
+            $args = is_array($valeurs['_pipeline']) ? end($valeurs['_pipeline']) : array();
351
+
352
+            $pipelines = array($pipe => $args);
353
+            $valeurs['_pipelines'] = array_merge($pipelines, $valeurs['_pipelines']);
354
+        }
355
+
356
+        // et enfin, ajoutons systematiquement un pipeline sur le squelette du formulaire
357
+        // qui constitue le cas le plus courant d'utilisation du pipeline recuperer_fond
358
+        // (performance, cela evite de s'injecter dans recuperer_fond utilise pour *tous* les squelettes)
359
+        $valeurs['_pipelines']['formulaire_fond'] = array('form' => $form, 'args' => $args, 'je_suis_poste' => $poste);
360
+    }
361
+
362
+    return $valeurs;
363 363
 }
364 364
 
365 365
 /**
@@ -378,9 +378,9 @@  discard block
 block discarded – undo
378 378
  * @return bool
379 379
  */
380 380
 function formulaire__identifier($form, $args, $p) {
381
-	if ($identifier_args = charger_fonction("identifier", "formulaires/$form", true)) {
382
-		return call_user_func_array($identifier_args, $args) === call_user_func_array($identifier_args, $p);
383
-	}
381
+    if ($identifier_args = charger_fonction("identifier", "formulaires/$form", true)) {
382
+        return call_user_func_array($identifier_args, $args) === call_user_func_array($identifier_args, $p);
383
+    }
384 384
 
385
-	return $args === $p;
385
+    return $args === $p;
386 386
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -104,7 +104,7 @@  discard block
 block discarded – undo
104 104
 	if (in_array('eval', $trace_fonctions) and in_array('inclure_modele', $trace_fonctions)) {
105 105
 		$k = array_search('inclure_modele', $trace_fonctions);
106 106
 		// les arguments de recuperer_fond() passes par inclure_modele()
107
-		return $trace[$k-1]['args'][1]['args'];
107
+		return $trace[$k - 1]['args'][1]['args'];
108 108
 	}
109 109
 	return false;
110 110
 }
@@ -253,9 +253,9 @@  discard block
 block discarded – undo
253 253
 	if (isset($valeurs['_action'])) {
254 254
 		$securiser_action = charger_fonction('securiser_action', 'inc');
255 255
 		$secu = $securiser_action(reset($valeurs['_action']), end($valeurs['_action']), '', -1);
256
-		$valeurs['_hidden'] = (isset($valeurs['_hidden']) ? $valeurs['_hidden'] : '') .
257
-			"<input type='hidden' name='arg' value='" . $secu['arg'] . "' />"
258
-			. "<input type='hidden' name='hash' value='" . $secu['hash'] . "' />";
256
+		$valeurs['_hidden'] = (isset($valeurs['_hidden']) ? $valeurs['_hidden'] : '').
257
+			"<input type='hidden' name='arg' value='".$secu['arg']."' />"
258
+			. "<input type='hidden' name='hash' value='".$secu['hash']."' />";
259 259
 	}
260 260
 
261 261
 	// empiler la lang en tant que premier argument implicite du CVT
@@ -295,7 +295,7 @@  discard block
 block discarded – undo
295 295
 		// et si $k ne commence pas par un _ (c'est bien une vrai erreur sur un vrai champ)
296 296
 		if (html5_permis()) {
297 297
 			foreach ($erreurs as $k => $v) {
298
-				if (is_string($v) and strpos($k,'_') !== 0) {
298
+				if (is_string($v) and strpos($k, '_') !== 0) {
299 299
 					// on encapsule dans un span car ces messages sont en general simple, juste du texte, et deja dans un span dans le form
300 300
 					$valeurs['erreurs'][$k] = "<span role='alert'>".$erreurs[$k]."</span>";
301 301
 				}
Please login to merge, or discard this patch.