Completed
Push — master ( 7a72c7...b10f66 )
by cam
04:32
created
ecrire/balise/formulaire_.php 2 patches
Indentation   +244 added lines, -244 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
 /**
@@ -151,17 +151,17 @@  discard block
 block discarded – undo
151 151
  *     - string : texte à afficher directement
152 152
  */
153 153
 function balise_FORMULAIRE__dyn($form, ...$args) {
154
-	$form = existe_formulaire($form);
155
-	if (!$form) {
156
-		return '';
157
-	}
154
+    $form = existe_formulaire($form);
155
+    if (!$form) {
156
+        return '';
157
+    }
158 158
 
159
-	$contexte = balise_FORMULAIRE__contexte($form, $args);
160
-	if (!is_array($contexte)) {
161
-		return $contexte;
162
-	}
159
+    $contexte = balise_FORMULAIRE__contexte($form, $args);
160
+    if (!is_array($contexte)) {
161
+        return $contexte;
162
+    }
163 163
 
164
-	return array("formulaires/$form", 3600, $contexte);
164
+    return array("formulaires/$form", 3600, $contexte);
165 165
 }
166 166
 
167 167
 /**
@@ -175,132 +175,132 @@  discard block
 block discarded – undo
175 175
  *     Contexte d'environnement à envoyer au squelette
176 176
  **/
