<term>regex</term>
<listitem>
<simpara>Expression(s) régulière(s) que doit respecter le mot de passe. Ce
- paramètre peut être une expression régulière ou un tableau d'expressions
- régulières.</simpara>
+ paramètre peut être une expression régulière au format
+ <ulink url='http://php.net/pcre.pattern'>PCRE</ulink> ou un tableau
+ d'expressions régulières.</simpara>
</listitem>
</varlistentry>
+<varlistentry>
+ <term>minValidRegex</term>
+ <listitem>
+ <simpara>Le nombre minimum d'expression régulière qui doivent être validées
+ pour que le mot de passe soit considéré comme correct. Ce paramètre est
+ optionnel, par défaut, toutes les expressions régulières doivent être
+ validées.</simpara>
+ </listitem>
+</varlistentry>
+
+
</variablelist>
</sect4>
* - 'prohibitedValues' : Un tableau de valeurs interdites
* - 'regex' : une ou plusieurs expressions régulières
* devant matche
+ * - 'minValidRegex' : le nombre minimun d'expressions
+ * régulières à valider
* @param object $formElement L'objet formElement attaché
*
* @return boolean true si la valeur est valide, false sinon
if (!is_array($options['params']['regex'])) {
$options['params']['regex']=array($options['params']['regex']);
}
+ if (isset($options['params']['minValidRegex'])) {
+ $options['params']['minValidRegex']=(int)$options['params']['minValidRegex'];
+ if ($options['params']['minValidRegex']==0 || $options['params']['minValidRegex']>count($options['params']['regex'])) {
+ $options['params']['minValidRegex']=count($options['params']['regex']);
+ }
+ }
+ else {
+ $options['params']['minValidRegex']=count($options['params']['regex']);
+ }
+ $valid=0;
foreach($options['params']['regex'] as $regex) {
- if (!ereg($regex,$value))
- return;
+ if ($regex[0]!='/') {
+ LSerror :: addErrorCode('LSformRule_password_01');
+ continue;
+ }
+ if (preg_match($regex,$value))
+ $valid++;
}
+ if ($valid<$options['params']['minValidRegex'])
+ return;
}
-
- if(is_array($options['params']['prohibitedValues'])) {
- if (in_array($value,$options['params']['prohibitedValues']))
+
+ if(isset($options['params']['prohibitedValues']) && is_array($options['params']['prohibitedValues'])) {
+ if (in_array($value,$options['params']['prohibitedValues']))
return;
}
}
+
+/*
+ * Error Codes
+ */
+LSerror :: defineError('LSformRule_password_01',
+_("LSformRule_password : Invalid regex configured : %{regex}. You must use PCRE (begining by '/' caracter).")
+);
?>