Page MenuHomeIn-Portal Phabricator

D243.id1065.diff
No OneTemporary

File Metadata

Created
Wed, Feb 26, 8:58 AM

D243.id1065.diff

Index: core/kernel/utility/validator.php
===================================================================
--- core/kernel/utility/validator.php
+++ core/kernel/utility/validator.php
@@ -202,7 +202,10 @@
if ( $params['type'] == 'string' || $res ) {
$f = 'is_' . $params['type'];
- settype($val, $params['type']);
+
+ if ( is_scalar($val) ) {
+ settype($val, $params['type']);
+ }
$res = $f($val) && ($val == $this->dataSource->GetDBField($field));
}
@@ -228,10 +231,15 @@
{
$res = true;
$val = $this->dataSource->GetDBField($field);
+ $value_length = is_scalar($val) ? mb_strlen($val) : 0;
+
+ if ( !$value_length ) {
+ return true;
+ }
- if ( isset($params['type']) && preg_match("#int|integer|double|float|real#", $params['type']) && strlen($val) > 0 ) {
- // validate number
- if ( isset($params['max_value_inc'])) {
+ if ( isset($params['type']) && preg_match('#int|integer|double|float|real#', $params['type']) ) {
+ // Validate number.
+ if ( isset($params['max_value_inc']) ) {
$res = $res && $val <= $params['max_value_inc'];
$max_val = $params['max_value_inc'].' (inclusive)';
}
@@ -250,43 +258,44 @@
$res = $res && $val > $params['min_value_exc'];
$min_val = $params['min_value_exc'].' (exclusive)';
}
- }
- if ( !$res ) {
- if ( !isset($min_val) ) $min_val = '-&infin;';
- if ( !isset($max_val) ) $max_val = '&infin;';
+ if ( !$res ) {
+ if ( !isset($min_val) ) {
+ $min_val = '-&infin;';
+ }
- $this->SetError($field, 'value_out_of_range', null, array(
- 'min_value' => $min_val,
- 'max_value' => $max_val
- ));
+ if ( !isset($max_val) ) {
+ $max_val = '&infin;';
+ }
- return false;
+ $this->SetError($field, 'value_out_of_range', null, array(
+ 'min_value' => $min_val,
+ 'max_value' => $max_val,
+ ));
+ }
+
+ return $res;
}
- if ( strlen($val) > 0 ) {
- // Validate string.
- if ( isset($params['max_len']) ) {
- $res = $res && mb_strlen($val) <= $params['max_len'];
- }
+ // Validate string.
+ if ( isset($params['max_len']) ) {
+ $res = $res && $value_length <= $params['max_len'];
+ }
- if ( isset($params['min_len']) ) {
- $res = $res && mb_strlen($val) >= $params['min_len'];
- }
+ if ( isset($params['min_len']) ) {
+ $res = $res && $value_length >= $params['min_len'];
}
if ( !$res ) {
$error_params = array(
'min_length' => (int)getArrayValue($params, 'min_len'),
'max_length' => (int)getArrayValue($params, 'max_len'),
- 'value' => mb_strlen($val)
+ 'value' => $value_length,
);
$this->SetError($field, 'length_out_of_range', null, $error_params);
-
- return false;
}
- return true;
+ return $res;
}
/**

Event Timeline