Valider df89aa89 rédigé par RastaPopoulos's avatar RastaPopoulos Validation de Gitea
Parcourir les fichiers

Au passage dans cette branche, on remet comme avant les tests d'obligation...

Au passage dans cette branche, on remet comme avant les tests d'obligation directement dans saisies_verifier() car sinon ça parcourt deux fois tous les champs + deux fois toutes les recherches de valeurs. Du coup on peut supprimer la fonction qui n'était pas utilisée autrement. On a alors bien la recherche dans l'éventuel  y compris pour l'obligation + on le rajoute aussi pour le afficher_si où ça manquait !
parent c1625bbd
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+32 −49
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -25,7 +25,6 @@ function saisies_verifier($formulaire, $saisies_masquees_empty_string = true, $e
	include_spip('inc/verifier');
	$verif_fonction = charger_fonction('verifier', 'inc', true);


	// Lister les saisies par étapes, si besoin
	if (is_numeric($etape)) {
		$saisies_par_etapes = saisies_lister_par_etapes($formulaire);
@@ -35,7 +34,7 @@ function saisies_verifier($formulaire, $saisies_masquees_empty_string = true, $e

	// Enlever les afficher_si non vérifié, si besoin
	if ($saisies_masquees_empty_string) {
		 $saisies_par_etapes_apres_verification_afficher_si = saisies_verifier_afficher_si($saisies_par_etapes);
		 $saisies_par_etapes_apres_verification_afficher_si = saisies_verifier_afficher_si($saisies_par_etapes, $valeurs);
	} else {
		 $saisies_par_etapes_apres_verification_afficher_si = $saisies_par_etapes;
	}
@@ -50,26 +49,48 @@ function saisies_verifier($formulaire, $saisies_masquees_empty_string = true, $e
	} else {
			$saisies_etape_courante_apres_verification_afficher_si = $saisies_par_etapes_apres_verification_afficher_si;
	}
	
	// On passe à une liste par nom
	$saisies_etape_courante_apres_verification_afficher_si_par_nom = saisies_lister_par_nom($saisies_etape_courante_apres_verification_afficher_si);
	
	// Vérifier si c'est obligatoire
	$erreurs = saisies_verifier_obligatoire($saisies_etape_courante_apres_verification_afficher_si_par_nom);
	$erreurs = array();
	// On parcourt chacune des saisies
	foreach ($saisies_etape_courante_apres_verification_afficher_si_par_nom as $saisie) {
		$champ = $saisie['options']['nom'];
		if (isset($saisie['verifier']) and $saisie['verifier']) {
			$verifier = $saisie['verifier'];
		} else {
			$verifier = false;
		$valeur = saisies_get_valeur_saisie($saisie, $valeurs);
		$obligatoire = isset($saisie['options']['obligatoire']) ? $saisie['options']['obligatoire'] : '';
		$file = saisies_saisie_est_fichier($saisie);
		
		// On commence par vérifier l'obligation, seulement si demandé
		if (
			$obligatoire
			and $obligatoire != 'non'
			and (
				($file and $valeur==null)
				or (!$file and (
					is_null($valeur)
					or (is_string($valeur) and trim($valeur) == '')
					or (is_array($valeur) and count($valeur) == 0)
				))
			)
		) {
			$erreurs[$champ] =
				(isset($saisie['options']['erreur_obligatoire']) and $saisie['options']['erreur_obligatoire'])
				? _T_ou_typo($saisie['options']['erreur_obligatoire'])
				: _T('info_obligatoire');
		}
		// On continue seulement si ya pas d'erreur d'obligation et qu'il y a une demande de verif
		if ((!isset($erreurs[$champ]) or !$erreurs[$champ]) and is_array($verifier) and $verif_fonction) {
		
		// On continue seulement si ya pas déjà une erreur d'obligation et qu'il y a une demande de verif
		$verifier = $saisie['verifier'] ?? false;
		if ((!isset($erreurs[$champ]) or !$erreurs[$champ]) and is_array($verifier) and $verifier and $verif_fonction) {
			// Si on fait une vérification de type fichiers, il n'y a pas vraiment de normalisation, mais un retour d'erreur fichiers par fichiers
			if ($verifier['type'] == 'fichiers') {
				$normaliser = array();
			} else {
				$normaliser = null;
			}
			$valeur = saisies_get_valeur_saisie($saisie, $valeurs);
			$options = isset($verifier['options']) ? $verifier['options'] : array();
			$options = $verifier['options'] ?? array();
			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
@@ -113,44 +134,6 @@ function saisies_verifier($formulaire, $saisies_masquees_empty_string = true, $e
	return $erreurs;
}

/**
 * Vérifier que les saisies obligatoires (après filtrage de celles masquées par afficher_si) sont bien remplies.
 * @param array $saisies_par_nom
 * @return array erreurs
**/
function saisies_verifier_obligatoire($saisies_par_nom) {
	unset($saisies_par_nom['options']);
	$erreurs = array();
	foreach ($saisies_par_nom as $saisie) {
		$champ = $saisie['options']['nom'];
		$valeur = saisies_get_valeur_saisie($saisie);
		$obligatoire = isset($saisie['options']['obligatoire']) ? $saisie['options']['obligatoire'] : '';
		$file = saisies_saisie_est_fichier($saisie);
		if (
			$obligatoire
			and $obligatoire != 'non'
			and (
				($file and $valeur==null)
				or (!$file and (
					is_null($valeur)
					or (is_string($valeur) and trim($valeur) == '')
					or (is_array($valeur) and count($valeur) == 0)
				))
			)
		) {
			$erreurs[$champ] =
				(isset($saisie['options']['erreur_obligatoire']) and $saisie['options']['erreur_obligatoire'])
				? _T_ou_typo($saisie['options']['erreur_obligatoire'])
				: _T('info_obligatoire');
		}
		if (isset($saisie['saisies'])) {
			$erreurs = array_merge($erreurs, saisies_verifier_obligatoire($saisie['saisies']));
		}
	}
	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.