Valider 380cb0db rédigé par Maïeul's avatar Maïeul
Parcourir les fichiers

Ticket #89, pb 1, étape c : dans `saisies_verifier()`, il faut passer

toutes les saisies, de toutes les étapes, pour que
saisies_verifier_afficher_si sache sur la base de quoi faire ses tests.

On modifie la signature
1. `$formulaire` inchangé
2. `$saisies_empty_string` inchangé
3. `&$erreurs_fichiers` remplacé par `$etape`. On se permet de ne plus
supporter cette variable et de changer la signature car il y avait deux
uses cases sur tout git.spip.net
  a. Formidable, mais ce n'est plus le cas depuis un bout de temps, et
  visiblement on s'en porte pas plus mal
  b. Les demo dans CVT-upload, et le seuls usage c'est de nettoyer
  `$_FILES` des fichiers en erreur au sens de ne repondant pas à des
  critères dans `verifier_fichier()`. Pas franchement très utile (et au
  pire on se débrouillera autrement si le besoin se fait sentir, genre
  un setter/getter).
parent 332f3692
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+19 −18
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -15,22 +15,34 @@ if (!defined('_ECRIRE_INC_VERSION')) {
/**
 * Vérifier tout un formulaire tel que décrit avec les Saisies
 *
 * @param array $formulaire Le formulaire à vérifier, c'est à dire un tableau de saisies, avec éventuellement une clé options
 * @param array $formulaire Le formulaire à vérifier, c'est à dire un tableau de saisies, avec éventuellement une clé options, comprenant tout les étapes
 * @param bool $saisies_empty_string Si TRUE, les saisies masquées selon afficher_si ne seront pas verifiées, leur valeur étant forcée a `''`. Cette valeur est transmise à traiter (via set_request).
 * @param array &$erreurs_fichiers pour les saisies de type fichiers, un tableau qui va stocker champs par champs, puis fichier par fichier, les erreurs de chaque fichier, pour pouvoir ensuite éventuellement supprimer les fichiers erronées de $_FILES
 * @param $etape l'étape courante à vérifier
 * @return array Retourne un tableau d'erreurs
 */
function saisies_verifier($formulaire, $saisies_masquees_empty_string = true, &$erreurs_fichiers = array()) {
function saisies_verifier($formulaire, $saisies_masquees_empty_string = true, $etape = null) {
	include_spip('inc/verifier');
	$verif_fonction = charger_fonction('verifier', 'inc', true);

	if ($saisies_masquees_empty_string) {
		$saisies_par_nom = saisies_lister_par_nom(saisies_verifier_afficher_si($formulaire));
		$erreurs = saisies_verifier_obligatoire($saisies_par_nom);
		$saisies_toutes_etapes = saisies_verifier_afficher_si($formulaire);
	} else {
		$saisies_par_nom = saisies_lister_par_nom($formulaire);
		$erreurs = saisies_verifier_obligatoire($saisies_par_nom);
		$saisies_toutes_etapes = $formulaires;
	}
	if (is_numeric($etape)) {
		$saisies_par_etapes = saisies_lister_par_etapes($saisies_toutes_etapes);
		if (isset($saisies_par_etapes[$etape])) {
			$saisies_par_nom = saisies_lister_par_nom($saisies_par_etapes[$etape]['saisies']);
		} else {//Sécurité si on n'a pas l'étape courante...
			$saisies_par_nom = saisies_lister_par_nom($saisies_toutes_etapes);
		}
	} else {
		$saisies_par_nom = saisies_lister_par_nom($saisies_toutes_etapes);
	}

	// Vérifier si c'est obligatoire
	$erreurs = saisies_verifier_obligatoire($saisies_par_nom);

	foreach ($saisies_par_nom as $saisie) {
		$champ = $saisie['options']['nom'];
		if (isset($saisie['verifier']) and $saisie['verifier']) {
@@ -51,16 +63,6 @@ function saisies_verifier($formulaire, $saisies_masquees_empty_string = true, &$
			if ($erreur_eventuelle = $verif_fonction($valeur, $verifier['type'], $options, $normaliser)) {
				$erreurs[$champ] = $erreur_eventuelle;
			// Si le champ n'est pas valide par rapport au test demandé, on ajoute l'erreur

				if ($verifier['type'] == 'fichiers') { // Pour les vérification/saisies de type fichiers, ajouter les erreurs détaillées par fichiers dans le tableau des erreurs détaillées par fichier
					$erreurs_fichiers[$champ] = $normaliser;
					if (isset($saisies[$champ]['options']['obligatoire'])) {
						$erreurs[$champ].= "<br />"._T('saisies:fichier_erreur_explication_renvoi_pas_alternative');
					} else {
						$erreurs[$champ].= "<br />"._T('saisies:fichier_erreur_explication_renvoi_alternative');
					}
				}

			}
			// 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') {
@@ -82,7 +84,6 @@ function saisies_verifier($formulaire, $saisies_masquees_empty_string = true, &$
			'args'=>array(
				'formulaire' => $formulaire,
				'saisies' => $saisies_par_nom,
				'erreurs_fichiers' => $erreurs_fichiers,
			),
			'data' => $erreurs
		)
+4 −6
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -289,14 +289,12 @@ function saisies_formulaire_verifier($flux) {
 *     iste des erreurs
 */
function saisies_formulaire_verifier_etape($flux) {
	// Il faut que la fonction existe et qu'elle retourne bien un tableau
	include_spip('inc/saisies');
	$saisies = saisies_chercher_formulaire($flux['args']['form'], $flux['args']['args'], true);
	if ($saisies and $etapes = saisies_lister_par_etapes($saisies)) {
		// On récupère les sous-saisies de cette étape précise
		$saisies_etape = $etapes[$flux['args']['etape']]['saisies'];
	if ($saisies) {
		//A quelle étape est-on ?
		$etape = $flux['args']['etape'];

		$erreurs = saisies_verifier($saisies_etape);
		$erreurs = saisies_verifier($saisies, true, $etape);

		$flux['data'] = array_merge($erreurs, $flux['data']);
	}