@@ -66,7 +66,7 @@ discard block |
||
| 66 | 66 | */ |
| 67 | 67 | |
| 68 | 68 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 69 | - return; |
|
| 69 | + return; |
|
| 70 | 70 | } |
| 71 | 71 | |
| 72 | 72 | /** |
@@ -77,45 +77,45 @@ discard block |
||
| 77 | 77 | * @return array |
| 78 | 78 | */ |
| 79 | 79 | function cvtmulti_recuperer_post_precedents($form) { |
| 80 | - include_spip('inc/filtres'); |
|
| 81 | - if ($form |
|
| 82 | - and $c = _request('cvtm_prev_post') |
|
| 83 | - and $c = decoder_contexte_ajax($c, $form) |
|
| 84 | - ) { |
|
| 85 | - #var_dump($c); |
|
| 80 | + include_spip('inc/filtres'); |
|
| 81 | + if ($form |
|
| 82 | + and $c = _request('cvtm_prev_post') |
|
| 83 | + and $c = decoder_contexte_ajax($c, $form) |
|
| 84 | + ) { |
|
| 85 | + #var_dump($c); |
|
| 86 | 86 | |
| 87 | - # reinjecter dans la bonne variable pour permettre de retrouver |
|
| 88 | - # toutes les saisies dans un seul tableau |
|
| 89 | - if ($_SERVER['REQUEST_METHOD'] == 'POST') { |
|
| 90 | - $store = &$_POST; |
|
| 91 | - } else { |
|
| 92 | - $store = &$_GET; |
|
| 93 | - } |
|
| 87 | + # reinjecter dans la bonne variable pour permettre de retrouver |
|
| 88 | + # toutes les saisies dans un seul tableau |
|
| 89 | + if ($_SERVER['REQUEST_METHOD'] == 'POST') { |
|
| 90 | + $store = &$_POST; |
|
| 91 | + } else { |
|
| 92 | + $store = &$_GET; |
|
| 93 | + } |
|
| 94 | 94 | |
| 95 | - foreach ($c as $k => $v) // on ecrase pas si saisi a nouveau ! |
|
| 96 | - { |
|
| 97 | - if (!isset($store[$k])) { |
|
| 98 | - $_REQUEST[$k] = $store[$k] = $v; |
|
| 99 | - } // mais si tableau des deux cotes, on merge avec priorite a la derniere saisie |
|
| 100 | - elseif (is_array($store[$k]) |
|
| 101 | - and is_array($v) |
|
| 102 | - and $z = array_keys($v) |
|
| 103 | - and !is_numeric(reset($z)) |
|
| 104 | - and $z = array_keys($store[$k]) |
|
| 105 | - and !is_numeric(reset($z)) |
|
| 106 | - ) { |
|
| 107 | - $_REQUEST[$k] = $store[$k] = array_merge($v, $store[$k]); |
|
| 108 | - } |
|
| 109 | - } |
|
| 95 | + foreach ($c as $k => $v) // on ecrase pas si saisi a nouveau ! |
|
| 96 | + { |
|
| 97 | + if (!isset($store[$k])) { |
|
| 98 | + $_REQUEST[$k] = $store[$k] = $v; |
|
| 99 | + } // mais si tableau des deux cotes, on merge avec priorite a la derniere saisie |
|
| 100 | + elseif (is_array($store[$k]) |
|
| 101 | + and is_array($v) |
|
| 102 | + and $z = array_keys($v) |
|
| 103 | + and !is_numeric(reset($z)) |
|
| 104 | + and $z = array_keys($store[$k]) |
|
| 105 | + and !is_numeric(reset($z)) |
|
| 106 | + ) { |
|
| 107 | + $_REQUEST[$k] = $store[$k] = array_merge($v, $store[$k]); |
|
| 108 | + } |
|
| 109 | + } |
|
| 110 | 110 | |
| 111 | - // vider pour eviter un second appel a verifier_n |
|
| 112 | - // en cas de double implementation (unipotence) |
|
| 113 | - set_request('cvtm_prev_post'); |
|
| 111 | + // vider pour eviter un second appel a verifier_n |
|
| 112 | + // en cas de double implementation (unipotence) |
|
| 113 | + set_request('cvtm_prev_post'); |
|
| 114 | 114 | |
| 115 | - return array($c['_etape'], $c['_etapes']); |
|
| 116 | - } |
|
| 115 | + return array($c['_etape'], $c['_etapes']); |
|
| 116 | + } |
|
| 117 | 117 | |
| 118 | - return false; |
|
| 118 | + return false; |
|
| 119 | 119 | } |
| 120 | 120 | |
| 121 | 121 | /** |
@@ -128,28 +128,28 @@ discard block |
||
| 128 | 128 | * @return array |
| 129 | 129 | */ |
| 130 | 130 | function cvtmulti_sauver_post($form, $je_suis_poste, &$valeurs) { |
| 131 | - if (!isset($valeurs['_cvtm_prev_post'])) { |
|
| 132 | - $post = array('_etape' => $valeurs['_etape'], '_etapes' => $valeurs['_etapes']); |
|
| 133 | - foreach (array_keys($valeurs) as $champ) { |
|
| 134 | - if (substr($champ, 0, 1) !== '_') { |
|
| 135 | - if ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request'])) { |
|
| 136 | - if (($v = _request($champ)) !== null) { |
|
| 137 | - $post[$champ] = $v; |
|
| 138 | - } |
|
| 139 | - } |
|
| 140 | - } |
|
| 141 | - } |
|
| 142 | - include_spip('inc/filtres'); |
|
| 143 | - $c = encoder_contexte_ajax($post, $form); |
|
| 144 | - if (!isset($valeurs['_hidden'])) { |
|
| 145 | - $valeurs['_hidden'] = ''; |
|
| 146 | - } |
|
| 147 | - $valeurs['_hidden'] .= "<input type='hidden' name='cvtm_prev_post' value='$c' />"; |
|
| 148 | - // marquer comme fait, pour eviter double encodage (unipotence) |
|
| 149 | - $valeurs['_cvtm_prev_post'] = true; |
|
| 150 | - } |
|
| 131 | + if (!isset($valeurs['_cvtm_prev_post'])) { |
|
| 132 | + $post = array('_etape' => $valeurs['_etape'], '_etapes' => $valeurs['_etapes']); |
|
| 133 | + foreach (array_keys($valeurs) as $champ) { |
|
| 134 | + if (substr($champ, 0, 1) !== '_') { |
|
| 135 | + if ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request'])) { |
|
| 136 | + if (($v = _request($champ)) !== null) { |
|
| 137 | + $post[$champ] = $v; |
|
| 138 | + } |
|
| 139 | + } |
|
| 140 | + } |
|
| 141 | + } |
|
| 142 | + include_spip('inc/filtres'); |
|
| 143 | + $c = encoder_contexte_ajax($post, $form); |
|
| 144 | + if (!isset($valeurs['_hidden'])) { |
|
| 145 | + $valeurs['_hidden'] = ''; |
|
| 146 | + } |
|
| 147 | + $valeurs['_hidden'] .= "<input type='hidden' name='cvtm_prev_post' value='$c' />"; |
|
| 148 | + // marquer comme fait, pour eviter double encodage (unipotence) |
|
| 149 | + $valeurs['_cvtm_prev_post'] = true; |
|
| 150 | + } |
|
| 151 | 151 | |
| 152 | - return $valeurs; |
|
| 152 | + return $valeurs; |
|
| 153 | 153 | } |
| 154 | 154 | |
| 155 | 155 | |
@@ -162,13 +162,13 @@ discard block |
||
| 162 | 162 | * @return array |
| 163 | 163 | */ |
| 164 | 164 | function cvtmulti_formulaire_charger($flux) { |
| 165 | - if (is_array($flux['data']) |
|
| 166 | - and isset($flux['data']['_etapes']) |
|
| 167 | - ) { |
|
| 168 | - $flux['data'] = cvtmulti_formulaire_charger_etapes($flux['args'], $flux['data']); |
|
| 169 | - } |
|
| 165 | + if (is_array($flux['data']) |
|
| 166 | + and isset($flux['data']['_etapes']) |
|
| 167 | + ) { |
|
| 168 | + $flux['data'] = cvtmulti_formulaire_charger_etapes($flux['args'], $flux['data']); |
|
| 169 | + } |
|
| 170 | 170 | |
| 171 | - return $flux; |
|
| 171 | + return $flux; |
|
| 172 | 172 | } |
| 173 | 173 | |
| 174 | 174 | /** |
@@ -178,19 +178,19 @@ discard block |
||
| 178 | 178 | * @return array |
| 179 | 179 | */ |
| 180 | 180 | function cvtmulti_formulaire_charger_etapes($args, $valeurs) { |
| 181 | - if (!isset($valeurs['_etape'])) { |
|
| 182 | - $form = $args['form']; |
|
| 183 | - $je_suis_poste = $args['je_suis_poste']; |
|
| 184 | - $nb_etapes = $valeurs['_etapes']; |
|
| 185 | - $etape = _request('_etape'); |
|
| 186 | - $etape = min(max($etape, 1), $nb_etapes); |
|
| 187 | - set_request('_etape', $etape); |
|
| 188 | - $valeurs['_etape'] = $etape; |
|
| 181 | + if (!isset($valeurs['_etape'])) { |
|
| 182 | + $form = $args['form']; |
|
| 183 | + $je_suis_poste = $args['je_suis_poste']; |
|
| 184 | + $nb_etapes = $valeurs['_etapes']; |
|
| 185 | + $etape = _request('_etape'); |
|
| 186 | + $etape = min(max($etape, 1), $nb_etapes); |
|
| 187 | + set_request('_etape', $etape); |
|
| 188 | + $valeurs['_etape'] = $etape; |
|
| 189 | 189 | |
| 190 | - // sauver les posts de cette etape pour les avoir a la prochaine etape |
|
| 191 | - $valeurs = cvtmulti_sauver_post($form, $je_suis_poste, $valeurs); |
|
| 192 | - } |
|
| 193 | - return $valeurs; |
|
| 190 | + // sauver les posts de cette etape pour les avoir a la prochaine etape |
|
| 191 | + $valeurs = cvtmulti_sauver_post($form, $je_suis_poste, $valeurs); |
|
| 192 | + } |
|
| 193 | + return $valeurs; |
|
| 194 | 194 | } |
| 195 | 195 | |
| 196 | 196 | |
@@ -202,8 +202,8 @@ discard block |
||
| 202 | 202 | * @return array |
| 203 | 203 | */ |
| 204 | 204 | function cvtmulti_formulaire_verifier($flux) { |
| 205 | - $flux['data'] = cvtmulti_formulaire_verifier_etapes($flux['args'], $flux['data']); |
|
| 206 | - return $flux; |
|
| 205 | + $flux['data'] = cvtmulti_formulaire_verifier_etapes($flux['args'], $flux['data']); |
|
| 206 | + return $flux; |
|
| 207 | 207 | } |
| 208 | 208 | |
| 209 | 209 | /** |
@@ -214,84 +214,84 @@ discard block |
||
| 214 | 214 | * @return array |
| 215 | 215 | */ |
| 216 | 216 | function cvtmulti_formulaire_verifier_etapes($args, $erreurs) { |
| 217 | - #var_dump('Pipe verifier'); |
|
| 217 | + #var_dump('Pipe verifier'); |
|
| 218 | 218 | |
| 219 | - if ($form = $args['form'] |
|
| 220 | - and ($e = cvtmulti_recuperer_post_precedents($form)) !== false |
|
| 221 | - ) { |
|
| 222 | - // recuperer l'etape saisie et le nombre d'etapes total |
|
| 223 | - list($etape, $etapes) = $e; |
|
| 224 | - $etape_demandee = intval(_request('aller_a_etape')); // possibilite de poster un entier dans aller_a_etape |
|
| 219 | + if ($form = $args['form'] |
|
| 220 | + and ($e = cvtmulti_recuperer_post_precedents($form)) !== false |
|
| 221 | + ) { |
|
| 222 | + // recuperer l'etape saisie et le nombre d'etapes total |
|
| 223 | + list($etape, $etapes) = $e; |
|
| 224 | + $etape_demandee = intval(_request('aller_a_etape')); // possibilite de poster un entier dans aller_a_etape |
|
| 225 | 225 | |
| 226 | - $args['etape_saisie'] = $etape; |
|
| 227 | - $args['etapes'] = $etapes; |
|
| 228 | - // lancer les verifs pour chaque etape deja saisie de 1 a $etape |
|
| 229 | - $erreurs_etapes = array(); |
|
| 230 | - $derniere_etape_ok = 0; |
|
| 231 | - $e = 0; |
|
| 232 | - while ($e < max($etape, $etape_demandee -1) and $e < $etapes) { |
|
| 233 | - $e++; |
|
| 234 | - $erreurs_etapes[$e] = array(); |
|
| 235 | - if ($verifier = charger_fonction("verifier_$e", "formulaires/$form/", true)) { |
|
| 236 | - $erreurs_etapes[$e] = call_user_func_array($verifier, $args['args']); |
|
| 237 | - } elseif ($verifier = charger_fonction("verifier_etape", "formulaires/$form/", true)) { |
|
| 238 | - $a = $args['args']; |
|
| 239 | - array_unshift($a, $e); |
|
| 240 | - $erreurs_etapes[$e] = call_user_func_array($verifier, $a); |
|
| 241 | - } |
|
| 242 | - // et on appelle un pipeline dedie aux etapes, plus easy |
|
| 243 | - $args['etape'] = $e; |
|
| 244 | - $args['etape_demandee'] = $etape_demandee; |
|
| 245 | - $erreurs_etapes[$e] = pipeline( |
|
| 246 | - 'formulaire_verifier_etape', |
|
| 247 | - array( |
|
| 248 | - 'args' => $args, |
|
| 249 | - 'data' => $erreurs_etapes[$e] |
|
| 250 | - ) |
|
| 251 | - ); |
|
| 226 | + $args['etape_saisie'] = $etape; |
|
| 227 | + $args['etapes'] = $etapes; |
|
| 228 | + // lancer les verifs pour chaque etape deja saisie de 1 a $etape |
|
| 229 | + $erreurs_etapes = array(); |
|
| 230 | + $derniere_etape_ok = 0; |
|
| 231 | + $e = 0; |
|
| 232 | + while ($e < max($etape, $etape_demandee -1) and $e < $etapes) { |
|
| 233 | + $e++; |
|
| 234 | + $erreurs_etapes[$e] = array(); |
|
| 235 | + if ($verifier = charger_fonction("verifier_$e", "formulaires/$form/", true)) { |
|
| 236 | + $erreurs_etapes[$e] = call_user_func_array($verifier, $args['args']); |
|
| 237 | + } elseif ($verifier = charger_fonction("verifier_etape", "formulaires/$form/", true)) { |
|
| 238 | + $a = $args['args']; |
|
| 239 | + array_unshift($a, $e); |
|
| 240 | + $erreurs_etapes[$e] = call_user_func_array($verifier, $a); |
|
| 241 | + } |
|
| 242 | + // et on appelle un pipeline dedie aux etapes, plus easy |
|
| 243 | + $args['etape'] = $e; |
|
| 244 | + $args['etape_demandee'] = $etape_demandee; |
|
| 245 | + $erreurs_etapes[$e] = pipeline( |
|
| 246 | + 'formulaire_verifier_etape', |
|
| 247 | + array( |
|
| 248 | + 'args' => $args, |
|
| 249 | + 'data' => $erreurs_etapes[$e] |
|
| 250 | + ) |
|
| 251 | + ); |
|
| 252 | 252 | |
| 253 | - if ($derniere_etape_ok == $e - 1 and !count($erreurs_etapes[$e])) { |
|
| 254 | - $derniere_etape_ok = $e; |
|
| 255 | - } |
|
| 256 | - // possibilite de poster dans _retour_etape_x ou aller_a_etape |
|
| 257 | - if (!is_null(_request("_retour_etape_$e"))) { |
|
| 258 | - $etape_demandee = $e; |
|
| 259 | - } |
|
| 260 | - // Il se peut que les verifications ait décidé de faire sauter des étapes |
|
| 261 | - if ($aller_a_etape = intval(_request('aller_a_etape'))) { |
|
| 262 | - $etape_demandee = $aller_a_etape; // possibilite de poster un entier dans aller_a_etape |
|
| 263 | - } |
|
| 264 | - } |
|
| 253 | + if ($derniere_etape_ok == $e - 1 and !count($erreurs_etapes[$e])) { |
|
| 254 | + $derniere_etape_ok = $e; |
|
| 255 | + } |
|
| 256 | + // possibilite de poster dans _retour_etape_x ou aller_a_etape |
|
| 257 | + if (!is_null(_request("_retour_etape_$e"))) { |
|
| 258 | + $etape_demandee = $e; |
|
| 259 | + } |
|
| 260 | + // Il se peut que les verifications ait décidé de faire sauter des étapes |
|
| 261 | + if ($aller_a_etape = intval(_request('aller_a_etape'))) { |
|
| 262 | + $etape_demandee = $aller_a_etape; // possibilite de poster un entier dans aller_a_etape |
|
| 263 | + } |
|
| 264 | + } |
|
| 265 | 265 | |
| 266 | 266 | |
| 267 | - // si la derniere etape OK etait la derniere |
|
| 268 | - // on renvoie le flux inchange et ca declenche traiter |
|
| 269 | - if ($derniere_etape_ok == $etapes |
|
| 270 | - and (!$etape_demandee or $etape_demandee>=$etapes)) { |
|
| 271 | - return $erreurs; |
|
| 272 | - } else { |
|
| 273 | - $etape = $derniere_etape_ok + 1; |
|
| 274 | - if ($etape_demandee > 0 and $etape_demandee < $etape) { |
|
| 275 | - $etape = $etape_demandee; |
|
| 276 | - } |
|
| 277 | - $etape = min($etape, $etapes); |
|
| 278 | - #var_dump("prochaine etape $etape"); |
|
| 279 | - // retourner les erreurs de l'etape ciblee |
|
| 280 | - $erreurs = isset($erreurs_etapes[$etape]) ? $erreurs_etapes[$etape] : array(); |
|
| 281 | - // Ne pas se tromper dans le texte du message d'erreur : la clé '_etapes' n'est pas une erreur ! |
|
| 282 | - if ($erreurs) { |
|
| 283 | - if (!isset($erreurs['message_erreur'])) { |
|
| 284 | - $erreurs['message_erreur'] = singulier_ou_pluriel(count($erreurs), 'avis_1_erreur_saisie', 'avis_nb_erreurs_saisie'); |
|
| 285 | - } |
|
| 286 | - } else { |
|
| 287 | - $erreurs['message_erreur'] = ''; |
|
| 288 | - } |
|
| 289 | - $erreurs['_etapes'] = "etape suivante $etape"; |
|
| 290 | - set_request('_etape', $etape); |
|
| 291 | - } |
|
| 292 | - } |
|
| 267 | + // si la derniere etape OK etait la derniere |
|
| 268 | + // on renvoie le flux inchange et ca declenche traiter |
|
| 269 | + if ($derniere_etape_ok == $etapes |
|
| 270 | + and (!$etape_demandee or $etape_demandee>=$etapes)) { |
|
| 271 | + return $erreurs; |
|
| 272 | + } else { |
|
| 273 | + $etape = $derniere_etape_ok + 1; |
|
| 274 | + if ($etape_demandee > 0 and $etape_demandee < $etape) { |
|
| 275 | + $etape = $etape_demandee; |
|
| 276 | + } |
|
| 277 | + $etape = min($etape, $etapes); |
|
| 278 | + #var_dump("prochaine etape $etape"); |
|
| 279 | + // retourner les erreurs de l'etape ciblee |
|
| 280 | + $erreurs = isset($erreurs_etapes[$etape]) ? $erreurs_etapes[$etape] : array(); |
|
| 281 | + // Ne pas se tromper dans le texte du message d'erreur : la clé '_etapes' n'est pas une erreur ! |
|
| 282 | + if ($erreurs) { |
|
| 283 | + if (!isset($erreurs['message_erreur'])) { |
|
| 284 | + $erreurs['message_erreur'] = singulier_ou_pluriel(count($erreurs), 'avis_1_erreur_saisie', 'avis_nb_erreurs_saisie'); |
|
| 285 | + } |
|
| 286 | + } else { |
|
| 287 | + $erreurs['message_erreur'] = ''; |
|
| 288 | + } |
|
| 289 | + $erreurs['_etapes'] = "etape suivante $etape"; |
|
| 290 | + set_request('_etape', $etape); |
|
| 291 | + } |
|
| 292 | + } |
|
| 293 | 293 | |
| 294 | - return $erreurs; |
|
| 294 | + return $erreurs; |
|
| 295 | 295 | } |
| 296 | 296 | |
| 297 | 297 | /** |
@@ -303,16 +303,16 @@ discard block |
||
| 303 | 303 | * @return array |
| 304 | 304 | */ |
| 305 | 305 | function cvtmulti_styliser($flux) { |
| 306 | - if (strncmp($flux['args']['fond'], 'formulaires/', 12) == 0 |
|
| 307 | - and isset($flux['args']['contexte']['_etapes']) |
|
| 308 | - and isset($flux['args']['contexte']['_etape']) |
|
| 309 | - and ($e = $flux['args']['contexte']['_etape']) > 1 |
|
| 310 | - and $ext = $flux['args']['ext'] |
|
| 311 | - and $f = $flux['data'] |
|
| 312 | - and file_exists($f . "_$e.$ext") |
|
| 313 | - ) { |
|
| 314 | - $flux['data'] = $f . "_$e"; |
|
| 315 | - } |
|
| 306 | + if (strncmp($flux['args']['fond'], 'formulaires/', 12) == 0 |
|
| 307 | + and isset($flux['args']['contexte']['_etapes']) |
|
| 308 | + and isset($flux['args']['contexte']['_etape']) |
|
| 309 | + and ($e = $flux['args']['contexte']['_etape']) > 1 |
|
| 310 | + and $ext = $flux['args']['ext'] |
|
| 311 | + and $f = $flux['data'] |
|
| 312 | + and file_exists($f . "_$e.$ext") |
|
| 313 | + ) { |
|
| 314 | + $flux['data'] = $f . "_$e"; |
|
| 315 | + } |
|
| 316 | 316 | |
| 317 | - return $flux; |
|
| 317 | + return $flux; |
|
| 318 | 318 | } |