2008-11-06 04:31:41 +01: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 19:35:12 +01:00
global $wp_local_package , $wpdb ;
2009-06-29 22:25:51 +02:00
$version_string = ( 'en_US' == $update -> locale && 'en_US' == get_locale () ) ?
2008-11-06 04:31:41 +01:00
$update -> current : sprintf ( " %s–<strong>%s</strong> " , $update -> current , $update -> locale );
$current = false ;
if ( ! isset ( $update -> response ) || 'latest' == $update -> response )
$current = true ;
$submit = __ ( 'Upgrade Automatically' );
2008-12-10 08:59:05 +01:00
$form_action = 'update-core.php?action=do-core-upgrade' ;
2009-12-23 19:35:12 +01:00
$php_version = phpversion ();
$mysql_version = $wpdb -> db_version ();
$show_buttons = true ;
2008-11-06 04:31:41 +01:00
if ( 'development' == $update -> response ) {
$message = __ ( 'You are using a development version of WordPress. You can upgrade to the latest nightly build automatically or download the nightly build and install it manually:' );
$download = __ ( 'Download nightly build' );
} else {
if ( $current ) {
$message = sprintf ( __ ( 'You have the latest version of WordPress. You do not need to upgrade. However, if you want to re-install version %s, you can do so automatically or download the package and re-install manually:' ), $version_string );
$submit = __ ( 'Re-install Automatically' );
2008-12-10 08:59:05 +01:00
$form_action = 'update-core.php?action=do-core-reinstall' ;
2008-11-06 04:31:41 +01:00
} else {
2009-12-23 19:35:12 +01: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-02-20 13:28:10 +01:00
$message = sprintf ( __ ( 'You cannot upgrade 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 19:35:12 +01:00
elseif ( ! $php_compat )
2010-02-20 13:28:10 +01:00
$message = sprintf ( __ ( 'You cannot upgrade 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 19:35:12 +01:00
elseif ( ! $mysql_compat )
2010-02-20 13:28:10 +01:00
$message = sprintf ( __ ( 'You cannot upgrade 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 19:35:12 +01:00
else
2010-02-20 13:28:10 +01:00
$message = sprintf ( __ ( 'You can upgrade 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 19:35:12 +01:00
if ( ! $mysql_compat || ! $php_compat )
$show_buttons = false ;
2008-11-06 04:31:41 +01:00
}
$download = sprintf ( __ ( 'Download %s' ), $version_string );
}
echo '<p>' ;
echo $message ;
echo '</p>' ;
2008-12-10 08:59:05 +01:00
echo '<form method="post" action="' . $form_action . '" name="upgrade" class="upgrade">' ;
2008-11-06 04:31:41 +01:00
wp_nonce_field ( 'upgrade-core' );
echo '<p>' ;
2009-05-05 21:43:53 +02: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 19:35:12 +01: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 04:31:41 +01:00
if ( 'en_US' != $update -> locale )
if ( ! isset ( $update -> dismissed ) || ! $update -> dismissed )
2009-05-05 21:43:53 +02:00
echo '<input id="dismiss" class="button" type="submit" value="' . esc_attr__ ( 'Hide this update' ) . '" name="dismiss" />' ;
2008-11-06 04:31:41 +01:00
else
2009-05-05 21:43:53 +02:00
echo '<input id="undismiss" class="button" type="submit" value="' . esc_attr__ ( 'Bring back this update' ) . '" name="undismiss" />' ;
2008-11-06 04:31:41 +01:00
echo '</p>' ;
2009-05-11 21:44:21 +02: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 22:25:51 +02: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 04:31:41 +01:00
echo '</form>' ;
2008-12-09 19:03:31 +01:00
2008-11-06 04:31:41 +01:00
}
function dismissed_updates () {
$dismissed = get_core_updates ( array ( 'dismissed' => true , 'available' => false ) );
if ( $dismissed ) {
2008-12-09 19:03:31 +01:00
2009-05-09 09:27:22 +02:00
$show_text = esc_js ( __ ( 'Show hidden updates' ));
$hide_text = esc_js ( __ ( 'Hide hidden updates' ));
2008-11-06 04:31:41 +01:00
?>
< script type = " text/javascript " >
2008-12-09 19:03:31 +01:00
2008-11-06 04:31:41 +01: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 23:50:46 +01:00
foreach ( ( array ) $dismissed as $update ) {
2008-11-06 04:31:41 +01:00
echo '<li>' ;
list_core_update ( $update );
echo '</li>' ;
}
echo '</ul>' ;
2008-12-09 19:03:31 +01:00
}
2008-11-06 04:31:41 +01:00
}
/**
* Display upgrade WordPress for downloading latest or upgrading automatically form .
*
* @ since 2.7
*
* @ return null
*/
function core_upgrade_preamble () {
2009-12-17 21:18:12 +01:00
global $upgrade_error ;
2008-11-06 04:31:41 +01:00
$updates = get_core_updates ();
2008-11-26 14:51:25 +01:00
?>
< div class = " wrap " >
< ? php screen_icon (); ?>
< h2 >< ? php _e ( 'Upgrade WordPress' ); ?> </h2>
< ? php
2009-12-17 21:18:12 +01:00
if ( $upgrade_error ) {
echo '<div class="error"><p>' ;
_e ( 'Please select one or more plugins to upgrade.' );
echo '</p></div>' ;
}
2008-11-06 04:31:41 +01:00
if ( ! isset ( $updates [ 0 ] -> response ) || 'latest' == $updates [ 0 ] -> response ) {
echo '<h3>' ;
_e ( 'You have the latest version of WordPress. You do not need to upgrade' );
echo '</h3>' ;
} else {
2009-12-26 10:00:58 +01:00
echo '<div class="updated"><p>' ;
2008-12-09 19:03:31 +01:00
_e ( '<strong>Important:</strong> before upgrading, please <a href="http://codex.wordpress.org/WordPress_Backups">backup your database and files</a>.' );
2008-11-06 04:31:41 +01:00
echo '</p></div>' ;
2008-12-09 19:03:31 +01:00
2008-11-06 04:31:41 +01:00
echo '<h3 class="response">' ;
_e ( 'There is a new version of WordPress available for upgrade' );
echo '</h3>' ;
}
echo '<ul class="core-updates">' ;
$alternate = true ;
2008-11-14 23:50:46 +01:00
foreach ( ( array ) $updates as $update ) {
2008-11-06 04:31:41 +01:00
$class = $alternate ? ' class="alternate"' : '' ;
$alternate = ! $alternate ;
echo " <li $class > " ;
list_core_update ( $update );
echo '</li>' ;
}
echo '</ul>' ;
dismissed_updates ();
2009-10-20 18:11:59 +02:00
list_plugin_updates ();
2009-10-22 18:10:28 +02:00
//list_theme_updates();
2009-11-17 23:49:00 +01:00
do_action ( 'core_upgrade_preamble' );
2009-10-26 08:04:30 +01:00
echo '</div>' ;
2009-10-20 18:11:59 +02:00
}
function list_plugin_updates () {
2009-11-09 19:53:21 +01:00
global $wp_version ;
$cur_wp_version = preg_replace ( '/-.*$/' , '' , $wp_version );
require_once ( ABSPATH . 'wp-admin/includes/plugin-install.php' );
2009-10-20 18:11:59 +02:00
$plugins = get_plugin_updates ();
if ( empty ( $plugins ) )
return ;
2009-10-22 23:06:33 +02:00
$form_action = 'update-core.php?action=do-plugin-upgrade' ;
2009-12-15 20:09:55 +01:00
$core_updates = get_core_updates ();
2009-12-22 00:54:52 +01: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 20:09:55 +01:00
$core_update_version = false ;
else
$core_update_version = $core_updates [ 0 ] -> current ;
2009-10-22 18:10:28 +02:00
?>
2009-10-20 18:11:59 +02:00
< h3 >< ? php _e ( 'Plugins' ); ?> </h3>
2009-12-22 18:15:54 +01:00
< p >< ? php _e ( 'The following plugins have new versions available. Check the ones you want to upgrade and then click "Upgrade Plugins".' ); ?> </p>
2009-10-22 23:06:33 +02:00
< form method = " post " action = " <?php echo $form_action ; ?> " name = " upgrade-plugins " class = " upgrade " >
2009-10-22 18:10:28 +02:00
< ? php wp_nonce_field ( 'upgrade-core' ); ?>
< p >< input id = " upgrade-plugins " class = " button " type = " submit " value = " <?php esc_attr_e('Upgrade Plugins'); ?> " name = " upgrade " /></ p >
2009-10-20 18:11:59 +02: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 18:10:28 +02:00
< th scope = " col " class = " manage-column " >< ? php _e ( 'Select All' ); ?> </th>
2009-10-20 18:11:59 +02:00
</ tr >
</ thead >
< tfoot >
< tr >
< th scope = " col " class = " manage-column check-column " >< input type = " checkbox " /></ th >
2009-10-22 18:10:28 +02:00
< th scope = " col " class = " manage-column " >< ? php _e ( 'Select All' ); ?> </th>
2009-10-20 18:11:59 +02:00
</ tr >
</ tfoot >
< tbody class = " plugins " >
< ? php
foreach ( ( array ) $plugins as $plugin_file => $plugin_data ) {
2009-11-09 19:53:21 +01:00
$info = plugins_api ( 'plugin_information' , array ( 'slug' => $plugin_data -> update -> slug ));
2009-12-15 20:09:55 +01:00
// Get plugin compat for running version of WordPress.
2009-12-16 04:08:17 +01:00
if ( isset ( $info -> tested ) && version_compare ( $info -> tested , $cur_wp_version , '>=' ) ) {
2009-12-17 23:00:51 +01:00
$compat = '<br />' . sprintf ( __ ( 'Compatibility with WordPress %1$s: 100%% (according to its author)' ), $cur_wp_version );
2009-12-16 04:08:17 +01:00
} elseif ( isset ( $info -> compatibility [ $cur_wp_version ][ $plugin_data -> update -> new_version ]) ) {
2009-11-09 19:53:21 +01:00
$compat = $info -> compatibility [ $cur_wp_version ][ $plugin_data -> update -> new_version ];
2009-12-15 20:09:55 +01: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 19:53:21 +01:00
} else {
2009-12-18 19:19:43 +01:00
$compat = '<br />' . sprintf ( __ ( 'Compatibility with WordPress %1$s: Unknown' ), $cur_wp_version );
2009-12-15 20:09:55 +01: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 19:53:21 +01:00
}
2009-12-15 20:09:55 +01:00
// Get the upgrade notice for the new plugin version.
2009-12-11 18:18:29 +01:00
if ( isset ( $plugin_data -> update -> upgrade_notice ) ) {
$upgrade_notice = '<br />' . strip_tags ( $plugin_data -> update -> upgrade_notice );
} else {
$upgrade_notice = '' ;
}
2009-10-20 18:11:59 +02:00
echo "
< tr class = 'active' >
< th scope = 'row' class = 'check-column' >< input type = 'checkbox' name = 'checked[]' value = '" . esc_attr($plugin_file) . "' /></ th >
2009-12-11 18:18:29 +01:00
< td class = 'plugin-title' >< strong > { $plugin_data -> Name } </ strong > " . sprintf(__('You are running version %1 $s . Upgrade to %2 $s .'), $plugin_data->Version , $plugin_data->update ->new_version) . $compat . $upgrade_notice . " </ td >
2009-10-20 18:11:59 +02:00
</ tr > " ;
}
?>
</ tbody >
</ table >
2009-10-22 18:10:28 +02:00
< p >< input id = " upgrade-plugins-2 " class = " button " type = " submit " value = " <?php esc_attr_e('Upgrade Plugins'); ?> " name = " upgrade " /></ p >
</ form >
2009-10-20 18:11:59 +02:00
< ? php
2008-11-06 04:31:41 +01:00
}
2009-10-20 18:11:59 +02: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 04:31:41 +01:00
/**
* Upgrade WordPress core display .
*
* @ since 2.7
*
* @ return null
*/
2008-12-10 08:59:05 +01:00
function do_core_upgrade ( $reinstall = false ) {
2008-11-06 04:31:41 +01:00
global $wp_filesystem ;
2008-12-09 19:03:31 +01:00
2009-01-11 22:48:40 +01: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 23:08:03 +02:00
if ( false === ( $credentials = request_filesystem_credentials ( $url , '' , false , ABSPATH )) )
2008-11-06 04:31:41 +01:00
return ;
2008-12-09 19:03:31 +01:00
2008-11-06 04:31:41 +01: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 19:03:31 +01:00
2008-11-06 04:31:41 +01:00
2009-05-31 23:08:03 +02:00
if ( ! WP_Filesystem ( $credentials , ABSPATH ) ) {
request_filesystem_credentials ( $url , '' , true , ABSPATH ); //Failed to connect, Error and request again
2008-11-06 04:31:41 +01:00
return ;
}
2008-11-26 14:51:25 +01:00
?>
< div class = " wrap " >
< ? php screen_icon (); ?>
< h2 >< ? php _e ( 'Upgrade WordPress' ); ?> </h2>
< ? php
2008-11-06 04:31:41 +01: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 08:59:05 +01:00
if ( $reinstall )
$update -> response = 'reinstall' ;
2008-11-06 04:31:41 +01: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 {
show_message ( __ ( 'WordPress upgraded successfully' ) );
}
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 23:49:12 +02:00
function no_update_actions ( $actions ) {
return '' ;
}
2009-10-22 23:06:33 +02:00
function do_plugin_upgrade () {
2010-01-26 07:53:47 +01:00
if ( isset ( $_GET [ 'plugins' ] ) ) {
$plugins = explode ( ',' , $_GET [ 'plugins' ] );
} elseif ( isset ( $_POST [ 'checked' ] ) ) {
2009-10-23 23:49:12 +02:00
$plugins = ( array ) $_POST [ 'checked' ];
2009-12-17 21:18:12 +01:00
} else {
// Nothing to do.
return ;
2009-10-22 23:06:33 +02:00
}
2010-01-26 07:53:47 +01:00
include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ;
$url = 'update-core.php?action=do-plugin-upgrade&plugins=' . urlencode ( implode ( ',' , $plugins ) );
$title = __ ( 'Upgrade Plugins' );
2009-10-23 23:49:12 +02:00
$nonce = 'upgrade-core' ;
2010-01-26 07:53:47 +01:00
$upgrader = new Plugin_Upgrader ( new Plugin_Upgrader_Skin ( compact ( 'title' , 'nonce' , 'url' ) ) );
$upgrader -> bulk_upgrade ( $plugins );
2009-10-22 23:06:33 +02:00
}
2008-11-06 04:31:41 +01:00
$action = isset ( $_GET [ 'action' ]) ? $_GET [ 'action' ] : 'upgrade-core' ;
2008-12-09 19:03:31 +01:00
2009-12-17 21:18:12 +01:00
$upgrade_error = false ;
if ( 'do-plugin-upgrade' == $action && ! isset ( $_GET [ 'plugins' ]) && ! isset ( $_POST [ 'checked' ]) ) {
$upgrade_error = true ;
$action = 'upgrade-core' ;
}
2009-10-22 23:06:33 +02:00
$title = __ ( 'Upgrade WordPress' );
$parent_file = 'tools.php' ;
2008-11-06 04:31:41 +01:00
if ( 'upgrade-core' == $action ) {
2009-02-17 01:13:25 +01:00
wp_version_check ();
2008-11-06 04:31:41 +01:00
require_once ( 'admin-header.php' );
core_upgrade_preamble ();
2008-12-10 08:59:05 +01:00
} elseif ( 'do-core-upgrade' == $action || 'do-core-reinstall' == $action ) {
2008-11-06 04:31:41 +01:00
check_admin_referer ( 'upgrade-core' );
// do the (un)dismiss actions before headers,
// so that they can redirect
if ( isset ( $_POST [ 'dismiss' ] ) )
do_dismiss_core_update ();
elseif ( isset ( $_POST [ 'undismiss' ] ) )
do_undismiss_core_update ();
require_once ( 'admin-header.php' );
2008-12-10 08:59:05 +01:00
if ( 'do-core-reinstall' == $action )
$reinstall = true ;
else
$reinstall = false ;
2008-11-06 04:31:41 +01:00
if ( isset ( $_POST [ 'upgrade' ] ) )
2008-12-10 08:59:05 +01:00
do_core_upgrade ( $reinstall );
2009-10-22 23:06:33 +02:00
} elseif ( 'do-plugin-upgrade' == $action ) {
check_admin_referer ( 'upgrade-core' );
require_once ( 'admin-header.php' );
do_plugin_upgrade ();
}
2008-12-10 08:59:05 +01:00
2009-10-22 23:06:33 +02:00
include ( 'admin-footer.php' );