- $to_send->plugins = $plugins;
- $to_send->active = $active;
- $send = serialize( $to_send );
-
- $request = 'plugins=' . urlencode( $send );
- $http_request = "POST /plugins/update-check/1.0/ HTTP/1.0\r\n";
- $http_request .= "Host: api.wordpress.org\r\n";
- $http_request .= "Content-Type: application/x-www-form-urlencoded; charset=" . get_option('blog_charset') . "\r\n";
- $http_request .= "Content-Length: " . strlen($request) . "\r\n";
- $http_request .= 'User-Agent: WordPress/' . $wp_version . '; ' . get_bloginfo('url') . "\r\n";
- $http_request .= "\r\n";
- $http_request .= $request;
-
- $response = '';
- if( false != ( $fs = @fsockopen( 'api.wordpress.org', 80, $errno, $errstr, 3) ) && is_resource($fs) ) {
- fwrite($fs, $http_request);
-
- while ( !feof($fs) )
- $response .= fgets($fs, 1160); // One TCP-IP packet
- fclose($fs);
- $response = explode("\r\n\r\n", $response, 2);
+ $r = $current->response[ $file ];
+
+ $plugins_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array());
+ $plugin_name = wp_kses( $plugin_data['Name'], $plugins_allowedtags );
+
+ $details_url = self_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $r->slug . '§ion=changelog&TB_iframe=true&width=600&height=800');
+
+ $wp_list_table = _get_list_table('WP_Plugins_List_Table');
+
+ if ( is_network_admin() || !is_multisite() ) {
+ echo '<tr class="plugin-update-tr"><td colspan="' . $wp_list_table->get_column_count() . '" class="plugin-update colspanchange"><div class="update-message">';
+
+ if ( ! current_user_can('update_plugins') )
+ printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a>.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version );
+ else if ( empty($r->package) )
+ printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a>. <em>Automatic update is unavailable for this plugin.</em>'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version );
+ else
+ printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s details</a> or <a href="%5$s">update now</a>.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version, wp_nonce_url( self_admin_url('update.php?action=upgrade-plugin&plugin=') . $file, 'upgrade-plugin_' . $file) );
+
+ do_action( "in_plugin_update_message-$file", $plugin_data, $r );
+
+ echo '</div></td></tr>';
+ }
+}
+
+function wp_update_plugin($plugin, $feedback = '') {
+ if ( !empty($feedback) )
+ add_filter('update_feedback', $feedback);
+
+ include ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+ $upgrader = new Plugin_Upgrader();
+ return $upgrader->upgrade($plugin);
+}
+
+function get_theme_updates() {
+ $themes = wp_get_themes();
+ $current = get_site_transient('update_themes');
+
+ if ( ! isset( $current->response ) )
+ return array();
+
+ $update_themes = array();
+ foreach ( $current->response as $stylesheet => $data ) {
+ $update_themes[ $stylesheet ] = wp_get_theme( $stylesheet );
+ $update_themes[ $stylesheet ]->update = $data;