WordPress.org

Make WordPress Core

Ticket #14915: class-wp-upgrader.15646.2.diff

File class-wp-upgrader.15646.2.diff, 3.4 KB (added by joelhardi, 4 years ago)

newer patch per my comment (but slightly more complicated). Doesn't set and then immediately unset $update_actionsactivate_plugin?.

  • class-wp-upgrader.php

     
    422423                // Get the URL to the zip file 
    423424                $r = $current->response[ $plugin ]; 
    424425 
    425                 add_filter('upgrader_pre_install', array(&$this, 'deactivate_plugin_before_upgrade'), 10, 2); 
    426426                add_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin'), 10, 4); 
    427427                //'source_selection' => array(&$this, 'source_selection'), //theres a track ticket to move up the directory for zip's which are made a bit differently, useful for non-.org plugins. 
    428428 
     
    437437                                )); 
    438438 
    439439                // Cleanup our hooks, incase something else does a upgrade on this connection. 
    440                 remove_filter('upgrader_pre_install', array(&$this, 'deactivate_plugin_before_upgrade')); 
    441440                remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin')); 
    442441 
    443442                if ( ! $this->result || is_wp_error($this->result) ) 
     
    546545                return $this->result['destination_name'] . '/' . $pluginfiles[0]; 
    547546        } 
    548547 
    549         //Hooked to pre_install 
    550         function deactivate_plugin_before_upgrade($return, $plugin) { 
    551  
    552                 if ( is_wp_error($return) ) //Bypass. 
    553                         return $return; 
    554  
    555                 $plugin = isset($plugin['plugin']) ? $plugin['plugin'] : ''; 
    556                 if ( empty($plugin) ) 
    557                         return new WP_Error('bad_request', $this->strings['bad_request']); 
    558  
    559                 if ( is_plugin_active($plugin) ) { 
    560                         $this->skin->feedback('deactivate_plugin'); 
    561                         //Deactivate the plugin silently, Prevent deactivation hooks from running. 
    562                         deactivate_plugins($plugin, true); 
    563                 } 
    564         } 
    565  
    566548        //Hooked to upgrade_clear_destination 
    567549        function delete_old_plugin($removed, $local_destination, $remote_destination, $plugin) { 
    568550                global $wp_filesystem; 
     
    10301012 
    10311013        function after() { 
    10321014                $this->plugin = $this->upgrader->plugin_info(); 
    1033                 if ( !empty($this->plugin) && !is_wp_error($this->result) && $this->plugin_active ){ 
    1034                         show_message(__('Reactivating the plugin…')); 
    1035                         echo '<iframe style="border:0;overflow:hidden" width="100%" height="170px" src="' . wp_nonce_url('update.php?action=activate-plugin&networkwide=' . $this->plugin_network_active . '&plugin=' . $this->plugin, 'activate-plugin_' . $this->plugin) .'"></iframe>'; 
    1036                 } 
    10371015 
    10381016                $update_actions =  array( 
    1039                         'activate_plugin' => '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $this->plugin, 'activate-plugin_' . $this->plugin) . '" title="' . esc_attr__('Activate this plugin') . '" target="_parent">' . __('Activate Plugin') . '</a>', 
    10401017                        'plugins_page' => '<a href="' . admin_url('plugins.php') . '" title="' . esc_attr__('Go to plugins page') . '" target="_parent">' . __('Return to Plugins page') . '</a>' 
    10411018                ); 
    1042                 if ( $this->plugin_active ) 
    1043                         unset( $update_actions['activate_plugin'] ); 
    1044                 if ( ! $this->result || is_wp_error($this->result) ) 
    1045                         unset( $update_actions['activate_plugin'] ); 
     1019                if ( !$this->plugin_active && !is_wp_error($this->result) && $this->result ) 
     1020                        $update_actions[ 'activate_plugin' ] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $this->plugin, 'activate-plugin_' . $this->plugin) . '" title="' . esc_attr__('Activate this plugin') . '" target="_parent">' . __('Activate Plugin') . '</a>'; 
    10461021 
    10471022                $update_actions = apply_filters('update_plugin_complete_actions', $update_actions, $this->plugin); 
    10481023                if ( ! empty($update_actions) )