diff options
Diffstat (limited to 'frontends/php/include/triggers.inc.php')
| -rw-r--r-- | frontends/php/include/triggers.inc.php | 32 |
1 files changed, 21 insertions, 11 deletions
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 |
