Make WordPress Core

Changeset 54643


Ignore:
Timestamp:
10/18/2022 08:37:34 PM (19 months ago)
Author:
SergeyBiryukov
Message:

Upgrade/Install: Add a conditional to facilitate testing of the Rollbacks feature project.

The Rollback Update Failure feature project creates a temporary backup of plugins and themes before updating. This aims to make the update process more reliable and ensure that if a plugin or theme update fails, the previous version can be safely restored.

If the Rollback Update Failure plugin is installed, WP_Upgrader::install_package() will use the move_dir() function from there for better performance. Instead of copying a directory from one location to another, it uses the rename() PHP function to speed up the process, which is instrumental in creating a temporary backup without a delay. If the renaming failed, it falls back to copy_dir() WP function.

This conditional aims to facilitate broader testing of the feature. It is temporary, until the plugin is merged into core.

Follow-up to [53578], [54484].

Props afragen, pbiron, costdev, davidbaumwald, audrasjb, jrf, SergeyBiryukov.
See #56057.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/class-wp-upgrader.php

    r54484 r54643  
    595595
    596596        // Copy new version of item into place.
    597         $result = copy_dir( $source, $remote_destination );
     597        if ( class_exists( 'Rollback_Update_Failure\WP_Upgrader' )
     598            && function_exists( '\Rollback_Update_Failure\move_dir' )
     599        ) {
     600            /*
     601             * If the {@link https://wordpress.org/plugins/rollback-update-failure/ Rollback Update Failure}
     602             * feature plugin is installed, use the move_dir() function from there for better performance.
     603             * Instead of copying a directory from one location to another, it uses the rename() PHP function
     604             * to speed up the process. If the renaming failed, it falls back to copy_dir().
     605             *
     606             * This condition aims to facilitate broader testing of the Rollbacks (temp backups) feature project.
     607             * It is temporary, until the plugin is merged into core.
     608             */
     609            $result = \Rollback_Update_Failure\move_dir( $source, $remote_destination );
     610        } else {
     611            $result = copy_dir( $source, $remote_destination );
     612        }
     613
    598614        if ( is_wp_error( $result ) ) {
    599615            if ( $args['clear_working'] ) {
Note: See TracChangeset for help on using the changeset viewer.