WordPress.org

Make WordPress Core

Ticket #38024: 38024.2.diff

File 38024.2.diff, 9.9 KB (added by dd32, 4 years ago)
  • src/wp-admin/includes/class-plugin-upgrader.php

    class Plugin_Upgrader extends WP_Upgrade 
    156156                $current = get_site_transient( 'update_plugins' );
    157157                if ( !isset( $current->response[ $plugin ] ) ) {
    158158                        $this->skin->before();
    159159                        $this->skin->set_result(false);
    160160                        $this->skin->error('up_to_date');
    161161                        $this->skin->after();
    162162                        return false;
    163163                }
    164164
    165165                // Get the URL to the zip file
    166166                $r = $current->response[ $plugin ];
    167167
    168168                add_filter('upgrader_pre_install', array($this, 'deactivate_plugin_before_upgrade'), 10, 2);
    169169                add_filter('upgrader_clear_destination', array($this, 'delete_old_plugin'), 10, 4);
    170170                //'source_selection' => array($this, 'source_selection'), //there's a trac ticket to move up the directory for zip's which are made a bit differently, useful for non-.org plugins.
    171                 // Clear cache so wp_update_plugins() knows about the new plugin.
    172                 add_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9, 0 );
     171                if ( $parsed_args['clear_update_cache'] ) {
     172                        // Clear cache so wp_update_plugins() knows about the new plugin.
     173                        add_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9, 0 );
     174                }
    173175
    174176                $this->run( array(
    175177                        'package' => $r->package,
    176178                        'destination' => WP_PLUGIN_DIR,
    177179                        'clear_destination' => true,
    178180                        'clear_working' => true,
    179181                        'hook_extra' => array(
    180182                                'plugin' => $plugin,
    181183                                'type' => 'plugin',
    182184                                'action' => 'update',
    183185                        ),
    184186                ) );
    185187
    186188                // Cleanup our hooks, in case something else does a upgrade on this connection.
    187189                remove_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9 );
    class Plugin_Upgrader extends WP_Upgrade 
    215217         */
    216218        public function bulk_upgrade( $plugins, $args = array() ) {
    217219
    218220                $defaults = array(
    219221                        'clear_update_cache' => true,
    220222                );
    221223                $parsed_args = wp_parse_args( $args, $defaults );
    222224
    223225                $this->init();
    224226                $this->bulk = true;
    225227                $this->upgrade_strings();
    226228
    227229                $current = get_site_transient( 'update_plugins' );
    228230
    229231                add_filter('upgrader_clear_destination', array($this, 'delete_old_plugin'), 10, 4);
    230                 add_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9, 0 );
    231232
    232233                $this->skin->header();
    233234
    234235                // Connect to the Filesystem first.
    235236                $res = $this->fs_connect( array(WP_CONTENT_DIR, WP_PLUGIN_DIR) );
    236237                if ( ! $res ) {
    237238                        $this->skin->footer();
    238239                        return false;
    239240                }
    240241
    241242                $this->skin->bulk_header();
    242243
    243244                /*
    244245                 * Only start maintenance mode if:
    245246                 * - running Multisite and there are one or more plugins specified, OR
    class Plugin_Upgrader extends WP_Upgrade 
    282283                                'is_multi' => true,
    283284                                'hook_extra' => array(
    284285                                        'plugin' => $plugin
    285286                                )
    286287                        ) );
    287288
    288289                        $results[$plugin] = $this->result;
    289290
    290291                        // Prevent credentials auth screen from displaying multiple times
    291292                        if ( false === $result )
    292293                                break;
    293294                } //end foreach $plugins
    294295
    295296                $this->maintenance_mode(false);
    296297
     298                // Force refresh of plugin update information.
     299                wp_clean_plugins_cache( $parsed_args['clear_update_cache'] );
     300
    297301                /** This action is documented in wp-admin/includes/class-wp-upgrader.php */
    298302                do_action( 'upgrader_process_complete', $this, array(
    299303                        'action' => 'update',
    300304                        'type' => 'plugin',
    301305                        'bulk' => true,
    302306                        'plugins' => $plugins,
    303307                ) );
    304308
    305309                $this->skin->bulk_footer();
    306310
    307311                $this->skin->footer();
    308312
    309313                // Cleanup our hooks, in case something else does a upgrade on this connection.
    310                 remove_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9 );
    311314                remove_filter('upgrader_clear_destination', array($this, 'delete_old_plugin'));
    312315
    313                 // Force refresh of plugin update information.
    314                 wp_clean_plugins_cache( $parsed_args['clear_update_cache'] );
    315 
    316316                return $results;
    317317        }
    318318
    319319        /**
    320320         * Check a source package to be sure it contains a plugin.
    321321         *
    322322         * This function is added to the {@see 'upgrader_source_selection'} filter by
    323323         * Plugin_Upgrader::install().
    324324         *
    325325         * @since 3.3.0
    326326         * @access public
    327327         *
    328328         * @global WP_Filesystem_Base $wp_filesystem Subclass
    329329         *
    330330         * @param string $source The path to the downloaded package source.
  • src/wp-admin/includes/class-theme-upgrader.php

    class Theme_Upgrader extends WP_Upgrader 
    189189         *
    190190         * @return bool|WP_Error True if the install was successful, false or a WP_Error object otherwise.
    191191         */
    192192        public function install( $package, $args = array() ) {
    193193
    194194                $defaults = array(
    195195                        'clear_update_cache' => true,
    196196                );
    197197                $parsed_args = wp_parse_args( $args, $defaults );
    198198
    199199                $this->init();
    200200                $this->install_strings();
    201201
    202202                add_filter('upgrader_source_selection', array($this, 'check_package') );
    203203                add_filter('upgrader_post_install', array($this, 'check_parent_theme_filter'), 10, 3);
    204                 // Clear cache so wp_update_themes() knows about the new theme.
    205                 add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 );
     204                if ( $parsed_args['clear_update_cache'] ) {
     205                        // Clear cache so wp_update_themes() knows about the new theme.
     206                        add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 );
     207                }
    206208
    207209                $this->run( array(
    208210                        'package' => $package,
    209211                        'destination' => get_theme_root(),
    210212                        'clear_destination' => false, //Do not overwrite files.
    211213                        'clear_working' => true,
    212214                        'hook_extra' => array(
    213215                                'type' => 'theme',
    214216                                'action' => 'install',
    215217                        ),
    216218                ) );
    217219
    218220                remove_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9 );
    219221                remove_filter('upgrader_source_selection', array($this, 'check_package') );
    220222                remove_filter('upgrader_post_install', array($this, 'check_parent_theme_filter'));
    class Theme_Upgrader extends WP_Upgrader 
    257259                // Is an update available?
    258260                $current = get_site_transient( 'update_themes' );
    259261                if ( !isset( $current->response[ $theme ] ) ) {
    260262                        $this->skin->before();
    261263                        $this->skin->set_result(false);
    262264                        $this->skin->error( 'up_to_date' );
    263265                        $this->skin->after();
    264266                        return false;
    265267                }
    266268
    267269                $r = $current->response[ $theme ];
    268270
    269271                add_filter('upgrader_pre_install', array($this, 'current_before'), 10, 2);
    270272                add_filter('upgrader_post_install', array($this, 'current_after'), 10, 2);
    271273                add_filter('upgrader_clear_destination', array($this, 'delete_old_theme'), 10, 4);
    272                 // Clear cache so wp_update_themes() knows about the new theme.
    273                 add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 );
     274                if ( $parsed_args['clear_update_cache'] ) {
     275                        // Clear cache so wp_update_themes() knows about the new theme.
     276                        add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 );
     277                }
    274278
    275279                $this->run( array(
    276280                        'package' => $r['package'],
    277281                        'destination' => get_theme_root( $theme ),
    278282                        'clear_destination' => true,
    279283                        'clear_working' => true,
    280284                        'hook_extra' => array(
    281285                                'theme' => $theme,
    282286                                'type' => 'theme',
    283287                                'action' => 'update',
    284288                        ),
    285289                ) );
    286290
    287291                remove_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9 );
    288292                remove_filter('upgrader_pre_install', array($this, 'current_before'));
    class Theme_Upgrader extends WP_Upgrader 
    317321
    318322                $defaults = array(
    319323                        'clear_update_cache' => true,
    320324                );
    321325                $parsed_args = wp_parse_args( $args, $defaults );
    322326
    323327                $this->init();
    324328                $this->bulk = true;
    325329                $this->upgrade_strings();
    326330
    327331                $current = get_site_transient( 'update_themes' );
    328332
    329333                add_filter('upgrader_pre_install', array($this, 'current_before'), 10, 2);
    330334                add_filter('upgrader_post_install', array($this, 'current_after'), 10, 2);
    331335                add_filter('upgrader_clear_destination', array($this, 'delete_old_theme'), 10, 4);
    332                 // Clear cache so wp_update_themes() knows about the new theme.
    333                 add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 );
    334336
    335337                $this->skin->header();
    336338
    337339                // Connect to the Filesystem first.
    338340                $res = $this->fs_connect( array(WP_CONTENT_DIR) );
    339341                if ( ! $res ) {
    340342                        $this->skin->footer();
    341343                        return false;
    342344                }
    343345
    344346                $this->skin->bulk_header();
    345347
    346348                // Only start maintenance mode if:
    347349                // - running Multisite and there are one or more themes specified, OR
    348350                // - a theme with an update available is currently in use.
    class Theme_Upgrader extends WP_Upgrader 
    382384                                'is_multi' => true,
    383385                                'hook_extra' => array(
    384386                                        'theme' => $theme
    385387                                ),
    386388                        ) );
    387389
    388390                        $results[$theme] = $this->result;
    389391
    390392                        // Prevent credentials auth screen from displaying multiple times
    391393                        if ( false === $result )
    392394                                break;
    393395                } //end foreach $plugins
    394396
    395397                $this->maintenance_mode(false);
    396398
     399                // Refresh the Theme Update information
     400                wp_clean_themes_cache( $parsed_args['clear_update_cache'] );
     401
    397402                /** This action is documented in wp-admin/includes/class-wp-upgrader.php */
    398403                do_action( 'upgrader_process_complete', $this, array(
    399404                        'action' => 'update',
    400405                        'type' => 'theme',
    401406                        'bulk' => true,
    402407                        'themes' => $themes,
    403408                ) );
    404409
    405410                $this->skin->bulk_footer();
    406411
    407412                $this->skin->footer();
    408413
    409414                // Cleanup our hooks, in case something else does a upgrade on this connection.
    410                 remove_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9 );
    411415                remove_filter('upgrader_pre_install', array($this, 'current_before'));
    412416                remove_filter('upgrader_post_install', array($this, 'current_after'));
    413417                remove_filter('upgrader_clear_destination', array($this, 'delete_old_theme'));
    414418
    415                 // Refresh the Theme Update information
    416                 wp_clean_themes_cache( $parsed_args['clear_update_cache'] );
    417 
    418419                return $results;
    419420        }
    420421
    421422        /**
    422423         * Check that the package source contains a valid theme.
    423424         *
    424425         * Hooked to the {@see 'upgrader_source_selection'} filter by Theme_Upgrader::install().
    425426         * It will return an error if the theme doesn't have style.css or index.php
    426427         * files.
    427428         *
    428429         * @since 3.3.0
    429430         * @access public
    430431         *
    431432         * @global WP_Filesystem_Base $wp_filesystem Subclass
    432433         *