From 26d4a842c6b26be98fd7f5c153cdee611a7fffde Mon Sep 17 00:00:00 2001 From: joe9663 Date: Fri, 8 Jul 2022 11:32:46 -0400 Subject: [PATCH 1/7] fixes typo in $has_changed for pre/post sha comparison --- admin/class-boldgrid-backup-admin-restore-helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/class-boldgrid-backup-admin-restore-helper.php b/admin/class-boldgrid-backup-admin-restore-helper.php index d78bf5de..02ce2e26 100644 --- a/admin/class-boldgrid-backup-admin-restore-helper.php +++ b/admin/class-boldgrid-backup-admin-restore-helper.php @@ -137,7 +137,7 @@ public function post_restore( $info ) { // Determine if the file was changed during restoration. $post_sha1 = sha1_file( $original ); - $has_changed = $this->monitors_files[ $key ]['pre_sha1'] !== $post_sha1; + $has_changed = $this->monitor_files[ $key ]['pre_sha1'] !== $post_sha1; if ( $has_changed ) { /** From 9045de6d0955175ceabb8ff793b1e6f409d42341 Mon Sep 17 00:00:00 2001 From: joe9663 Date: Fri, 8 Jul 2022 13:38:53 -0400 Subject: [PATCH 2/7] reworks db-dump to always fetch db port number for some custom configurations --- admin/class-boldgrid-backup-admin-db-dump.php | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/admin/class-boldgrid-backup-admin-db-dump.php b/admin/class-boldgrid-backup-admin-db-dump.php index 7682a847..4210e693 100644 --- a/admin/class-boldgrid-backup-admin-db-dump.php +++ b/admin/class-boldgrid-backup-admin-db-dump.php @@ -154,47 +154,49 @@ public function dump( $file ) { public function get_connection_string( $db_host = null, $db_name = null ) { $params = array(); + $has_socket = false; + // Configure parameters passed in. $db_name = empty( $db_name ) ? DB_NAME : $db_name; $db_host = empty( $db_host ) ? DB_HOST : $db_host; $db_host = explode( ':', $db_host ); + if ( 'sock' === pathinfo( $db_host[0], PATHINFO_EXTENSION ) || 'sock' === pathinfo( $db_host[1], PATHINFO_EXTENSION ) ) { + $has_socket = true; + } + // Parse info and get hostname, port, and socket. Not all required. See comments below. - switch ( count( $db_host ) ) { + switch ( $has_socket ) { /* * Examples: * - * # localhost + * # localhost:/var/lib/mysql/mysql.sock * # /var/lib/mysql/mysql.sock */ - case 1: - $has_socket = 'sock' === pathinfo( $db_host[0], PATHINFO_EXTENSION ); - - if ( $has_socket ) { - $params['unix_socket'] = $db_host[0]; + case true: + if ( count( $db_host ) === 2 ) { + $params['host'] = $db_host[0]; + $params['unix_socket'] = $db_host[1]; } else { - $params['host'] = $db_host[0]; + $params['unix_socket'] = $db_host[0]; } break; /* * Examples: * - * # localhost:/var/lib/mysql/mysql.sock + * # localhost * # localhost:3306 */ - case 2: - $has_socket = 'sock' === pathinfo( $db_host[1], PATHINFO_EXTENSION ); - $has_port = is_numeric( $db_host[1] ); + case false: + function get_db_port() { + global $wpdb; + return $wpdb->get_row( "SHOW GLOBAL VARIABLES LIKE 'PORT'" ); + } $params['host'] = $db_host[0]; - - if ( $has_socket ) { - $params['unix_socket'] = $db_host[1]; - } elseif ( $has_port ) { - $params['port'] = $db_host[1]; - } - + $params['port'] = get_db_port()->Value; + break; } From 377521a177f6aac4a48f200be89e7a1894cf58a4 Mon Sep 17 00:00:00 2001 From: joe9663 Date: Fri, 8 Jul 2022 13:53:41 -0400 Subject: [PATCH 3/7] add checks for unix-socket to db-import and modifies PDO construction as needed --- .../class-boldgrid-backup-admin-db-import.php | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/admin/class-boldgrid-backup-admin-db-import.php b/admin/class-boldgrid-backup-admin-db-import.php index 2453a703..4491cbad 100644 --- a/admin/class-boldgrid-backup-admin-db-import.php +++ b/admin/class-boldgrid-backup-admin-db-import.php @@ -150,8 +150,48 @@ public function import_lines( $lines ) { return false; } - /* phpcs:disable WordPress.DB.RestrictedClasses */ - $db = new PDO( sprintf( 'mysql:host=%1$s;dbname=%2$s;', DB_HOST, DB_NAME ), DB_USER, DB_PASSWORD ); + // Parameters to check the DB_HOST setup + $db_host = empty( $db_host ) ? DB_HOST : $db_host; + $db_host = explode( ':', $db_host ); + $has_socket = false; + + if ( 'sock' === pathinfo( $db_host[0], PATHINFO_EXTENSION ) || 'sock' === pathinfo( $db_host[1], PATHINFO_EXTENSION ) ) { + $has_socket = true; + } + + switch ( $has_socket ) { + + /* + * Examples: + * + * # localhost:/var/lib/mysql/mysql.sock + * # /var/lib/mysql/mysql.sock + */ + + case true: + + if ( count( $db_host ) === 2 ) { + $db = new PDO( sprintf( 'mysql:unix-socket=%1$s;dbname=%2$s;', $db_host[1], DB_NAME ), DB_USER, DB_PASSWORD ); + } else { + $db = new PDO( sprintf( 'mysql:unix-socket=%1$s;dbname=%2$s;', $db_host[0], DB_NAME ), DB_USER, DB_PASSWORD ); + } + + break; + + /* + * Examples: + * + * # localhost + * # localhost:3306 + */ + + case false: + + $db = new PDO( sprintf( 'mysql:host=%1$s;dbname=%2$s;', DB_HOST, DB_NAME ), DB_USER, DB_PASSWORD ); + + break; + + } $templine = ''; From 257e81fc19953f4bdc382c48e09e064557fff4aa Mon Sep 17 00:00:00 2001 From: joe9663 Date: Thu, 4 Aug 2022 15:49:42 -0400 Subject: [PATCH 4/7] reworks get_connection_string using parse_db_host. removes duplicate code in db-import --- admin/class-boldgrid-backup-admin-db-dump.php | 54 +++++-------------- .../class-boldgrid-backup-admin-db-import.php | 43 ++------------- 2 files changed, 17 insertions(+), 80 deletions(-) diff --git a/admin/class-boldgrid-backup-admin-db-dump.php b/admin/class-boldgrid-backup-admin-db-dump.php index 4210e693..ead214e4 100644 --- a/admin/class-boldgrid-backup-admin-db-dump.php +++ b/admin/class-boldgrid-backup-admin-db-dump.php @@ -152,52 +152,26 @@ public function dump( $file ) { * @return string */ public function get_connection_string( $db_host = null, $db_name = null ) { - $params = array(); + global $wpdb; - $has_socket = false; + function get_db_port() { + return $wpdb->get_row( "SHOW GLOBAL VARIABLES LIKE 'PORT'" ); + } - // Configure parameters passed in. - $db_name = empty( $db_name ) ? DB_NAME : $db_name; - $db_host = empty( $db_host ) ? DB_HOST : $db_host; - $db_host = explode( ':', $db_host ); + $params = array(); - if ( 'sock' === pathinfo( $db_host[0], PATHINFO_EXTENSION ) || 'sock' === pathinfo( $db_host[1], PATHINFO_EXTENSION ) ) { - $has_socket = true; + $db_host = $wpdb->parse_db_host( DB_HOST ); + + if ( $db_host[0] ) { + $params['host'] = $db_host[0]; } - // Parse info and get hostname, port, and socket. Not all required. See comments below. - switch ( $has_socket ) { - /* - * Examples: - * - * # localhost:/var/lib/mysql/mysql.sock - * # /var/lib/mysql/mysql.sock - */ - case true: - if ( count( $db_host ) === 2 ) { - $params['host'] = $db_host[0]; - $params['unix_socket'] = $db_host[1]; - } else { - $params['unix_socket'] = $db_host[0]; - } + if ( $db_host[0] && ! $db_host[2] ) { + $params['port'] = get_db_port()->Value; + } - break; - /* - * Examples: - * - * # localhost - * # localhost:3306 - */ - case false: - function get_db_port() { - global $wpdb; - return $wpdb->get_row( "SHOW GLOBAL VARIABLES LIKE 'PORT'" ); - } - - $params['host'] = $db_host[0]; - $params['port'] = get_db_port()->Value; - - break; + if ( $db_host[2] ) { + $params['unix-socket'] = $db_host[2]; } $connection_string = 'mysql:'; diff --git a/admin/class-boldgrid-backup-admin-db-import.php b/admin/class-boldgrid-backup-admin-db-import.php index 4491cbad..e33f6dd6 100644 --- a/admin/class-boldgrid-backup-admin-db-import.php +++ b/admin/class-boldgrid-backup-admin-db-import.php @@ -150,48 +150,11 @@ public function import_lines( $lines ) { return false; } - // Parameters to check the DB_HOST setup - $db_host = empty( $db_host ) ? DB_HOST : $db_host; - $db_host = explode( ':', $db_host ); - $has_socket = false; - - if ( 'sock' === pathinfo( $db_host[0], PATHINFO_EXTENSION ) || 'sock' === pathinfo( $db_host[1], PATHINFO_EXTENSION ) ) { - $has_socket = true; - } - - switch ( $has_socket ) { - - /* - * Examples: - * - * # localhost:/var/lib/mysql/mysql.sock - * # /var/lib/mysql/mysql.sock - */ - - case true: - - if ( count( $db_host ) === 2 ) { - $db = new PDO( sprintf( 'mysql:unix-socket=%1$s;dbname=%2$s;', $db_host[1], DB_NAME ), DB_USER, DB_PASSWORD ); - } else { - $db = new PDO( sprintf( 'mysql:unix-socket=%1$s;dbname=%2$s;', $db_host[0], DB_NAME ), DB_USER, DB_PASSWORD ); - } - - break; - - /* - * Examples: - * - * # localhost - * # localhost:3306 - */ - - case false: + $core = apply_filters( 'boldgrid_backup_get_core', null ); - $db = new PDO( sprintf( 'mysql:host=%1$s;dbname=%2$s;', DB_HOST, DB_NAME ), DB_USER, DB_PASSWORD ); - - break; + $db_connection_string = $core->db_dump->get_connection_string(); - } + $db = new PDO( $db_connection_string, DB_USER, DB_PASSWORD ); $templine = ''; From 02f6a96357487e2a5dc73d77e9f5f5246d1336d2 Mon Sep 17 00:00:00 2001 From: joe9663 Date: Fri, 5 Aug 2022 12:21:30 -0400 Subject: [PATCH 5/7] makes get_db_port a separate method out of get_connection_string --- admin/class-boldgrid-backup-admin-db-dump.php | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/admin/class-boldgrid-backup-admin-db-dump.php b/admin/class-boldgrid-backup-admin-db-dump.php index ead214e4..601dc8f0 100644 --- a/admin/class-boldgrid-backup-admin-db-dump.php +++ b/admin/class-boldgrid-backup-admin-db-dump.php @@ -142,6 +142,17 @@ public function dump( $file ) { return true; } + /** + * Fetch MySQL port number from global DB variables. + */ + public function get_db_port() { + if ( ! $wpdb ) { + global $wpdb; + } + + return $wpdb->get_row( "SHOW GLOBAL VARIABLES LIKE 'PORT'" )->Value; + } + /** * Get our PDO DSN connection string. * @@ -154,20 +165,16 @@ public function dump( $file ) { public function get_connection_string( $db_host = null, $db_name = null ) { global $wpdb; - function get_db_port() { - return $wpdb->get_row( "SHOW GLOBAL VARIABLES LIKE 'PORT'" ); - } - - $params = array(); + $params = array(); - $db_host = $wpdb->parse_db_host( DB_HOST ); + $db_host = $wpdb->parse_db_host( DB_HOST ); - if ( $db_host[0] ) { - $params['host'] = $db_host[0]; - } + if ( $db_host[0] ) { + $params['host'] = $db_host[0]; + } if ( $db_host[0] && ! $db_host[2] ) { - $params['port'] = get_db_port()->Value; + $params['port'] = $this->get_db_port(); } if ( $db_host[2] ) { From a1889fac6c171fdc4e0c82209ffcb789c787b80a Mon Sep 17 00:00:00 2001 From: joe9663 Date: Fri, 5 Aug 2022 12:51:39 -0400 Subject: [PATCH 6/7] fixes missing configurations for db_name and db_host in get_connection_string --- admin/class-boldgrid-backup-admin-db-dump.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/admin/class-boldgrid-backup-admin-db-dump.php b/admin/class-boldgrid-backup-admin-db-dump.php index 601dc8f0..c05a148e 100644 --- a/admin/class-boldgrid-backup-admin-db-dump.php +++ b/admin/class-boldgrid-backup-admin-db-dump.php @@ -146,7 +146,7 @@ public function dump( $file ) { * Fetch MySQL port number from global DB variables. */ public function get_db_port() { - if ( ! $wpdb ) { + if ( ! isset( $wpdb ) ) { global $wpdb; } @@ -165,20 +165,24 @@ public function get_db_port() { public function get_connection_string( $db_host = null, $db_name = null ) { global $wpdb; + // Configure parameters passed in. + $db_name = empty( $db_name ) ? DB_NAME : $db_name; + $db_host = empty( $db_host ) ? DB_HOST : $db_host; + $params = array(); - $db_host = $wpdb->parse_db_host( DB_HOST ); + $db_host_params = $wpdb->parse_db_host( $db_host ); - if ( $db_host[0] ) { - $params['host'] = $db_host[0]; + if ( $db_host_params[0] ) { + $params['host'] = $db_host_params[0]; } - if ( $db_host[0] && ! $db_host[2] ) { + if ( $db_host_params[0] && ! $db_host_params[2] ) { $params['port'] = $this->get_db_port(); } - if ( $db_host[2] ) { - $params['unix-socket'] = $db_host[2]; + if ( $db_host_params[2] ) { + $params['unix-socket'] = $db_host_params[2]; } $connection_string = 'mysql:'; From 8b3944e5b8a0ce6637aa12cc304e06513c3810a3 Mon Sep 17 00:00:00 2001 From: joe9663 Date: Thu, 18 Aug 2022 11:00:08 -0400 Subject: [PATCH 7/7] changes get_connection_string in dp-import to a static call --- admin/class-boldgrid-backup-admin-db-dump.php | 2 +- admin/class-boldgrid-backup-admin-db-import.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/class-boldgrid-backup-admin-db-dump.php b/admin/class-boldgrid-backup-admin-db-dump.php index c05a148e..7bc4c96d 100644 --- a/admin/class-boldgrid-backup-admin-db-dump.php +++ b/admin/class-boldgrid-backup-admin-db-dump.php @@ -189,7 +189,7 @@ public function get_connection_string( $db_host = null, $db_name = null ) { foreach ( $params as $key => $value ) { $connection_string .= $key . '=' . $value . ';'; } - $connection_string .= 'dbname=' . $db_name; + $connection_string .= 'dbname=' . $db_name . ';'; return $connection_string; } diff --git a/admin/class-boldgrid-backup-admin-db-import.php b/admin/class-boldgrid-backup-admin-db-import.php index e33f6dd6..f3708aa5 100644 --- a/admin/class-boldgrid-backup-admin-db-import.php +++ b/admin/class-boldgrid-backup-admin-db-import.php @@ -152,7 +152,7 @@ public function import_lines( $lines ) { $core = apply_filters( 'boldgrid_backup_get_core', null ); - $db_connection_string = $core->db_dump->get_connection_string(); + $db_connection_string = Boldgrid_Backup_Admin_Db_Dump::get_connection_string(); $db = new PDO( $db_connection_string, DB_USER, DB_PASSWORD );