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"> <sect4 id="config-LSattribute-check-data-inarray">
<title>inarray</title> <title>inarray</title>
<para>Cette règle vérifie que la valeur saisie fait partie d'une liste de valeurs <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> <variablelist>
<title>Paramêtres de configuration</title> <title>Paramêtres de configuration</title>
@ -13,6 +13,15 @@
</listitem> </listitem>
</varlistentry> </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> </variablelist>
</sect4> </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> * @author Benjamin Renard <brenard@easter-eggs.com>
*/ */
@ -30,27 +30,31 @@ class LSformRule_inarray extends LSformRule {
// CLI parameters autocompleters // CLI parameters autocompleters
protected static $cli_params_autocompleters = array( protected static $cli_params_autocompleters = array(
'possible_values' => null, '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 string $values The value to check
* @param array $options Options de validation : * @param array $options Check options:
* - Regex : $option['params']['possible_values'] ou $option * - possible_values: the list of valid values (required)
* @param object $formElement L'objet formElement attaché * - 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) { public static function validate($value, $options=array(), &$formElement) {
$possible_values = LSconfig :: get('params.possible_values', null, null, $options); $possible_values = LSconfig :: get('params.possible_values', null, null, $options);
$reverse = LSconfig :: get('params.reverse', false, 'bool', $options);
if (!is_array($possible_values)) { if (!is_array($possible_values)) {
LSerror :: addErrorCode('LSformRule_inarray_01'); LSerror :: addErrorCode('LSformRule_inarray_01');
return; return;
} }
if (!in_array($value, $possible_values)) if (!in_array($value, $possible_values))
return false; return $reverse;
return true; return !$reverse;
} }
} }