Make WordPress Core


Ignore:
Timestamp:
11/16/2021 10:18:32 PM (3 years ago)
Author:
SergeyBiryukov
Message:

Upgrade/Install: Correct the weekly cron event for clearing the temp-backup directory:

  • Make sure the wp_delete_temp_updater_backups event has an action associated with it when it runs.
  • Check if the cron event already exists before scheduling it, to avoid scheduling duplicate events.
  • Move the code for clearing the temp-backup directory to a standalone function.

Follow-up to [51815], [51898], [51899].

Props pbiron, johnbillion.
See #51857.

File:
1 edited

Legend:

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

    r51902 r52192  
    151151     */
    152152    protected function schedule_temp_backup_cleanup() {
    153         wp_schedule_event( time(), 'weekly', 'delete_temp_updater_backups' );
    154         add_action( 'delete_temp_updater_backups', array( $this, 'delete_all_temp_backups' ) );
     153        if ( false === wp_next_scheduled( 'wp_delete_temp_updater_backups' ) ) {
     154            wp_schedule_event( time(), 'weekly', 'wp_delete_temp_updater_backups' );
     155        }
    155156    }
    156157
     
    11081109        );
    11091110    }
    1110 
    1111     /**
    1112      * Deletes all contents of the temp-backup directory.
    1113      *
    1114      * @since 5.9.0
    1115      *
    1116      * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
    1117      */
    1118     public function delete_all_temp_backups() {
    1119         /*
    1120          * Check if there's a lock, or if currently performing an Ajax request,
    1121          * in which case there's a chance we're doing an update.
    1122          * Reschedule for an hour from now and exit early.
    1123          */
    1124         if ( get_option( 'core_updater.lock' ) || get_option( 'auto_updater.lock' ) || wp_doing_ajax() ) {
    1125             wp_schedule_single_event( time() + HOUR_IN_SECONDS, 'delete_temp_updater_backups' );
    1126             return;
    1127         }
    1128 
    1129         add_action(
    1130             'shutdown',
    1131             /*
    1132              * This action runs on shutdown to make sure there's no plugin updates currently running.
    1133              * Using a closure in this case is OK since the action can be removed by removing the parent hook.
    1134              */
    1135             function() {
    1136                 global $wp_filesystem;
    1137 
    1138                 if ( ! $wp_filesystem ) {
    1139                     include_once ABSPATH . '/wp-admin/includes/file.php';
    1140                     WP_Filesystem();
    1141                 }
    1142 
    1143                 $dirlist = $wp_filesystem->dirlist( $wp_filesystem->wp_content_dir() . 'upgrade/temp-backup/' );
    1144 
    1145                 foreach ( array_keys( $dirlist ) as $dir ) {
    1146                     if ( '.' === $dir || '..' === $dir ) {
    1147                         continue;
    1148                     }
    1149 
    1150                     $wp_filesystem->delete( $wp_filesystem->wp_content_dir() . 'upgrade/temp-backup/' . $dir, true );
    1151                 }
    1152             }
    1153         );
    1154     }
    11551111}
    11561112
Note: See TracChangeset for help on using the changeset viewer.