wp/wp-admin/update.php
author ymh <ymh.work@gmail.com>
Tue, 09 Jun 2015 03:35:32 +0200
changeset 5 5e2f62d02dcd
parent 0 d970ebf37754
child 7 cf61fcea0001
permissions -rw-r--r--
upgrade wordpress + plugins
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 * Update/Install Plugin/Theme administration panel.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * @package WordPress
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * @subpackage Administration
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
if ( ! defined( 'IFRAME_REQUEST' ) && isset( $_GET['action'] ) && in_array( $_GET['action'], array( 'update-selected', 'activate-plugin', 'update-selected-themes' ) ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
	define( 'IFRAME_REQUEST', true );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
/** WordPress Administration Bootstrap */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
require_once( dirname( __FILE__ ) . '/admin.php' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    15
include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
if ( isset($_GET['action']) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
	$plugin = isset($_REQUEST['plugin']) ? trim($_REQUEST['plugin']) : '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
	$theme = isset($_REQUEST['theme']) ? urldecode($_REQUEST['theme']) : '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
	$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
	if ( 'update-selected' == $action ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
		if ( ! current_user_can( 'update_plugins' ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
			wp_die( __( 'You do not have sufficient permissions to update plugins for this site.' ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
		check_admin_referer( 'bulk-update-plugins' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
		if ( isset( $_GET['plugins'] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
			$plugins = explode( ',', stripslashes($_GET['plugins']) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
		elseif ( isset( $_POST['checked'] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
			$plugins = (array) $_POST['checked'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
			$plugins = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
		$plugins = array_map('urldecode', $plugins);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
		$url = 'update.php?action=update-selected&amp;plugins=' . urlencode(implode(',', $plugins));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
		$nonce = 'bulk-update-plugins';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    40
		wp_enqueue_script( 'updates' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
		iframe_header();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
		$upgrader = new Plugin_Upgrader( new Bulk_Plugin_Upgrader_Skin( compact( 'nonce', 'url' ) ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
		$upgrader->bulk_upgrade( $plugins );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
		iframe_footer();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
	} elseif ( 'upgrade-plugin' == $action ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
		if ( ! current_user_can('update_plugins') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
			wp_die(__('You do not have sufficient permissions to update plugins for this site.'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
		check_admin_referer('upgrade-plugin_' . $plugin);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
		$title = __('Update Plugin');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
		$parent_file = 'plugins.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
		$submenu_file = 'plugins.php';
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    57
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    58
		wp_enqueue_script( 'updates' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
		require_once(ABSPATH . 'wp-admin/admin-header.php');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
		$nonce = 'upgrade-plugin_' . $plugin;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
		$url = 'update.php?action=upgrade-plugin&plugin=' . urlencode( $plugin );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
		$upgrader = new Plugin_Upgrader( new Plugin_Upgrader_Skin( compact('title', 'nonce', 'url', 'plugin') ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
		$upgrader->upgrade($plugin);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
		include(ABSPATH . 'wp-admin/admin-footer.php');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
	} elseif ('activate-plugin' == $action ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
		if ( ! current_user_can('update_plugins') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
			wp_die(__('You do not have sufficient permissions to update plugins for this site.'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
		check_admin_referer('activate-plugin_' . $plugin);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
		if ( ! isset($_GET['failure']) && ! isset($_GET['success']) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
			wp_redirect( admin_url('update.php?action=activate-plugin&failure=true&plugin=' . urlencode( $plugin ) . '&_wpnonce=' . $_GET['_wpnonce']) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
			activate_plugin( $plugin, '', ! empty( $_GET['networkwide'] ), true );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
			wp_redirect( admin_url('update.php?action=activate-plugin&success=true&plugin=' . urlencode( $plugin ) . '&_wpnonce=' . $_GET['_wpnonce']) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
			die();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
		iframe_header( __('Plugin Reactivation'), true );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
		if ( isset($_GET['success']) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
			echo '<p>' . __('Plugin reactivated successfully.') . '</p>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
		if ( isset($_GET['failure']) ){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
			echo '<p>' . __('Plugin failed to reactivate due to a fatal error.') . '</p>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
			error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
			@ini_set('display_errors', true); //Ensure that Fatal errors are displayed.
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    89
			wp_register_plugin_realpath( WP_PLUGIN_DIR . '/' . $plugin );
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    90
			include( WP_PLUGIN_DIR . '/' . $plugin );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
		iframe_footer();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
	} elseif ( 'install-plugin' == $action ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
		if ( ! current_user_can('install_plugins') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
			wp_die( __( 'You do not have sufficient permissions to install plugins on this site.' ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    98
		include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api..
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
		check_admin_referer('install-plugin_' . $plugin);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
		$api = plugins_api('plugin_information', array('slug' => $plugin, 'fields' => array('sections' => false) ) ); //Save on a bit of bandwidth.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
		if ( is_wp_error($api) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
	 		wp_die($api);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
		$title = __('Plugin Install');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
		$parent_file = 'plugins.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
		$submenu_file = 'plugin-install.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
		require_once(ABSPATH . 'wp-admin/admin-header.php');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
		$title = sprintf( __('Installing Plugin: %s'), $api->name . ' ' . $api->version );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
		$nonce = 'install-plugin_' . $plugin;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
		$url = 'update.php?action=install-plugin&plugin=' . urlencode( $plugin );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
		if ( isset($_GET['from']) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
			$url .= '&from=' . urlencode(stripslashes($_GET['from']));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
		$type = 'web'; //Install plugin type, From Web or an Upload.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
		$upgrader = new Plugin_Upgrader( new Plugin_Installer_Skin( compact('title', 'url', 'nonce', 'plugin', 'api') ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
		$upgrader->install($api->download_link);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
		include(ABSPATH . 'wp-admin/admin-footer.php');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
	} elseif ( 'upload-plugin' == $action ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   126
		if ( ! current_user_can( 'upload_plugins' ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
			wp_die( __( 'You do not have sufficient permissions to install plugins on this site.' ) );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   128
		}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
		check_admin_referer('plugin-upload');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
		$file_upload = new File_Upload_Upgrader('pluginzip', 'package');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
		$title = __('Upload Plugin');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
		$parent_file = 'plugins.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
		$submenu_file = 'plugin-install.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
		require_once(ABSPATH . 'wp-admin/admin-header.php');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
		$title = sprintf( __('Installing Plugin from uploaded file: %s'), esc_html( basename( $file_upload->filename ) ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
		$nonce = 'plugin-upload';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
		$url = add_query_arg(array('package' => $file_upload->id), 'update.php?action=upload-plugin');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
		$type = 'upload'; //Install plugin type, From Web or an Upload.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
		$upgrader = new Plugin_Upgrader( new Plugin_Installer_Skin( compact('type', 'title', 'nonce', 'url') ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
		$result = $upgrader->install( $file_upload->package );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
		if ( $result || is_wp_error($result) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
			$file_upload->cleanup();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
		include(ABSPATH . 'wp-admin/admin-footer.php');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
	} elseif ( 'upgrade-theme' == $action ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
		if ( ! current_user_can('update_themes') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
			wp_die(__('You do not have sufficient permissions to update themes for this site.'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
		check_admin_referer('upgrade-theme_' . $theme);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
		wp_enqueue_script( 'customize-loader' );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   160
		wp_enqueue_script( 'updates' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
		$title = __('Update Theme');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
		$parent_file = 'themes.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
		$submenu_file = 'themes.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
		require_once(ABSPATH . 'wp-admin/admin-header.php');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
		$nonce = 'upgrade-theme_' . $theme;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
		$url = 'update.php?action=upgrade-theme&theme=' . urlencode( $theme );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
		$upgrader = new Theme_Upgrader( new Theme_Upgrader_Skin( compact('title', 'nonce', 'url', 'theme') ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
		$upgrader->upgrade($theme);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
		include(ABSPATH . 'wp-admin/admin-footer.php');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
	} elseif ( 'update-selected-themes' == $action ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
		if ( ! current_user_can( 'update_themes' ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
			wp_die( __( 'You do not have sufficient permissions to update themes for this site.' ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
		check_admin_referer( 'bulk-update-themes' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
		if ( isset( $_GET['themes'] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
			$themes = explode( ',', stripslashes($_GET['themes']) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
		elseif ( isset( $_POST['checked'] ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
			$themes = (array) $_POST['checked'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
			$themes = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
		$themes = array_map('urldecode', $themes);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
		$url = 'update.php?action=update-selected-themes&amp;themes=' . urlencode(implode(',', $themes));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
		$nonce = 'bulk-update-themes';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   192
		wp_enqueue_script( 'updates' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
		iframe_header();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
		$upgrader = new Theme_Upgrader( new Bulk_Theme_Upgrader_Skin( compact( 'nonce', 'url' ) ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
		$upgrader->bulk_upgrade( $themes );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
		iframe_footer();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
	} elseif ( 'install-theme' == $action ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
		if ( ! current_user_can('install_themes') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
			wp_die( __( 'You do not have sufficient permissions to install themes on this site.' ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   204
		include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); //for themes_api..
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   206
		check_admin_referer( 'install-theme_' . $theme );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
		$api = themes_api('theme_information', array('slug' => $theme, 'fields' => array('sections' => false, 'tags' => false) ) ); //Save on a bit of bandwidth.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
		if ( is_wp_error($api) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
	 		wp_die($api);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
		wp_enqueue_script( 'customize-loader' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
		$title = __('Install Themes');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
		$parent_file = 'themes.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
		$submenu_file = 'themes.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
		require_once(ABSPATH . 'wp-admin/admin-header.php');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
		$title = sprintf( __('Installing Theme: %s'), $api->name . ' ' . $api->version );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
		$nonce = 'install-theme_' . $theme;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
		$url = 'update.php?action=install-theme&theme=' . urlencode( $theme );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
		$type = 'web'; //Install theme type, From Web or an Upload.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
		$upgrader = new Theme_Upgrader( new Theme_Installer_Skin( compact('title', 'url', 'nonce', 'plugin', 'api') ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
		$upgrader->install($api->download_link);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
		include(ABSPATH . 'wp-admin/admin-footer.php');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
	} elseif ( 'upload-theme' == $action ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   231
		if ( ! current_user_can( 'upload_themes' ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
			wp_die( __( 'You do not have sufficient permissions to install themes on this site.' ) );
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   233
		}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
		check_admin_referer('theme-upload');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
		$file_upload = new File_Upload_Upgrader('themezip', 'package');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
		wp_enqueue_script( 'customize-loader' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
		$title = __('Upload Theme');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
		$parent_file = 'themes.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
		$submenu_file = 'theme-install.php';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
		require_once(ABSPATH . 'wp-admin/admin-header.php');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
		$title = sprintf( __('Installing Theme from uploaded file: %s'), esc_html( basename( $file_upload->filename ) ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
		$nonce = 'theme-upload';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
		$url = add_query_arg(array('package' => $file_upload->id), 'update.php?action=upload-theme');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
		$type = 'upload'; //Install plugin type, From Web or an Upload.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
		$upgrader = new Theme_Upgrader( new Theme_Installer_Skin( compact('type', 'title', 'nonce', 'url') ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
		$result = $upgrader->install( $file_upload->package );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
		if ( $result || is_wp_error($result) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
			$file_upload->cleanup();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
		include(ABSPATH . 'wp-admin/admin-footer.php');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
	} else {
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   261
		/**
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   262
		 * Fires when a custom plugin or theme update request is received.
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   263
		 *
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   264
		 * The dynamic portion of the hook name, `$action`, refers to the action
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   265
		 * provided in the request for wp-admin/update.php. Can be used to
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   266
		 * provide custom update functionality for themes and plugins.
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   267
		 *
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   268
		 * @since 2.8.0
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   269
		 */
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   270
		do_action( "update-custom_{$action}" );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
}