2008-11-06 03:31:41 +00:00
<? php
/**
* Update Core administration panel.
*
* @package WordPress
* @subpackage Administration
*/
/** WordPress Administration Bootstrap */
require_once ( 'admin.php' );
if ( ! current_user_can ( 'update_plugins' ) )
wp_die ( __ ( 'You do not have sufficient permissions to update plugins for this blog.' ));
function list_core_update ( $update ) {
2009-12-23 18:35:12 +00:00
global $wp_local_package , $wpdb ;
2009-06-29 20:25:51 +00:00
$version_string = ( 'en_US' == $update -> locale && 'en_US' == get_locale () ) ?
2008-11-06 03:31:41 +00:00
$update -> current : sprintf ( "%s–<strong>%s</strong>" , $update -> current , $update -> locale );
$current = false ;
if ( ! isset ( $update -> response ) || 'latest' == $update -> response )
$current = true ;
2010-03-04 23:28:15 +00:00
$submit = __ ( 'Update Automatically' );
2008-12-10 07:59:05 +00:00
$form_action = 'update-core.php?action=do-core-upgrade' ;
2009-12-23 18:35:12 +00:00
$php_version = phpversion ();
$mysql_version = $wpdb -> db_version ();
$show_buttons = true ;
2008-11-06 03:31:41 +00:00
if ( 'development' == $update -> response ) {
2010-03-04 23:28:15 +00:00
$message = __ ( 'You are using a development version of WordPress. You can update to the latest nightly build automatically or download the nightly build and install it manually:' );
2008-11-06 03:31:41 +00:00
$download = __ ( 'Download nightly build' );
} else {
if ( $current ) {
2010-03-04 23:28:15 +00:00
$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 );
2008-11-06 03:31:41 +00:00
$submit = __ ( 'Re-install Automatically' );
2008-12-10 07:59:05 +00:00
$form_action = 'update-core.php?action=do-core-reinstall' ;
2008-11-06 03:31:41 +00:00
} else {
2009-12-23 18:35:12 +00:00
$php_compat = version_compare ( $php_version , $update -> php_version , '>=' );
$mysql_compat = version_compare ( $mysql_version , $update -> mysql_version , '>=' ) || file_exists ( WP_CONTENT_DIR . '/db.php' );
if ( ! $mysql_compat && ! $php_compat )
2010-03-04 23:28:15 +00:00
$message = sprintf ( __ ( 'You cannot update because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.' ), $update -> current , $update -> php_version , $update -> mysql_version , $php_version , $mysql_version );
2009-12-23 18:35:12 +00:00
elseif ( ! $php_compat )
2010-03-04 23:28:15 +00:00
$message = sprintf ( __ ( 'You cannot update because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires PHP version %2$s or higher. You are running version %3$s.' ), $update -> current , $update -> php_version , $php_version );
2009-12-23 18:35:12 +00:00
elseif ( ! $mysql_compat )
2010-03-04 23:28:15 +00:00
$message = sprintf ( __ ( 'You cannot update because <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> requires MySQL version %2$s or higher. You are running version %3$s.' ), $update -> current , $update -> mysql_version , $mysql_version );
2009-12-23 18:35:12 +00:00
else
2010-03-04 23:28:15 +00:00
$message = sprintf ( __ ( 'You can update to <a href="http://codex.wordpress.org/Version_%1$s">WordPress %1$s</a> automatically or download the package and install it manually:' ), $version_string );
2009-12-23 18:35:12 +00:00
if ( ! $mysql_compat || ! $php_compat )
$show_buttons = false ;
2008-11-06 03:31:41 +00:00
}
$download = sprintf ( __ ( 'Download %s' ), $version_string );
}
echo '<p>' ;
echo $message ;
echo '</p>' ;
2008-12-10 07:59:05 +00:00
echo '<form method="post" action="' . $form_action . '" name="upgrade" class="upgrade">' ;
2008-11-06 03:31:41 +00:00
wp_nonce_field ( 'upgrade-core' );
echo '<p>' ;
2009-05-05 19:43:53 +00:00
echo '<input name="version" value="' . esc_attr ( $update -> current ) . '" type="hidden"/>' ;
echo '<input name="locale" value="' . esc_attr ( $update -> locale ) . '" type="hidden"/>' ;
2009-12-23 18:35:12 +00:00
if ( $show_buttons ) {
echo '<input id="upgrade" class="button" type="submit" value="' . esc_attr ( $submit ) . '" name="upgrade" /> ' ;
echo '<a href="' . esc_url ( $update -> package ) . '" class="button">' . $download . '</a> ' ;
}
2008-11-06 03:31:41 +00:00
if ( 'en_US' != $update -> locale )
if ( ! isset ( $update -> dismissed ) || ! $update -> dismissed )
2009-05-05 19:43:53 +00:00
echo '<input id="dismiss" class="button" type="submit" value="' . esc_attr__ ( 'Hide this update' ) . '" name="dismiss" />' ;
2008-11-06 03:31:41 +00:00
else
2009-05-05 19:43:53 +00:00
echo '<input id="undismiss" class="button" type="submit" value="' . esc_attr__ ( 'Bring back this update' ) . '" name="undismiss" />' ;
2008-11-06 03:31:41 +00:00
echo '</p>' ;
2009-05-11 19:44:21 +00:00
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>' ;
2009-06-29 20:25:51 +00:00
else if ( 'en_US' == $update -> locale && get_locale () != 'en_US' ) {
echo '<p class="hint">' . sprintf ( __ ( 'You are about to install WordPress %s <strong>in English.</strong> There is a chance this upgrade will break your translation. You may prefer to wait for the localized version to be released.' ), $update -> current ) . '</p>' ;
}
2008-11-06 03:31:41 +00:00
echo '</form>' ;
2008-12-09 18:03:31 +00:00
2008-11-06 03:31:41 +00:00
}
function dismissed_updates () {
$dismissed = get_core_updates ( array ( 'dismissed' => true , 'available' => false ) );
if ( $dismissed ) {
2008-12-09 18:03:31 +00:00
2009-05-09 07:27:22 +00:00
$show_text = esc_js ( __ ( 'Show hidden updates' ));
$hide_text = esc_js ( __ ( 'Hide hidden updates' ));
2008-11-06 03:31:41 +00:00
?>
<script type="text/javascript">
2008-12-09 18:03:31 +00:00
2008-11-06 03:31:41 +00:00
jQuery(function($) {
$('dismissed-updates').show();
$('#show-dismissed').toggle(function(){$(this).text('<?php echo $hide_text; ?>');}, function() {$(this).text('<?php echo $show_text; ?>')});
$('#show-dismissed').click(function() { $('#dismissed-updates').toggle('slow');});
});
</script>
<?php
echo '<p class="hide-if-no-js"><a id="show-dismissed" href="#">'.__('Show hidden updates').'</a></p>';
echo '<ul id="dismissed-updates" class="core-updates dismissed">';
2008-11-14 22:50:46 +00:00
foreach( (array) $dismissed as $update) {
2008-11-06 03:31:41 +00:00
echo '<li>';
list_core_update( $update );
echo '</li>';
}
echo '</ul>';
2008-12-09 18:03:31 +00:00
}
2008-11-06 03:31:41 +00:00
}
/**
* Display upgrade WordPress for downloading latest or upgrading automatically form.
*
* @since 2.7
*
* @return null
*/
function core_upgrade_preamble() {
2009-12-17 20:18:12 +00:00
global $upgrade_error;
2008-11-06 03:31:41 +00:00
$updates = get_core_updates();
2008-11-26 13:51:25 +00:00
?>
<div class="wrap">
2010-03-04 21:24:43 +00:00
<?php screen_icon('tools'); ?>
<h2><?php _e('WordPress Updates'); ?></h2>
2008-11-26 13:51:25 +00:00
<?php
2009-12-17 20:18:12 +00:00
if ( $upgrade_error ) {
echo '<div class="error"><p>';
_e('Please select one or more plugins to upgrade.');
echo '</p></div>';
}
2008-11-06 03:31:41 +00:00
if ( !isset($updates[0]->response) || 'latest' == $updates[0]->response ) {
echo '<h3>';
2010-03-04 23:28:15 +00:00
_e('You have the latest version of WordPress. You do not need to update');
2008-11-06 03:31:41 +00:00
echo '</h3>';
} else {
2009-12-26 09:00:58 +00:00
echo '<div class="updated"><p>';
2010-03-04 23:28:15 +00:00
_e('<strong>Important:</strong> before updating, please <a href="http://codex.wordpress.org/WordPress_Backups">backup your database and files</a>.');
2008-11-06 03:31:41 +00:00
echo '</p></div>';
2008-12-09 18:03:31 +00:00
2008-11-06 03:31:41 +00:00
echo '<h3 class="response">';
2010-03-04 23:28:15 +00:00
_e( 'There is a new version of WordPress available for update' );
2008-11-06 03:31:41 +00:00
echo '</h3>';
}
echo '<ul class="core-updates">';
$alternate = true;
2008-11-14 22:50:46 +00:00
foreach( (array) $updates as $update ) {
2008-11-06 03:31:41 +00:00
$class = $alternate? ' class="alternate"' : '';
$alternate = !$alternate;
echo "<li $class>";
list_core_update( $update );
echo '</li>';
}
echo '</ul>';
dismissed_updates();
2009-10-20 16:11:59 +00:00
list_plugin_updates();
2009-10-22 16:10:28 +00:00
//list_theme_updates();
2009-11-17 22:49:00 +00:00
do_action('core_upgrade_preamble');
2009-10-26 07:04:30 +00:00
echo '</div>';
2009-10-20 16:11:59 +00:00
}
function list_plugin_updates() {
2009-11-09 18:53:21 +00:00
global $wp_version;
$cur_wp_version = preg_replace('/-.*$/', '', $wp_version);
require_once(ABSPATH . 'wp-admin/includes/plugin-install.php');
2009-10-20 16:11:59 +00:00
$plugins = get_plugin_updates();
if ( empty($plugins) )
return;
2009-10-22 21:06:33 +00:00
$form_action = 'update-core.php?action=do-plugin-upgrade';
2009-12-15 19:09:55 +00:00
$core_updates = get_core_updates();
2009-12-21 23:54:52 +00:00
if ( !isset($core_updates[0]->response) || 'latest' == $core_updates[0]->response || 'development' == $core_updates[0]->response || version_compare( $core_updates[0]->current, $cur_wp_version, '=') )
2009-12-15 19:09:55 +00:00
$core_update_version = false;
else
$core_update_version = $core_updates[0]->current;
2009-10-22 16:10:28 +00:00
?>
2009-10-20 16:11:59 +00:00
<h3><?php _e('Plugins'); ?></h3>
2010-03-04 23:28:15 +00:00
<p><?php _e('The following plugins have new versions available. Check the ones you want to update and then click "Update Plugins".'); ?></p>
2009-10-22 21:06:33 +00:00
<form method="post" action="<?php echo $form_action; ?>" name="upgrade-plugins" class="upgrade">
2009-10-22 16:10:28 +00:00
<?php wp_nonce_field('upgrade-core'); ?>
2010-03-04 23:28:15 +00:00
<p><input id="upgrade-plugins" class="button" type="submit" value="<?php esc_attr_e('Update Plugins'); ?>" name="upgrade" /></p>
2009-10-20 16:11:59 +00:00
<table class="widefat" cellspacing="0" id="update-plugins-table">
<thead>
<tr>
<th scope="col" class="manage-column check-column"><input type="checkbox" /></th>
2009-10-22 16:10:28 +00:00
<th scope="col" class="manage-column"><?php _e('Select All'); ?></th>
2009-10-20 16:11:59 +00:00
</tr>
</thead>
<tfoot>
<tr>
<th scope="col" class="manage-column check-column"><input type="checkbox" /></th>
2009-10-22 16:10:28 +00:00
<th scope="col" class="manage-column"><?php _e('Select All'); ?></th>
2009-10-20 16:11:59 +00:00
</tr>
</tfoot>
<tbody class="plugins">
<?php
foreach ( (array) $plugins as $plugin_file => $plugin_data) {
2009-11-09 18:53:21 +00:00
$info = plugins_api('plugin_information', array('slug' => $plugin_data->update->slug ));
2009-12-15 19:09:55 +00:00
// Get plugin compat for running version of WordPress.
2009-12-16 03:08:17 +00:00
if ( isset($info->tested) && version_compare($info->tested, $cur_wp_version, '>=') ) {
2009-12-17 22:00:51 +00:00
$compat = '<br />' . sprintf(__('Compatibility with WordPress %1$s: 100%% (according to its author)'), $cur_wp_version);
2009-12-16 03:08:17 +00:00
} elseif ( isset($info->compatibility[$cur_wp_version][$plugin_data->update->new_version]) ) {
2009-11-09 18:53:21 +00:00
$compat = $info->compatibility[$cur_wp_version][$plugin_data->update->new_version];
2009-12-15 19:09:55 +00:00
$compat = '<br />' . sprintf(__('Compatibility with WordPress %1$s: %2$d%% (%3$d "works" votes out of %4$d total)'), $cur_wp_version, $compat[0], $compat[2], $compat[1]);
2009-11-09 18:53:21 +00:00
} else {
2009-12-18 18:19:43 +00:00
$compat = '<br />' . sprintf(__('Compatibility with WordPress %1$s: Unknown'), $cur_wp_version);
2009-12-15 19:09:55 +00:00
}
// Get plugin compat for updated version of WordPress.
if ( $core_update_version ) {
if ( isset($info->compatibility[$core_update_version][$plugin_data->update->new_version]) ) {
$update_compat = $info->compatibility[$core_update_version][$plugin_data->update->new_version];
$compat .= '<br />' . sprintf(__('Compatibility with WordPress %1$s: %2$d%% (%3$d "works" votes out of %4$d total)'), $core_update_version, $update_compat[0], $update_compat[2], $update_compat[1]);
} else {
$compat .= '<br />' . sprintf(__('Compatibility with WordPress %1$s: Unknown'), $core_update_version);
}
2009-11-09 18:53:21 +00:00
}
2009-12-15 19:09:55 +00:00
// Get the upgrade notice for the new plugin version.
2009-12-11 17:18:29 +00:00
if ( isset($plugin_data->update->upgrade_notice) ) {
$upgrade_notice = '<br />' . strip_tags($plugin_data->update->upgrade_notice);
} else {
$upgrade_notice = '';
}
2009-10-20 16:11:59 +00:00
echo "
<tr class='active'>
<th scope='row' class='check-column'><input type='checkbox' name='checked[]' value='" . esc_attr($plugin_file) . "' /></th>
2010-03-04 23:28:15 +00:00
<td class='plugin-title'><strong>{$plugin_data->Name}</strong>" . sprintf(__('You are running version %1$s. Update to %2$s.'), $plugin_data->Version, $plugin_data->update->new_version) . $compat . $upgrade_notice . "</td>
2009-10-20 16:11:59 +00:00
</tr>";
}
?>
</tbody>
</table>
2010-03-04 23:28:15 +00:00
<p><input id="upgrade-plugins-2" class="button" type="submit" value="<?php esc_attr_e('Update Plugins'); ?>" name="upgrade" /></p>
2009-10-22 16:10:28 +00:00
</form>
2009-10-20 16:11:59 +00:00
<?php
2008-11-06 03:31:41 +00:00
}
2009-10-20 16:11:59 +00:00
function list_theme_updates() {
$themes = get_theme_updates();
if ( empty($themes) )
return;
?>
<h3><?php _e('Themes'); ?></h3>
<table class="widefat" cellspacing="0" id="update-themes-table">
<thead>
<tr>
<th scope="col" class="manage-column check-column"><input type="checkbox" /></th>
<th scope="col" class="manage-column"><?php _e('Name'); ?></th>
</tr>
</thead>
<tfoot>
<tr>
<th scope="col" class="manage-column check-column"><input type="checkbox" /></th>
<th scope="col" class="manage-column"><?php _e('Name'); ?></th>
</tr>
</tfoot>
<tbody class="plugins">
<?php
foreach ( (array) $themes as $stylesheet => $theme_data) {
echo "
<tr class='active'>
<th scope='row' class='check-column'><input type='checkbox' name='checked[]' value='" . esc_attr($stylesheet) . "' /></th>
<td class='plugin-title'><strong>{$theme_data->Name}</strong></td>
</tr>";
}
?>
</tbody>
</table>
<?php
}
2008-11-06 03:31:41 +00:00
/**
* Upgrade WordPress core display.
*
* @since 2.7
*
* @return null
*/
2008-12-10 07:59:05 +00:00
function do_core_upgrade( $reinstall = false ) {
2008-11-06 03:31:41 +00:00
global $wp_filesystem;
2008-12-09 18:03:31 +00:00
2009-01-11 21:48:40 +00:00
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');
2009-05-31 21:08:03 +00:00
if ( false === ($credentials = request_filesystem_credentials($url, '', false, ABSPATH)) )
2008-11-06 03:31:41 +00:00
return;
2008-12-09 18:03:31 +00:00
2008-11-06 03:31:41 +00:00
$version = isset( $_POST['version'] )? $_POST['version'] : false;
$locale = isset( $_POST['locale'] )? $_POST['locale'] : 'en_US';
$update = find_core_update( $version, $locale );
if ( !$update )
return;
2008-12-09 18:03:31 +00:00
2008-11-06 03:31:41 +00:00
2009-05-31 21:08:03 +00:00
if ( ! WP_Filesystem($credentials, ABSPATH) ) {
request_filesystem_credentials($url, '', true, ABSPATH); //Failed to connect, Error and request again
2008-11-06 03:31:41 +00:00
return;
}
2008-11-26 13:51:25 +00:00
?>
<div class="wrap">
<?php screen_icon(); ?>
2010-03-04 23:28:15 +00:00
<h2><?php _e('Update WordPress'); ?></h2>
2008-11-26 13:51:25 +00:00
<?php
2008-11-06 03:31:41 +00:00
if ( $wp_filesystem->errors->get_error_code() ) {
foreach ( $wp_filesystem->errors->get_error_messages() as $message )
show_message($message);
echo '</div>';
return;
}
2008-12-10 07:59:05 +00:00
if ( $reinstall )
$update->response = 'reinstall';
2008-11-06 03:31:41 +00:00
$result = wp_update_core($update, 'show_message');
if ( is_wp_error($result) ) {
show_message($result);
if ('up_to_date' != $result->get_error_code() )
show_message( __('Installation Failed') );
} else {
2010-03-04 23:28:15 +00:00
show_message( __('WordPress updated successfully') );
2010-02-28 00:12:43 +00:00
show_message( '<strong>' . __('Actions:') . '</strong> <a href="' . esc_url( admin_url() ) . '">' . __('Go to Dashboard') . '</a>' );
2008-11-06 03:31:41 +00:00
}
echo '</div>';
}
function do_dismiss_core_update() {
$version = isset( $_POST['version'] )? $_POST['version'] : false;
$locale = isset( $_POST['locale'] )? $_POST['locale'] : 'en_US';
$update = find_core_update( $version, $locale );
if ( !$update )
return;
dismiss_core_update( $update );
wp_redirect( wp_nonce_url('update-core.php?action=upgrade-core', 'upgrade-core') );
}
function do_undismiss_core_update() {
$version = isset( $_POST['version'] )? $_POST['version'] : false;
$locale = isset( $_POST['locale'] )? $_POST['locale'] : 'en_US';
$update = find_core_update( $version, $locale );
if ( !$update )
return;
undismiss_core_update( $version, $locale );
wp_redirect( wp_nonce_url('update-core.php?action=upgrade-core', 'upgrade-core') );
}
2009-10-23 21:49:12 +00:00
function no_update_actions($actions) {
return '';
}
2008-11-06 03:31:41 +00:00
$action = isset($_GET['action']) ? $_GET['action'] : 'upgrade-core';
2008-12-09 18:03:31 +00:00
2009-12-17 20:18:12 +00:00
$upgrade_error = false;
if ( 'do-plugin-upgrade' == $action && !isset($_GET['plugins']) && !isset($_POST['checked']) ) {
$upgrade_error = true;
$action = 'upgrade-core';
}
2009-10-22 21:06:33 +00:00
$title = __('Upgrade WordPress');
$parent_file = 'tools.php';
2008-11-06 03:31:41 +00:00
if ( 'upgrade-core' == $action ) {
2009-02-17 00:13:25 +00:00
wp_version_check();
2008-11-06 03:31:41 +00:00
require_once('admin-header.php');
core_upgrade_preamble();
2008-12-10 07:59:05 +00:00
} elseif ( 'do-core-upgrade' == $action || 'do-core-reinstall' == $action ) {
2008-11-06 03:31:41 +00:00
check_admin_referer('upgrade-core');
2010-03-06 08:39:50 +00:00
2008-11-06 03:31:41 +00:00
// do the (un)dismiss actions before headers,
// so that they can redirect
if ( isset( $_POST['dismiss'] ) )
do_dismiss_core_update();
elseif ( isset( $_POST['undismiss'] ) )
2010-03-06 08:39:50 +00:00
do_undismiss_core_update();
2008-11-06 03:31:41 +00:00
require_once('admin-header.php');
2008-12-10 07:59:05 +00:00
if ( 'do-core-reinstall' == $action )
$reinstall = true;
else
$reinstall = false;
2010-03-06 08:39:50 +00:00
2008-11-06 03:31:41 +00:00
if ( isset( $_POST['upgrade'] ) )
2008-12-10 07:59:05 +00:00
do_core_upgrade($reinstall);
2010-03-06 08:39:50 +00:00
2009-10-22 21:06:33 +00:00
} elseif ( 'do-plugin-upgrade' == $action ) {
check_admin_referer('upgrade-core');
2010-03-06 08:39:50 +00:00
if ( isset( $_GET['plugins'] ) ) {
$plugins = explode( ',', $_GET['plugins'] );
} elseif ( isset( $_POST['checked'] ) ) {
$plugins = (array) $_POST['checked'];
} else {
wp_redirect('plugins.php');
exit;
}
$url = 'update.php?action=update-selected&plugins=' . urlencode(implode(',', $plugins));
$url = wp_nonce_url($url, 'bulk-update-plugins');
$title = __('Update Plugins');
2009-10-22 21:06:33 +00:00
require_once('admin-header.php');
2010-03-06 08:39:50 +00:00
echo '<div class="wrap">';
screen_icon('plugins');
echo '<h2>' . esc_html__('Update Plugins') . '</h2>';
echo "<iframe src='$url' style='width: 100%; height:100%; min-height:850px;'></iframe>";
echo '</div>';
2009-10-22 21:06:33 +00:00
}
2008-12-10 07:59:05 +00:00
2009-10-22 21:06:33 +00:00
include('admin-footer.php');