177 177
 function balise_FORMULAIRE__contexte($form, $args) {
178
-	// tester si ce formulaire vient d'etre poste (memes arguments)
179
-	// pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page
180
-	// si poste, on recupere les erreurs
181
-
182
-	$je_suis_poste = false;
183
-	if ($post_form = _request('formulaire_action')
184
-		and $post_form == $form
185
-		and $p = _request('formulaire_action_args')
186
-		and is_array($p = decoder_contexte_ajax($p, $post_form))
187
-	) {
188
-		// enlever le faux attribut de langue masque
189
-		array_shift($p);
190
-		if (formulaire__identifier($form, $args, $p)) {
191
-			$je_suis_poste = true;
192
-		}
193
-	}
194
-
195
-	$editable = true;
196
-	$erreurs = $post = array();
197
-	if ($je_suis_poste) {
198
-		$post = traiter_formulaires_dynamiques(true);
199
-		$e = "erreurs_$form";
200
-		$erreurs = isset($post[$e]) ? $post[$e] : array();
201
-		$editable = "editable_$form";
202
-		$editable = (!isset($post[$e]))
203
-			|| count($erreurs)
204
-			|| (isset($post[$editable]) && $post[$editable]);
205
-	}
206
-
207
-	$valeurs = formulaire__charger($form, $args, $je_suis_poste);
208
-
209
-	// si $valeurs n'est pas un tableau, le formulaire n'est pas applicable
210
-	// C'est plus fort qu'editable qui est gere par le squelette 
211
-	// Idealement $valeur doit etre alors un message explicatif.
212
-	if (!is_array($valeurs)) {
213
-		return is_string($valeurs) ? $valeurs : '';
214
-	}
215
-
216
-	// charger peut passer une action si le formulaire ne tourne pas sur self()
217
-	// ou une action vide si elle ne sert pas
218
-	$action = (isset($valeurs['action'])) ? $valeurs['action'] : self('&amp;', true);
219
-	// bug IEx : si action finit par / 
220
-	// IE croit que le <form ... action=../ > est autoferme
221
-	if (substr($action, -1) == '/') {
222
-		// on ajoute une ancre pour feinter IE, au pire ca tue l'ancre qui finit par un /
223
-		$action .= '#';
224
-	}
225
-
226
-	// recuperer la saisie en cours si erreurs
227
-	// seulement si c'est ce formulaire qui est poste
228
-	// ou si on le demande explicitement par le parametre _forcer_request = true
229
-	$dispo = ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request']));
230
-	foreach (array_keys($valeurs) as $champ) {
231
-		if ($champ[0] !== '_' and !in_array($champ, array('message_ok', 'message_erreur', 'editable'))) {
232
-			if ($dispo and (($v = _request($champ)) !== null)) {
233
-				$valeurs[$champ] = $v;
234
-			}
235
-			// nettoyer l'url des champs qui vont etre saisis
236
-			if ($action) {
237
-				$action = parametre_url($action, $champ, '');
238
-			}
239
-			// proteger les ' et les " dans les champs que l'on va injecter
240
-			$valeurs[$champ] = protege_champ($valeurs[$champ]);
241
-		}
242
-	}
243
-
244
-	if ($action) {
245
-		// nettoyer l'url
246
-		$action = parametre_url($action, 'formulaire_action', '');
247
-		$action = parametre_url($action, 'formulaire_action_args', '');
248
-	}
249
-
250
-	if (isset($valeurs['_action'])) {
251
-		$securiser_action = charger_fonction('securiser_action', 'inc');
252
-		$secu = $securiser_action(reset($valeurs['_action']), end($valeurs['_action']), '', -1);
253
-		$valeurs['_hidden'] = (isset($valeurs['_hidden']) ? $valeurs['_hidden'] : '') .
254
-			"<input type='hidden' name='arg' value='" . $secu['arg'] . "' />"
255
-			. "<input type='hidden' name='hash' value='" . $secu['hash'] . "' />";
256
-	}
257
-
258
-	// empiler la lang en tant que premier argument implicite du CVT
259
-	// pour permettre de la restaurer au moment du Verifier et du Traiter
260
-	array_unshift($args, $GLOBALS['spip_lang']);
261
-
262
-	$valeurs['formulaire_args'] = encoder_contexte_ajax($args, $form);
263
-	$valeurs['erreurs'] = $erreurs;
264
-	$valeurs['action'] = $action;
265
-	$valeurs['form'] = $form;
266
-
267
-	if (!isset($valeurs['id'])) {
268
-		$valeurs['id'] = 'new';
269
-	}
270
-	// editable peut venir de charger() ou de traiter() sinon
271
-	if (!isset($valeurs['editable'])) {
272
-		$valeurs['editable'] = $editable;
273
-	}
274
-	// dans tous les cas, renvoyer un espace ou vide (et pas un booleen)
275
-	$valeurs['editable'] = ($valeurs['editable'] ? ' ' : '');
276
-
277
-	if ($je_suis_poste) {
278
-		$valeurs['message_erreur'] = "";
279
-		if (isset($erreurs['message_erreur'])) {
280
-			$valeurs['message_erreur'] = $erreurs['message_erreur'];
281
-		}
282
-
283
-		$valeurs['message_ok'] = "";
284
-		if (isset($post["message_ok_$form"])) {
285
-			$valeurs['message_ok'] = $post["message_ok_$form"];
286
-		} elseif (isset($erreurs['message_ok'])) {
287
-			$valeurs['message_ok'] = $erreurs["message_ok"];
288
-		}
289
-
290
-		// accessibilite : encapsuler toutes les erreurs dans un role='alert'
291
-		// uniquement si c'est une string et au premier niveau (on ne touche pas au tableaux)
292
-		// et si $k ne commence pas par un _ (c'est bien une vrai erreur sur un vrai champ)
293
-		if (html5_permis()) {
294
-			foreach ($erreurs as $k => $v) {
295
-				if (is_string($v) and strlen(trim($v)) and strpos($k,'_') !== 0) {
296
-					// on encapsule dans un span car ces messages sont en general simple, juste du texte, et deja dans un span dans le form
297
-					$valeurs['erreurs'][$k] = "<span role='alert'>".$erreurs[$k]."</span>";
298
-				}
299
-			}
300
-		}
301
-	}
302
-
303
-	return $valeurs;
178
+    // tester si ce formulaire vient d'etre poste (memes arguments)
179
+    // pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page
180
+    // si poste, on recupere les erreurs
181
+
182
+    $je_suis_poste = false;
183
+    if ($post_form = _request('formulaire_action')
184
+        and $post_form == $form
185
+        and $p = _request('formulaire_action_args')
186
+        and is_array($p = decoder_contexte_ajax($p, $post_form))
187
+    ) {
188
+        // enlever le faux attribut de langue masque
189
+        array_shift($p);
190
+        if (formulaire__identifier($form, $args, $p)) {
191
+            $je_suis_poste = true;
192
+        }
193
+    }
194
+
195
+    $editable = true;
196
+    $erreurs = $post = array();
197
+    if ($je_suis_poste) {
198
+        $post = traiter_formulaires_dynamiques(true);
199
+        $e = "erreurs_$form";
200
+        $erreurs = isset($post[$e]) ? $post[$e] : array();
201
+        $editable = "editable_$form";
202
+        $editable = (!isset($post[$e]))
203
+            || count($erreurs)
204
+            || (isset($post[$editable]) && $post[$editable]);
205
+    }
206
+
207
+    $valeurs = formulaire__charger($form, $args, $je_suis_poste);
208
+
209
+    // si $valeurs n'est pas un tableau, le formulaire n'est pas applicable
210
+    // C'est plus fort qu'editable qui est gere par le squelette 
211
+    // Idealement $valeur doit etre alors un message explicatif.
212
+    if (!is_array($valeurs)) {
213
+        return is_string($valeurs) ? $valeurs : '';
214
+    }
215
+
216
+    // charger peut passer une action si le formulaire ne tourne pas sur self()
217
+    // ou une action vide si elle ne sert pas
218
+    $action = (isset($valeurs['action'])) ? $valeurs['action'] : self('&amp;', true);
219
+    // bug IEx : si action finit par / 
220
+    // IE croit que le <form ... action=../ > est autoferme
221
+    if (substr($action, -1) == '/') {
222
+        // on ajoute une ancre pour feinter IE, au pire ca tue l'ancre qui finit par un /
223
+        $action .= '#';
224
+    }
225
+
226
+    // recuperer la saisie en cours si erreurs
227
+    // seulement si c'est ce formulaire qui est poste
228
+    // ou si on le demande explicitement par le parametre _forcer_request = true
229
+    $dispo = ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request']));
230
+    foreach (array_keys($valeurs) as $champ) {
231
+        if ($champ[0] !== '_' and !in_array($champ, array('message_ok', 'message_erreur', 'editable'))) {
232
+            if ($dispo and (($v = _request($champ)) !== null)) {
233
+                $valeurs[$champ] = $v;
234
+            }
235
+            // nettoyer l'url des champs qui vont etre saisis
236
+            if ($action) {
237
+                $action = parametre_url($action, $champ, '');
238
+            }
239
+            // proteger les ' et les " dans les champs que l'on va injecter
240
+            $valeurs[$champ] = protege_champ($valeurs[$champ]);
241
+        }
242
+    }
243
+
244
+    if ($action) {
245
+        // nettoyer l'url
246
+        $action = parametre_url($action, 'formulaire_action', '');
247
+        $action = parametre_url($action, 'formulaire_action_args', '');
248
+    }
249
+
250
+    if (isset($valeurs['_action'])) {
251
+        $securiser_action = charger_fonction('securiser_action', 'inc');
252
+        $secu = $securiser_action(reset($valeurs['_action']), end($valeurs['_action']), '', -1);
253
+        $valeurs['_hidden'] = (isset($valeurs['_hidden']) ? $valeurs['_hidden'] : '') .
254
+            "<input type='hidden' name='arg' value='" . $secu['arg'] . "' />"
255
+            . "<input type='hidden' name='hash' value='" . $secu['hash'] . "' />";
256
+    }
257
+
258
+    // empiler la lang en tant que premier argument implicite du CVT
259
+    // pour permettre de la restaurer au moment du Verifier et du Traiter
260
+    array_unshift($args, $GLOBALS['spip_lang']);
261
+
262
+    $valeurs['formulaire_args'] = encoder_contexte_ajax($args, $form);
263
+    $valeurs['erreurs'] = $erreurs;
264
+    $valeurs['action'] = $action;
265
+    $valeurs['form'] = $form;
266
+
267
+    if (!isset($valeurs['id'])) {
268
+        $valeurs['id'] = 'new';
269
+    }
270
+    // editable peut venir de charger() ou de traiter() sinon
271
+    if (!isset($valeurs['editable'])) {
272
+        $valeurs['editable'] = $editable;
273
+    }
274
+    // dans tous les cas, renvoyer un espace ou vide (et pas un booleen)
275
+    $valeurs['editable'] = ($valeurs['editable'] ? ' ' : '');
276
+
277
+    if ($je_suis_poste) {
278
+        $valeurs['message_erreur'] = "";
279
+        if (isset($erreurs['message_erreur'])) {
280
+            $valeurs['message_erreur'] = $erreurs['message_erreur'];
281
+        }
282
+
283
+        $valeurs['message_ok'] = "";
284
+        if (isset($post["message_ok_$form"])) {
285
+            $valeurs['message_ok'] = $post["message_ok_$form"];
286
+        } elseif (isset($erreurs['message_ok'])) {
287
+            $valeurs['message_ok'] = $erreurs["message_ok"];
288
+        }
289
+
290
+        // accessibilite : encapsuler toutes les erreurs dans un role='alert'
291
+        // uniquement si c'est une string et au premier niveau (on ne touche pas au tableaux)
292
+        // et si $k ne commence pas par un _ (c'est bien une vrai erreur sur un vrai champ)
293
+        if (html5_permis()) {
294
+            foreach ($erreurs as $k => $v) {
295
+                if (is_string($v) and strlen(trim($v)) and strpos($k,'_') !== 0) {
296
+                    // on encapsule dans un span car ces messages sont en general simple, juste du texte, et deja dans un span dans le form
297
+                    $valeurs['erreurs'][$k] = "<span role='alert'>".$erreurs[$k]."</span>";
298
+                }
299
+            }
300
+        }
301
+    }
302
+
303
+    return $valeurs;
304 304
 }
