dbname; } $is_wp_database = $database === $wpdb->dbname; if ( isset( $_REQUEST['action'] ) ) { $action = sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ); // input var okay. // Security check. $wp_nonce = isset( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ) : ''; // input var okay. if ( ! wp_verify_nonce( $wp_nonce, 'wpda-back-end-settings' ) ) { wp_die( esc_attr__( 'ERROR: Not authorized', 'wp-data-access' ) ); } if ( 'save' === $action ) { // Save options. if ( $is_wp_database ) { WPDA::set_option( WPDA::OPTION_BE_TABLE_ACCESS, isset( $_REQUEST['table_access'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['table_access'] ) ) : null // input var okay. ); } else { update_option( WPDA::BACKEND_OPTIONNAME_DATABASE_ACCESS . $database, isset( $_REQUEST['table_access'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['table_access'] ) ) : null // input var okay. );} $wpda_hide_manage_link = array(); if ( isset( $_REQUEST['wpda_hide_manage_link'] ) ) { foreach ( $_REQUEST['wpda_hide_manage_link'] as $userid ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput if ( is_numeric( $userid ) ) { $wpda_hide_manage_link[] = sanitize_text_field( wp_unslash( $userid ) ); } } } update_option( 'wpda_hide_manage_link', $wpda_hide_manage_link ); $table_access_selected_new_value = isset( $_REQUEST['table_access_selected'] ) ? WPDA::sanitize_text_field_array( $_REQUEST['table_access_selected'] ) : null; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput if ( is_array( $table_access_selected_new_value ) ) { // Check the requested table names for sql injection. This is simply done by checking if the table // name exists in our WordPress database. $table_access_selected_new_value_checked = array(); foreach ( $table_access_selected_new_value as $key => $value ) { $wpda_dictionary_checks = new WPDA_Dictionary_Exist( $database, $value ); if ( $wpda_dictionary_checks->table_exists( false ) ) { // Add existing table to list. $table_access_selected_new_value_checked[ $key ] = $value; } else { // An invalid table name was provided. Might be an sql injection attack or an invalid state. wp_die( esc_attr__( 'ERROR: Invalid table name', 'wp-data-access' ) ); } } } else { $table_access_selected_new_value_checked = ''; } if ( $is_wp_database ) { WPDA::set_option( WPDA::OPTION_BE_TABLE_ACCESS_SELECTED, $table_access_selected_new_value_checked ); } else { update_option( WPDA::BACKEND_OPTIONNAME_DATABASE_SELECTED . $database, $table_access_selected_new_value_checked ); } if ( isset( $_REQUEST['wpda_default_user'] ) && isset( $_REQUEST['wpda_default_database'] ) && '' !== $_REQUEST['wpda_default_user'] && '' !== $_REQUEST['wpda_default_database'] ) { $default_databases = get_option( 'wpda_default_database' ); if ( false === $default_databases ) { $default_databases = array(); } $wpda_default_user = sanitize_text_field( wp_unslash( $_REQUEST['wpda_default_user'] ) ); // input var okay. $wpda_default_database = sanitize_text_field( wp_unslash( $_REQUEST['wpda_default_database'] ) ); // input var okay. $default_databases[ $wpda_default_user ] = $wpda_default_database; update_option( 'wpda_default_database', $default_databases ); } } elseif ( 'setdefaults' === $action ) { // Set all back-end settings back to default. if ( $is_wp_database ) { WPDA::set_option( WPDA::OPTION_BE_TABLE_ACCESS ); WPDA::set_option( WPDA::OPTION_BE_TABLE_ACCESS_SELECTED ); } else { update_option( WPDA::BACKEND_OPTIONNAME_DATABASE_ACCESS . $database, 'show' ); update_option( WPDA::BACKEND_OPTIONNAME_DATABASE_SELECTED . $database, '' ); } update_option( 'wpda_hide_manage_link', array() ); update_option( 'wpda_default_database', array() ); } elseif ( 'delete_default_user_database' === $action ) { if ( isset( $_REQUEST['wpda_default_database_delete'] ) ) { $delete_user_id = sanitize_text_field( wp_unslash( $_REQUEST['wpda_default_database_delete'] ) ); // input var okay. $default_databases = get_option( 'wpda_default_database' ); if ( false !== $default_databases && isset( $default_databases[ $delete_user_id ] ) ) { unset( $default_databases[ $delete_user_id ] ); update_option( 'wpda_default_database', $default_databases ); } } } $msg = new WPDA_Message_Box( array( 'message_text' => __( 'Settings saved', 'wp-data-access' ), ) ); $msg->box(); } // Get options. if ( $is_wp_database ) { $table_access = WPDA::get_option( WPDA::OPTION_BE_TABLE_ACCESS ); $table_access_selected = WPDA::get_option( WPDA::OPTION_BE_TABLE_ACCESS_SELECTED ); } else { $table_access = get_option( WPDA::BACKEND_OPTIONNAME_DATABASE_ACCESS . $database ); if ( false === $table_access ) { $table_access = 'show'; } $table_access_selected = get_option( WPDA::BACKEND_OPTIONNAME_DATABASE_SELECTED . $database ); if ( false === $table_access_selected ) { $table_access_selected = ''; } } if ( is_array( $table_access_selected ) ) { // Convert table for simple access. $table_access_selected_by_name = array(); foreach ( $table_access_selected as $key => $value ) { $table_access_selected_by_name[ $value ] = true; } } $wpda_hide_manage_link = get_option( 'wpda_hide_manage_link' ); if ( is_array( $wpda_hide_manage_link ) ) { $wpda_hide_manage_list = array_flip( $wpda_hide_manage_link ); // phpcs:ignore -- 8.1 proof } else { $wpda_hide_manage_list = array(); } ?>




>
Removes the manage link in the Data Explorer for selected admin users
Hold control key to deselect or select multiple users
Non admin users have no access by default
Every administrator can change this option
data->ID ] = $user->data->user_login; } $databases = array(); $db_databases = WPDA_Dictionary_Lists::get_db_schemas(); foreach ( $db_databases as $db_database ) { $databases[ $db_database['schema_name'] ] = true; } $default_databases = get_option( 'wpda_default_database' ); if ( false === $default_databases ) { $default_databases = array(); } if ( is_array( $default_databases ) ) { foreach ( $default_databases as $user_id => $database ) { ?>
>
0 ) { // phpcs:ignore -- 8.1 proof echo '
'; } ?>