Browse Source

Une verification verifier_valeur_acceptable

pull/182/head
Maïeul 6 months ago
parent
commit
d21d8497c4
  1. 20
      inc/saisies_verifier.php
  2. 4
      lang/saisies_fr.php
  3. 46
      verifier/valeurs_acceptables.php
  4. 2
      verifier/valeurs_acceptables.yaml

20
inc/saisies_verifier.php

@ -162,30 +162,20 @@ function saisies_verifier($formulaire, $saisies_masquees_empty_string = true, $e
* @return array table des erreurs modifiés
**/
function saisies_verifier_valeurs_acceptables($saisies, $erreurs) {
$verifier = charger_fonction('valeurs_acceptables', 'verifier');
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;
}
$valeur = saisies_request($saisie);
//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);
if ($erreur = $verifier($valeur, ['_saisie' => $description])) {
$erreurs[$saisie] = $erreur;
}
}
return $erreurs;

4
lang/saisies_fr.php

@ -283,8 +283,8 @@ Vous trouverez la <a href="https://contrib.spip.net/5080" target="_blank" rel="n
'verifier_saisies_option_data_cles_doubles' => 'Au moins une clé est définie en double.',
'verifier_saisies_option_data_sous_groupes_interdits' => 'Syntaxe incorrecte. Les sous-groupes ne sont pas autorisés.',
'verifier_saisies_option_data_verifier_cles_erreurs' => 'Syntaxe incorrecte. Certaines clés ne répondent pas aux critères.',
'verifier_valeurs_acceptables_explication' => 'Vérifier que la valeur postée se trouve parmi celles autorisées lors de la définition des champs. Ne pas utiliser cette option si vous remplissez dynamiquement des champs dans vos squelettes ou les remplissez grâce à javascript.',
'verifier_valeurs_acceptables_label' => 'Vérifier les valeurs acceptables',
'verifier_valeurs_acceptables_explication' => 'Vérifier que la valeur postée se trouve parmi celles autorisées lors de la définition du/des champs. Ne pas utiliser cette option si vous remplissez dynamiquement le(s) champss dans vos squelettes ou les remplissez grâce à javascript.',
'verifier_valeurs_acceptables_label' => 'Vérifier les valeurs possibles',
'vue_sans_reponse' => '<i>Sans réponse</i>',
// Z

46
verifier/valeurs_acceptables.php

@ -0,0 +1,46 @@
<?php
/**
* API de vérification : vérification de la validité des valeurs acceptanles
*
* @plugin saisies
*/
// Sécurité
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
*
*
*
*
* @param string $valeur
* La valeur à vérifier.
* @return string
* Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur.
*/
function verifier_valeurs_acceptables_dist($valeur, $options) {
include_spip('inc/saisies_verifier');
$description = $options['_saisie'] ?? [];
if (!$description) {
return '';
}
$erreur = '';
$type = $description['saisie'] ?? '';
$saisie = $description['nom'] ?? '';
if (include_spip("saisies/$type")) {
$f = $type.'_valeurs_acceptables';
if (function_exists($f)) {
if (!$f($valeur, $description)) {
$erreur = _T('saisies:erreur_valeur_inacceptable');
spip_log("Tentative de poste de valeur innaceptable pour $saisie de type $type. Valeur postée : $valeur", "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 $erreur;
}

2
verifier/valeurs_acceptables.yaml

@ -0,0 +1,2 @@
titre: '<:saisies:verifier_valeurs_acceptables_label:>'
description: '<:saisies:verifier_valeurs_acceptables_explication:>'
Loading…
Cancel
Save