can_share = true; $this->can_refresh = true; global $wpdb; if ( isset( $args['schema_name'] ) ) { $schema_name = $args['schema_name']; if ( 'wpdb' === $schema_name ) { $schema_name = $wpdb->dbname; $this->title = "WordPress database ({$schema_name})"; } else { $this->title = "Remote database {$schema_name}"; } } else { $schema_name = $wpdb->dbname; $this->title = "WordPress database ({$schema_name})"; } $this->id = 'dbms' . $this->widget_id . str_replace( ':', '_', $schema_name ); $this->schema_name = $schema_name; $info = static::get_data( $schema_name ); $dbms_status = "\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
Host{$info['hostname']}
Port{$info['port']}
SSL{$info['ssl']}
Version{$info['version']} {$info['version_comment']}
Compiled For{$info['version_compile_os']} ({$info['version_compile_machine']})
Uptime{$info['uptime']}
Server Directories
Log Files
\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t"; $this->content = $dbms_status; } /** * DBMS widget shortcode * * @param WPDA_Widget_Dbms $widget Widget. * @return void */ public function do_shortcode( $widget ) { } /** * Embed DBMS widget * * @param WPDA_Widget_Dbms $widget Widget. * @param string $target_element HTML element id. * @return void */ public function do_embed( $widget, $target_element ) { } /** * DBMS widget javascript code * * @param boolean $is_backend Running in back-end. * @return void */ protected function js( $is_backend = true ) { ?> var action = "wpda_widget_dbms_refresh"; var args_vars = {}; args_vars.wpda_name = "name ); ?>"; args_vars.wp_nonce = "wp_nonce ); ?>"; args_vars.wpda_sonce = ""; args_vars.wpda_action = "vars"; args_vars.wpda_caller = ""; console.log(args_vars); var args_status = Object.assign({}, args_vars); args_status.wpda_action = "status"; var args_info = Object.assign({}, args_vars); args_info.wpda_action = "info"; setTimeout(waitForJUI_id ); ?>, 1000); function waitForJUI_id ); ?>() { if (window.jQuery && typeof jQuery.ui!=="undefined" && jQuery("#id ); ?>")) { jQuery("#id ); ?>").tabs(); // console.log("jQuery UI loaded..."); } else { setTimeout(waitForJUI_id ); ?>, 1000); console.log("Waiting for jQuery UI to be loaded..."); } } jQuery("#id ); ?> :nth-child(2)").on("click", function() { getDbmsVars( jQuery("#id ); ?>-2"), action, args_vars ); }); jQuery("#id ); ?> :nth-child(3)").on("click", function() { getDbmsVars( jQuery("#id ); ?>-3"), action, args_status ); }); jQuery("#id ); ?>-dir").on("click", function(e) { toggleIcon(jQuery(this)); jQuery(this).closest("tbody").find(".dir").toggle(); }); jQuery("#id ); ?>-log").on("click", function() { toggleIcon(jQuery(this)); jQuery(this).closest("tbody").find(".log").toggle(); }); $panel_name, 'schema_name' => $panel_dbms, 'column' => $panel_column, 'position' => $column_position, 'widget_id' => $widget_sequence_nr, )); WPDA::sent_header( 'text/html; charset=UTF-8' ); // phpcs:disable WordPress.Security.EscapeOutput echo $wdg->container(); // phpcs:enable WordPress.Security.EscapeOutput wp_die(); } /** * Refresh widget via ajax * * @return void */ public static function refresh() { $is_header_send = false; $schema_name = null; $widget_name = ( isset( $_POST['wpda_name'] ) ? sanitize_text_field( wp_unslash( $_POST['wpda_name'] ) ) : null ); if ( !$is_header_send ) { WPDA::sent_header( 'application/json' ); } if ( !isset( $_REQUEST['wpda_action'] ) ) { // phpcs:disable WordPress.Security.EscapeOutput echo static::msg( 'ERROR', 'Invalid arguments' ); // phpcs:enable WordPress.Security.EscapeOutput wp_die(); } if ( null === $schema_name ) { $widgets = get_user_meta( WPDA::get_current_user_id(), WPDA_Dashboard::USER_DASHBOARD ); $widget_found = false; foreach ( $widgets as $widget ) { if ( isset( $widget[$widget_name] ) ) { $schema_name = $widgets[$widget_name]['dbsDbms']; $widget_found = true; } } if ( !$widget_found ) { // phpcs:disable WordPress.Security.EscapeOutput echo static::msg( 'ERROR', 'Invalid arguments' ); // phpcs:enable WordPress.Security.EscapeOutput wp_die(); } } switch ( $_REQUEST['wpda_action'] ) { case 'vars': static::get_vars( $schema_name ); break; case 'status': static::get_status( $schema_name ); break; case 'info': static::get_info( $schema_name ); break; default: // phpcs:disable WordPress.Security.EscapeOutput echo static::msg( 'ERROR', 'Invalid arguments' ); // phpcs:enable WordPress.Security.EscapeOutput wp_die(); } } /** * Get DBMS data * * @param string $schema_name Database schema name. * @return array */ protected static function get_data( $schema_name ) { return array( 'hostname' => WPDA::get_dbms_var( 'hostname', $schema_name ), 'ssl' => WPDA::get_dbms_var( 'have_ssl', $schema_name ), 'port' => WPDA::get_dbms_var( 'port', $schema_name ), 'version' => WPDA::get_dbms_var( 'version', $schema_name ), 'version_comment' => WPDA::get_dbms_var( 'version_comment', $schema_name ), 'version_compile_os' => WPDA::get_dbms_var( 'version_compile_os', $schema_name ), 'version_compile_machine' => WPDA::get_dbms_var( 'version_compile_machine', $schema_name ), 'uptime' => WPDA::secondsToTime( WPDA::get_dbms_global( 'uptime', $schema_name ) ), 'basedir' => WPDA::get_dbms_var( 'basedir', $schema_name ), 'datadir' => WPDA::get_dbms_var( 'datadir', $schema_name ), 'plugin_dir' => WPDA::get_dbms_var( 'plugin_dir', $schema_name ), 'tmpdir' => WPDA::get_dbms_var( 'tmpdir', $schema_name ), 'log_error' => WPDA::get_dbms_var( 'log_error', $schema_name ), 'general_log' => WPDA::get_dbms_var( 'general_log', $schema_name ), 'general_log_file' => WPDA::get_dbms_var( 'general_log_file', $schema_name ), 'slow_query_log' => WPDA::get_dbms_var( 'slow_query_log', $schema_name ), 'slow_query_log_file' => WPDA::get_dbms_var( 'slow_query_log_file', $schema_name ), ); } /** * Get DBMS vars * * @param string $schema_name Database schema name. * @return void */ protected static function get_vars( $schema_name ) { $vars = WPDA::get_dbms_var( null, $schema_name ); $json = array(); foreach ( $vars as $var ) { $json[$var[0]] = $var[1]; } echo json_encode( $json ); // phpcs:ignore wp_die(); } /** * Get DBMS status * * @param string $schema_name Database schema name. * @return void */ protected static function get_status( $schema_name ) { $vars = WPDA::get_dbms_global( null, $schema_name ); $json = array(); foreach ( $vars as $var ) { $json[$var[0]] = $var[1]; } echo json_encode( $json ); // phpcs:ignore wp_die(); } /**\ * Get DBMS info * * @param string $schema_name Database schema name. * @return void */ protected static function get_info( $schema_name ) { // phpcs:disable WordPress.Security.ValidatedSanitizedInput.InputNotValidated $schema_name = sanitize_text_field( wp_unslash( $_REQUEST['wpda_schemaname'] ) ); echo json_encode( static::get_data( $schema_name ) ); // phpcs:enable WordPress.Security.ValidatedSanitizedInput.InputNotValidated wp_die(); } } // phpcs:enable WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing