*/ class LSformRule_filesize extends LSformRule { // CLI parameters autocompleters protected static $cli_params_autocompleters = array( 'minSize' => array('LScli', 'autocomplete_int'), 'maxSize' => array('LScli', 'autocomplete_int'), ); /** * Validate form element value * * @param mixed $value The value to validate * @param array $options Validation options: * - Max size (in byte) : $options['params']['maxSize'] * - Min size (in byte) : $options['params']['minSize'] * @param LSformElement &$formElement The related LSformElement object * * @return boolean True if value is valid, False otherwise */ public static function validate($value, $options, &$formElement) { // According to PHP doc, strlen() returns the number of bytes rather // than the number of characters in a string. // See: https://www.php.net/manual/en/function.strlen.php $size = strlen($value); $maxSize = LSconfig :: get('params.maxSize', null, 'int', $options); if (is_int($maxSize) && $size > $maxSize) throw new LSformRuleException(_('File is too big.')); $minSize = LSconfig :: get('params.minSize', null, 'int', $options); if (is_int($minSize) && $size < $minSize) throw new LSformRuleException(_('File is too light.')); return true; } }