function update_action($actionid, $name, $eventsource, $esc_period, $def_shortdata, $def_longdata, $recovery_msg, $r_shortdata, $r_longdata, $evaltype, $status, $conditions, $operations) { if (!is_array($conditions) || count($conditions) == 0) { /* error(S_NO_CONDITIONS_DEFINED); return false; */ } else { if (!check_permission_for_action_conditions($conditions)) { return false; } foreach ($conditions as $condition) { if (!validate_condition($condition['type'], $condition['value'])) { return false; } } } if (!is_array($operations) || count($operations) == 0) { error(S_NO_OPERATIONS_DEFINED); return false; } foreach ($operations as $operation) { if (!validate_operation($operation)) { return false; } } $result = DBexecute('UPDATE actions SET name=' . zbx_dbstr($name) . ',eventsource=' . $eventsource . ',esc_period=' . $esc_period . ',def_shortdata=' . zbx_dbstr($def_shortdata) . ',def_longdata=' . zbx_dbstr($def_longdata) . ',recovery_msg=' . $recovery_msg . ',r_shortdata=' . zbx_dbstr($r_shortdata) . ',r_longdata=' . zbx_dbstr($r_longdata) . ',evaltype=' . $evaltype . ',status=' . $status . ' WHERE actionid=' . $actionid); if ($result) { DBexecute('DELETE FROM conditions WHERE actionid=' . $actionid); $opers = get_operations_by_actionid($actionid); while ($operation = DBFetch($opers)) { DBexecute('DELETE FROM opconditions WHERE operationid=' . $operation['operationid']); } DBexecute('DELETE FROM operations WHERE actionid=' . $actionid); foreach ($operations as $operation) { if (!($result = add_action_operation($actionid, $operation))) { break; } } if ($result) { foreach ($conditions as $condition) { if (!($result = add_action_condition($actionid, $condition))) { break; } } } } return $result; }
/** * add conditions * * @param array $conditions multidimensional array with conditions data * @param array $conditions[0,...]['actionid'] * @param array $conditions[0,...]['conditiontype'] * @param array $conditions[0,...]['value'] * @param array $conditions[0,...]['operator'] * @return boolean */ protected static function addConditions($conditions) { $conditions = zbx_toArray($conditions); $conditions_insert = array(); if (!check_permission_for_action_conditions($conditions)) { self::exception(ZBX_API_ERROR_PERMISSIONS, S_NO_PERMISSIONS); } foreach ($conditions as $cnum => $condition) { if (!validate_condition($condition['conditiontype'], $condition['value'])) { self::exception(ZBX_API_ERROR_PARAMETERS, S_INCORRECT_PARAMETER_USED_FOR_CONDITIONS); } $conditions_insert[] = $condition; } DB::insert('conditions', $conditions_insert); return true; }