1) { $this->error($this->messageAndWithSeveralTriggers); return false; } } // validate only custom expressions if ($object['evaltype'] != CONDITION_EVAL_TYPE_EXPRESSION) { return true; } // check if the formula is valid $parser = new CConditionFormula(); if (!$parser->parse($object['formula'])) { $this->error($this->messageInvalidFormula, $object['formula'], $parser->error); return false; } // check that all conditions used in the formula are defined in the "conditions" array $conditions = zbx_toHash($object['conditions'], 'formulaid'); $constants = array_unique(zbx_objectValues($parser->constants, 'value')); foreach ($constants as $constant) { if (!array_key_exists($constant, $conditions)) { $this->error($this->messageMissingCondition, $constant, $object['formula']); return false; } unset($conditions[$constant]); } // check that the "conditions" array has no unused conditions if ($conditions) { $condition = reset($conditions); $this->error($this->messageUnusedCondition, $condition['formulaid'], $object['formula']); return false; } return true; } }