Wordpress 3.7
[autoinstalls/wordpress.git] / wp-admin / update-core.php
index c8f58774296342707420dde77afec63f04a923d1..99887d3607d513ba26528b2016f74162412edcaa 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' );
@@ -22,11 +22,17 @@ if ( ! current_user_can( 'update_core' ) && ! current_user_can( 'update_themes'
        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 {
@@ -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,13 +138,27 @@ function dismissed_updates() {
  * @return null
  */
 function core_upgrade_preamble() {
-       global $wp_version;
+       global $wp_version, $required_php_version, $required_mysql_version;
 
        $updates = get_core_updates();
 
        if ( !isset($updates[0]->response) || 'latest' == $updates[0]->response ) {
                echo '<h3>';
                _e('You have the latest version of WordPress.');
+
+               if ( wp_http_supports( '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>';
@@ -149,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 ) {
@@ -157,9 +185,10 @@ 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>';
        }
@@ -265,7 +294,7 @@ 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>
+<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>
@@ -300,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.
  *
@@ -310,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';
@@ -324,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);
@@ -343,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);
@@ -448,12 +510,15 @@ if ( 'upgrade-core' == $action ) {
        echo ' &nbsp; <a class="button" href="' . esc_url( self_admin_url('update-core.php') ) . '">' . __( 'Check Again' ) . '</a>';
        echo '</p>';
 
-       if ( current_user_can( 'update_core' ) )
+       if ( $core = current_user_can( 'update_core' ) )
                core_upgrade_preamble();
-       if ( current_user_can( 'update_plugins' ) )
+       if ( $plugins = current_user_can( 'update_plugins' ) )
                list_plugin_updates();
-       if ( current_user_can( 'update_themes' ) )
+       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');
@@ -541,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
+}