2008-11-06 04:31:41 +01:00
< ? php
/**
* Update Core administration panel .
*
* @ package WordPress
* @ subpackage Administration
*/
/** WordPress Administration Bootstrap */
2013-09-25 02:18:11 +02:00
require_once ( dirname ( __FILE__ ) . '/admin.php' );
2008-11-06 04:31:41 +01:00
2011-10-19 16:51:48 +02:00
wp_enqueue_style ( 'plugin-install' );
wp_enqueue_script ( 'plugin-install' );
2014-02-26 07:55:14 +01:00
wp_enqueue_script ( 'updates' );
2011-10-19 16:51:48 +02:00
add_thickbox ();
2011-10-24 21:13:23 +02:00
2010-12-06 16:41:19 +01:00
if ( is_multisite () && ! is_network_admin () ) {
wp_redirect ( network_admin_url ( 'update-core.php' ) );
exit ();
}
2012-06-30 14:54:05 +02:00
if ( ! current_user_can ( 'update_core' ) && ! current_user_can ( 'update_themes' ) && ! current_user_can ( 'update_plugins' ) )
2010-12-18 09:14:54 +01:00
wp_die ( __ ( 'You do not have sufficient permissions to update this site.' ) );
2008-11-06 04:31:41 +01:00
2015-05-28 23:41:30 +02:00
/**
*
* @ global string $wp_local_package
* @ global wpdb $wpdb
* @ global string $wp_version
*
* @ staticvar bool $first_pass
*
* @ param object $update
*/
2008-11-06 04:31:41 +01:00
function list_core_update ( $update ) {
2013-10-15 07:08:09 +02:00
global $wp_local_package , $wpdb , $wp_version ;
static $first_pass = true ;
2013-10-25 04:29:52 +02:00
2013-10-15 07:08:09 +02:00
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–<strong>%s</strong> " , $update -> current , $update -> locale );
2013-10-25 04:29:52 +02:00
2008-11-06 04:31:41 +01:00
$current = false ;
if ( ! isset ( $update -> response ) || 'latest' == $update -> response )
$current = true ;
2011-06-10 07:37:51 +02:00
$submit = __ ( 'Update Now' );
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 ) {
2011-12-14 00:45:31 +01: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 04:31:41 +01:00
$download = __ ( 'Download nightly build' );
} else {
if ( $current ) {
2013-10-17 01:06:09 +02:00
$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 );
2011-06-10 07:37:51 +02:00
$submit = __ ( 'Re-install Now' );
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 {
2011-12-01 05:51:35 +01:00
$php_compat = version_compare ( $php_version , $update -> php_version , '>=' );
2011-10-25 07:29:28 +02:00
if ( file_exists ( WP_CONTENT_DIR . '/db.php' ) && empty ( $wpdb -> is_mysql ) )
$mysql_compat = true ;
else
2011-11-13 16:20:25 +01:00
$mysql_compat = version_compare ( $mysql_version , $update -> mysql_version , '>=' );
2011-10-25 07:29:28 +02:00
2009-12-23 19:35:12 +01:00
if ( ! $mysql_compat && ! $php_compat )
2015-04-12 23:29:32 +02:00
$message = sprintf ( __ ( 'You cannot update because <a href="https://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 )
2015-04-12 23:29:32 +02:00
$message = sprintf ( __ ( 'You cannot update because <a href="https://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 )
2015-04-12 23:29:32 +02:00
$message = sprintf ( __ ( 'You cannot update because <a href="https://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
2015-04-12 23:29:32 +02:00
$message = sprintf ( __ ( 'You can update to <a href="https://codex.wordpress.org/Version_%1$s">WordPress %2$s</a> automatically or download the package and install it manually:' ), $update -> current , $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 ) {
2011-06-10 07:37:51 +02:00
if ( $first_pass ) {
2012-09-21 21:34:23 +02:00
submit_button ( $submit , $current ? 'button' : 'primary regular' , 'upgrade' , false );
2011-06-10 07:37:51 +02:00
$first_pass = false ;
} else {
submit_button ( $submit , 'button' , 'upgrade' , false );
}
2011-06-10 07:47:44 +02:00
echo ' <a href="' . esc_url ( $update -> download ) . '" class="button">' . $download . '</a> ' ;
2009-12-23 19:35:12 +01:00
}
2008-11-06 04:31:41 +01:00
if ( 'en_US' != $update -> locale )
if ( ! isset ( $update -> dismissed ) || ! $update -> dismissed )
2010-10-28 23:56:43 +02:00
submit_button ( __ ( 'Hide this update' ), 'button' , 'dismiss' , false );
2008-11-06 04:31:41 +01:00
else
2010-10-28 23:56:43 +02:00
submit_button ( __ ( 'Bring back this update' ), 'button' , 'undismiss' , false );
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>' ;
2013-10-15 07:08:09 +02:00
// 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 ) ) {
2011-06-10 07:37:51 +02:00
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>' ;
2009-06-29 22:25:51 +02:00
}
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
}
2015-05-31 05:18:25 +02:00
/**
* @ since 2.7 . 0
*/
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">' ;
2015-08-25 22:28:22 +02: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 .
*
2013-12-24 19:57:12 +01:00
* @ since 2.7 . 0
2008-11-06 04:31:41 +01:00
*
2015-05-28 23:41:30 +02:00
* @ global string $wp_version
* @ global string $required_php_version
* @ global string $required_mysql_version
2008-11-06 04:31:41 +01:00
*/
function core_upgrade_preamble () {
2013-10-16 21:41:09 +02:00
global $wp_version , $required_php_version , $required_mysql_version ;
2009-12-17 21:18:12 +01:00
2008-11-06 04:31:41 +01:00
$updates = get_core_updates ();
2012-06-30 14:54:05 +02:00
2008-11-06 04:31:41 +01:00
if ( ! isset ( $updates [ 0 ] -> response ) || 'latest' == $updates [ 0 ] -> response ) {
2015-08-31 05:26:24 +02:00
echo '<h2>' ;
2010-05-27 17:51:34 +02:00
_e ( 'You have the latest version of WordPress.' );
2013-10-16 21:41:09 +02:00
2013-10-27 22:09:10 +01:00
if ( wp_http_supports ( array ( 'ssl' ) ) ) {
2013-10-16 21:41:09 +02:00
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ;
2013-10-25 00:54:38 +02:00
$upgrader = new WP_Automatic_Updater ;
2013-10-16 21:41:09 +02:00
$future_minor_update = ( object ) array (
2013-10-25 00:55:30 +02:00
'current' => $wp_version . '.1.next.minor' ,
'version' => $wp_version . '.1.next.minor' ,
2013-10-16 21:41:09 +02:00
'php_version' => $required_php_version ,
'mysql_version' => $required_mysql_version ,
);
2013-10-25 00:54:38 +02:00
$should_auto_update = $upgrader -> should_update ( 'core' , $future_minor_update , ABSPATH );
2013-10-16 21:41:09 +02:00
if ( $should_auto_update )
2013-10-17 01:06:09 +02:00
echo ' ' . __ ( 'Future security updates will be applied automatically.' );
2013-10-16 21:41:09 +02:00
}
2015-08-31 05:26:24 +02:00
echo '</h2>' ;
2008-11-06 04:31:41 +01:00
} else {
2015-05-21 20:10:25 +02:00
echo '<div class="notice notice-warning"><p>' ;
2015-04-12 23:29:32 +02:00
_e ( '<strong>Important:</strong> before updating, please <a href="https://codex.wordpress.org/WordPress_Backups">back up your database and files</a>. For help with updates, visit the <a href="https://codex.wordpress.org/Updating_WordPress">Updating WordPress</a> Codex page.' );
2008-11-06 04:31:41 +01:00
echo '</p></div>' ;
2008-12-09 19:03:31 +01:00
2015-08-31 05:26:24 +02:00
echo '<h2 class="response">' ;
2010-05-27 17:51:34 +02:00
_e ( 'An updated version of WordPress is available.' );
2015-08-31 05:26:24 +02:00
echo '</h2>' ;
2008-11-06 04:31:41 +01:00
}
2013-09-28 01:21:10 +02:00
if ( isset ( $updates [ 0 ] ) && $updates [ 0 ] -> response == 'development' ) {
2013-10-16 21:41:09 +02:00
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ;
2013-10-25 00:54:38 +02:00
$upgrader = new WP_Automatic_Updater ;
2014-05-06 14:49:15 +02:00
if ( wp_http_supports ( 'ssl' ) && $upgrader -> should_update ( 'core' , $updates [ 0 ], ABSPATH ) ) {
echo '<div class="updated inline"><p>' ;
echo '<strong>' . __ ( 'BETA TESTERS:' ) . '</strong> ' . __ ( 'This site is set up to install updates of future beta versions automatically.' );
echo '</p></div>' ;
}
2013-09-28 01:21:10 +02:00
}
2008-11-06 04:31:41 +01:00
echo '<ul class="core-updates">' ;
2015-08-25 22:28:22 +02:00
foreach ( ( array ) $updates as $update ) {
2010-11-17 06:58:26 +01:00
echo '<li>' ;
2008-11-06 04:31:41 +01:00
list_core_update ( $update );
echo '</li>' ;
}
echo '</ul>' ;
2013-10-17 01:06:09 +02:00
// 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' ) ) {
2011-11-24 00:28:50 +01:00
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>' ;
2013-10-17 01:06:09 +02:00
} elseif ( ! $updates ) {
2011-11-24 00:28:50 +01:00
list ( $normalized_version ) = explode ( '-' , $wp_version );
2012-01-06 18:53:41 +01:00
echo '<p>' . sprintf ( __ ( '<a href="%s">Learn more about WordPress %s</a>.' ), esc_url ( self_admin_url ( 'about.php' ) ), $normalized_version ) . '</p>' ;
2011-11-24 00:28:50 +01:00
}
2008-11-06 04:31:41 +01:00
dismissed_updates ();
2009-10-20 18:11:59 +02:00
}
2015-05-28 23:41:30 +02:00
/**
*
* @ global string $wp_version
*/
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 ();
2010-05-27 17:51:34 +02:00
if ( empty ( $plugins ) ) {
2015-08-31 05:26:24 +02:00
echo '<h2>' . __ ( 'Plugins' ) . '</h2>' ;
2010-05-27 17:51:34 +02:00
echo '<p>' . __ ( 'Your plugins are all up to date.' ) . '</p>' ;
2009-10-20 18:11:59 +02:00
return ;
2010-05-27 17:51:34 +02:00
}
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
?>
2015-08-31 05:26:24 +02:00
< h2 >< ? php _e ( 'Plugins' ); ?> </h2>
2010-04-11 12:41:54 +02:00
< p >< ? php _e ( 'The following plugins have new versions available. Check the ones you want to update and then click “Update Plugins”.' ); ?> </p>
2013-03-18 15:01:25 +01:00
< form method = " post " action = " <?php echo esc_url( $form_action ); ?> " name = " upgrade-plugins " class = " upgrade " >
2009-10-22 18:10:28 +02:00
< ? php wp_nonce_field ( 'upgrade-core' ); ?>
2010-03-05 00:28:15 +01:00
< p >< input id = " upgrade-plugins " class = " button " type = " submit " value = " <?php esc_attr_e('Update Plugins'); ?> " name = " upgrade " /></ p >
2014-01-26 21:28:12 +01:00
< table class = " widefat " id = " update-plugins-table " >
2009-10-20 18:11:59 +02:00
< thead >
< tr >
2015-07-08 22:38:25 +02:00
< td scope = " col " class = " manage-column check-column " >< input type = " checkbox " id = " plugins-select-all " /></ td >
2010-05-29 18:35:24 +02:00
< th scope = " col " class = " manage-column " >< label for = " plugins-select-all " >< ? php _e ( 'Select All' ); ?> </label></th>
2009-10-20 18:11:59 +02:00
</ tr >
</ thead >
< 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 ));
2014-10-03 02:02:14 +02:00
if ( is_wp_error ( $info ) ) {
2015-02-09 07:32:26 +01:00
$info = false ;
2014-10-03 02:02:14 +02:00
}
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 ) {
2015-09-19 18:10:26 +02:00
if ( isset ( $info -> tested ) && version_compare ( $info -> tested , $core_update_version , '>=' ) ) {
$compat .= '<br />' . sprintf ( __ ( 'Compatibility with WordPress %1$s: 100%% (according to its author)' ), $core_update_version );
} elseif ( isset ( $info -> compatibility [ $core_update_version ][ $plugin_data -> update -> new_version ] ) ) {
2009-12-15 20:09:55 +01:00
$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 = '' ;
}
2011-10-24 21:13:23 +02:00
2015-04-08 19:38:27 +02:00
$details_url = self_admin_url ( 'plugin-install.php?tab=plugin-information&plugin=' . $plugin_data -> update -> slug . '§ion=changelog&TB_iframe=true&width=640&height=662' );
2015-08-29 03:40:21 +02:00
$details_text = sprintf ( __ ( 'View version %1$s details.' ), $plugin_data -> update -> new_version );
$details = sprintf ( '<a href="%1$s" class="thickbox" title="%2$s">%3$s</a>' , esc_url ( $details_url ), esc_attr ( $plugin_data -> Name ), $details_text );
2011-10-24 21:13:23 +02:00
2009-10-20 18:11:59 +02:00
echo "
2013-11-20 04:03:10 +01:00
< tr >
2009-10-20 18:11:59 +02:00
< th scope = 'row' class = 'check-column' >< input type = 'checkbox' name = 'checked[]' value = '" . esc_attr($plugin_file) . "' /></ th >
2011-10-19 16:51:48 +02:00
< td >< p >< strong > { $plugin_data -> Name } </ strong >< br /> " . sprintf(__('You have version %1 $s installed. Update to %2 $s .'), $plugin_data->Version , $plugin_data->update ->new_version) . ' ' . $details . $compat . $upgrade_notice . " </ p ></ td >
2009-10-20 18:11:59 +02:00
</ tr > " ;
}
?>
</ tbody >
2015-02-22 22:48:26 +01:00
< tfoot >
< tr >
2015-07-08 22:38:25 +02:00
< td scope = " col " class = " manage-column check-column " >< input type = " checkbox " id = " plugins-select-all-2 " /></ td >
2015-02-22 22:48:26 +01:00
< th scope = " col " class = " manage-column " >< label for = " plugins-select-all-2 " >< ? php _e ( 'Select All' ); ?> </label></th>
</ tr >
</ tfoot >
2009-10-20 18:11:59 +02:00
</ table >
2010-03-05 00:28:15 +01:00
< p >< input id = " upgrade-plugins-2 " class = " button " type = " submit " value = " <?php esc_attr_e('Update Plugins'); ?> " name = " upgrade " /></ p >
2009-10-22 18:10:28 +02:00
</ form >
2009-10-20 18:11:59 +02:00
< ? php
2008-11-06 04:31:41 +01:00
}
2015-05-31 05:18:25 +02:00
/**
* @ since 2.9 . 0
*/
2009-10-20 18:11:59 +02:00
function list_theme_updates () {
$themes = get_theme_updates ();
2010-05-27 17:51:34 +02:00
if ( empty ( $themes ) ) {
2015-08-31 05:26:24 +02:00
echo '<h2>' . __ ( 'Themes' ) . '</h2>' ;
2010-05-27 17:51:34 +02:00
echo '<p>' . __ ( 'Your themes are all up to date.' ) . '</p>' ;
2009-10-20 18:11:59 +02:00
return ;
2010-05-27 17:51:34 +02:00
}
2010-03-06 10:12:49 +01:00
$form_action = 'update-core.php?action=do-theme-upgrade' ;
2009-10-20 18:11:59 +02:00
?>
2015-08-31 05:26:24 +02:00
< h2 >< ? php _e ( 'Themes' ); ?> </h2>
2010-04-19 22:49:13 +02:00
< p >< ? php _e ( 'The following themes have new versions available. Check the ones you want to update and then click “Update Themes”.' ); ?> </p>
2015-04-12 23:29:32 +02:00
< 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.' ), __ ( 'https://codex.wordpress.org/Child_Themes' ) ); ?> </p>
2013-03-18 15:01:25 +01:00
< form method = " post " action = " <?php echo esc_url( $form_action ); ?> " name = " upgrade-themes " class = " upgrade " >
2010-03-06 10:12:49 +01:00
< ? 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 >
2014-01-26 21:28:12 +01:00
< table class = " widefat " id = " update-themes-table " >
2009-10-20 18:11:59 +02:00
< thead >
< tr >
2015-07-08 22:38:25 +02:00
< td scope = " col " class = " manage-column check-column " >< input type = " checkbox " id = " themes-select-all " /></ td >
2010-05-29 18:35:24 +02:00
< th scope = " col " class = " manage-column " >< label for = " themes-select-all " >< ? php _e ( 'Select All' ); ?> </label></th>
2009-10-20 18:11:59 +02:00
</ tr >
</ thead >
< tbody class = " plugins " >
< ? php
2012-03-04 14:03:48 +01:00
foreach ( $themes as $stylesheet => $theme ) {
2009-10-20 18:11:59 +02:00
echo "
2013-11-20 04:03:10 +01:00
< tr >
2012-03-04 14:03:48 +01:00
< th scope = 'row' class = 'check-column' >< input type = 'checkbox' name = 'checked[]' value = '" . esc_attr( $stylesheet ) . "' /></ th >
2013-02-02 18:02:01 +01:00
< 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 >
2009-10-20 18:11:59 +02:00
</ tr > " ;
}
?>
</ tbody >
2015-02-22 22:48:26 +01:00
< tfoot >
< tr >
2015-07-08 22:38:25 +02:00
< td scope = " col " class = " manage-column check-column " >< input type = " checkbox " id = " themes-select-all-2 " /></ td >
2015-02-22 22:48:26 +01:00
< th scope = " col " class = " manage-column " >< label for = " themes-select-all-2 " >< ? php _e ( 'Select All' ); ?> </label></th>
</ tr >
</ tfoot >
2009-10-20 18:11:59 +02:00
</ table >
2010-03-06 10:12:49 +01:00
< p >< input id = " upgrade-themes-2 " class = " button " type = " submit " value = " <?php esc_attr_e('Update Themes'); ?> " name = " upgrade " /></ p >
</ form >
2009-10-20 18:11:59 +02:00
< ? php
}
2008-11-06 04:31:41 +01:00
2015-05-31 05:18:25 +02:00
/**
* @ since 3.7 . 0
*/
2013-10-16 06:15:09 +02:00
function list_translation_updates () {
$updates = wp_get_translation_updates ();
if ( ! $updates ) {
if ( 'en_US' != get_locale () ) {
2015-08-31 05:26:24 +02:00
echo '<h2>' . __ ( 'Translations' ) . '</h2>' ;
2013-10-16 06:15:09 +02:00
echo '<p>' . __ ( 'Your translations are all up to date.' ) . '</p>' ;
}
return ;
}
$form_action = 'update-core.php?action=do-translation-upgrade' ;
?>
2015-08-31 05:26:24 +02:00
< h2 >< ? php _e ( 'Translations' ); ?> </h2>
2014-08-16 12:00:18 +02:00
< form method = " post " action = " <?php echo esc_url( $form_action ); ?> " name = " upgrade-translations " class = " upgrade " >
2015-02-08 05:09:22 +01:00
< p >< ? php _e ( 'New translations are available.' ); ?> </p>
2014-08-16 12:00:18 +02:00
< ? php wp_nonce_field ( 'upgrade-translations' ); ?>
2013-10-16 06:15:09 +02:00
< p >< input class = " button " type = " submit " value = " <?php esc_attr_e( 'Update Translations' ); ?> " name = " upgrade " /></ p >
</ form >
< ? php
}
2008-11-06 04:31:41 +01:00
/**
* Upgrade WordPress core display .
*
2013-12-24 19:57:12 +01:00
* @ since 2.7 . 0
2008-11-06 04:31:41 +01:00
*
2015-05-28 23:41:30 +02:00
* @ global WP_Filesystem_Base $wp_filesystem Subclass
2015-05-29 22:17:26 +02:00
*
* @ param bool $reinstall
2008-11-06 04:31:41 +01:00
*/
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
2014-05-19 07:04:16 +02:00
include_once ( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
2013-09-09 08:45:08 +02: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' );
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
2014-11-19 06:40:23 +01:00
// Allow relaxed file ownership writes for User-initiated upgrades when the API specifies
// that it's safe to do so. This only happens when there are no new files to create.
$allow_relaxed_file_ownership = ! $reinstall && isset ( $update -> new_files ) && ! $update -> new_files ;
2008-11-26 14:51:25 +01:00
?>
< div class = " wrap " >
2015-06-27 17:41:25 +02:00
< h1 >< ? php _e ( 'Update WordPress' ); ?> </h1>
2008-11-26 14:51:25 +01:00
< ? php
2013-10-16 06:15:09 +02:00
2015-02-24 04:01:25 +01:00
if ( false === ( $credentials = request_filesystem_credentials ( $url , '' , false , ABSPATH , array ( 'version' , 'locale' ), $allow_relaxed_file_ownership ) ) ) {
2013-10-16 06:15:09 +02:00
echo '</div>' ;
return ;
}
2014-11-19 06:40:23 +01:00
if ( ! WP_Filesystem ( $credentials , ABSPATH , $allow_relaxed_file_ownership ) ) {
2013-10-16 06:15:09 +02:00
// Failed to connect, Error and request again
2015-02-24 04:01:25 +01:00
request_filesystem_credentials ( $url , '' , true , ABSPATH , array ( 'version' , 'locale' ), $allow_relaxed_file_ownership );
2013-10-16 06:15:09 +02:00
echo '</div>' ;
return ;
}
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' ;
2013-09-09 08:45:08 +02:00
add_filter ( 'update_feedback' , 'show_message' );
$upgrader = new Core_Upgrader ();
2014-11-19 06:40:23 +01:00
$result = $upgrader -> upgrade ( $update , array (
'allow_relaxed_file_ownership' => $allow_relaxed_file_ownership
) );
2008-11-06 04:31:41 +01:00
if ( is_wp_error ( $result ) ) {
show_message ( $result );
if ( 'up_to_date' != $result -> get_error_code () )
show_message ( __ ( 'Installation Failed' ) );
2011-12-01 05:38:51 +01:00
echo '</div>' ;
return ;
2008-11-06 04:31:41 +01:00
}
2011-12-01 05:38:51 +01:00
show_message ( __ ( 'WordPress updated successfully' ) );
2012-09-03 23:57:53 +02:00
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>' );
2012-01-06 18:53:41 +01:00
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>' );
2011-12-01 05:38:51 +01:00
?>
</ div >
< script type = " text/javascript " >
2012-05-25 15:41:01 +02:00
window . location = '<?php echo self_admin_url( ' about . php ? updated ' ); ?>' ;
2011-12-01 05:38:51 +01:00
</ script >
< ? php
2008-11-06 04:31:41 +01:00
}
2015-05-31 05:18:25 +02:00
/**
* @ since 2.7 . 0
*/
2008-11-06 04:31:41 +01:00
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' ) );
2010-12-09 19:02:54 +01:00
exit ;
2008-11-06 04:31:41 +01:00
}
2015-05-31 05:18:25 +02:00
/**
* @ since 2.7 . 0
*/
2008-11-06 04:31:41 +01:00
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' ) );
2010-12-09 19:02:54 +01:00
exit ;
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 ;
2010-10-27 04:21:49 +02:00
if ( ( 'do-theme-upgrade' == $action || ( 'do-plugin-upgrade' == $action && ! isset ( $_GET [ 'plugins' ] ) ) )
&& ! isset ( $_POST [ 'checked' ] ) ) {
$upgrade_error = $action == 'do-theme-upgrade' ? 'themes' : 'plugins' ;
2009-12-17 21:18:12 +01:00
$action = 'upgrade-core' ;
}
2010-03-13 09:19:35 +01:00
$title = __ ( 'WordPress Updates' );
2014-02-20 17:42:12 +01:00
$parent_file = 'index.php' ;
2009-10-22 23:06:33 +02:00
2015-08-22 18:25:28 +02:00
$updates_overview = '<p>' . __ ( 'On this screen, you can update to the latest version of WordPress, as well as update your themes, plugins, and translations from the WordPress.org repositories.' ) . '</p>' ;
2014-02-12 11:15:16 +01:00
$updates_overview .= '<p>' . __ ( 'If an update is available, you᾿ll see a notification appear in the Toolbar and navigation menu.' ) . ' ' . __ ( 'Keeping your site updated is important for security. It also makes the internet a safer place for you and your readers.' ) . '</p>' ;
2013-12-09 03:37:10 +01:00
2011-11-24 01:21:39 +01:00
get_current_screen () -> add_help_tab ( array (
2013-12-09 03:37:10 +01:00
'id' => 'overview' ,
'title' => __ ( 'Overview' ),
'content' => $updates_overview
2011-12-01 02:33:26 +01:00
) );
2013-12-09 07:47:10 +01:00
$updates_howto = '<p>' . __ ( '<strong>WordPress</strong> — Updating your WordPress installation is a simple one-click procedure: just <strong>click on the “Update Now” button</strong> when you are notified that a new version is available.' ) . ' ' . __ ( 'In most cases, WordPress will automatically apply maintenance and security updates in the background for you.' ) . '</p>' ;
2013-12-09 03:37:10 +01:00
$updates_howto .= '<p>' . __ ( '<strong>Themes and Plugins</strong> — To update individual themes or plugins from this screen, use the checkboxes to make your selection, then <strong>click on the appropriate “Update” button</strong>. To update all of your themes or plugins at once, you can check the box at the top of the section to select all before clicking the update button.' ) . '</p>' ;
2013-12-09 07:47:10 +01:00
if ( 'en_US' != get_locale () ) {
$updates_howto .= '<p>' . __ ( '<strong>Translations</strong> — The files translating WordPress into your language are updated for you whenever any other updates occur. But if these files are out of date, you can <strong>click the “Update Translations”</strong> button.' ) . '</p>' ;
}
2011-12-01 02:33:26 +01:00
get_current_screen () -> add_help_tab ( array (
2013-12-09 03:37:10 +01:00
'id' => 'how-to-update' ,
'title' => __ ( 'How to Update' ),
'content' => $updates_howto
2011-11-24 01:21:39 +01:00
) );
2011-11-02 04:12:37 +01:00
2011-11-02 21:14:10 +01:00
get_current_screen () -> set_help_sidebar (
2010-06-11 20:00:29 +02:00
'<p><strong>' . __ ( 'For more information:' ) . '</strong></p>' .
2015-04-12 23:29:32 +02:00
'<p>' . __ ( '<a href="https://codex.wordpress.org/Dashboard_Updates_Screen" target="_blank">Documentation on Updating WordPress</a>' ) . '</p>' .
2014-03-08 05:14:15 +01:00
'<p>' . __ ( '<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
2010-05-24 17:33:59 +02:00
);
2008-11-06 04:31:41 +01:00
if ( 'upgrade-core' == $action ) {
2013-11-15 04:04:10 +01:00
// Force a update check when requested
$force_check = ! empty ( $_GET [ 'force-check' ] );
2013-12-11 20:49:11 +01:00
wp_version_check ( array (), $force_check );
2010-12-18 19:43:35 +01:00
2010-10-20 18:38:00 +02:00
require_once ( ABSPATH . 'wp-admin/admin-header.php' );
2012-06-30 14:54:05 +02:00
?>
< div class = " wrap " >
2015-06-27 17:41:25 +02:00
< h1 >< ? php _e ( 'WordPress Updates' ); ?> </h1>
2012-06-30 14:54:05 +02:00
< ? php
2012-06-30 14:58:03 +02:00
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' ) ) );
2013-11-15 04:04:10 +01:00
echo ' <a class="button" href="' . esc_url ( self_admin_url ( 'update-core.php?force-check=1' ) ) . '">' . __ ( 'Check Again' ) . '</a>' ;
2012-06-30 14:58:03 +02:00
echo '</p>' ;
2013-10-16 06:15:09 +02:00
if ( $core = current_user_can ( 'update_core' ) )
2012-06-30 14:54:05 +02:00
core_upgrade_preamble ();
2013-10-16 06:15:09 +02:00
if ( $plugins = current_user_can ( 'update_plugins' ) )
2012-06-30 14:54:05 +02:00
list_plugin_updates ();
2013-10-16 06:15:09 +02:00
if ( $themes = current_user_can ( 'update_themes' ) )
2012-06-30 14:54:05 +02:00
list_theme_updates ();
2013-10-16 06:15:09 +02:00
if ( $core || $plugins || $themes )
list_translation_updates ();
unset ( $core , $plugins , $themes );
2014-01-02 04:07:10 +01:00
/**
* Fires after the core , plugin , and theme update tables .
*
* @ since 2.9 . 0
*/
do_action ( 'core_upgrade_preamble' );
2012-06-30 14:54:05 +02:00
echo '</div>' ;
2011-04-03 11:41:19 +02:00
include ( ABSPATH . 'wp-admin/admin-footer.php' );
2010-12-18 19:43:35 +01:00
2008-12-10 08:59:05 +01:00
} elseif ( 'do-core-upgrade' == $action || 'do-core-reinstall' == $action ) {
2012-06-30 14:54:05 +02:00
if ( ! current_user_can ( 'update_core' ) )
wp_die ( __ ( 'You do not have sufficient permissions to update this site.' ) );
2008-11-06 04:31:41 +01:00
check_admin_referer ( 'upgrade-core' );
2010-03-06 09:39:50 +01:00
2014-07-17 11:14:16 +02:00
// Do the (un)dismiss actions before headers, so that they can redirect.
2008-11-06 04:31:41 +01:00
if ( isset ( $_POST [ 'dismiss' ] ) )
do_dismiss_core_update ();
elseif ( isset ( $_POST [ 'undismiss' ] ) )
2010-03-06 09:39:50 +01:00
do_undismiss_core_update ();
2010-10-20 18:38:00 +02:00
require_once ( ABSPATH . 'wp-admin/admin-header.php' );
2008-12-10 08:59:05 +01:00
if ( 'do-core-reinstall' == $action )
$reinstall = true ;
else
$reinstall = false ;
2010-03-06 09:39:50 +01:00
2008-11-06 04:31:41 +01:00
if ( isset ( $_POST [ 'upgrade' ] ) )
2008-12-10 08:59:05 +01:00
do_core_upgrade ( $reinstall );
2010-03-06 09:39:50 +01:00
2011-04-03 11:41:19 +02:00
include ( ABSPATH . 'wp-admin/admin-footer.php' );
2009-10-22 23:06:33 +02:00
} elseif ( 'do-plugin-upgrade' == $action ) {
2010-12-18 19:43:35 +01:00
if ( ! current_user_can ( 'update_plugins' ) )
wp_die ( __ ( 'You do not have sufficient permissions to update this site.' ) );
2009-10-22 23:06:33 +02:00
check_admin_referer ( 'upgrade-core' );
2010-03-06 09:39:50 +01:00
if ( isset ( $_GET [ 'plugins' ] ) ) {
$plugins = explode ( ',' , $_GET [ 'plugins' ] );
} elseif ( isset ( $_POST [ 'checked' ] ) ) {
$plugins = ( array ) $_POST [ 'checked' ];
} else {
2010-10-27 12:43:43 +02:00
wp_redirect ( admin_url ( 'update-core.php' ) );
2010-03-06 09:39:50 +01:00
exit ;
}
$url = 'update.php?action=update-selected&plugins=' . urlencode ( implode ( ',' , $plugins ));
$url = wp_nonce_url ( $url , 'bulk-update-plugins' );
$title = __ ( 'Update Plugins' );
2010-10-20 18:38:00 +02:00
require_once ( ABSPATH . 'wp-admin/admin-header.php' );
2010-03-06 09:39:50 +01:00
echo '<div class="wrap">' ;
2015-06-27 17:41:25 +02:00
echo '<h1>' . __ ( 'Update Plugins' ) . '</h1>' ;
2014-05-19 07:04:16 +02:00
echo '<iframe src="' , $url , '" style="width: 100%; height: 100%; min-height: 750px;" frameborder="0"></iframe>' ;
2010-03-06 09:39:50 +01:00
echo '</div>' ;
2011-04-03 11:41:19 +02:00
include ( ABSPATH . 'wp-admin/admin-footer.php' );
2010-12-18 19:43:35 +01:00
2010-03-06 10:12:49 +01:00
} elseif ( 'do-theme-upgrade' == $action ) {
2010-12-18 19:43:35 +01:00
if ( ! current_user_can ( 'update_themes' ) )
wp_die ( __ ( 'You do not have sufficient permissions to update this site.' ) );
2010-03-06 10:12:49 +01:00
check_admin_referer ( 'upgrade-core' );
if ( isset ( $_GET [ 'themes' ] ) ) {
$themes = explode ( ',' , $_GET [ 'themes' ] );
} elseif ( isset ( $_POST [ 'checked' ] ) ) {
$themes = ( array ) $_POST [ 'checked' ];
} else {
2010-10-27 12:43:43 +02:00
wp_redirect ( admin_url ( 'update-core.php' ) );
2010-03-06 10:12:49 +01:00
exit ;
}
$url = 'update.php?action=update-selected-themes&themes=' . urlencode ( implode ( ',' , $themes ));
$url = wp_nonce_url ( $url , 'bulk-update-themes' );
$title = __ ( 'Update Themes' );
2010-10-20 18:38:00 +02:00
require_once ( ABSPATH . 'wp-admin/admin-header.php' );
2014-05-19 19:10:15 +02:00
?>
< div class = " wrap " >
2015-06-27 17:41:25 +02:00
< h1 >< ? php _e ( 'Update Themes' ); ?> </h1>
2014-05-19 19:10:15 +02:00
< iframe src = " <?php echo $url ?> " style = " width: 100%; height: 100%; min-height: 750px; " frameborder = " 0 " ></ iframe >
</ div >
< ? php
2011-04-03 11:41:19 +02:00
include ( ABSPATH . 'wp-admin/admin-footer.php' );
2008-12-10 08:59:05 +01:00
2013-10-16 06:15:09 +02:00
} 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' );
2011-04-03 11:41:19 +02:00
} else {
2014-01-02 04:07:10 +01:00
/**
* Fires for each custom update action on the WordPress Updates screen .
*
2014-11-30 12:42:24 +01:00
* The dynamic portion of the hook name , `$action` , refers to the
2014-01-02 04:07:10 +01:00
* passed update action . The hook fires in lieu of all available
* default update actions .
*
* @ since 3.2 . 0
*/
do_action ( " update-core-custom_ { $action } " );
2013-09-25 02:18:11 +02:00
}