From 5de14de89f7028d0112caa60598fa4aa23c5b229 Mon Sep 17 00:00:00 2001 From: Bogdan Preda Date: Tue, 2 Apr 2024 12:12:56 +0300 Subject: [PATCH 1/4] fix: rollback for themes WP6.3 References: Codeinwp/neve-pro-addon#2791 --- src/Modules/Rollback.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Modules/Rollback.php b/src/Modules/Rollback.php index 7b28d6d7..18c5ef29 100644 --- a/src/Modules/Rollback.php +++ b/src/Modules/Rollback.php @@ -261,7 +261,8 @@ private function start_rollback_theme() { add_filter( 'update_theme_complete_actions', array( $this, 'alter_links_theme_upgrade' ) ); $rollback = $this->get_rollback(); $transient = get_site_transient( 'update_themes' ); - $folder = $this->product->get_slug(); + $slug = $this->product->get_slug(); + $folder = $slug; $version = $rollback['version']; $temp_array = array( 'new_version' => $version, @@ -285,7 +286,7 @@ private function start_rollback_theme() { $url = 'update.php?action=upgrade-theme&theme=' . urlencode( $theme ); $upgrader = new \Theme_Upgrader( new \Theme_Upgrader_Skin( compact( 'title', 'nonce', 'url', 'theme' ) ) ); - $upgrader->upgrade( $theme ); + $upgrader->upgrade( $slug ); delete_transient( $this->product->get_key() . '_warning_rollback' ); wp_die( '', From d5d744cf1d3869d75533ecb4cb2e4aec8d59ef22 Mon Sep 17 00:00:00 2001 From: Bogdan Preda Date: Tue, 2 Apr 2024 12:18:30 +0300 Subject: [PATCH 2/4] chore: code style --- src/Modules/Rollback.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Modules/Rollback.php b/src/Modules/Rollback.php index 18c5ef29..8472592e 100644 --- a/src/Modules/Rollback.php +++ b/src/Modules/Rollback.php @@ -261,7 +261,7 @@ private function start_rollback_theme() { add_filter( 'update_theme_complete_actions', array( $this, 'alter_links_theme_upgrade' ) ); $rollback = $this->get_rollback(); $transient = get_site_transient( 'update_themes' ); - $slug = $this->product->get_slug(); + $slug = $this->product->get_slug(); $folder = $slug; $version = $rollback['version']; $temp_array = array( From d64848d926590b735506a09a4494bfbcf5f6f319 Mon Sep 17 00:00:00 2001 From: Bogdan Preda Date: Tue, 2 Apr 2024 13:35:50 +0300 Subject: [PATCH 3/4] fix: use filter during upgrade --- load.php | 2 +- src/Modules/Rollback.php | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/load.php b/load.php index 07ce7591..b1cd1570 100644 --- a/load.php +++ b/load.php @@ -14,7 +14,7 @@ return; } // Current SDK version and path. -$themeisle_sdk_version = '3.3.16'; +$themeisle_sdk_version = '3.3.18'; $themeisle_sdk_path = dirname( __FILE__ ); global $themeisle_sdk_max_version; diff --git a/src/Modules/Rollback.php b/src/Modules/Rollback.php index 8472592e..d0d38619 100644 --- a/src/Modules/Rollback.php +++ b/src/Modules/Rollback.php @@ -261,8 +261,7 @@ private function start_rollback_theme() { add_filter( 'update_theme_complete_actions', array( $this, 'alter_links_theme_upgrade' ) ); $rollback = $this->get_rollback(); $transient = get_site_transient( 'update_themes' ); - $slug = $this->product->get_slug(); - $folder = $slug; + $folder = $this->product->get_slug(); $version = $rollback['version']; $temp_array = array( 'new_version' => $version, @@ -285,8 +284,23 @@ private function start_rollback_theme() { $nonce = 'upgrade-theme_' . $theme; $url = 'update.php?action=upgrade-theme&theme=' . urlencode( $theme ); + /** + * The rollback will attach a temporary theme for the rollback to the transient. + * However, when executing the upgrade for the attached theme we need to change the slug to the original theme slug. + * This is because it will use the slug to create a temp folder for the theme used during the upgrade. + */ + add_filter( + 'upgrader_package_options', + function( $options ) use ( $folder, $theme ) { + if ( isset( $options['hook_extra']['theme'] ) && $options['hook_extra']['theme'] === $theme && isset( $options['hook_extra']['temp_backup']['slug'] ) ) { + $options['hook_extra']['temp_backup']['slug'] = $folder; + } + return $options; + } + ); + $upgrader = new \Theme_Upgrader( new \Theme_Upgrader_Skin( compact( 'title', 'nonce', 'url', 'theme' ) ) ); - $upgrader->upgrade( $slug ); + $upgrader->upgrade( $theme ); delete_transient( $this->product->get_key() . '_warning_rollback' ); wp_die( '', From 23cf7e884163314dc1efb71360b15004c831b75d Mon Sep 17 00:00:00 2001 From: Bogdan Preda Date: Tue, 2 Apr 2024 13:44:02 +0300 Subject: [PATCH 4/4] chore: reverted version change used during testing --- load.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/load.php b/load.php index b1cd1570..07ce7591 100644 --- a/load.php +++ b/load.php @@ -14,7 +14,7 @@ return; } // Current SDK version and path. -$themeisle_sdk_version = '3.3.18'; +$themeisle_sdk_version = '3.3.16'; $themeisle_sdk_path = dirname( __FILE__ ); global $themeisle_sdk_max_version;