Merge pull request #4024 from Icinga/fix/numbers-in-filter-conditions-3974
Numbers in filter conditions not interpreted correctly
This commit is contained in:
commit
cf36b1f848
|
@ -77,6 +77,11 @@ class FilterQueryString
|
||||||
}
|
}
|
||||||
$var = substr($key, $pos + 1);
|
$var = substr($key, $pos + 1);
|
||||||
$key = substr($key, 0, $pos);
|
$key = substr($key, 0, $pos);
|
||||||
|
|
||||||
|
if (ctype_digit($var)) {
|
||||||
|
$var = (float) $var;
|
||||||
|
}
|
||||||
|
|
||||||
return Filter::expression($key, $sign, $var);
|
return Filter::expression($key, $sign, $var);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,20 +94,26 @@ class FilterQueryString
|
||||||
return Filter::expression($key, '=', true);
|
return Filter::expression($key, '=', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$toFloat = false;
|
||||||
if ($sign === '=') {
|
if ($sign === '=') {
|
||||||
$last = substr($key, -1);
|
$last = substr($key, -1);
|
||||||
if ($last === '>' || $last === '<') {
|
if ($last === '>' || $last === '<') {
|
||||||
$sign = $last . $sign;
|
$sign = $last . $sign;
|
||||||
$key = substr($key, 0, -1);
|
$key = substr($key, 0, -1);
|
||||||
|
$toFloat = true;
|
||||||
}
|
}
|
||||||
// TODO: Same as above for unescaped <> - do we really need this?
|
// TODO: Same as above for unescaped <> - do we really need this?
|
||||||
} elseif ($sign === '>' || $sign === '<' || $sign === '!') {
|
} elseif ($sign === '>' || $sign === '<' || $sign === '!') {
|
||||||
|
$toFloat = $sign === '>' || $sign === '<';
|
||||||
if ($this->nextChar() === '=') {
|
if ($this->nextChar() === '=') {
|
||||||
$sign .= $this->readChar();
|
$sign .= $this->readChar();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$var = $this->readNextValue();
|
$var = $this->readNextValue();
|
||||||
|
if ($toFloat && ctype_digit($var)) {
|
||||||
|
$var = (float) $var;
|
||||||
|
}
|
||||||
|
|
||||||
return Filter::expression($key, $sign, $var);
|
return Filter::expression($key, $sign, $var);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue