WordPress.org

Make WordPress Core

Ticket #13216: 13216.1.diff

File 13216.1.diff, 3.6 KB (added by PeteMall, 4 years ago)

Preserve Network Activated State

  • includes/class-wp-upgrader.php

     
    986986class Plugin_Upgrader_Skin extends WP_Upgrader_Skin { 
    987987        var $plugin = ''; 
    988988        var $plugin_active = false; 
     989        var $plugin_network_active = 0; 
    989990 
    990991        function Plugin_Upgrader_Skin($args = array()) { 
    991992                return $this->__construct($args); 
     
    998999                $this->plugin = $args['plugin']; 
    9991000 
    10001001                $this->plugin_active = is_plugin_active($this->plugin); 
     1002                $this->plugin_network_active = 1; 
     1003                 
    10011004 
    10021005                parent::__construct($args); 
    10031006        } 
     
    10061009                $this->plugin = $this->upgrader->plugin_info(); 
    10071010                if ( !empty($this->plugin) && !is_wp_error($this->result) && $this->plugin_active ){ 
    10081011                        show_message(__('Reactivating the plugin…')); 
    1009                         echo '<iframe style="border:0;overflow:hidden" width="100%" height="170px" src="' . wp_nonce_url('update.php?action=activate-plugin&plugin=' . $this->plugin, 'activate-plugin_' . $this->plugin) .'"></iframe>'; 
     1012                        echo '<iframe style="border:0;overflow:hidden" width="100%" height="170px" src="' . wp_nonce_url('update.php?action=activate-plugin&networkwide=1&plugin=' . $this->plugin, 'activate-plugin_' . $this->plugin) .'"></iframe>'; 
    10101013                } 
    10111014 
    10121015                $update_actions =  array( 
     
    13901393                        $this->package = $uploads['basedir'] . '/' . $this->filename; 
    13911394                } 
    13921395        } 
    1393 } 
    1394  No newline at end of file 
     1396} 
  • update.php

     
    6969                check_admin_referer('activate-plugin_' . $plugin); 
    7070                if ( ! isset($_GET['failure']) && ! isset($_GET['success']) ) { 
    7171                        wp_redirect( 'update.php?action=activate-plugin&failure=true&plugin=' . $plugin . '&_wpnonce=' . $_GET['_wpnonce'] ); 
    72                         activate_plugin($plugin); 
     72                        activate_plugin( $plugin, '', isset( $_GET['networkwide'] ) && 1 == $_GET['networkwide'] ); 
    7373                        wp_redirect( 'update.php?action=activate-plugin&success=true&plugin=' . $plugin . '&_wpnonce=' . $_GET['_wpnonce'] ); 
    7474                        die(); 
    7575                } 
  • plugin-editor.php

     
    5555                fwrite($f, $newcontent); 
    5656                fclose($f); 
    5757 
     58                $network_wide = is_plugin_active_for_network( $file ) ? 1 : 0; 
     59 
    5860                // Deactivate so we can test it. 
    5961                if ( is_plugin_active($file) || isset($_POST['phperror']) ) { 
    6062                        if ( is_plugin_active($file) ) 
     
    6264 
    6365                        update_option('recently_activated', array($file => time()) + (array)get_option('recently_activated')); 
    6466 
    65                         wp_redirect(add_query_arg('_wpnonce', wp_create_nonce('edit-plugin-test_' . $file), "plugin-editor.php?file=$file&liveupdate=1&scrollto=$scrollto")); 
     67                        wp_redirect(add_query_arg('_wpnonce', wp_create_nonce('edit-plugin-test_' . $file), "plugin-editor.php?file=$file&liveupdate=1&scrollto=$scrollto&networkwide=$network_wide")); 
    6668                        exit; 
    6769                } 
    6870                wp_redirect("plugin-editor.php?file=$file&a=te&scrollto=$scrollto"); 
     
    8385                        wp_die( $error ); 
    8486 
    8587                if ( ! is_plugin_active($file) ) 
    86                         activate_plugin($file, "plugin-editor.php?file=$file&phperror=1"); // we'll override this later if the plugin can be included without fatal error 
     88                        activate_plugin($file, "plugin-editor.php?file=$file&phperror=1", isset( $_GET['networkwide'] ) && 1 == $_GET['networkwide'] ); // we'll override this later if the plugin can be included without fatal error 
    8789 
    8890                wp_redirect("plugin-editor.php?file=$file&a=te&scrollto=$scrollto"); 
    8991                exit;