305 305
 
306 306
 /**
@@ -312,51 +312,51 @@  discard block
 block discarded – undo
312 312
  * @return array
313 313
  */
314 314
 function formulaire__charger($form, $args, $poste) {
315
-	if ($charger_valeurs = charger_fonction("charger", "formulaires/$form", true)) {
316
-		$valeurs = call_user_func_array($charger_valeurs, $args);
317
-	} else {
318
-		$valeurs = array();
319
-	}
320
-
321
-	$valeurs = pipeline(
322
-		'formulaire_charger',
323
-		array(
324
-			'args' => array('form' => $form, 'args' => $args, 'je_suis_poste' => $poste),
325
-			'data' => $valeurs
326
-		)
327
-	);
328
-
329
-	// prise en charge CVT multi etape
330
-	if (is_array($valeurs) and isset($valeurs['_etapes'])) {
331
-		include_spip('inc/cvt_multietapes');
332
-		$valeurs = cvtmulti_formulaire_charger_etapes(
333
-			array('form' => $form, 'args' => $args, 'je_suis_poste' => $poste), 
334
-			$valeurs
335
-		);
336
-	}
337
-
338
-	// si $valeurs et false ou une chaine, pas de formulaire, donc pas de pipeline !
339
-	if (is_array($valeurs)) {
340
-		if (!isset($valeurs['_pipelines'])) {
341
-			$valeurs['_pipelines'] = array();
342
-		}
343
-		// l'ancien argument _pipeline devient maintenant _pipelines
344
-		// reinjectons le vieux _pipeline au debut de _pipelines
345
-		if (isset($valeurs['_pipeline'])) {
346
-			$pipe = is_array($valeurs['_pipeline']) ? reset($valeurs['_pipeline']) : $valeurs['_pipeline'];
347
-			$args = is_array($valeurs['_pipeline']) ? end($valeurs['_pipeline']) : array();
348
-
349
-			$pipelines = array($pipe => $args);
350
-			$valeurs['_pipelines'] = array_merge($pipelines, $valeurs['_pipelines']);
351
-		}
352
-
353
-		// et enfin, ajoutons systematiquement un pipeline sur le squelette du formulaire
354
-		// qui constitue le cas le plus courant d'utilisation du pipeline recuperer_fond
355
-		// (performance, cela evite de s'injecter dans recuperer_fond utilise pour *tous* les squelettes)
356
-		$valeurs['_pipelines']['formulaire_fond'] = array('form' => $form, 'args' => $args, 'je_suis_poste' => $poste);
357
-	}
358
-
359
-	return $valeurs;
315
+    if ($charger_valeurs = charger_fonction("charger", "formulaires/$form", true)) {
316
+        $valeurs = call_user_func_array($charger_valeurs, $args);
317
+    } else {
318
+        $valeurs = array();
319
+    }
320
+
321
+    $valeurs = pipeline(
322
+        'formulaire_charger',
323
+        array(
324
+            'args' => array('form' => $form, 'args' => $args, 'je_suis_poste' => $poste),
325
+            'data' => $valeurs
326
+        )
327
+    );
328
+
329
+    // prise en charge CVT multi etape
330
+    if (is_array($valeurs) and isset($valeurs['_etapes'])) {
331
+        include_spip('inc/cvt_multietapes');
332
+        $valeurs = cvtmulti_formulaire_charger_etapes(
333
+            array('form' => $form, 'args' => $args, 'je_suis_poste' => $poste), 
334
+            $valeurs
335
+        );
336
+    }
337
+
338
+    // si $valeurs et false ou une chaine, pas de formulaire, donc pas de pipeline !
339
+    if (is_array($valeurs)) {
340
+        if (!isset($valeurs['_pipelines'])) {
341
+            $valeurs['_pipelines'] = array();
342
+        }
343
+        // l'ancien argument _pipeline devient maintenant _pipelines
344
+        // reinjectons le vieux _pipeline au debut de _pipelines
345
+        if (isset($valeurs['_pipeline'])) {
346
+            $pipe = is_array($valeurs['_pipeline']) ? reset($valeurs['_pipeline']) : $valeurs['_pipeline'];
347
+            $args = is_array($valeurs['_pipeline']) ? end($valeurs['_pipeline']) : array();
348
+
349
+            $pipelines = array($pipe => $args);
350
+            $valeurs['_pipelines'] = array_merge($pipelines, $valeurs['_pipelines']);
351
+        }
352
+
353
+        // et enfin, ajoutons systematiquement un pipeline sur le squelette du formulaire
354
+        // qui constitue le cas le plus courant d'utilisation du pipeline recuperer_fond
355
+        // (performance, cela evite de s'injecter dans recuperer_fond utilise pour *tous* les squelettes)
356
+        $valeurs['_pipelines']['formulaire_fond'] = array('form' => $form, 'args' => $args, 'je_suis_poste' => $poste);
357
+    }
358
+
359
+    return $valeurs;
360 360
 }
