'Delete' ); /* set default action */ set_default_action(); switch (get_request_var('action')) { case 'save': form_save(); break; case 'actions': form_actions(); break; case 'item_moveup_dssv': get_filter_request_var('snmp_query_graph_id'); get_filter_request_var('snmp_query_id'); data_query_item_moveup_dssv(); header('Location: data_queries.php?header=false&action=item_edit&id=' . get_request_var('snmp_query_graph_id') . '&snmp_query_id=' . get_request_var('snmp_query_id')); break; case 'item_movedown_dssv': get_filter_request_var('snmp_query_graph_id'); get_filter_request_var('snmp_query_id'); data_query_item_movedown_dssv(); header('Location: data_queries.php?header=false&action=item_edit&id=' . get_request_var('snmp_query_graph_id') . '&snmp_query_id=' . get_request_var('snmp_query_id')); break; case 'item_remove_dssv': get_filter_request_var('snmp_query_graph_id'); get_filter_request_var('snmp_query_id'); data_query_item_remove_dssv(); header('Location: data_queries.php?header=false&action=item_edit&id=' . get_request_var('snmp_query_graph_id') . '&snmp_query_id=' . get_request_var('snmp_query_id')); break; case 'item_moveup_gsv': get_filter_request_var('snmp_query_graph_id'); get_filter_request_var('snmp_query_id'); data_query_item_moveup_gsv(); header('Location: data_queries.php?header=false&action=item_edit&id=' . get_request_var('snmp_query_graph_id') . '&snmp_query_id=' . get_request_var('snmp_query_id')); break; case 'item_movedown_gsv': get_filter_request_var('snmp_query_graph_id'); get_filter_request_var('snmp_query_id'); data_query_item_movedown_gsv(); header('Location: data_queries.php?header=false&action=item_edit&id=' . get_request_var('snmp_query_graph_id') . '&snmp_query_id=' . get_request_var('snmp_query_id')); break; case 'item_remove_gsv': get_filter_request_var('snmp_query_graph_id'); get_filter_request_var('snmp_query_id'); data_query_item_remove_gsv(); header('Location: data_queries.php?header=false&action=item_edit&id=' . get_request_var('snmp_query_graph_id') . '&snmp_query_id=' . get_request_var('snmp_query_id')); break; case 'item_remove': get_filter_request_var('snmp_query_id'); data_query_item_remove(); header('Location: data_queries.php?header=false&action=edit&id=' . get_request_var('snmp_query_id')); break; case 'item_edit': top_header(); data_query_item_edit(); bottom_footer(); break; case 'remove': data_query_remove(); header ('Location: data_queries.php'); break; case 'edit': top_header(); data_query_edit(); bottom_footer(); break; default: top_header(); data_query(); bottom_footer(); break; } /* -------------------------- The Save Function -------------------------- */ function form_save() { if (isset_request_var('save_component_snmp_query')) { get_filter_request_var('id'); get_filter_request_var('data_input_id'); $save['id'] = get_nfilter_request_var('id'); $save['hash'] = get_hash_data_query(get_nfilter_request_var('id')); $save['name'] = form_input_validate(get_nfilter_request_var('name'), 'name', '', false, 3); $save['description'] = form_input_validate(get_nfilter_request_var('description'), 'description', '', true, 3); $save['xml_path'] = form_input_validate(get_nfilter_request_var('xml_path'), 'xml_path', '', false, 3); $save['data_input_id'] = get_nfilter_request_var('data_input_id'); if (!is_error_message()) { $snmp_query_id = sql_save($save, 'snmp_query'); if ($snmp_query_id) { raise_message(1); }else{ raise_message(2); } } header('Location: data_queries.php?header=false&action=edit&id=' . (empty($snmp_query_id) ? get_nfilter_request_var('id') : $snmp_query_id)); }elseif (isset_request_var('save_component_snmp_query_item')) { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('snmp_query_id'); get_filter_request_var('graph_template_id'); /* ==================================================== */ $redirect_back = false; $save['id'] = get_nfilter_request_var('id'); $save['hash'] = get_hash_data_query(get_nfilter_request_var('id'), 'data_query_graph'); $save['snmp_query_id'] = get_nfilter_request_var('snmp_query_id'); $save['name'] = form_input_validate(get_nfilter_request_var('name'), 'name', '', false, 3); $save['graph_template_id'] = get_nfilter_request_var('graph_template_id'); if (!is_error_message()) { $snmp_query_graph_id = sql_save($save, 'snmp_query_graph'); if ($snmp_query_graph_id) { raise_message(1); /* if the user changed the graph template, go through and delete everything that was associated with the old graph template */ if (get_nfilter_request_var('graph_template_id') != get_nfilter_request_var('_graph_template_id')) { db_execute_prepared('DELETE FROM snmp_query_graph_rrd_sv WHERE snmp_query_graph_id = ?', array($snmp_query_graph_id)); db_execute_prepared('DELETE FROM snmp_query_graph_sv WHERE snmp_query_graph_id = ?', array($snmp_query_graph_id)); $redirect_back = true; } db_execute_prepared('DELETE FROM snmp_query_graph_rrd WHERE snmp_query_graph_id = ?', array($snmp_query_graph_id)); while (list($var, $val) = each($_POST)) { if (preg_match('/^dsdt_([0-9]+)_([0-9]+)_check/i', $var)) { $data_template_id = preg_replace('/^dsdt_([0-9]+)_([0-9]+).+/', "\\1", $var); $data_template_rrd_id = preg_replace('/^dsdt_([0-9]+)_([0-9]+).+/', "\\2", $var); /* ================= input validation ================= */ input_validate_input_number($data_template_id); input_validate_input_number($data_template_rrd_id); /* ==================================================== */ db_execute_prepared('REPLACE INTO snmp_query_graph_rrd (snmp_query_graph_id, data_template_id, data_template_rrd_id, snmp_field_name) VALUES (?, ?, ?, ?)', array($snmp_query_graph_id, $data_template_id, $data_template_rrd_id, get_nfilter_request_var('dsdt_' . $data_template_id . '_' . $data_template_rrd_id . '_snmp_field_output'))); }elseif ((preg_match('/^svds_([0-9]+)_x/i', $var, $matches)) && (!isempty_request_var('svds_' . $matches[1] . '_text')) && (!isempty_request_var('svds_' . $matches[1] . '_field'))) { /* suggested values -- data templates */ /* ================= input validation ================= */ input_validate_input_number($matches[1]); /* ==================================================== */ $sequence = get_sequence(0, 'sequence', 'snmp_query_graph_rrd_sv', 'snmp_query_graph_id=' . get_nfilter_request_var('id') . ' AND data_template_id=' . $matches[1] . " AND field_name='" . get_nfilter_request_var('svds_' . $matches[1] . '_field') . "'"); $hash = get_hash_data_query(0, 'data_query_sv_data_source'); db_execute_prepared('INSERT INTO snmp_query_graph_rrd_sv (hash, snmp_query_graph_id, data_template_id, sequence, field_name, text) VALUES (?, ?, ?, ?, ?, ?)', array($hash, get_nfilter_request_var('id'), $matches[1], $sequence, get_nfilter_request_var('svds_' . $matches[1] . '_field'), get_nfilter_request_var('svds_' . $matches[1] . '_text'))); $redirect_back = true; clear_messages(); }elseif ((preg_match('/^svg_x/i', $var)) && (!isempty_request_var('svg_text')) && (!isempty_request_var('svg_field'))) { /* suggested values -- graph templates */ $sequence = get_sequence(0, 'sequence', 'snmp_query_graph_sv', 'snmp_query_graph_id=' . get_nfilter_request_var('id') . " AND field_name = " . db_qstr(get_nfilter_request_var('svg_field'))); $hash = get_hash_data_query(0, 'data_query_sv_graph'); db_execute_prepared('INSERT INTO snmp_query_graph_sv (hash, snmp_query_graph_id, sequence, field_name, text) VALUES (?, ?, ?, ?, ?)', array($hash, get_nfilter_request_var('id'), $sequence, get_nfilter_request_var('svg_field'), get_nfilter_request_var('svg_text'))); $redirect_back = true; clear_messages(); } } if (isset_request_var('header') && get_nfilter_request_var('header') == 'false') { $header = '&header=false'; }else{ $header = ''; } }else{ raise_message(2); $header = ''; } } header('Location: data_queries.php?header=false&action=item_edit' . $header . '&id=' . (empty($snmp_query_graph_id) ? get_nfilter_request_var('id') : $snmp_query_graph_id) . '&snmp_query_id=' . get_nfilter_request_var('snmp_query_id')); } } function form_actions() { global $dq_actions; /* ================= input validation ================= */ get_filter_request_var('drp_action', FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/^([a-zA-Z0-9_]+)$/'))); /* ==================================================== */ /* if we are to save this form, instead of display it */ if (isset_request_var('selected_items')) { $selected_items = sanitize_unserialize_selected_items(get_nfilter_request_var('selected_items')); if ($selected_items != false) { if (get_nfilter_request_var('drp_action') == '1') { /* delete */ for ($i=0;($i'; $dq_array[$i] = $matches[1]; $i++; } } top_header(); form_start('data_queries.php'); html_start_box($dq_actions{get_nfilter_request_var('drp_action')}, '60%', '', '3', 'center', ''); if (isset($dq_array) && sizeof($dq_array)) { if (get_nfilter_request_var('drp_action') == '1') { /* delete */ $graphs = array(); print "

Click 'Continue' to delete the following Data Querie(s).

\n"; } $save_html = " "; }else{ print "You must select at least one data query.\n"; $save_html = ""; } print " $save_html \n"; html_end_box(); form_end(); bottom_footer(); } /* ---------------------------- Data Query Graph Functions ---------------------------- */ function data_query_item_movedown_gsv() { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('snmp_query_graph_id'); /* ==================================================== */ move_item_down('snmp_query_graph_sv', get_request_var('id'), 'snmp_query_graph_id=' . get_request_var('snmp_query_graph_id') . " AND field_name = " . db_qstr(get_request_var('field_name'))); } function data_query_item_moveup_gsv() { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('snmp_query_graph_id'); /* ==================================================== */ move_item_up('snmp_query_graph_sv', get_request_var('id'), 'snmp_query_graph_id=' . get_request_var('snmp_query_graph_id') . " AND field_name = " . db_qstr(get_request_var('field_name'))); } function data_query_item_remove_gsv() { /* ================= input validation ================= */ get_filter_request_var('id'); /* ==================================================== */ db_execute_prepared('DELETE FROM snmp_query_graph_sv WHERE id = ?', array(get_request_var('id'))); } function data_query_item_movedown_dssv() { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('data_template_id'); get_filter_request_var('snmp_query_graph_id'); /* ==================================================== */ move_item_down('snmp_query_graph_rrd_sv', get_request_var('id'), 'data_template_id=' . get_request_var('data_template_id') . ' AND snmp_query_graph_id=' . get_request_var('snmp_query_graph_id') . " AND field_name = " . db_qstr(get_request_var('field_name'))); } function data_query_item_moveup_dssv() { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('data_template_id'); get_filter_request_var('snmp_query_graph_id'); /* ==================================================== */ move_item_up('snmp_query_graph_rrd_sv', get_request_var('id'), 'data_template_id=' . get_request_var('data_template_id') . ' AND snmp_query_graph_id=' . get_request_var('snmp_query_graph_id') . " AND field_name = " . db_qstr(get_request_var('field_name'))); } function data_query_item_remove_dssv() { /* ================= input validation ================= */ get_filter_request_var('id'); /* ==================================================== */ db_execute_prepared('DELETE FROM snmp_query_graph_rrd_sv WHERE id = ?', array(get_request_var('id'))); } function data_query_item_remove() { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('snmp_query_id'); /* ==================================================== */ if ((read_config_option('deletion_verification') == 'on') && (!isset_request_var('confirm'))) { top_header(); form_confirm('Are You Sure?', "Are you sure you want to delete the Data Query Graph '" . htmlspecialchars(db_fetch_cell_prepared('SELECT name FROM snmp_query_graph WHERE id = ?', array(get_request_var('id'))), ENT_QUOTES) . "'?", htmlspecialchars('data_queries.php?action=edit&id=' . get_request_var('snmp_query_id')), htmlspecialchars('data_queries.php?action=item_remove&id=' . get_request_var('id') . '&snmp_query_id=' . get_request_var('snmp_query_id'))); bottom_footer(); exit; } if ((read_config_option('deletion_verification') == '') || (isset_request_var('confirm'))) { db_execute_prepared('DELETE FROM snmp_query_graph WHERE id = ?', array(get_request_var('id'))); db_execute_prepared('DELETE FROM snmp_query_graph_rrd WHERE snmp_query_graph_id = ?', array(get_request_var('id'))); db_execute_prepared('DELETE FROM snmp_query_graph_rrd_sv WHERE snmp_query_graph_id = ?', array(get_request_var('id'))); db_execute_prepared('DELETE FROM snmp_query_graph_sv WHERE snmp_query_graph_id = ?', array(get_request_var('id'))); } } function data_query_item_edit() { global $fields_data_query_item_edit; /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('snmp_query_id'); /* ==================================================== */ if (!isempty_request_var('id')) { $snmp_query_item = db_fetch_row_prepared('SELECT * FROM snmp_query_graph WHERE id = ?', array(get_request_var('id'))); } $snmp_query = db_fetch_row_prepared('SELECT name, xml_path FROM snmp_query WHERE id = ?', array(get_request_var('snmp_query_id'))); $header_label = '[edit: ' . htmlspecialchars($snmp_query['name']) . ']'; form_start('data_queries.php', 'data_queries'); html_start_box("Associated Graph/Data Templates $header_label", '100%', '', '3', 'center', ''); draw_edit_form(array( 'config' => array('no_form_tag' => true), 'fields' => inject_form_variables($fields_data_query_item_edit, (isset($snmp_query_item) ? $snmp_query_item : array()), $_REQUEST) ) ); html_end_box(); ?> Data Template - " . $data_template['name'] . ' '; $data_template_rrds = db_fetch_assoc_prepared('SELECT data_template_rrd.id, data_template_rrd.data_source_name, snmp_query_graph_rrd.snmp_field_name, snmp_query_graph_rrd.snmp_query_graph_id FROM data_template_rrd LEFT JOIN snmp_query_graph_rrd on (snmp_query_graph_rrd.data_template_rrd_id = data_template_rrd.id AND snmp_query_graph_rrd.snmp_query_graph_id = ? AND snmp_query_graph_rrd.data_template_id = ?) WHERE data_template_rrd.data_template_id = ? AND data_template_rrd.local_data_id = 0 ORDER BY data_template_rrd.data_source_name', array(get_request_var('id'), $data_template['id'], $data_template['id'])); $i = 0; if (sizeof($data_template_rrds) > 0) { foreach ($data_template_rrds as $data_template_rrd) { if (empty($data_template_rrd['snmp_query_graph_id'])) { $old_value = ''; }else{ $old_value = 'on'; } form_alternate_row(); ?>
Data Source ';?>
1 && $i < $total_values-1) { $show_down = true; } ?> '> '> '>
Field Name Suggested Value
1 && $i < $total_values-1) { $show_down = true; } ?> '> '> '>
Field Name _field' size='15'> Suggested Value _text' size='60'> _x' value='Add' title='Add Data Source Name Suggested Name'>
0) { foreach ($snmp_query_graph as $item) { db_execute('DELETE FROM snmp_query_graph_rrd WHERE snmp_query_graph_id=' . $item['id']); } } db_execute_prepared('DELETE FROM snmp_query WHERE id = ?', array($id)); db_execute_prepared('DELETE FROM snmp_query_graph WHERE snmp_query_id = ?', array($id)); db_execute_prepared('DELETE FROM host_template_snmp_query WHERE snmp_query_id = ?', array($id)); db_execute_prepared('DELETE FROM host_snmp_query WHERE snmp_query_id = ?', array($id)); db_execute_prepared('DELETE FROM host_snmp_cache WHERE snmp_query_id = ?', array($id)); } function data_query_edit() { global $fields_data_query_edit, $config; /* ================= input validation ================= */ get_filter_request_var('id'); /* ==================================================== */ if (!isempty_request_var('id')) { $snmp_query = db_fetch_row_prepared('SELECT * FROM snmp_query WHERE id = ?', array(get_request_var('id'))); $header_label = '[edit: ' . htmlspecialchars($snmp_query['name']) . ']'; }else{ $header_label = '[new]'; } form_start('data_queries.php', 'data_queries'); html_start_box("Data Queries $header_label", '100%', '', '3', 'center', ''); draw_edit_form(array( 'config' => array('no_form_tag' => true), 'fields' => inject_form_variables($fields_data_query_edit, (isset($snmp_query) ? $snmp_query : array())) )); html_end_box(); if (!empty($snmp_query['id'])) { $xml_filename = str_replace('', $config['base_path'], $snmp_query['xml_path']); if ((file_exists($xml_filename)) && (is_file($xml_filename))) { $text = "Successfully located XML file"; $xml_file_exists = true; }else{ $text = "Could not locate XML file."; $xml_file_exists = false; } html_start_box('', '100%', '', '3', 'center', ''); print "$text"; html_end_box(); if ($xml_file_exists == true) { html_start_box('Associated Graph Templates', '100%', '', '3', 'center', 'data_queries.php?action=item_edit&snmp_query_id=' . $snmp_query['id']); print " Name Graph Template Name Mapping ID Action "; $snmp_query_graphs = db_fetch_assoc_prepared('SELECT sqg.id, gt.name AS graph_template_name, sqg.name FROM snmp_query_graph AS sqg LEFT JOIN graph_templates AS gt ON (sqg.graph_template_id = gt.id) WHERE sqg.snmp_query_id = ? ORDER BY sqg.name', array($snmp_query['id'])); $i = 0; if (sizeof($snmp_query_graphs) > 0) { foreach ($snmp_query_graphs as $snmp_query_graph) { form_alternate_row(); ?> '> No Graph Templates Defined."; } html_end_box(); } } form_save_button('data_queries.php', 'return'); } function data_query() { global $dq_actions, $item_rows; /* ================= input validation and session storage ================= */ $filters = array( 'rows' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => read_config_option('num_rows_table') ), 'page' => array( 'filter' => FILTER_VALIDATE_INT, 'default' => '1' ), 'filter' => array( 'filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string') ), 'sort_column' => array( 'filter' => FILTER_CALLBACK, 'default' => 'name', 'options' => array('options' => 'sanitize_search_string') ), 'sort_direction' => array( 'filter' => FILTER_CALLBACK, 'default' => 'ASC', 'options' => array('options' => 'sanitize_search_string') ) ); validate_store_request_vars($filters, 'sess_dq'); /* ================= input validation ================= */ html_start_box('Data Queries', '100%', '', '3', 'center', 'data_queries.php?action=edit'); ?>
Search '> Data Queries
'>
array('display' => 'Data Query Name', 'align' => 'left', 'sort' => 'ASC', 'tip' => 'The name of this Data Query.'), 'nosort' => array('display' => 'Deletable', 'align' => 'right', 'tip' => 'Data Queries that are in use can not be Deleted. In use is defined as being referenced by either a Graph or a Graph Template.'), 'graphs' => array('display' => 'Graphs Using', 'align' => 'right', 'sort' => 'DESC', 'tip' => 'The number of Graphs using this Data Query.'), 'templates' => array('display' => 'Templates Using', 'align' => 'right', 'sort' => 'DESC', 'tip' => 'The number of Graphs Templates using this Data Query.'), 'data_input_method' => array('display' => 'Data Input Method', 'align' => 'left', 'sort' => 'ASC', 'tip' => 'The Data Input Method used to collect data for Data Sources associated with this Data Query.'), 'id' => array('display' => 'ID', 'align' => 'right', 'sort' => 'ASC', 'tip' => 'The internal ID for this Graph Template. Useful when performing automation or debugging.')); html_header_sort_checkbox($display_text, get_request_var('sort_column'), get_request_var('sort_direction'), false); $i = 0; if (sizeof($snmp_queries) > 0) { foreach ($snmp_queries as $snmp_query) { if ($snmp_query['graphs'] == 0 && $snmp_query['templates'] == 0) { $disabled = false; }else{ $disabled = true; } form_alternate_row('line' . $snmp_query['id'], true, $disabled); form_selectable_cell("" . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter'), '/') . ')/i', "\\1", htmlspecialchars($snmp_query['name'])) : htmlspecialchars($snmp_query['name'])) . '', $snmp_query['id']); form_selectable_cell($disabled ? 'No':'Yes', $snmp_query['id'], '', 'text-align:right'); form_selectable_cell(number_format($snmp_query['graphs']), $snmp_query['id'], '', 'text-align:right'); form_selectable_cell(number_format($snmp_query['templates']), $snmp_query['id'], '', 'text-align:right'); form_selectable_cell((strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter'), '/') . ')/i', "\\1", htmlspecialchars($snmp_query['data_input_method'])) : htmlspecialchars($snmp_query['data_input_method'])), $snmp_query['id']); form_selectable_cell($snmp_query['id'], $snmp_query['id'], '', 'text-align:right;'); form_checkbox_cell($snmp_query['name'], $snmp_query['id'], $disabled); form_end_row(); } print $nav; }else{ print "No Data Queries"; } html_end_box(false); /* draw the dropdown containing a list of available actions for this form */ draw_actions_dropdown($dq_actions); }