'sanitize_search_string')); switch (get_request_var('action')) { case 'save': $errors = array(); foreach ($settings{get_request_var('tab')} as $field_name => $field_array) { if (($field_array['method'] == 'header') || ($field_array['method'] == 'spacer' )){ /* do nothing */ } elseif ($field_array['method'] == 'checkbox') { if (isset_request_var($field_name)) { db_execute_prepared("REPLACE INTO settings (name, value) VALUES (?, 'on')", array($field_name)); } else { db_execute_prepared("REPLACE INTO settings (name, value) VALUES (?, '')", array($field_name)); } } elseif ($field_array['method'] == 'checkbox_group') { foreach ($field_array['items'] as $sub_field_name => $sub_field_array) { if (isset_request_var($sub_field_name)) { db_execute_prepared("REPLACE INTO settings (name, value) VALUES (?, 'on')", array($sub_field_name)); } else { db_execute_prepared("REPLACE INTO settings (name, value) VALUES (?, '')", array($sub_field_name)); } } } elseif ($field_array['method'] == 'dirpath') { if (get_nfilter_request_var($field_name) != '' && !is_dir(get_nfilter_request_var($field_name))) { $_SESSION['sess_error_fields'][$field_name] = $field_name; $_SESSION['sess_field_values'][$field_name] = get_nfilter_request_var($field_name); $errors[8] = 8; } else { db_execute_prepared('REPLACE INTO settings (name, value) VALUES (?, ?)', array($field_name, get_nfilter_request_var($field_name))); } } elseif ($field_array['method'] == 'filepath') { if (isset($field_array['file_type']) && $field_array['file_type'] == 'binary' && get_nfilter_request_var($field_name) != '' && file_exists(get_nfilter_request_var($field_name)) === false) { $_SESSION['sess_error_fields'][$field_name] = $field_name; $_SESSION['sess_field_values'][$field_name] = get_nfilter_request_var($field_name); $errors[36] = 36; } else { $continue = true; if ($field_name == 'path_cactilog') { $extension = pathinfo(get_nfilter_request_var($field_name), PATHINFO_EXTENSION); if ($extension != 'log') { $_SESSION['sess_error_fields'][$field_name] = $field_name; $_SESSION['sess_field_values'][$field_name] = get_nfilter_request_var($field_name); $errors[9] = 9; $continue = false; } } if ($continue) { db_execute_prepared('REPLACE INTO settings (name, value) VALUES (?, ?)', array($field_name, get_nfilter_request_var($field_name))); } } } elseif ($field_array['method'] == 'textbox_password') { if (get_nfilter_request_var($field_name) != get_nfilter_request_var($field_name . '_confirm')) { $_SESSION['sess_error_fields'][$field_name] = $field_name; $_SESSION['sess_field_values'][$field_name] = get_nfilter_request_var($field_name); $errors[4] = 4; break; } elseif (!isempty_request_var($field_name)) { db_execute_prepared('REPLACE INTO settings (name, value) VALUES (?, ?)', array($field_name, get_nfilter_request_var($field_name))); } } elseif ((isset($field_array['items'])) && (is_array($field_array['items']))) { foreach ($field_array['items'] as $sub_field_name => $sub_field_array) { if (isset_request_var($sub_field_name)) { db_execute_prepared('REPLACE INTO settings (name, value) VALUES (?, ?)', array($sub_field_name, get_nfilter_request_var($sub_field_name))); } } } elseif ($field_array['method'] == 'drop_multi') { if (isset_request_var($field_name)) { if (is_array(get_nfilter_request_var($field_name))) { db_execute_prepared('REPLACE INTO settings (name, value) VALUES (?, ?)', array($field_name, implode(',', get_nfilter_request_var($field_name)))); } else { db_execute_prepared('REPLACE INTO settings (name, value) VALUES (?, ?)', array($field_name, get_nfilter_request_var($field_name))); } } else { db_execute_prepared('REPLACE INTO settings (name, value) VALUES (?, "")', array($field_name)); } } elseif (isset_request_var($field_name)) { if (is_array(get_nfilter_request_var($field_name))) { db_execute_prepared('REPLACE INTO settings (name, value) VALUES (?, ?)', array($field_name, implode(',', get_nfilter_request_var($field_name)))); } else { db_execute_prepared('REPLACE INTO settings (name, value) VALUES (?, ?)', array($field_name, get_nfilter_request_var($field_name))); } } } if (isset_request_var('log_verbosity')) { if (!isset_request_var('selective_debug')) { db_execute('REPLACE INTO settings (name, value) VALUES ("selective_debug", "")'); } if (!isset_request_var('selective_plugin_debug')) { db_execute('REPLACE INTO settings (name, value) VALUES ("selective_plugin_debug", "")'); } } // Disable template user from being able to login if (isset_request_var('user_template') && get_request_var('user_template') > 0) { db_execute_prepared('UPDATE user_auth SET enabled="" WHERE id = ?', array(get_request_var('user_template'))); } // Update snmpcache snmpagent_global_settings_update(); api_plugin_hook_function('global_settings_update'); if (sizeof($errors) == 0) { raise_message(1); } else { raise_message(35); foreach($errors as $error) { raise_message($error); } } /* reset local settings cache so the user sees the new settings */ kill_session_var('sess_config_array'); if (isset_request_var('header') && get_nfilter_request_var('header') == 'false') { header('Location: settings.php?header=false&tab=' . get_request_var('tab')); } else { header('Location: settings.php?tab=' . get_request_var('tab')); } break; case 'send_test': email_test(); break; default: top_header(); /* set the default settings category */ if (!isset_request_var('tab')) { /* there is no selected tab; select the first one */ if (isset($_SESSION['sess_settings_tab'])) { $current_tab = $_SESSION['sess_settings_tab']; } else { $current_tab = array_keys($tabs); $current_tab = $current_tab[0]; } } else { $current_tab = get_request_var('tab'); } // If the tab no longer exists, use the first if (!isset($tabs[$current_tab])) { $current_tab = array_keys($tabs); $current_tab = $current_tab[0]; } $_SESSION['sess_settings_tab'] = $current_tab; $data_collectors = db_fetch_cell('SELECT COUNT(*) FROM poller WHERE disabled=""'); if ($data_collectors > 1) { set_config_option('boost_rrd_update_enable', 'on'); } $system_tabs = array( 'general', 'path', 'snmp', 'poller', 'data', 'visual', 'authentication', 'boost', 'spikes', 'mail' ); /* draw the categories tabs on the top of the page */ print "