Browse Source

Pb #175

API :
  - pouvoir avoir plusieurs verif (tableau) ;
  - on annonce toutes les erreurs de toutes les vérif dans l'ordre, séparées par un retour chariot;
  - possibilité de garder l'ancien appel en donnant une seule verification ;
pull/182/head
Maïeul 7 months ago
parent
commit
2f3fc8155e
  1. 10
      formulaires/saisies_cvt.php
  2. 52
      inc/saisies_verifier.php

10
formulaires/saisies_cvt.php

@ -92,9 +92,15 @@ function formulaires_saisies_cvt_saisies_dist() {
'label' => 'Un message',
'conteneur_class' => 'pleine_largeur',
),
'verifier' => array(
'type' => 'taille',
'options' => array('min' => 10)
array(
'type' => 'taille',
'options' => array('min' => 10)
),
array(
'type' => 'slug',
),
)
),
),

52
inc/saisies_verifier.php

@ -81,27 +81,41 @@ function saisies_verifier($formulaire, $saisies_masquees_empty_string = true, $e
: _T('info_obligatoire');
}
// 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) {
// 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 ($verif_fonction) {
if ($verifier['type'] == 'fichiers') {
$normaliser = array();
// S'il y a une erreur d'obligation, on passe à la saisie suivante
if (isset($erreurs[$champ]) and $erreurs[$champ]) {
continue;
}
$verifier_tous = $saisie['verifier'] ?? [];
// Compatibilité historique avec les vieux appels
if (isset($verifier_tous['type'])) {
$verifier_tous = [$verifier_tous];
}
//Boucle sur toutes les verif
foreach ($verifier_tous as $verifier) {
if (is_array($verifier) and $verifier) {//Sécurité d'appel
// 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 ($verif_fonction) {
if ($verifier['type'] == 'fichiers') {
$normaliser = array();
} else {
$normaliser = null;
}
$options = $verifier['options'] ?? array();
if ($erreur_eventuelle = $verif_fonction($valeur, $verifier['type'], $options, $normaliser)) {
if (isset($erreurs[$champ])) {
$erreurs[$champ] .= '<br />'.$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 {
$normaliser = null;
spip_log('Demande de vérification, mais fonction inc_verifier inexistante (probablement plugin verifier manquant)', 'saisies'._LOG_ERREUR);
}
$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
}
// 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);
}
}
}

Loading…
Cancel
Save