$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')); } if ($result) { unset($_REQUEST['itemid'], $_REQUEST['form']); clearCookies($result, $_REQUEST['hostid']); } } elseif (str_in_array(getRequest('go'), array('activate', 'disable')) && hasRequest('g_hostdruleid')) { $groupHostDiscoveryRuleId = getRequest('g_hostdruleid'); $enable = getRequest('go') == 'activate';
// unset unchanged values $newItem = CArrayHelper::unsetEqualValues($newItem, $item, ['itemid']); // don't update the filter if it hasn't changed $conditionsChanged = false; if (count($newItem['filter']['conditions']) != count($item['filter']['conditions'])) { $conditionsChanged = true; } else { $conditions = $item['filter']['conditions']; foreach ($newItem['filter']['conditions'] as $i => $condition) { if (CArrayHelper::unsetEqualValues($condition, $conditions[$i])) { $conditionsChanged = true; break; } } } $filter = CArrayHelper::unsetEqualValues($newItem['filter'], $item['filter']); if (!isset($filter['evaltype']) && !isset($filter['formula']) && !$conditionsChanged) { unset($newItem['filter']); } $result = API::DiscoveryRule()->update($newItem); $result = DBend($result); } else { $result = API::DiscoveryRule()->create([$newItem]); } } if (hasRequest('add')) { show_messages($result, _('Discovery rule created'), _('Cannot add discovery rule')); } else { show_messages($result, _('Discovery rule updated'), _('Cannot update discovery rule')); } if ($result) {
$newHostPrototype['hostid'] = getRequest('hostid'); if (!$hostPrototype['templateid']) { // add group prototypes based on existing host groups $groupPrototypesByGroupId = zbx_toHash($hostPrototype['groupLinks'], 'groupid'); unset($groupPrototypesByGroupId[0]); foreach (getRequest('group_links', array()) as $groupId) { if (isset($groupPrototypesByGroupId[$groupId])) { $newHostPrototype['groupLinks'][] = array('groupid' => $groupPrototypesByGroupId[$groupId]['groupid'], 'group_prototypeid' => $groupPrototypesByGroupId[$groupId]['group_prototypeid']); } else { $newHostPrototype['groupLinks'][] = array('groupid' => $groupId); } } } else { unset($newHostPrototype['groupPrototypes'], $newHostPrototype['groupLinks']); } $newHostPrototype = CArrayHelper::unsetEqualValues($newHostPrototype, $hostPrototype, array('hostid')); $result = API::HostPrototype()->update($newHostPrototype); show_messages($result, _('Host prototype updated'), _('Cannot update host prototype')); } else { $newHostPrototype['ruleid'] = getRequest('parent_discoveryid'); // add group prototypes based on existing host groups foreach (getRequest('group_links', array()) as $groupId) { $newHostPrototype['groupLinks'][] = array('groupid' => $groupId); } $result = API::HostPrototype()->create($newHostPrototype); show_messages($result, _('Host prototype added'), _('Cannot add host prototype')); } $result = DBend($result); if ($result) { uncheckTableRows($discoveryRule['itemid']); unset($_REQUEST['itemid'], $_REQUEST['form']);
if ($_REQUEST['authentication'] != HTTPTEST_AUTH_NONE) { $httpTest['http_user'] = $_REQUEST['http_user']; $httpTest['http_password'] = $_REQUEST['http_password']; } else { $httpTest['http_user'] = ''; $httpTest['http_password'] = ''; } if (isset($_REQUEST['httptestid'])) { // unset fields that did not change $dbHttpTest = API::HttpTest()->get(array('httptestids' => $_REQUEST['httptestid'], 'output' => API_OUTPUT_EXTEND, 'selectSteps' => API_OUTPUT_EXTEND)); $dbHttpTest = reset($dbHttpTest); $dbHttpSteps = zbx_toHash($dbHttpTest['steps'], 'httpstepid'); $httpTest = CArrayHelper::unsetEqualValues($httpTest, $dbHttpTest, array('applicationid')); foreach ($httpTest['steps'] as $snum => $step) { if (isset($step['httpstepid']) && isset($dbHttpSteps[$step['httpstepid']])) { $newStep = CArrayHelper::unsetEqualValues($step, $dbHttpSteps[$step['httpstepid']], array('httpstepid')); $httpTest['steps'][$snum] = $newStep; } } $httpTest['httptestid'] = $httpTestId = $_REQUEST['httptestid']; $result = API::HttpTest()->update($httpTest); if (!$result) { throw new Exception(); } else { uncheckTableRows(getRequest('hostid')); } } else { $result = API::HttpTest()->create($httpTest); if (!$result) { throw new Exception(); } else {
$newHostPrototype['hostid'] = getRequest('hostid'); if (!$hostPrototype['templateid']) { // add group prototypes based on existing host groups $groupPrototypesByGroupId = zbx_toHash($hostPrototype['groupLinks'], 'groupid'); unset($groupPrototypesByGroupId[0]); foreach (getRequest('group_links', []) as $groupId) { if (isset($groupPrototypesByGroupId[$groupId])) { $newHostPrototype['groupLinks'][] = ['groupid' => $groupPrototypesByGroupId[$groupId]['groupid'], 'group_prototypeid' => $groupPrototypesByGroupId[$groupId]['group_prototypeid']]; } else { $newHostPrototype['groupLinks'][] = ['groupid' => $groupId]; } } } else { unset($newHostPrototype['groupPrototypes'], $newHostPrototype['groupLinks']); } $newHostPrototype = CArrayHelper::unsetEqualValues($newHostPrototype, $hostPrototype, ['hostid']); $result = API::HostPrototype()->update($newHostPrototype); show_messages($result, _('Host prototype updated'), _('Cannot update host prototype')); } else { $newHostPrototype['ruleid'] = getRequest('parent_discoveryid'); // add group prototypes based on existing host groups foreach (getRequest('group_links', []) as $groupId) { $newHostPrototype['groupLinks'][] = ['groupid' => $groupId]; } $result = API::HostPrototype()->create($newHostPrototype); show_messages($result, _('Host prototype added'), _('Cannot add host prototype')); } $result = DBend($result); if ($result) { uncheckTableRows($discoveryRule['itemid']); unset($_REQUEST['itemid'], $_REQUEST['form']);