diff --git a/doc/conf/LSattribute/check_data/inarray.docbook b/doc/conf/LSattribute/check_data/inarray.docbook
index 8e72cbaf..6dd4a6cd 100644
--- a/doc/conf/LSattribute/check_data/inarray.docbook
+++ b/doc/conf/LSattribute/check_data/inarray.docbook
@@ -1,8 +1,8 @@
inarray
Cette règle vérifie que la valeur saisie fait partie d'une liste de valeurs
- autorisées.
-
+ autorisées (ou interdites).
+
Paramêtres de configuration
@@ -13,6 +13,15 @@
+
+ reverse
+
+ Booléen permettant d'inverser la logique de validation : si reverse
+ est vrai, la valeur testée sera acceptée si elle ne fait pas partie des valeurs possibles
+ (Paramètre facultatif, par défaut : faux).
+
+
+
diff --git a/src/includes/class/class.LSformRule_inarray.php b/src/includes/class/class.LSformRule_inarray.php
index 98294e30..a5cad5d6 100644
--- a/src/includes/class/class.LSformRule_inarray.php
+++ b/src/includes/class/class.LSformRule_inarray.php
@@ -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
*/
@@ -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;
}
}