function parseTriggerExpressions($expressions, $askData = false) { static $scparser, $triggersData; global $triggerExpressionRules; if (!$scparser) { $scparser = new CStringParser($triggerExpressionRules); } if (!is_array($expressions)) { $expressions = array($expressions); } $data = array(); $noErrors = true; foreach ($expressions as $key => $str) { if (!isset($triggersData[$str])) { $tmp_expr = $str; //SDI($tmp_expr); if ($scparser->parse($tmp_expr)) { $triggersData[$str]['expressions'] = $scparser->getElements('expression'); $triggersData[$str]['hosts'] = $scparser->getElements('server'); $triggersData[$str]['keys'] = $scparser->getElements('keyName'); $triggersData[$str]['keysParams'] = $scparser->getElements('keyParams'); $triggersData[$str]['keysFunctions'] = $scparser->getElements('keyFunctionName'); $triggersData[$str]['macros'] = array_merge($scparser->getElements('macro'), $scparser->getElements('macroNum'), $scparser->getElements('customMacro')); $triggersData[$str]['customMacros'] = $scparser->getElements('customMacro'); $triggersData[$str]['allMacros'] = array_merge($triggersData[$str]['expressions'], $triggersData[$str]['macros']); $triggersData[$str]['tree'] = $scparser->getTree(); } else { $triggersData[$str]['errors'] = $scparser->getErrors(); $noErrors = false; } } $data[$str] =& $triggersData[$str]; } return $askData ? $data : $noErrors; }