2008-02-11 06:45:54 +01:00
< ? php
2008-08-16 09:27:34 +02:00
/**
* Update Plugin / Core administration panel .
*
* @ package WordPress
* @ subpackage Administration
*/
/** WordPress Administration Bootstrap */
2008-02-11 06:45:54 +01:00
require_once ( 'admin.php' );
2008-06-06 21:21:35 +02:00
if ( ! current_user_can ( 'update_plugins' ) )
wp_die ( __ ( 'You do not have sufficient permissions to update plugins for this blog.' ));
2008-02-11 06:45:54 +01:00
2008-08-16 09:27:34 +02:00
/**
* Plugin upgrade display .
*
* @ since 2.5
*
* @ param string $plugin Plugin
*/
2008-02-11 06:45:54 +01:00
function do_plugin_upgrade ( $plugin ) {
global $wp_filesystem ;
2008-03-11 17:37:44 +01:00
$url = wp_nonce_url ( " update.php?action=upgrade-plugin&plugin= $plugin " , " upgrade-plugin_ $plugin " );
if ( false === ( $credentials = request_filesystem_credentials ( $url )) )
return ;
2008-03-22 00:02:00 +01:00
if ( ! WP_Filesystem ( $credentials ) ) {
2008-09-05 07:35:58 +02:00
$error = true ;
if ( is_object ( $wp_filesystem ) && $wp_filesystem -> errors -> get_error_code () )
$error = $wp_filesystem -> errors ;
request_filesystem_credentials ( $url , '' , $error ); //Failed to connect, Error and request again
2008-02-11 06:45:54 +01:00
return ;
2008-03-11 17:37:44 +01:00
}
2008-03-22 00:02:00 +01:00
2008-02-11 06:45:54 +01:00
echo '<div class="wrap">' ;
echo '<h2>' . __ ( 'Upgrade Plugin' ) . '</h2>' ;
if ( $wp_filesystem -> errors -> get_error_code () ) {
foreach ( $wp_filesystem -> errors -> get_error_messages () as $message )
show_message ( $message );
echo '</div>' ;
return ;
}
2008-05-29 19:29:32 +02:00
$was_activated = is_plugin_active ( $plugin ); //Check now, It'll be deactivated by the next line if it is
2008-03-22 00:02:00 +01:00
2008-02-11 06:45:54 +01:00
$result = wp_update_plugin ( $plugin , 'show_message' );
2008-03-22 00:02:00 +01:00
if ( is_wp_error ( $result ) ) {
2008-02-11 06:45:54 +01:00
show_message ( $result );
2008-10-14 01:39:56 +02:00
show_message ( __ ( 'Plugin upgrade Failed' ) );
2008-03-22 00:02:00 +01:00
} else {
2008-10-14 01:39:56 +02:00
$plugin_file = $result ;
2008-08-09 07:36:14 +02:00
show_message ( __ ( 'Plugin upgraded successfully' ) );
2008-03-22 00:02:00 +01:00
if ( $result && $was_activated ){
show_message ( __ ( 'Attempting reactivation of the plugin' ));
2008-10-14 01:39:56 +02:00
echo '<iframe style="border:0" width="100%" height="170px" src="' . wp_nonce_url ( 'update.php?action=activate-plugin&plugin=' . $plugin_file , 'activate-plugin_' . $plugin_file ) . '"></iframe>' ;
2008-03-22 00:02:00 +01:00
}
2008-10-14 01:39:56 +02:00
$update_actions = array (
'activate_plugin' => '<a href="' . wp_nonce_url ( 'plugins.php?action=activate&plugin=' . $plugin_file , 'activate-plugin_' . $plugin_file ) . '" title="' . attribute_escape ( __ ( 'Activate this plugin' )) . '" target="_parent">' . __ ( 'Activate Plugin' ) . '</a>' ,
'plugins_page' => '<a href="' . admin_url ( 'plugins.php' ) . '" title="' . attribute_escape ( __ ( 'Goto plugins page' )) . '" target="_parent">' . __ ( 'Return to Plugins page' ) . '</a>'
);
if ( $was_activated )
unset ( $update_actions [ 'activate_plugin' ] );
$update_actions = apply_filters ( 'update_plugin_complete_actions' , $update_actions , $plugin_file );
if ( ! empty ( $update_actions ) )
2008-10-14 03:33:27 +02:00
show_message ( '<strong>' . __ ( 'Actions:' ) . '</strong> ' . implode ( ' | ' , ( array ) $update_actions ));
2008-03-22 00:02:00 +01:00
}
2008-02-11 06:45:54 +01:00
echo '</div>' ;
}
2008-09-26 08:43:53 +02:00
/**
* Theme upgrade display .
*
* @ since 2.5
*
* @ param string $plugin Plugin
*/
function do_theme_upgrade ( $theme ) {
global $wp_filesystem ;
$url = wp_nonce_url ( 'update.php?action=upgrade-theme&theme=' . urlencode ( $theme ), 'upgrade-plugin_' . urlencode ( $theme ));
if ( false === ( $credentials = request_filesystem_credentials ( $url )) )
return ;
if ( ! WP_Filesystem ( $credentials ) ) {
$error = true ;
if ( is_object ( $wp_filesystem ) && $wp_filesystem -> errors -> get_error_code () )
$error = $wp_filesystem -> errors ;
request_filesystem_credentials ( $url , '' , $error ); //Failed to connect, Error and request again
return ;
}
echo '<div class="wrap">' ;
echo '<h2>' . __ ( 'Upgrade Theme' ) . '</h2>' ;
if ( $wp_filesystem -> errors -> get_error_code () ) {
foreach ( $wp_filesystem -> errors -> get_error_messages () as $message )
show_message ( $message );
echo '</div>' ;
return ;
}
//TODO: Is theme currently active?
$was_current = false ; //is_plugin_active($plugin); //Check now, It'll be deactivated by the next line if it is
$result = wp_update_theme ( $theme , 'show_message' );
if ( is_wp_error ( $result ) ) {
show_message ( $result );
show_message ( __ ( 'Installation Failed' ) );
} else {
//Result is the new plugin file relative to WP_PLUGIN_DIR
show_message ( __ ( 'Theme upgraded successfully' ) );
if ( $result && $was_current ){
show_message ( __ ( 'Setting theme as Current' ));
//TODO: Actually set it as active again.
//echo '<iframe style="border:0" width="100%" height="170px" src="' . wp_nonce_url('update.php?action=activate-plugin&plugin=' . $result, 'activate-plugin_' . $result) .'"></iframe>';
}
}
echo '</div>' ;
}
2008-08-16 09:27:34 +02:00
/**
* Display upgrade WordPress for downloading latest or upgrading automatically form .
*
* @ since 2.7
*
* @ return null
*/
2008-08-09 05:20:16 +02:00
function core_upgrade_preamble () {
$update = get_option ( 'update_core' );
echo '<div class="wrap">' ;
echo '<h2>' . __ ( 'Upgrade WordPress' ) . '</h2>' ;
if ( ! isset ( $update -> response ) || 'latest' == $update -> response ) {
_e ( 'You have the latest version of WordPress. You do not need to upgrade.' );
echo '</div>' ;
return ;
}
2008-09-30 01:47:33 +02:00
echo '<p>' ;
2008-09-30 01:48:48 +02:00
_e ( 'A new version of WordPress is available for upgrade. Before upgrading, please backup your blog. Pressing the Backup button below will create a backup of your blog and prompt you to save that backup to your computer. This sometimes takes a few minutes, so please be patient. After the backup finishes, continue below to upgrade your blog automatically or manually.' );
2008-09-30 01:47:33 +02:00
echo '</p>' ;
echo '<p><a class="button" href="export.php?download=true">' . __ ( 'Backup' ) . '</a></p>' ;
2008-08-09 05:20:16 +02:00
if ( 'development' == $update -> response ) {
2008-08-16 09:27:34 +02:00
$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. Which would you like to do?' );
2008-08-09 05:20:16 +02:00
$submit = __ ( 'Download nightly build' );
} else {
2008-09-30 01:47:33 +02:00
$message = sprintf ( __ ( 'You can upgrade to version %s automatically or download the package and install it manually. Which would you like to do?' ), $update -> current );
2008-08-09 05:20:16 +02:00
$submit = sprintf ( __ ( 'Download %s' ), $update -> current );
}
echo '<p>' ;
echo $message ;
echo '</p>' ;
echo '<form id="post" method="post" action="update.php?action=do-core-upgrade" name="upgrade">' ;
wp_nonce_field ( 'upgrade-core' );
echo '<p>' ;
echo '<input id="upgrade" class="button" type="submit" value="' . __ ( 'Upgrade Automatically' ) . '" name="upgrade" />' ;
echo '<a href="' . $update -> package . '" class="button">' . $submit . '</a>' ;
echo '</p>' ;
echo '</form>' ;
echo '</div>' ;
}
2008-08-16 09:27:34 +02:00
/**
* Upgrade WordPress core display .
*
* @ since 2.7
*
* @ return null
*/
2008-08-09 00:49:35 +02:00
function do_core_upgrade () {
global $wp_filesystem ;
2008-09-14 07:49:09 +02:00
$url = wp_nonce_url ( 'update.php?action=do-core-upgrade' , 'upgrade-core' );
2008-08-09 00:49:35 +02:00
if ( false === ( $credentials = request_filesystem_credentials ( $url )) )
return ;
if ( ! WP_Filesystem ( $credentials ) ) {
request_filesystem_credentials ( $url , '' , true ); //Failed to connect, Error and request again
return ;
}
echo '<div class="wrap">' ;
echo '<h2>' . __ ( 'Upgrade WordPress' ) . '</h2>' ;
if ( $wp_filesystem -> errors -> get_error_code () ) {
foreach ( $wp_filesystem -> errors -> get_error_messages () as $message )
show_message ( $message );
echo '</div>' ;
return ;
}
$result = wp_update_core ( 'show_message' );
if ( is_wp_error ( $result ) ) {
show_message ( $result );
if ( 'up_to_date' != $result -> get_error_code () )
show_message ( __ ( 'Installation Failed' ) );
} else {
2008-08-09 07:36:14 +02:00
show_message ( __ ( 'WordPress upgraded successfully' ) );
2008-08-09 00:49:35 +02:00
}
echo '</div>' ;
}
2008-02-11 06:45:54 +01:00
if ( isset ( $_GET [ 'action' ]) ) {
2008-03-22 00:02:00 +01:00
$plugin = isset ( $_GET [ 'plugin' ]) ? trim ( $_GET [ 'plugin' ]) : '' ;
2008-09-26 08:43:53 +02:00
$theme = isset ( $_REQUEST [ 'theme' ]) ? urldecode ( $_REQUEST [ 'theme' ]) : '' ;
$action = isset ( $_GET [ 'action' ]) ? $_GET [ 'action' ] : '' ;
if ( 'upgrade-plugin' == $action ) {
2008-03-11 17:37:44 +01:00
check_admin_referer ( 'upgrade-plugin_' . $plugin );
2008-02-11 06:45:54 +01:00
$title = __ ( 'Upgrade Plugin' );
2008-10-14 01:39:56 +02:00
$parent_file = 'index.php' ;
2008-02-11 06:45:54 +01:00
require_once ( 'admin-header.php' );
do_plugin_upgrade ( $plugin );
include ( 'admin-footer.php' );
2008-09-26 08:43:53 +02:00
} elseif ( 'activate-plugin' == $action ) {
2008-03-22 00:02:00 +01:00
check_admin_referer ( 'activate-plugin_' . $plugin );
if ( ! isset ( $_GET [ 'failure' ]) && ! isset ( $_GET [ 'success' ]) ) {
2008-08-09 07:36:14 +02:00
wp_redirect ( 'update.php?action=activate-plugin&failure=true&plugin=' . $plugin . '&_wpnonce=' . $_GET [ '_wpnonce' ] );
2008-03-22 00:02:00 +01:00
activate_plugin ( $plugin );
2008-08-09 07:36:14 +02:00
wp_redirect ( 'update.php?action=activate-plugin&success=true&plugin=' . $plugin . '&_wpnonce=' . $_GET [ '_wpnonce' ] );
2008-03-22 00:02:00 +01:00
die ();
}
2008-10-14 01:39:56 +02:00
iframe_header ( __ ( 'Plugin Reactivation' ), true );
2008-03-22 00:02:00 +01:00
if ( isset ( $_GET [ 'success' ]) )
echo '<p>' . __ ( 'Plugin reactivated successfully.' ) . '</p>' ;
if ( isset ( $_GET [ 'failure' ]) ){
echo '<p>' . __ ( 'Plugin failed to reactivate due to a fatal error.' ) . '</p>' ;
error_reporting ( E_ALL ^ E_NOTICE );
@ ini_set ( 'display_errors' , true ); //Ensure that Fatal errors are displayed.
2008-05-27 19:55:24 +02:00
include ( WP_PLUGIN_DIR . '/' . $plugin );
2008-03-22 00:02:00 +01:00
}
2008-10-14 01:39:56 +02:00
iframe_footer ();
2008-09-26 08:43:53 +02:00
} elseif ( 'upgrade-core' == $action ) {
2008-08-09 05:20:16 +02:00
$title = __ ( 'Upgrade WordPress' );
$parent_file = 'index.php' ;
require_once ( 'admin-header.php' );
core_upgrade_preamble ();
include ( 'admin-footer.php' );
2008-09-26 08:43:53 +02:00
} elseif ( 'do-core-upgrade' == $action ) {
2008-08-09 05:20:16 +02:00
check_admin_referer ( 'upgrade-core' );
2008-08-09 00:49:35 +02:00
$title = __ ( 'Upgrade WordPress' );
$parent_file = 'index.php' ;
require_once ( 'admin-header.php' );
do_core_upgrade ();
include ( 'admin-footer.php' );
2008-09-26 08:43:53 +02:00
} elseif ( 'upgrade-theme' == $action ) {
check_admin_referer ( 'upgrade-theme_' . $theme );
$title = __ ( 'Upgrade Theme' );
$parent_file = 'themes.php' ;
require_once ( 'admin-header.php' );
do_theme_upgrade ( $theme );
include ( 'admin-footer.php' );
2008-03-02 21:17:30 +01:00
}
2008-02-11 06:45:54 +01:00
}
2008-03-11 17:37:44 +01:00
?>