__('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(); reset($fields_vdef_edit); while (list($field, $array) = each($fields_vdef_edit)) { if (!preg_match('/^hidden/', $array['method'])) { $save[$field] = $vdef[$field]; } } $vdef_id = sql_save($save, 'vdef'); /* create new entry(s): vdef_items */ if (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 (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'; $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.', 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.', sizeof($vdef_array)) . "

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

\n"; $save_html = " "; } }else{ print "" . __('You must select at least one VDEF.') . "\n"; $save_html = ""; } 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'); /* ==================================================== */ 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'))); ?>

VDEF Name: ''
:

' onClick='$("#cdialog").dialog("close");' name='cancel'> ' name='continue' title=''> '; draw_vdef_preview(get_request_var('vdef_id')); print ''; if (!isempty_request_var('vdef_id')) { $header_label = __('VDEF Items [edit: %s]', db_fetch_cell_prepared('SELECT name FROM vdef WHERE id = ?', array(get_request_var('vdef_id'))) ); }else { $header_label = __('VDEF Items [new]'); } form_start('vdef.php', 'form_vdef'); html_start_box($header_label, '100%', '', '3', 'center', ''); if (isset_request_var('type_select')) { $current_type = get_request_var('type_select'); }elseif (isset($vdef['type'])) { $current_type = $vdef['type']; }else{ $current_type = CVDEF_ITEM_TYPE_FUNCTION; } form_alternate_row(); print '' . __('VDEF Item Type') . '
' . __('Choose what type of VDEF item this is.') .''; ?> ' . __('VDEF Item Value') . '
' . __('Enter a value for this VDEF item.') . ''; ?> $vdef_id) { if (empty($vdef_id)) continue; $new_order[$sequence] = str_replace('line', '', $vdef_id); } $vdef_items = db_fetch_assoc_prepared('SELECT id, sequence FROM vdef_items WHERE vdef_id = ?', array(get_request_var('id'))); if(sizeof($vdef_items)) { foreach($vdef_items as $item) { $old_order[$item['sequence']] = $item['id']; } }else { exit; } if (sizeof(array_diff($new_order, $old_order))>0) exit; /* the set of sequence numbers has to be the same too */ if (sizeof(array_diff_key($new_order, $old_order))>0) exit; /* ==================================================== */ foreach($new_order as $sequence => $vdef_id) { input_validate_input_number($sequence); input_validate_input_number($vdef_id); db_execute_prepared('UPDATE vdef_items SET sequence = ? WHERE id = ?', array($sequence, $vdef_id)); } header('Location: vdef.php?action=edit&header=false&id=' . get_request_var('id')); } function vdef_edit() { global $vdef_item_types; /* ================= input validation ================= */ get_filter_request_var('id'); /* ==================================================== */ if (!isempty_request_var('id')) { $vdef = db_fetch_row_prepared('SELECT * FROM vdef WHERE id = ?', array(get_request_var('id'))); $header_label = __('VDEFs [edit: %s]', $vdef['name']); }else{ $header_label = __('VDEFs [new]'); } form_start('vdef.php', 'vdef_edit'); html_start_box( $header_label, '100%', '', '3', 'center', ''); $preset_vdef_form_list = preset_vdef_form_list(); draw_edit_form( array( 'config' => array('no_form_tag' => true), 'fields' => inject_form_variables($preset_vdef_form_list, (isset($vdef) ? $vdef : array())) ) ); html_end_box(); 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 = sizeof($vdef_items); if (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-remove' title=''>
'> > ' id='refresh'> ' id='clear'>
'>
0'; }else{ $sql_having = ''; } $total_rows = db_fetch_cell("SELECT COUNT(rows) FROM ( SELECT vd.id AS rows, 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 $sql_where GROUP BY vd.id $sql_having ) AS rs"); 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 ORDER BY " . get_request_var('sort_column') . ' ' . get_request_var('sort_direction') . ' LIMIT ' . ($rowspp*(get_request_var('page')-1)) . ',' . $rowspp); } 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_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') ), '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' => __('The name of this VDEF.') ), 'nosort' => array('display' => __('Deletable'), 'align' => 'right', 'tip' => __('VDEFs that are in use can not 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' => __('The number of Graphs using this VDEF.') ), 'templates' => array('display' => __('Templates Using'), 'align' => 'right', 'sort' => 'DESC', 'tip' => __('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 (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'], '', 'text-align:right'); form_selectable_cell(number_format_i18n($vdef['graphs']), $vdef['id'], '', 'text-align:right'); form_selectable_cell(number_format_i18n($vdef['templates']), $vdef['id'], '', 'text-align:right'); form_checkbox_cell($vdef['name'], $vdef['id'], $disabled); form_end_row(); } }else{ print "" . __('No VDEFs') . "\n"; } html_end_box(false); if (sizeof($vdefs)) { print $nav; } /* draw the dropdown containing a list of available actions for this form */ draw_actions_dropdown($vdef_actions); form_end(); }