__('Delete'), '2' => __('Duplicate') ); set_default_action(); switch (get_request_var('action')) { case 'save': vdef_form_save(); break; case 'actions': vdef_form_actions(); break; case 'item_remove_confirm': vdef_item_remove_confirm(); break; case 'item_remove': vdef_item_remove(); break; case 'item_movedown': get_filter_request_var('vdef_id'); item_movedown(); header('Location: vdef.php?header=false&action=edit&id=' . get_request_var('vdef_id')); break; case 'item_moveup': get_filter_request_var('vdef_id'); item_moveup(); header('Location: vdef.php?header=false&action=edit&id=' . get_request_var('vdef_id')); break; case 'item_edit': top_header(); vdef_item_edit(); bottom_footer(); break; case 'edit': top_header(); vdef_edit(); bottom_footer(); break; case 'ajax_dnd': vdef_item_dnd(); break; default: top_header(); vdef(); bottom_footer(); break; } /* -------------------------- Global Form Functions -------------------------- */ function draw_vdef_preview($vdef_id) { ?>
vdef=
', $vdef['name'], $vdef_title); /* create new entry: device_template */ $save['id'] = 0; $save['hash'] = get_hash_vdef(0); $fields_vdef_edit = preset_vdef_form_list(); foreach ($fields_vdef_edit as $field => $array) { if (!preg_match('/^hidden/', $array['method'])) { $save[$field] = $vdef[$field]; } } $vdef_id = sql_save($save, 'vdef'); /* create new entry(s): vdef_items */ if (cacti_sizeof($vdef_items) > 0) { foreach ($vdef_items as $vdef_item) { unset($save); $save['id'] = 0; $save['hash'] = get_hash_vdef(0, 'vdef_item'); $save['vdef_id'] = $vdef_id; $save['sequence'] = $vdef_item['sequence']; $save['type'] = $vdef_item['type']; $save['value'] = $vdef_item['value']; sql_save($save, 'vdef_items'); } } } /* ------------------------ The 'actions' function ------------------------ */ function vdef_form_actions() { global $vdef_actions; /* 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 /* do a referential integrity check */ if (cacti_sizeof($selected_items)) { foreach($selected_items as $vdef_id) { /* ================= input validation ================= */ input_validate_input_number($vdef_id); /* ==================================================== */ $vdef_ids[] = $vdef_id; } } if (isset($vdef_ids)) { db_execute('DELETE FROM vdef WHERE ' . array_to_sql_or($vdef_ids, 'id')); db_execute('DELETE FROM vdef_items WHERE ' . array_to_sql_or($vdef_ids, 'vdef_id')); } } elseif (get_nfilter_request_var('drp_action') === '2') { // duplicate for ($i=0;($i $val) { if (preg_match('/^chk_([0-9]+)$/', $var, $matches)) { /* ================= input validation ================= */ input_validate_input_number($matches[1]); /* ==================================================== */ $vdef_list .= '
  • ' . html_escape(db_fetch_cell_prepared('SELECT name FROM vdef WHERE id = ?', array($matches[1]))) . '
  • '; $vdef_array[] = $matches[1]; } } top_header(); form_start('vdef.php', 'vdef_actions'); html_start_box($vdef_actions[get_nfilter_request_var('drp_action')], '60%', '', '3', 'center', ''); if (isset($vdef_array)) { if (get_nfilter_request_var('drp_action') === '1') { // delete print "

    " . __n('Click \'Continue\' to delete the following VDEF.', 'Click \'Continue\' to delete following VDEFs.', cacti_sizeof($vdef_array)) . "

    \n"; $save_html = " "; } elseif (get_nfilter_request_var('drp_action') === '2') { // duplicate print "

    " . __n('Click \'Continue\' to duplicate the following VDEF. You can optionally change the title format for the new VDEF.', 'Click \'Continue\' to duplicate following VDEFs. You can optionally change the title format for the new VDEFs.', cacti_sizeof($vdef_array)) . "

    " . __('Title Format:') . "
    "; form_text_box('title_format', ' (1)', '', '255', '30', 'text'); print "

    \n"; $save_html = " "; } } else { raise_message(40); header('Location: vdef.php?header=false'); exit; } print " $save_html \n"; html_end_box(); form_end(); bottom_footer(); } /* -------------------------- VDEF Item Functions -------------------------- */ function vdef_item_remove_confirm() { global $vdef_functions, $vdef_item_types, $custom_vdef_data_source_types; /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('vdef_id'); /* ==================================================== */ /* sort the vdef functions */ asort($vdef_functions); form_start('vdef.php'); html_start_box('', '100%', '', '3', 'center', ''); $vdef = db_fetch_row_prepared('SELECT * FROM vdef WHERE id = ?', array(get_request_var('id'))); $vdef_item = db_fetch_row_prepared('SELECT * FROM vdef_items WHERE id = ?', array(get_request_var('vdef_id'))); ?>


    :

    ' onClick='$("#cdialog").dialog("close");' name='cancel'> ' name='continue' title=''> array( 'method' => 'drop_array', 'friendly_name' => __('VDEF Item Type'), 'description' => __('Choose what type of VDEF item this is.'), 'value' => $current_type, 'array' => $vdef_item_types ), 'value' => array( 'method' => 'drop_array', 'friendly_name' => __('VDEF Item Value'), 'description' => __('Enter a value for this VDEF item.'), 'value' => (isset($vdef['value']) ? $vdef['value']:'') ), 'id' => array( 'method' => 'hidden', 'value' => isset_request_var('id') ? get_request_var('id') : '0', ), 'type' => array( 'method' => 'hidden', 'value' => $current_type ), 'vdef_id' => array( 'method' => 'hidden', 'value' => get_request_var('vdef_id') ), 'save_component_item' => array( 'method' => 'hidden', 'value' => '1' ) ); switch ($current_type) { case '1': $form_vdef['value']['array'] = $vdef_functions; break; case '4': $form_vdef['value']['array'] = $custom_vdef_data_source_types; break; case '6': $form_vdef['value']['method'] = 'textbox'; $form_vdef['value']['max_length'] = '255'; $form_vdef['value']['size'] = '30'; break; } draw_edit_form( array( 'config' => array('no_form_tag' => true), 'fields' => inject_form_variables($form_vdef, $vdef) ) ); ?> array('no_form_tag' => true), 'fields' => inject_form_variables($preset_vdef_form_list, (isset($vdef) ? $vdef : array())) ) ); html_end_box(true, true); form_hidden_box('id', (isset($vdef['id']) ? $vdef['id'] : '0'), ''); form_hidden_box('save_component_vdef', '1', ''); if (!isempty_request_var('id')) { html_start_box('', '100%', '', '3', 'center', ''); draw_vdef_preview(get_request_var('id')); html_end_box(); html_start_box(__('VDEF Items'), '100%', '', '3', 'center', 'vdef.php?action=item_edit&vdef_id=' . $vdef['id']); $header_items = array( array('display' => __('Item'), 'align' => 'left'), array('display' => __('Item Value'), 'align' => 'left') ); html_header($header_items, 2); $vdef_items = db_fetch_assoc_prepared('SELECT * FROM vdef_items WHERE vdef_id = ? ORDER BY sequence', array(get_request_var('id'))); $i = 1; $total_items = cacti_sizeof($vdef_items); if (cacti_sizeof($vdef_items)) { foreach ($vdef_items as $vdef_item) { form_alternate_row('line' . $vdef_item['id'], true, true); ?> '> : 1) { echo ''; } else { echo ''; } if ($i > 1 && $i <= $total_items) { echo ''; } else { echo ''; } } ?> ' class='delete deleteMarker fa fa-times' title=''>
    '> > ' id='refresh'> ' id='clear'>
    0'; } else { $sql_having = ''; } $total_rows = db_fetch_cell("SELECT COUNT(`rows`) FROM ( SELECT vd.id AS `rows`, vd.name, SUM(CASE WHEN local_graph_id>0 THEN 1 ELSE 0 END) AS graphs FROM vdef AS vd LEFT JOIN graph_templates_item AS gti ON gti.vdef_id=vd.id GROUP BY vd.id ) AS rs $sql_where $sql_having"); $sql_order = get_order_string(); $sql_limit = ' LIMIT ' . ($rows*(get_request_var('page')-1)) . ',' . $rows; return db_fetch_assoc("SELECT rs.*, SUM(CASE WHEN local_graph_id=0 THEN 1 ELSE 0 END) AS templates, SUM(CASE WHEN local_graph_id>0 THEN 1 ELSE 0 END) AS graphs FROM ( SELECT vd.*, gti.local_graph_id FROM vdef AS vd LEFT JOIN graph_templates_item AS gti ON gti.vdef_id=vd.id GROUP BY vd.id, gti.graph_template_id, gti.local_graph_id ) AS rs $sql_where GROUP BY rs.id $sql_having $sql_order $sql_limit"); } function vdef($refresh = true) { global $vdef_actions; /* ================= input validation and session storage ================= */ $filters = array( 'rows' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => '-1' ), 'page' => array( 'filter' => FILTER_VALIDATE_INT, 'default' => '1' ), 'filter' => array( 'filter' => FILTER_DEFAULT, 'pageset' => true, 'default' => '' ), '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') ), 'has_graphs' => array( 'filter' => FILTER_VALIDATE_REGEXP, 'options' => array('options' => array('regexp' => '(true|false)')), 'pageset' => true, 'default' => read_config_option('default_has') == 'on' ? 'true':'false' ) ); validate_store_request_vars($filters, 'sess_vdef'); /* ================= input validation ================= */ vdef_filter(); $total_rows = 0; $vdefs = array(); if (get_request_var('rows') == '-1') { $rows = read_config_option('num_rows_table'); } else { $rows = get_request_var('rows'); } $vdefs = get_vdef_records($total_rows, $rows); $nav = html_nav_bar('vdef.php?filter=' . get_request_var('filter'), MAX_DISPLAY_PAGES, get_request_var('page'), $rows, $total_rows, 5, __('VDEFs'), 'page', 'main'); form_start('vdef.php', 'chk'); print $nav; html_start_box('', '100%', '', '3', 'center', ''); $display_text = array( 'name' => array('display' => __('VDEF Name'), 'align' => 'left', 'sort' => 'ASC', 'tip' => __esc('The name of this VDEF.') ), 'nosort' => array('display' => __('Deletable'), 'align' => 'right', 'tip' => __esc('VDEFs that are in use cannot be Deleted. In use is defined as being referenced by a Graph or a Graph Template.') ), 'graphs' => array('display' => __('Graphs Using'), 'align' => 'right', 'sort' => 'DESC', 'tip' => __esc('The number of Graphs using this VDEF.') ), 'templates' => array('display' => __('Templates Using'), 'align' => 'right', 'sort' => 'DESC', 'tip' => __esc('The number of Graphs Templates using this VDEF.') ) ); html_header_sort_checkbox($display_text, get_request_var('sort_column'), get_request_var('sort_direction'), false); $i = 0; if (cacti_sizeof($vdefs)) { foreach ($vdefs as $vdef) { if ($vdef['graphs'] == 0 && $vdef['templates'] == 0) { $disabled = false; } else { $disabled = true; } form_alternate_row('line' . $vdef['id'], false, $disabled); form_selectable_cell(filter_value($vdef['name'], get_request_var('filter'), 'vdef.php?action=edit&id=' . $vdef['id']), $vdef['id']); form_selectable_cell($disabled ? __('No'):__('Yes'), $vdef['id'], '', 'right'); form_selectable_cell(number_format_i18n($vdef['graphs'], '-1'), $vdef['id'], '', 'right'); form_selectable_cell(number_format_i18n($vdef['templates'], '-1'), $vdef['id'], '', 'right'); form_checkbox_cell($vdef['name'], $vdef['id'], $disabled); form_end_row(); } } else { print "" . __('No VDEFs') . "\n"; } html_end_box(false); if (cacti_sizeof($vdefs)) { print $nav; } /* draw the dropdown containing a list of available actions for this form */ draw_actions_dropdown($vdef_actions); form_end(); }