]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-admin/update-core.php
WordPress 3.7.2-scripts
[autoinstalls/wordpress.git] / wp-admin / update-core.php
index 360bb91adb8273b55b96eda3639b80e1f996cae1..3a17482c56d8fc3c8cbec9b99e9d2ccd20603c3f 100644 (file)
@@ -7,7 +7,7 @@
  */
 
 /** WordPress Administration Bootstrap */
-require_once('./admin.php');
+require_once( dirname( __FILE__ ) . '/admin.php' );
 
 wp_enqueue_style( 'plugin-install' );
 wp_enqueue_script( 'plugin-install' );
@@ -18,15 +18,21 @@ if ( is_multisite() && ! is_network_admin() ) {
        exit();
 }
 
-if ( ! current_user_can( 'update_core' ) )
+if ( ! current_user_can( 'update_core' ) && ! current_user_can( 'update_themes' ) && ! current_user_can( 'update_plugins' ) )
        wp_die( __( 'You do not have sufficient permissions to update this site.' ) );
 
 function list_core_update( $update ) {
-       global $wp_local_package, $wpdb;
-       static $first_pass = true;
+       global $wp_local_package, $wpdb, $wp_version;
+       static $first_pass = true;
+
+       if ( 'en_US' == $update->locale && 'en_US' == get_locale() )
+               $version_string = $update->current;
+       // If the only available update is a partial builds, it doesn't need a language-specific version string.
+       elseif ( 'en_US' == $update->locale && $update->packages->partial && $wp_version == $update->partial_version && ( $updates = get_core_updates() ) && 1 == count( $updates ) )
+               $version_string = $update->current;
+       else
+               $version_string = sprintf( "%s&ndash;<strong>%s</strong>", $update->current, $update->locale );
 
-       $version_string = ('en_US' == $update->locale && 'en_US' == get_locale() ) ?
-                       $update->current : sprintf("%s&ndash;<strong>%s</strong>", $update->current, $update->locale);
        $current = false;
        if ( !isset($update->response) || 'latest' == $update->response )
                $current = true;
@@ -40,7 +46,7 @@ function list_core_update( $update ) {
                $download = __('Download nightly build');
        } else {
                if ( $current ) {
-                       $message = sprintf(__('You have the latest version of WordPress. You do not need to update. However, if you want to re-install version %s, you can do so automatically or download the package and re-install manually:'), $version_string);
+                       $message = sprintf( __( 'If you need to re-install version %s, you can do so here or download the package and re-install manually:' ), $version_string );
                        $submit = __('Re-install Now');
                        $form_action = 'update-core.php?action=do-core-reinstall';
                } else {
@@ -74,7 +80,7 @@ function list_core_update( $update ) {
        echo '<input name="locale" value="'. esc_attr($update->locale) .'" type="hidden"/>';
        if ( $show_buttons ) {
                if ( $first_pass ) {
-                       submit_button( $submit, $current ? 'button' : 'primary', 'upgrade', false );
+                       submit_button( $submit, $current ? 'button' : 'primary regular', 'upgrade', false );
                        $first_pass = false;
                } else {
                        submit_button( $submit, 'button', 'upgrade', false );
@@ -89,7 +95,8 @@ function list_core_update( $update ) {
        echo '</p>';
        if ( 'en_US' != $update->locale && ( !isset($wp_local_package) || $wp_local_package != $update->locale ) )
            echo '<p class="hint">'.__('This localized version contains both the translation and various other localization fixes. You can skip upgrading if you want to keep your current translation.').'</p>';
-       else if ( 'en_US' == $update->locale && get_locale() != 'en_US' ) {
+       // Partial builds don't need language-specific warnings.
+       elseif ( 'en_US' == $update->locale && get_locale() != 'en_US' && ( ! $update->packages->partial && $wp_version == $update->partial_version ) ) {
            echo '<p class="hint">'.sprintf( __('You are about to install WordPress %s <strong>in English (US).</strong> There is a chance this update will break your translation. You may prefer to wait for the localized version to be released.'), $update->response != 'development' ? $update->current : '' ).'</p>';
        }
        echo '</form>';
@@ -131,32 +138,27 @@ function dismissed_updates() {
  * @return null
  */
 function core_upgrade_preamble() {
-       global $upgrade_error, $wp_version;
+       global $wp_version, $required_php_version, $required_mysql_version;
 
        $updates = get_core_updates();
-?>
-       <div class="wrap">
-       <?php screen_icon('tools'); ?>
-       <h2><?php _e('WordPress Updates'); ?></h2>
-<?php
-       if ( $upgrade_error ) {
-               echo '<div class="error"><p>';
-               if ( $upgrade_error == 'themes' )
-                       _e('Please select one or more themes to update.');
-               else
-                       _e('Please select one or more plugins to update.');
-               echo '</p></div>';
-       }
-
-       echo '<p>';
-       /* translators: %1 date, %2 time. */
-       printf( __('Last checked on %1$s at %2$s.'), date_i18n( get_option( 'date_format' ) ), date_i18n( get_option( 'time_format' ) ) );
-       echo ' &nbsp; <a class="button" href="' . esc_url( self_admin_url('update-core.php') ) . '">' . __( 'Check Again' ) . '</a>';
-       echo '</p>';
 
        if ( !isset($updates[0]->response) || 'latest' == $updates[0]->response ) {
                echo '<h3>';
                _e('You have the latest version of WordPress.');
+
+               if ( wp_http_supports( array( 'ssl' ) ) ) {
+                       require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+                       $upgrader = new WP_Automatic_Updater;
+                       $future_minor_update = (object) array(
+                               'current'       => $wp_version . '.1.next.minor',
+                               'version'       => $wp_version . '.1.next.minor',
+                               'php_version'   => $required_php_version,
+                               'mysql_version' => $required_mysql_version,
+                       );
+                       $should_auto_update = $upgrader->should_update( 'core', $future_minor_update, ABSPATH );
+                       if ( $should_auto_update )
+                               echo ' ' . __( 'Future security updates will be applied automatically.' );
+               }
                echo '</h3>';
        } else {
                echo '<div class="updated inline"><p>';
@@ -168,6 +170,13 @@ function core_upgrade_preamble() {
                echo '</h3>';
        }
 
+       if ( isset( $updates[0] ) && $updates[0]->response == 'development' ) {
+               require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+               $upgrader = new WP_Automatic_Updater;
+               if ( wp_http_supports( 'ssl' ) && $upgrader->should_update( 'core', $updates[0], ABSPATH ) )
+                       echo '<div class="updated inline"><p><strong>BETA TESTERS:</strong> This site is set up to install updates of future beta versions automatically.</p></div>';
+       }
+
        echo '<ul class="core-updates">';
        $alternate = true;
        foreach( (array) $updates as $update ) {
@@ -176,20 +185,14 @@ function core_upgrade_preamble() {
                echo '</li>';
        }
        echo '</ul>';
-       if ( $updates ) {
+       // Don't show the maintenance mode notice when we are only showing a single re-install option.
+       if ( $updates && ( count( $updates ) > 1 || $updates[0]->response != 'latest' ) ) {
                echo '<p>' . __( 'While your site is being updated, it will be in maintenance mode. As soon as your updates are complete, your site will return to normal.' ) . '</p>';
-       } else {
+       } elseif ( ! $updates ) {
                list( $normalized_version ) = explode( '-', $wp_version );
                echo '<p>' . sprintf( __( '<a href="%s">Learn more about WordPress %s</a>.' ), esc_url( self_admin_url( 'about.php' ) ), $normalized_version ) . '</p>';
        }
        dismissed_updates();
-
-       if ( current_user_can( 'update_plugins' ) )
-               list_plugin_updates();
-       if ( current_user_can( 'update_themes' ) )
-               list_theme_updates();
-       do_action('core_upgrade_preamble');
-       echo '</div>';
 }
 
 function list_plugin_updates() {
@@ -214,7 +217,7 @@ function list_plugin_updates() {
        ?>
 <h3><?php _e( 'Plugins' ); ?></h3>
 <p><?php _e( 'The following plugins have new versions available. Check the ones you want to update and then click &#8220;Update Plugins&#8221;.' ); ?></p>
-<form method="post" action="<?php echo $form_action; ?>" name="upgrade-plugins" class="upgrade">
+<form method="post" action="<?php echo esc_url( $form_action ); ?>" name="upgrade-plugins" class="upgrade">
 <?php wp_nonce_field('upgrade-core'); ?>
 <p><input id="upgrade-plugins" class="button" type="submit" value="<?php esc_attr_e('Update Plugins'); ?>" name="upgrade" /></p>
 <table class="widefat" cellspacing="0" id="update-plugins-table">
@@ -291,8 +294,8 @@ function list_theme_updates() {
 ?>
 <h3><?php _e( 'Themes' ); ?></h3>
 <p><?php _e( 'The following themes have new versions available. Check the ones you want to update and then click &#8220;Update Themes&#8221;.' ); ?></p>
-<p><?php printf( __('<strong>Please Note:</strong> Any customizations you have made to theme files will be lost. Please consider using <a href="%s">child themes</a> for modifications.'), _x('http://codex.wordpress.org/Child_Themes', 'Link used in suggestion to use child themes in GUU') ); ?></p>
-<form method="post" action="<?php echo $form_action; ?>" name="upgrade-themes" class="upgrade">
+<p><?php printf( __( '<strong>Please Note:</strong> Any customizations you have made to theme files will be lost. Please consider using <a href="%s">child themes</a> for modifications.' ), __( 'http://codex.wordpress.org/Child_Themes' ) ); ?></p>
+<form method="post" action="<?php echo esc_url( $form_action ); ?>" name="upgrade-themes" class="upgrade">
 <?php wp_nonce_field('upgrade-core'); ?>
 <p><input id="upgrade-themes" class="button" type="submit" value="<?php esc_attr_e('Update Themes'); ?>" name="upgrade" /></p>
 <table class="widefat" cellspacing="0" id="update-themes-table">
@@ -315,7 +318,7 @@ function list_theme_updates() {
                echo "
        <tr class='active'>
                <th scope='row' class='check-column'><input type='checkbox' name='checked[]' value='" . esc_attr( $stylesheet ) . "' /></th>
-               <td class='plugin-title'><img src='" . esc_url( $theme->get_screenshot() ) . "' width='64' height='64' style='float:left; padding: 0 5px 5px' /><strong>" . $theme->display('Name') . '</strong> ' . sprintf( __( 'You have version %1$s installed. Update to %2$s.' ), $theme->display('Version'), $theme->update['new_version'] ) . "</td>
+               <td class='plugin-title'><img src='" . esc_url( $theme->get_screenshot() ) . "' width='85' height='64' style='float:left; padding: 0 5px 5px' /><strong>" . $theme->display('Name') . '</strong> ' . sprintf( __( 'You have version %1$s installed. Update to %2$s.' ), $theme->display('Version'), $theme->update['new_version'] ) . "</td>
        </tr>";
        }
 ?>
@@ -326,6 +329,27 @@ function list_theme_updates() {
 <?php
 }
 
+function list_translation_updates() {
+       $updates = wp_get_translation_updates();
+       if ( ! $updates ) {
+               if ( 'en_US' != get_locale() ) {
+                       echo '<h3>' . __( 'Translations' ) . '</h3>';
+                       echo '<p>' . __( 'Your translations are all up to date.' ) . '</p>';
+               }
+               return;
+       }
+
+       $form_action = 'update-core.php?action=do-translation-upgrade';
+       ?>
+       <h3><?php _e( 'Translations' ); ?></h3>
+       <form method="post" action="<?php echo esc_url( $form_action ); ?>" name="upgrade-themes" class="upgrade">
+               <p><?php _e( 'Some of your translations are out of date.' ); ?></p>
+               <?php wp_nonce_field('upgrade-translations'); ?>
+               <p><input class="button" type="submit" value="<?php esc_attr_e( 'Update Translations' ); ?>" name="upgrade" /></p>
+       </form>
+       <?php
+}
+
 /**
  * Upgrade WordPress core display.
  *
@@ -336,13 +360,13 @@ function list_theme_updates() {
 function do_core_upgrade( $reinstall = false ) {
        global $wp_filesystem;
 
+       include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+
        if ( $reinstall )
                $url = 'update-core.php?action=do-core-reinstall';
        else
                $url = 'update-core.php?action=do-core-upgrade';
        $url = wp_nonce_url($url, 'upgrade-core');
-       if ( false === ($credentials = request_filesystem_credentials($url, '', false, ABSPATH)) )
-               return;
 
        $version = isset( $_POST['version'] )? $_POST['version'] : false;
        $locale = isset( $_POST['locale'] )? $_POST['locale'] : 'en_US';
@@ -350,15 +374,24 @@ function do_core_upgrade( $reinstall = false ) {
        if ( !$update )
                return;
 
-       if ( ! WP_Filesystem($credentials, ABSPATH) ) {
-               request_filesystem_credentials($url, '', true, ABSPATH); //Failed to connect, Error and request again
-               return;
-       }
 ?>
        <div class="wrap">
        <?php screen_icon('tools'); ?>
        <h2><?php _e('Update WordPress'); ?></h2>
 <?php
+
+       if ( false === ( $credentials = request_filesystem_credentials( $url, '', false, ABSPATH ) ) ) {
+               echo '</div>';
+               return;
+       }
+
+       if ( ! WP_Filesystem( $credentials, ABSPATH ) ) {
+               // Failed to connect, Error and request again
+               request_filesystem_credentials( $url, '', true, ABSPATH );
+               echo '</div>';
+               return;
+       }
+
        if ( $wp_filesystem->errors->get_error_code() ) {
                foreach ( $wp_filesystem->errors->get_error_messages() as $message )
                        show_message($message);
@@ -369,7 +402,10 @@ function do_core_upgrade( $reinstall = false ) {
        if ( $reinstall )
                $update->response = 'reinstall';
 
-       $result = wp_update_core($update, 'show_message');
+       add_filter( 'update_feedback', 'show_message' );
+
+       $upgrader = new Core_Upgrader();
+       $result = $upgrader->upgrade( $update );
 
        if ( is_wp_error($result) ) {
                show_message($result);
@@ -380,7 +416,7 @@ function do_core_upgrade( $reinstall = false ) {
        }
 
        show_message( __('WordPress updated successfully') );
-       show_message( '<span class="hide-if-no-js">' . sprintf( __( 'Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click <a href="%s">here</a>.' ), $result, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '</span>' );
+       show_message( '<span class="hide-if-no-js">' . sprintf( __( 'Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click <a href="%2$s">here</a>.' ), $result, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '</span>' );
        show_message( '<span class="hide-if-js">' . sprintf( __( 'Welcome to WordPress %1$s. <a href="%2$s">Learn more</a>.' ), $result, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '</span>' );
        ?>
        </div>
@@ -454,10 +490,44 @@ if ( 'upgrade-core' == $action ) {
 
        wp_version_check();
        require_once(ABSPATH . 'wp-admin/admin-header.php');
-       core_upgrade_preamble();
+       ?>
+       <div class="wrap">
+       <?php screen_icon('tools'); ?>
+       <h2><?php _e('WordPress Updates'); ?></h2>
+       <?php
+       if ( $upgrade_error ) {
+               echo '<div class="error"><p>';
+               if ( $upgrade_error == 'themes' )
+                       _e('Please select one or more themes to update.');
+               else
+                       _e('Please select one or more plugins to update.');
+               echo '</p></div>';
+       }
+
+       echo '<p>';
+       /* translators: %1 date, %2 time. */
+       printf( __('Last checked on %1$s at %2$s.'), date_i18n( get_option( 'date_format' ) ), date_i18n( get_option( 'time_format' ) ) );
+       echo ' &nbsp; <a class="button" href="' . esc_url( self_admin_url('update-core.php') ) . '">' . __( 'Check Again' ) . '</a>';
+       echo '</p>';
+
+       if ( $core = current_user_can( 'update_core' ) )
+               core_upgrade_preamble();
+       if ( $plugins = current_user_can( 'update_plugins' ) )
+               list_plugin_updates();
+       if ( $themes = current_user_can( 'update_themes' ) )
+               list_theme_updates();
+       if ( $core || $plugins || $themes )
+               list_translation_updates();
+       unset( $core, $plugins, $themes );
+       do_action('core_upgrade_preamble');
+       echo '</div>';
        include(ABSPATH . 'wp-admin/admin-footer.php');
 
 } elseif ( 'do-core-upgrade' == $action || 'do-core-reinstall' == $action ) {
+
+       if ( ! current_user_can( 'update_core' ) )
+               wp_die( __( 'You do not have sufficient permissions to update this site.' ) );
+
        check_admin_referer('upgrade-core');
 
        // do the (un)dismiss actions before headers,
@@ -536,6 +606,26 @@ if ( 'upgrade-core' == $action ) {
        echo '</div>';
        include(ABSPATH . 'wp-admin/admin-footer.php');
 
+} elseif ( 'do-translation-upgrade' == $action ) {
+
+       if ( ! current_user_can( 'update_core' ) && ! current_user_can( 'update_plugins' ) && ! current_user_can( 'update_themes' ) )
+               wp_die( __( 'You do not have sufficient permissions to update this site.' ) );
+
+       check_admin_referer( 'upgrade-translations' );
+
+       require_once( ABSPATH . 'wp-admin/admin-header.php' );
+       include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
+
+       $url = 'update-core.php?action=do-translation-upgrade';
+       $nonce = 'upgrade-translations';
+       $title = __( 'Update Translations' );
+       $context = WP_LANG_DIR;
+
+       $upgrader = new Language_Pack_Upgrader( new Language_Pack_Upgrader_Skin( compact( 'url', 'nonce', 'title', 'context' ) ) );
+       $result = $upgrader->bulk_upgrade();
+
+       require_once( ABSPATH . 'wp-admin/admin-footer.php' );
+
 } else {
        do_action('update-core-custom_' . $action);
-}
\ No newline at end of file
+}