- // Is an update available?
- if ( !isset( $current->response ) || $current->response == 'latest' )
- return new WP_Error('up_to_date', __('WordPress is at the latest version.'));
-
- // Is a filesystem accessor setup?
- if ( ! $wp_filesystem || ! is_object($wp_filesystem) )
- WP_Filesystem();
-
- if ( ! is_object($wp_filesystem) )
- return new WP_Error('fs_unavailable', __('Could not access filesystem.'));
-
- if ( $wp_filesystem->errors->get_error_code() )
- return new WP_Error('fs_error', __('Filesystem error'), $wp_filesystem->errors);
-
- // Get the base WP folder
- $wp_dir = $wp_filesystem->abspath();
- if ( empty($wp_dir) )
- return new WP_Error('fs_no_wp_dir', __('Unable to locate WordPress directory.'));
-
- // And the same for the Content directory.
- $content_dir = $wp_filesystem->wp_content_dir();
- if( empty($content_dir) )
- return new WP_Error('fs_no_content_dir', __('Unable to locate WordPress Content directory (wp-content).'));
-
- $wp_dir = trailingslashit( $wp_dir );
- $content_dir = trailingslashit( $content_dir );
-
- // Get the URL to the zip file
- $package = $current->package;
-
- // Download the package
- apply_filters('update_feedback', sprintf(__('Downloading update from %s'), $package));
- $download_file = download_url($package);
-
- if ( is_wp_error($download_file) )
- return new WP_Error('download_failed', __('Download failed.'), $download_file->get_error_message());
-
- $working_dir = $content_dir . 'upgrade/core';
- // Clean up working directory
- if ( $wp_filesystem->is_dir($working_dir) ) {
- $wp_filesystem->delete($working_dir, true);
- }
-
- apply_filters('update_feedback', __('Unpacking the core update'));
- // Unzip package to working directory
- $result = unzip_file($download_file, $working_dir);
- // Once extracted, delete the package
- unlink($download_file);
-
- if ( is_wp_error($result) ) {
- $wp_filesystem->delete($working_dir, true);
- return $result;
- }
-
- // Copy update-core.php from the new version into place.
- if ( !$wp_filesystem->copy($working_dir . '/wordpress/wp-admin/includes/update-core.php', $wp_dir . 'wp-admin/includes/update-core.php', true) ) {
- $wp_filesystem->delete($working_dir, true);
- return new WP_Error('copy_failed', __('Could not copy files'));
- }
- $wp_filesystem->chmod($wp_dir . 'wp-admin/includes/update-core.php', FS_CHMOD_FILE);
-
- require(ABSPATH . 'wp-admin/includes/update-core.php');