361 361
 
362 362
 /**
@@ -375,9 +375,9 @@  discard block
 block discarded – undo
375 375
  * @return bool
376 376
  */
377 377
 function formulaire__identifier($form, $args, $p) {
378
-	if ($identifier_args = charger_fonction("identifier", "formulaires/$form", true)) {
379
-		return call_user_func_array($identifier_args, $args) === call_user_func_array($identifier_args, $p);
380
-	}
378
+    if ($identifier_args = charger_fonction("identifier", "formulaires/$form", true)) {
379
+        return call_user_func_array($identifier_args, $args) === call_user_func_array($identifier_args, $p);
380
+    }
381 381
 
382
-	return $args === $p;
382
+    return $args === $p;
383 383
 }
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
 }
@@ -250,9 +250,9 @@  discard block
 block discarded – undo
250 250
 	if (isset($valeurs['_action'])) {
251 251
 		$securiser_action = charger_fonction('securiser_action', 'inc');
252 252
 		$secu = $securiser_action(reset($valeurs['_action']), end($valeurs['_action']), '', -1);
253
-		$valeurs['_hidden'] = (isset($valeurs['_hidden']) ? $valeurs['_hidden'] : '') .
254
-			"<input type='hidden' name='arg' value='" . $secu['arg'] . "' />"
255
-			. "<input type='hidden' name='hash' value='" . $secu['hash'] . "' />";
253
+		$valeurs['_hidden'] = (isset($valeurs['_hidden']) ? $valeurs['_hidden'] : '').
254
+			"<input type='hidden' name='arg' value='".$secu['arg']."' />"
255
+			. "<input type='hidden' name='hash' value='".$secu['hash']."' />";
256 256
 	}
257 257
 
258 258
 	// empiler la lang en tant que premier argument implicite du CVT
@@ -292,7 +292,7 @@  discard block
 block discarded – undo
292 292
 		// et si $k ne commence pas par un _ (c'est bien une vrai erreur sur un vrai champ)
293 293
 		if (html5_permis()) {
294 294
 			foreach ($erreurs as $k => $v) {
295
-				if (is_string($v) and strlen(trim($v)) and strpos($k,'_') !== 0) {
295
+				if (is_string($v) and strlen(trim($v)) and strpos($k, '_') !== 0) {
296 296
 					// on encapsule dans un span car ces messages sont en general simple, juste du texte, et deja dans un span dans le form
297 297
 					$valeurs['erreurs'][$k] = "<span role='alert'>".$erreurs[$k]."</span>";
298 298
 				}
Please login to merge, or discard this patch.