From aef82a51d4e5f2aa85d29f882b2c0713545f25f0 Mon Sep 17 00:00:00 2001 From: osmiy Date: Wed, 6 Jun 2007 10:35:31 +0000 Subject: - merged from branches/1.4.1 rev. 4239:4240 (Eugene) [fixed 'count' function for trigger expression] git-svn-id: svn://svn.zabbix.com/trunk@4241 97f52cf1-0a1b-0410-bd0e-c28be96e8082 --- frontends/php/include/triggers.inc.php | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) (limited to 'frontends/php/include') diff --git a/frontends/php/include/triggers.inc.php b/frontends/php/include/triggers.inc.php index 858622f1..7bd3ad4f 100644 --- a/frontends/php/include/triggers.inc.php +++ b/frontends/php/include/triggers.inc.php @@ -181,7 +181,7 @@ $allowed_functions['sum'] = 'ticks'; $allowed_functions['last'] = 'float'; $allowed_functions['diff'] = 'float'; - $allowed_functions['count'] = 'float'; + $allowed_functions['count'] = array('float', ''); $allowed_functions['prev'] = 'float'; $allowed_functions['change'] = 'float'; $allowed_functions['abschange'] = 'float'; @@ -240,18 +240,28 @@ return -1; } - if( 'float' == $allowed_functions[$function] - && (validate_float($parameter)!=0) ) - { - error('['.$parameter.'] is not a float'); - return -1; - } + if( !is_array($allowed_functions[$function]) ) + $allowed_functions[$function] = array($allowed_functions[$function]); + + $parameter = split(',', $parameter, count($allowed_functions[$function])); - if( 'ticks' == $allowed_functions[$function] - && (validate_ticks($parameter)!=0) ) + foreach($allowed_functions[$function] as $pid => $params) { - error('['.$parameter.'] is not a float'); - return -1; + if(!isset($parameter[$pid])) continue; + + if( 'float' == $params + && (validate_float($parameter[$pid])!=0) ) + { + error('['.$parameter[$pid].'] is not a float'); + return -1; + } + + if( 'ticks' == $params + && (validate_ticks($parameter[$pid])!=0) ) + { + error('['.$parameter[$pid].'] is not a float'); + return -1; + } } } # Process macros -- cgit