WordPress.org

Make WordPress Core

Ticket #13216: 13216.1.diff

File 13216.1.diff, 3.6 KB (added by PeteMall, 8 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;