array('regexp' => '/^([a-z_A-Z]+)$/'))); /* ==================================================== */ /* present a tabbed interface */ $tabs = array( 'general' => array( 'display' => __('General'), 'url' => $config['url_path'] . 'auth_profile.php?tab=general&header=false' ) ); $tabs = api_plugin_hook_function('auth_profile_tabs', $tabs); /* set the default tab */ load_current_session_value('tab', 'sess_profile_tabs', 'general'); $current_tab = get_nfilter_request_var('tab'); if (cacti_sizeof($tabs) > 1) { $i = 0; /* draw the tabs */ print "
\n"; } if ($current_tab == 'general') { settings(); settings_javascript(); } else { api_plugin_hook_function('auth_profile_run_action', get_request_var('tab')); } bottom_footer(); break; } /* -------------------------- The Save Function -------------------------- */ function api_auth_logout_everywhere() { $user = $_SESSION['sess_user_id']; if (!empty($user)) { db_execute_prepared('DELETE FROM user_auth_cache WHERE user_id = ?', array($user)); } } function api_auth_clear_user_settings() { $user = $_SESSION['sess_user_id']; if (!empty($user)) { if (isset_request_var('tab') && get_nfilter_request_var('tab') == 'general') { db_execute_prepared('DELETE FROM settings_user WHERE user_id = ?', array($user)); kill_session_var('sess_user_config_array'); } elseif (isset_request_var('tab')) { api_plugin_hook('auth_profile_reset'); } raise_message('37'); } } function api_auth_clear_user_setting($name) { global $settings_user; $user = $_SESSION['sess_user_id']; if (read_config_option('client_timezone_support') == '0') { unset($settings_user['client_timezone_support']); } if (!empty($user)) { if (isset_request_var('tab') && get_nfilter_request_var('tab') == 'general') { db_execute_prepared('DELETE FROM settings_user WHERE user_id = ? AND name = ?', array($user, $name)); foreach($settings_user as $tab => $settings) { if (isset($settings[$name])) { if (isset($settings[$name]['default'])) { db_execute_prepared('INSERT INTO settings_user (name, value, user_id) VALUES (?, ?, ?)', array($name, $settings[$name]['default'], $user)); print $settings[$name]['default']; kill_session_var('sess_user_config_array'); break; } } } } else { api_plugin_hook_function('auth_profile_reset_value', $name); } } } function api_auth_update_user_setting($name, $value) { global $settings_user; $user = $_SESSION['sess_user_id']; if (!empty($user)) { if ($name == 'full_name' || $name == 'email_address') { db_execute_prepared("UPDATE user_auth SET $name = ? WHERE id = ?", array($value, $user)); } else { foreach($settings_user as $tab => $settings) { if (isset($settings[$name])) { db_execute_prepared('REPLACE INTO settings_user (name, value, user_id) VALUES (?, ?, ?)', array($name, $value, $user)); kill_session_var('sess_user_config_array'); kill_session_var('selected_theme'); kill_session_var('sess_user_language'); break; } } } } } function form_save() { global $settings_user; // Save the users profile information if (isset_request_var('full_name') && isset_request_var('email_address') && isset($_SESSION['sess_user_id'])) { db_execute_prepared("UPDATE user_auth SET full_name = ?, email_address = ? WHERE id = ?", array( get_nfilter_request_var('full_name'), get_nfilter_request_var('email_address'), $_SESSION['sess_user_id'] ) ); } $errors = array(); // Save the users graph settings if they have permission if (is_view_allowed('graph_settings') == true && isset_request_var('tab') && get_nfilter_request_var('tab') == 'general') { save_user_settings($_SESSION['sess_user_id']); } elseif (isset_request_var('tab')) { api_plugin_hook('auth_profile_save'); } if (cacti_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_user_language'); kill_session_var('sess_user_config_array'); kill_session_var('selected_theme'); } /* -------------------------- User Settings Functions -------------------------- */ function settings() { global $tabs_graphs, $settings_user, $current_user, $graph_views, $current_user; /* you cannot have per-user graph settings if cacti's user management is not turned on */ if (read_config_option('auth_method') == 0) { raise_message(6); return; } if (isset($_SERVER['HTTP_REFERER'])) { $referer = $_SERVER['HTTP_REFERER']; if (strpos($referer, 'auth_profile.php') === false) { $timespan_sel_pos = strpos($referer, '&predefined_timespan'); if ($timespan_sel_pos) { $referer = substr($referer, 0, $timespan_sel_pos); } $_SESSION['profile_referer'] = $referer; } } elseif (!isset($_SESSION['profile_referer'])) { $_SESSION['profile_referer'] = 'graph_view.php'; } form_start('auth_profile.php', 'chk'); html_start_box(__('User Account Details'), '100%', true, '3', 'center', ''); $current_user = db_fetch_row_prepared('SELECT * FROM user_auth WHERE id = ?', array($_SESSION['sess_user_id'])); if (!cacti_sizeof($current_user)) { return; } // Set the graph views the user has permission to unset($graph_views); if (is_view_allowed('show_tree')) { $graph_views[1] = __('Tree View'); } if (is_view_allowed('show_list')) { $graph_views[2] = __('List View'); } if (is_view_allowed('show_preview')) { $graph_views[2] = __('Preview View'); } if (cacti_sizeof($graph_views)) { $settings_user['general']['default_view_mode']['array'] = $graph_views; } else { unset($settings_user['general']['default_view_mode']); } /* file: user_admin.php, action: user_edit (host) */ $fields_user = array( 'username' => array( 'method' => 'value', 'friendly_name' => __('User Name'), 'description' => __('The login name for this user.'), 'value' => '|arg1:username|', 'max_length' => '40', 'size' => '40' ), 'full_name' => array( 'method' => 'textbox', 'friendly_name' => __('Full Name'), 'description' => __('A more descriptive name for this user, that can include spaces or special characters.'), 'value' => '|arg1:full_name|', 'max_length' => '120', 'size' => '60' ), 'email_address' => array( 'method' => 'textbox', 'friendly_name' => __('Email Address'), 'description' => __('An Email Address you be reached at.'), 'value' => '|arg1:email_address|', 'max_length' => '60', 'size' => '60' ), 'clear_settings' => array( 'method' => 'button', 'friendly_name' => __('Clear User Settings'), 'description' => __('Return all User Settings to Default values.'), 'value' => __('Clear User Settings'), 'on_click' => 'clearUserSettings()' ), 'private_data' => array( 'method' => 'button', 'friendly_name' => __('Clear Private Data'), 'description' => __('Clear Private Data including Column sizing.'), 'value' => __('Clear Private Data'), 'on_click' => 'clearPrivateData()' ) ); if (read_config_option('auth_cache_enabled') == 'on') { $fields_user += array( 'logout_everywhere' => array( 'method' => 'button', 'friendly_name' => __('Logout Everywhere'), 'description' => __('Clear all your Login Session Tokens.'), 'value' => __('Logout Everywhere'), 'on_click' => 'logoutEverywhere()' ) ); } draw_edit_form( array( 'config' => array('no_form_tag' => true), 'fields' => inject_form_variables($fields_user, (isset($current_user) ? $current_user : array())) ) ); html_end_box(true, true); if (is_view_allowed('graph_settings') == true) { if (read_config_option('auth_method') != 0) { $settings_user['tree']['default_tree_id']['sql'] = get_allowed_trees(false, true); } html_start_box(__('User Settings'), '100%', true, '3', 'center', ''); foreach ($settings_user as $tab_short_name => $tab_fields) { $collapsible = true; print "
" . $tabs_graphs[$tab_short_name] . ($collapsible ? "
":"") . "
\n"; $form_array = array(); foreach ($tab_fields as $field_name => $field_array) { $form_array += array($field_name => $tab_fields[$field_name]); if ((isset($field_array['items'])) && (is_array($field_array['items']))) { foreach ($field_array['items'] as $sub_field_name => $sub_field_array) { if (graph_config_value_exists($sub_field_name, $_SESSION['sess_user_id'])) { $form_array[$field_name]['items'][$sub_field_name]['form_id'] = 1; } $form_array[$field_name]['items'][$sub_field_name]['value'] = db_fetch_cell_prepared('SELECT value FROM settings_user WHERE name = ? AND user_id = ?', array($sub_field_name, $_SESSION['sess_user_id'])); } } else { if (graph_config_value_exists($field_name, $_SESSION['sess_user_id'])) { $form_array[$field_name]['form_id'] = 1; } $user_row = db_fetch_row_prepared('SELECT value FROM settings_user WHERE name = ? AND user_id = ?', array($field_name, $_SESSION['sess_user_id'])); if (cacti_sizeof($user_row)) { $form_array[$field_name]['user_set'] = true; $form_array[$field_name]['value'] = $user_row['value']; } else { $form_array[$field_name]['user_set'] = false; $form_array[$field_name]['value'] = null; } } } draw_edit_form( array( 'config' => array( 'no_form_tag' => true ), 'fields' => $form_array ) ); } print "\n"; html_end_box(true, true); } form_hidden_box('save_component_graph_config','1',''); form_save_buttons(array(array('id' => 'return', 'value' => __esc('Return')))); form_end(); } function settings_javascript() { global $config; ?>