LSformRule::inarray: add reverse parameter

This commit is contained in:
Benjamin Renard 2022-02-17 10:38:41 +01:00
parent fe1181b531
commit bbf40090a9
2 changed files with 24 additions and 11 deletions

View file

@ -1,8 +1,8 @@
<sect4 id="config-LSattribute-check-data-inarray">
<title>inarray</title>
<para>Cette règle vérifie que la valeur saisie fait partie d'une liste de valeurs
autorisées.</para>
autorisées (ou interdites).</para>
<variablelist>
<title>Paramêtres de configuration</title>
@ -13,6 +13,15 @@
</listitem>
</varlistentry>
<varlistentry>
<term>reverse</term>
<listitem>
<simpara>Booléen permettant d'inverser la logique de validation : si <literal>reverse</literal>
est vrai, la valeur testée sera acceptée si elle ne fait pas partie des valeurs possibles
(Paramètre facultatif, par défaut : <literal>faux</literal>).</simpara>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -21,7 +21,7 @@
******************************************************************************/
/**
* Règle de validation à partir d'une liste de valeur possible
* LSform check rule from a list of possible values
*
* @author Benjamin Renard <brenard@easter-eggs.com>
*/
@ -30,27 +30,31 @@ class LSformRule_inarray extends LSformRule {
// CLI parameters autocompleters
protected static $cli_params_autocompleters = array(
'possible_values' => null,
'reverse' => array('LScli', 'autocomplete_bool'),
);
/**
* Vérification de la valeur.
* Check the value in configured list
*
* @param string $values Valeur à vérifier
* @param array $options Options de validation :
* - Regex : $option['params']['possible_values'] ou $option
* @param object $formElement L'objet formElement attaché
* @param string $values The value to check
* @param array $options Check options:
* - possible_values: the list of valid values (required)
* - reverse: if true, reverse the logic of the check
* (list values are prohibited, optional, default: False)
* @param object $formElement The linked LSformElement object
*
* @return boolean true si la valeur est valide, false sinon
* @return boolean true if the value is valid, false otherwise
*/
public static function validate($value, $options=array(), &$formElement) {
$possible_values = LSconfig :: get('params.possible_values', null, null, $options);
$reverse = LSconfig :: get('params.reverse', false, 'bool', $options);
if (!is_array($possible_values)) {
LSerror :: addErrorCode('LSformRule_inarray_01');
return;
}
if (!in_array($value, $possible_values))
return false;
return true;
return $reverse;
return !$reverse;
}
}