WordPress.org

Make WordPress Core

Ticket #11869: 11869.diff

File 11869.diff, 4.8 KB (added by ocean90, 8 years ago)

Its not perfect, only a first try.

  • wp-admin/ms-upgrade-network.php

     
    1212if ( !is_multisite() )
    1313        wp_die( __('Multisite support is not enabled.') );
    1414
    15 require_once( ABSPATH . WPINC . '/http.php' );
    16 
    17 $title = __('Update Network');
    18 $parent_file = 'ms-admin.php';
    19 require_once('admin-header.php');
    20 
    2115if ( ! current_user_can( 'manage_network' ) )
    2216        wp_die( __('You do not have permission to access this page.') );
    2317
    24 echo '<div class="wrap">';
    25 screen_icon();
    26 echo '<h2>'.__('Update Network').'</h2>';
     18require_once( ABSPATH . WPINC . '/http.php' );
    2719
    2820$action = isset($_GET['action']) ? $_GET['action'] : 'show';
     21$n = ( isset($_GET['n']) ) ? intval($_GET['n']) : 0;
    2922
     23$ajax = false;
     24if ( 'upgrade' == $action && $n > 4 )
     25        $ajax = true;
     26
     27if ( !$ajax ) {
     28        $title = __('Update Network');
     29        $parent_file = 'ms-admin.php';
     30        require_once('admin-header.php');
     31        echo '<div class="wrap">';
     32        screen_icon();
     33        echo '<h2>'.__('Update Network').'</h2>';
     34} else {
     35        @header('Content-Type: text/html; charset=' . get_option('blog_charset'));
     36}
     37
    3038switch ( $action ) {
    3139        case "upgrade":
    32                 $n = ( isset($_GET['n']) ) ? intval($_GET['n']) : 0;
     40               
    3341
    3442                if ( $n < 5 ) {
    3543                        global $wp_db_version;
     
    3745                }
    3846
    3947                $blogs = $wpdb->get_results( "SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' AND spam = '0' AND deleted = '0' AND archived = '0' ORDER BY registered DESC LIMIT {$n}, 5", ARRAY_A );
    40                 if ( empty( $blogs ) ) {
    41                         echo '<p>' . __( 'All done!' ) . '</p>';
    42                         break;
    43                 }
    44                 echo "<ul>";
     48                if ( empty( $blogs ) )
     49                        die( '0' );
     50
     51                if ( !$ajax )
     52                        echo "<ul id='site_list'>";
     53
    4554                foreach ( (array) $blogs as $details ) {
    4655                        if ( $details['spam'] == 0 && $details['deleted'] == 0 && $details['archived'] == 0 ) {
    4756                                $siteurl = get_blog_option( $details['blog_id'], 'siteurl' );
    48                                 echo "<li>$siteurl</li>";
     57
    4958                                $response = wp_remote_get( trailingslashit( $siteurl ) . "wp-admin/upgrade.php?step=1", array( 'timeout' => 120, 'httpversion' => '1.1' ) );
    50                                 if ( is_wp_error( $response ) )
    51                                         wp_die( "<strong>Warning!</strong> Problem updating {$siteurl}. Your server may not be able to connect to sites running on it.<br /> Error message: <em>" . $response->get_error_message() ."</em>" );
     59                                if ( is_wp_error( $response ) ) {
     60                                        echo '<div class="error inline" style="width:600px;"><p>';
     61                                        _e( "<strong>Warning!</strong> Problem updating {$siteurl}. Your server may not be able to connect to sites running on it.<br /> Error message: <em>" . $response->get_error_message() ."</em>" );
     62                                        echo '</p></div>';
     63                                } else {
     64                                        echo "<li><div class='updated inline' style='width:600px;'><p><strong>" . __('Successful:') . "</strong> $siteurl</p></div></li>";
     65                                }
    5266                                do_action( 'after_mu_upgrade', $response );
    5367                                do_action( 'wpmu_upgrade_site', $details[ 'blog_id' ] );
    5468                        }
    5569                }
    56                 echo "</ul>";
    57                 ?><p><?php _e("If your browser doesn't start loading the next page automatically click this link:"); ?> <a class="button" href="ms-upgrade-network.php?action=upgrade&amp;n=<?php echo ($n + 5) ?>"><?php _e("Next Sites"); ?></a></p>
     70                if ( !$ajax ) {
     71                        echo "</ul>";
     72                ?>
     73               
    5874                <script type='text/javascript'>
    59                 <!--
    60                 function nextpage() {
    61                         location.href = "ms-upgrade-network.php?action=upgrade&n=<?php echo ($n + 5) ?>";
     75                jQuery(document).ready(function($){
     76                        var admin_url = "<?php echo admin_url(); ?>";
     77                        var n = 0;
     78
     79                        function nextsites() {
     80                                n = n + 5;
     81                                nexturl = admin_url + 'ms-upgrade-network.php?action=upgrade&n=' + n;
     82                                jQuery.post(nexturl, function(r) {
     83                                        if ( r == '0' ) {
     84                                                $('ul#site_list').after('<div class="updated inline"><p><strong><?php _e('All Done!'); ?></strong></p></div>');
     85                                                $('div.wrap h2:first').after('<div id="message" class="updated fade"><p><strong><?php _e( 'All Done!' ); ?></strong></p></div>');
     86                                        } else {
     87                                                $('ul#site_list').append(r);
     88                                                nextsites();
     89                                        }
     90                                })
     91                        }
     92                        nextsites();
     93                })
     94                </script>
     95                <?php
    6296                }
    63                 setTimeout( "nextpage()", 250 );
    64                 //-->
    65                 </script><?php
    6697        break;
    6798        case 'show':
    6899        default:
    69100                ?><p><?php _e("You can update all the sites on your network through this page. It works by calling the update script of each site automatically. Hit the link below to update."); ?></p>
    70                 <p><a class="button" href="ms-upgrade-network.php?action=upgrade"><?php _e("Update Network"); ?></a></p><?php
     101                <p><a class="button" href="<?php echo admin_url( 'ms-upgrade-network.php?action=upgrade' ) ?>"><?php _e("Update Network"); ?></a></p><?php
    71102                do_action( 'wpmu_upgrade_page' );
    72103        break;
    73104}
     105
     106if ( !$ajax ) {
     107        include('admin-footer.php');
     108        echo '</div>';
     109}
    74110?>
    75 </div>
    76 
    77 <?php include('admin-footer.php'); ?>