} DBstart(); $result = true; if (!zbx_empty($_REQUEST['new_application'])) { $new_appid = API::Application()->create(array('name' => $_REQUEST['new_application'], 'hostid' => $_REQUEST['form_hostid'])); if ($new_appid) { $new_appid = reset($new_appid['applicationids']); $applications[$new_appid] = $new_appid; } else { $result = false; } } if ($result) { $item = array('name' => get_request('name'), 'description' => get_request('description'), 'key_' => get_request('key'), 'hostid' => get_request('form_hostid'), 'interfaceid' => get_request('interfaceid', 0), 'delay' => get_request('delay'), 'history' => get_request('history'), 'status' => get_request('status'), 'type' => get_request('type'), 'snmp_community' => get_request('snmp_community'), 'snmp_oid' => get_request('snmp_oid'), 'value_type' => get_request('value_type'), 'trapper_hosts' => get_request('trapper_hosts'), 'port' => get_request('port'), 'units' => get_request('units'), 'multiplier' => get_request('multiplier', 0), 'delta' => get_request('delta'), 'snmpv3_securityname' => get_request('snmpv3_securityname'), 'snmpv3_securitylevel' => get_request('snmpv3_securitylevel'), 'snmpv3_authpassphrase' => get_request('snmpv3_authpassphrase'), 'snmpv3_privpassphrase' => get_request('snmpv3_privpassphrase'), 'formula' => get_request('formula'), 'trends' => get_request('trends'), 'logtimefmt' => get_request('logtimefmt'), 'valuemapid' => get_request('valuemapid'), 'delay_flex' => $db_delay_flex, 'authtype' => get_request('authtype'), 'username' => get_request('username'), 'password' => get_request('password'), 'publickey' => get_request('publickey'), 'privatekey' => get_request('privatekey'), 'params' => get_request('params'), 'ipmi_sensor' => get_request('ipmi_sensor'), 'data_type' => get_request('data_type'), 'applications' => $applications, 'inventory_link' => get_request('inventory_link')); if (isset($_REQUEST['itemid'])) { $db_item = get_item_by_itemid_limited($_REQUEST['itemid']); $db_item['applications'] = get_applications_by_itemid($_REQUEST['itemid']); foreach ($item as $field => $value) { if ($item[$field] == $db_item[$field]) { unset($item[$field]); } } $item['itemid'] = $_REQUEST['itemid']; $result = API::Item()->update($item); } else { $result = API::Item()->create($item); } } $result = DBend($result); if (isset($_REQUEST['itemid'])) { show_messages($result, _('Item updated'), _('Cannot update item'));
$_REQUEST['form'] = 'clone'; } elseif (isset($_REQUEST['save'])) { $delay_flex = get_request('delay_flex', array()); $db_delay_flex = ''; foreach ($delay_flex as $val) { $db_delay_flex .= $val['delay'] . '/' . $val['period'] . ';'; } $db_delay_flex = trim($db_delay_flex, ';'); $ifm = get_request('filter_macro'); $ifv = get_request('filter_value'); $filter = isset($ifm, $ifv) ? $ifm . ':' . $ifv : ''; $item = array('interfaceid' => get_request('interfaceid'), 'name' => get_request('name'), 'description' => get_request('description'), 'key_' => get_request('key'), 'hostid' => get_request('hostid'), 'delay' => get_request('delay'), 'status' => get_request('status', ITEM_STATUS_DISABLED), 'type' => get_request('type'), 'snmp_community' => get_request('snmp_community'), 'snmp_oid' => get_request('snmp_oid'), 'trapper_hosts' => get_request('trapper_hosts'), 'port' => get_request('port'), 'snmpv3_contextname' => get_request('snmpv3_contextname'), 'snmpv3_securityname' => get_request('snmpv3_securityname'), 'snmpv3_securitylevel' => get_request('snmpv3_securitylevel'), 'snmpv3_authprotocol' => get_request('snmpv3_authprotocol'), 'snmpv3_authpassphrase' => get_request('snmpv3_authpassphrase'), 'snmpv3_privprotocol' => get_request('snmpv3_privprotocol'), 'snmpv3_privpassphrase' => get_request('snmpv3_privpassphrase'), 'delay_flex' => $db_delay_flex, 'authtype' => get_request('authtype'), 'username' => get_request('username'), 'password' => get_request('password'), 'publickey' => get_request('publickey'), 'privatekey' => get_request('privatekey'), 'params' => get_request('params'), 'ipmi_sensor' => get_request('ipmi_sensor'), 'lifetime' => get_request('lifetime'), 'filter' => $filter); if (hasRequest('itemid')) { $itemId = getRequest('itemid'); DBstart(); $dbItem = get_item_by_itemid_limited($itemId); // unset snmpv3 fields if ($item['snmpv3_securitylevel'] == ITEM_SNMPV3_SECURITYLEVEL_NOAUTHNOPRIV) { $item['snmpv3_authprotocol'] = ITEM_AUTHPROTOCOL_MD5; $item['snmpv3_privprotocol'] = ITEM_PRIVPROTOCOL_DES; } elseif ($item['snmpv3_securitylevel'] == ITEM_SNMPV3_SECURITYLEVEL_AUTHNOPRIV) { $item['snmpv3_privprotocol'] = ITEM_PRIVPROTOCOL_DES; } $item = CArrayHelper::unsetEqualValues($item, $dbItem); $item['itemid'] = $itemId; $result = API::DiscoveryRule()->update($item); $result = DBend($result); show_messages($result, _('Discovery rule updated'), _('Cannot update discovery rule')); } else { $result = API::DiscoveryRule()->create(array($item)); show_messages($result, _('Discovery rule created'), _('Cannot add discovery rule'));
function copy_item_to_host($itemid, $hostid, $copy_mode = false) { $db_tmp_item = get_item_by_itemid_limited($itemid); $db_tmp_item['hostid'] = $hostid; $db_tmp_item['applications'] = get_same_applications_for_host(get_applications_by_itemid($db_tmp_item['itemid']), $hostid); $db_tmp_item['templateid'] = $copy_mode ? 0 : $db_tmp_item['itemid']; $result = add_item($db_tmp_item); return $result; }