__('Rerun Check'),
2 => __('Delete')
);
set_default_action();
switch (get_request_var('action')) {
case 'save':
form_save();
break;
case 'actions':
form_actions();
break;
case 'edit':
top_header();
debug_add();
bottom_footer();
break;
case 'view':
top_header();
debug_view();
bottom_footer();
break;
default:
top_header();
debug_wizard();
bottom_footer();
break;
}
function form_actions() {
global $actions, $assoc_actions;
/* ================= input validation ================= */
get_filter_request_var('id');
get_filter_request_var('drp_action', FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => '/^([a-zA-Z0-9_]+)$/')));
/* ================= input validation ================= */
$selected_items = array();
if (isset_request_var('save_list')) {
/* loop through each of the lists selected on the previous page and get more info about them */
while (list($var,$val) = each($_POST)) {
if (preg_match('/^chk_([0-9]+)$/', $var, $matches)) {
/* ================= input validation ================= */
input_validate_input_number($matches[1]);
/* ==================================================== */
$selected_items[] = $matches[1];
}
}
/* if we are to save this form, instead of display it */
if (isset_request_var('save_list')) {
if (get_request_var('drp_action') == '2') { /* delete */
debug_delete($selected_items);
}elseif (get_request_var('drp_action') == '1') { /* Rerun */
debug_rerun($selected_items);
}
header('Location: data_debug.php?header=false');
exit;
}
}
}
function form_save() {
if (isset_request_var('save_component')) {
/* ================= input validation ================= */
get_filter_request_var('id');
get_filter_request_var('local_data_id');
/* ==================================================== */
$save = array();
$save['id'] = get_nfilter_request_var('id');
$save['datasource'] = get_nfilter_request_var('local_data_id');
$info = array(
'rrd_folder_writable' => '',
'rrd_exists' => '',
'rrd_writable' => '',
'active' => '',
'owner' => '',
'runas_poller' => '',
'runas_website' => get_running_user(),
'last_result' => '',
'valid_data' => '',
'rra_timestamp' => '',
'rra_timestamp2' => '',
'rrd_match' => '');
$save['info'] = serialize($info);
$save['started'] = time();
$save['user'] = intval($_SESSION['sess_user_id']);
if (!is_error_message()) {
$id = sql_save($save, 'data_debug');
if ($id) {
raise_message(1);
} else {
raise_message(2);
}
}
header('Location: data_debug.php?header=false');
exit;
}
}
function debug_rerun ($selected_items) {
$info = array(
'rrd_folder_writable' => '',
'rrd_exists' => '',
'rrd_writable' => '',
'active' => '',
'owner' => '',
'runas_poller' => '',
'runas_website' => get_running_user(),
'last_result' => '',
'valid_data' => '',
'rra_timestamp' => '',
'rra_timestamp2' => '',
'rrd_match' => '');
$info = serialize($info);
if (!empty($selected_items)) {
foreach($selected_items as $id) {
$stime = time();
db_execute_prepared('UPDATE data_debug SET started = ?, done = 0, info = ?, issue = "" WHERE id = ? LIMIT 1', array($stime, $info, $id));
}
}
header('Location: data_debug.php?header=false');
exit;
}
function debug_delete ($selected_items) {
if (!empty($selected_items)) {
foreach($selected_items as $id) {
$stime = time();
db_execute_prepared('DELETE FROM data_debug WHERE id = ? LIMIT 1', array($id));
}
}
header('Location: data_debug.php?header=false');
exit;
}
function debug_add() {
global $config;
$id = 0;
$header_label = __('New Check');
form_start('data_debug.php', 'debug');
html_start_box(htmlspecialchars($header_label), '100%', '', '3', 'center', '');
$form_array = array(
'general_header' => array(
'friendly_name' => __('Debugging Data Source'),
'method' => 'spacer',
),
'local_data_id' => array(
'friendly_name' => __('Data Source'),
'method' => 'drop_sql',
'description' => __('Provide the Maintenance Schedule a meaningful name'),
'sql' => 'SELECT DISTINCT local_data_id as id, name_cache as name FROM data_template_data WHERE local_data_id > 0 ORDER BY name_cache',
'value' => ''
),
'save_component' => array(
'method' => 'hidden',
'value' => '1'
),
'save' => array(
'method' => 'hidden',
'value' => 'edit'
),
'id' => array(
'method' => 'hidden',
'value' => $id
)
);
draw_edit_form(
array(
'config' => array(
'no_form_tag' => true
),
'fields' => $form_array
)
);
html_end_box();
form_save_button('data_debug.php', 'return');
}
function debug_wizard() {
global $actions, $refresh;
$refresh = 60;
$checks = db_fetch_assoc('SELECT * FROM data_debug ORDER BY id');
form_start('data_debug.php', 'chk');
html_start_box(__('Data Source Debugger'), '100%', '', '2', 'center', 'data_debug.php?action=edit');
html_header_checkbox(array(__('ID'), __('User'), __('Started'), __('Data Source'), __('Status'), __('Writable'), __('Exists'), __('Active'), __('RRD Match'), __('Valid Data'), __('RRD Updated'), __('Issue')));
if (cacti_sizeof($checks)) {
foreach ($checks as $check) {
$info = unserialize($check['info']);
$issues = explode("\n", $check['issue']);
$issue_line = '';
if (cacti_sizeof($issues)) {
$issue_line = $issues[0];
}
$issue_title = implode($issues, '
');
$user = db_fetch_cell_prepared('SELECT username FROM user_auth WHERE id = ?', array($check['user']), 'username');
form_alternate_row('line' . $check['id']);
$name = get_data_source_title($check['datasource']);
$title = $name;
if (strlen($name) > 50) {
$name = substr($name, 0, 50);
}
form_selectable_cell('' . $name . '', $check['id']);
form_selectable_cell($user, $check['id']);
form_selectable_cell(date('F j, Y, G:i', $check['started']), $check['id']);
form_selectable_cell($check['datasource'], $check['id']);
form_selectable_cell(debug_icon(($check['done'] ? (strlen($issue_line) ? 'off' : 'on' ) : '')), $check['id'], '', 'text-align: center;');
form_selectable_cell(debug_icon($info['rrd_writable']), $check['id'], '', 'text-align: center;');
form_selectable_cell(debug_icon($info['rrd_exists']), $check['id'], '', 'text-align: center;');
form_selectable_cell(debug_icon($info['active']), $check['id'], '', 'text-align: center;');
form_selectable_cell(debug_icon($info['rrd_match']), $check['id'], '', 'text-align: center;');
form_selectable_cell(debug_icon($info['valid_data']), $check['id'], '', 'text-align: center;');
form_selectable_cell(debug_icon(($info['rra_timestamp2'] != '' ? 1 : '')), $check['id'], '', 'text-align: center;');
form_selectable_cell('' . html_escape(strlen(trim($issue_line)) ? $issue_line : '
";
if (isset($check) && is_array($check)) {
print_r($check);
}
print "";
*/
}
function debug_icon($result) {
if ($result === '' || $result === false) {
return '';
}
if ($result === '-') {
return '';
}
if ($result === 1 || $result === 'on') {
return '';
}
if ($result === 0 || $result === 'off') {
return '';
}
return '';
}