'.$erreur_eventuelle; } else { $erreurs[$champ] = $erreur_eventuelle; } // Si le champ n'est pas valide par rapport au test demandé, on ajoute l'erreur } // S'il n'y a pas d'erreur et que la variable de normalisation a été remplie, on l'injecte dans le POST elseif (!is_null($normaliser) and $verifier['type'] != 'fichiers') { saisies_set_request($champ, $normaliser, $valeurs); } } else { spip_log('Demande de vérification, mais fonction inc_verifier inexistante (probablement plugin verifier manquant)', 'saisies'._LOG_ERREUR); } } } } // On passe nos résultats à un pipeline $erreurs = pipeline( 'saisies_verifier', array( 'args'=>array( 'formulaire' => $formulaire, 'saisies' => $saisies_etape_courante_apres_verification_afficher_si_par_nom, 'saisies_par_etapes' => $saisies_par_etapes, 'saisies_par_etapes_apres_verification_afficher_si' => $saisies_par_etapes_apres_verification_afficher_si, 'saisies_etape_courante_apres_verification_afficher_si' => $saisies_etape_courante_apres_verification_afficher_si, 'saisies_masquees_empty_string' => $saisies_masquees_empty_string, 'etape' => $etape, 'valeurs' => $valeurs, ), 'data' => $erreurs ) ); //S'il n'y a pas d'erreur, et seulement si on vient de franchir la dernière étape, on vide les afficher_si) if (empty($erreurs) and ($etape === count($saisies_par_etapes) and !_request('aller_a_etape', $valeurs)) or (!$etape)) { saisies_afficher_si_masquees_set_request_empty_string($saisies_par_etapes, $valeurs); } // Vérifier que les valeurs postées sont acceptables, à savoir par exemple que pour un select, ce soit ce qu'on a proposé. On vérifie cela en tout dernier, après le vidage des afficher_si car certainses saisies peuvent avoir des valeurs acceptables qui dépendant des afficher_si (exemple : les saisies calculs). Si jamais on a une valeur innacceptable, c'est que la personne a triché sur le POST en truandant le HTML, donc on s'en fiche si en retour son formulaire d'erreur n'est pas cohérent. if (isset($formulaire['options']['verifier_valeurs_acceptables']) and $formulaire['options']['verifier_valeurs_acceptables'] ) { $erreurs = saisies_verifier_valeurs_acceptables($saisies_etape_courante_apres_verification_afficher_si_par_nom, $erreurs); } return $erreurs; } /** * Vérifier que les valeurs postées sont acceptables, * c'est-à-dire qu'elles ont été proposées lors de la conception de la saisie. * Typiquement pour une saisie radio, vérifier que les gens n'ont pas postée une autre fleur. * @param $saisies array tableau général des saisies, déjà aplati, classé par nom de champ * @param $erreurs array tableau des erreurs * @return array table des erreurs modifiés **/ function saisies_verifier_valeurs_acceptables($saisies, $erreurs) { foreach ($saisies as $saisie => $description) { $type = $description['saisie']; // Pas la peine de vérifier si par ailleurs il y a déjà une erreur if (isset($erreurs[$saisie])) { continue; } //Il n'y a rien à vérifier sur une description / fieldset if (in_array($description['saisie'], array('explication','fieldset'))) { continue; } if (include_spip("saisies/$type")) { $f = $type.'_valeurs_acceptables'; if (function_exists($f)) { $valeur = saisies_request($saisie); if (!$f($valeur, $description)) { $erreurs[$saisie] = _T("saisies:erreur_valeur_inacceptable"); spip_log("Tentative de poste de valeur innaceptable pour $saisie de type $type. Valeur postée : ".print_r(_request($saisie), true), "saisies"._LOG_AVERTISSEMENT); } } else { spip_log("Pas de fonction de vérification pour la saisie $saisie de type $type", "saisies"._LOG_INFO); } } else { spip_log("Pas de fonction de vérification pour la saisie $saisie de type $type", "saisies"._LOG_INFO); } } return $erreurs; }