Ticket #7519: 7519.diff
File 7519.diff, 12.8 KB (added by , 16 years ago) |
---|
-
wp-admin/includes/schema.php
456 456 457 457 if ( !empty( $role ) ) { 458 458 $role->add_cap( 'install_plugins' ); 459 $role->add_cap( 'update_themes' ); 459 460 } 460 461 } 461 462 -
wp-admin/includes/update.php
170 170 // Copy new version of plugin into place. 171 171 $result = copy_dir($working_dir, $plugins_dir); 172 172 if ( is_wp_error($result) ) { 173 //$wp_filesystem->delete($working_dir, true); //TODO: Uncomment? This DOES mean that the new files are available in the upgrade folder if it fails.173 $wp_filesystem->delete($working_dir, true); 174 174 return $result; 175 175 } 176 176 … … 193 193 return $folder . '/' . $pluginfiles[0]; 194 194 } 195 195 196 function wp_update_theme($theme, $feedback = '') { 197 global $wp_filesystem; 198 199 if ( !empty($feedback) ) 200 add_filter('update_feedback', $feedback); 201 202 // Is an update available? 203 $current = get_option( 'update_themes' ); 204 if ( !isset( $current->response[ $theme ] ) ) 205 return new WP_Error('up_to_date', __('The theme is at the latest version.')); 206 207 $r = $current->response[ $theme ]; 208 209 $themes = get_themes(); 210 foreach ( (array) $themes as $this_theme ) { 211 if ( $this_theme['Stylesheet'] == $theme ) { 212 $theme_directory = preg_replace('!^/themes/!i', '', $this_theme['Stylesheet Dir']); 213 break; 214 } 215 } 216 unset($themes); 217 218 if ( empty($theme_directory) ) 219 return new WP_Error('theme_non_existant', __('Theme does not exist.')); 220 221 // Is a filesystem accessor setup? 222 if ( ! $wp_filesystem || ! is_object($wp_filesystem) ) 223 WP_Filesystem(); 224 225 if ( ! is_object($wp_filesystem) ) 226 return new WP_Error('fs_unavailable', __('Could not access filesystem.')); 227 228 if ( $wp_filesystem->errors->get_error_code() ) 229 return new WP_Error('fs_error', __('Filesystem error'), $wp_filesystem->errors); 230 231 //Get the base plugin folder 232 $themes_dir = $wp_filesystem->wp_themes_dir(); 233 if ( empty($themes_dir) ) 234 return new WP_Error('fs_no_themes_dir', __('Unable to locate WordPress Theme directory.')); 235 236 //And the same for the Content directory. 237 $content_dir = $wp_filesystem->wp_content_dir(); 238 if( empty($content_dir) ) 239 return new WP_Error('fs_no_content_dir', __('Unable to locate WordPress Content directory (wp-content).')); 240 241 $themes_dir = trailingslashit( $themes_dir ); 242 $content_dir = trailingslashit( $content_dir ); 243 244 if ( empty($r->package) ) 245 return new WP_Error('no_package', __('Upgrade package not available.')); 246 247 // Download the package 248 apply_filters('update_feedback', sprintf(__('Downloading update from %s'), $r['package'])); 249 $download_file = download_url($r['package']); 250 251 if ( is_wp_error($download_file) ) 252 return new WP_Error('download_failed', __('Download failed.'), $download_file->get_error_message()); 253 254 $working_dir = $content_dir . 'upgrade/' . basename($theme_directory); 255 256 // Clean up working directory 257 if ( $wp_filesystem->is_dir($working_dir) ) 258 $wp_filesystem->delete($working_dir, true); 259 260 apply_filters('update_feedback', __('Unpacking the update')); 261 // Unzip package to working directory 262 $result = unzip_file($download_file, $working_dir); 263 264 // Once extracted, delete the package 265 unlink($download_file); 266 267 if ( is_wp_error($result) ) { 268 $wp_filesystem->delete($working_dir, true); 269 return $result; 270 } 271 272 //TODO: Is theme currently active? If so, set default theme 273 /* 274 if ( is_plugin_active($plugin) ) { 275 //Deactivate the plugin silently, Prevent deactivation hooks from running. 276 apply_filters('update_feedback', __('Deactivating the plugin')); 277 deactivate_plugins($plugin, true); 278 }*/ 279 280 // Remove the existing plugin. 281 apply_filters('update_feedback', __('Removing the old version of the theme')); 282 $deleted = $wp_filesystem->delete($themes_dir . $theme_directory, true); 283 284 if ( ! $deleted ) { 285 $wp_filesystem->delete($working_dir, true); 286 return new WP_Error('delete_failed', __('Could not remove the old plugin')); 287 } 288 289 apply_filters('update_feedback', __('Installing the latest version')); 290 // Copy new version of plugin into place. 291 $result = copy_dir($working_dir, $themes_dir); 292 if ( is_wp_error($result) ) { 293 $wp_filesystem->delete($working_dir, true); 294 return $result; 295 } 296 297 //Get a list of the directories in the working directory before we delete it, We need to know the new folder for the plugin 298 //$filelist = array_keys( $wp_filesystem->dirlist($working_dir) ); 299 300 // Remove working directory 301 $wp_filesystem->delete($working_dir, true); 302 303 // Force refresh of plugin update information 304 delete_option('update_themes'); 305 306 /*if( empty($filelist) ) 307 return false; //We couldnt find any files in the working dir, therefor no plugin installed? Failsafe backup. 308 309 $folder = $filelist[0]; 310 $plugin = get_plugins('/' . $folder); //Ensure to pass with leading slash 311 $pluginfiles = array_keys($plugin); //Assume the requested plugin is the first in the list 312 313 return $folder . '/' . $pluginfiles[0];*/ 314 } 315 316 196 317 function wp_update_core($feedback = '') { 197 318 global $wp_filesystem; 198 319 -
wp-admin/includes/upgrade.php
210 210 if ( $wp_current_db_version < 8201 ) 211 211 upgrade_260(); 212 212 213 if ( $wp_current_db_version < 89 21)213 if ( $wp_current_db_version < 8980 ) 214 214 upgrade_270(); 215 215 216 216 maybe_disable_automattic_widgets(); … … 766 766 function upgrade_270() { 767 767 global $wpdb, $wp_current_db_version; 768 768 769 if ( $wp_current_db_version < 8 530 )769 if ( $wp_current_db_version < 8980 ) 770 770 populate_roles_270(); 771 771 772 772 // Update post_date for unpublished posts with empty timestamp -
wp-admin/themes.php
59 59 60 60 $themes = array_slice( $themes, $start, $per_page ); 61 61 62 function theme_update_available( $theme ) { 63 static $themes_update; 64 if ( !isset($themes_update) ) 65 $themes_update = get_option('update_themes'); 66 67 if ( isset($theme->stylesheet) ) 68 $stylesheet = $theme->stylesheet; 69 elseif ( isset($theme['Stylesheet']) ) 70 $stylesheet = $theme['Stylesheet']; 71 else 72 return false; //No valid info passed. 73 74 if ( isset($themes_update->response[ $stylesheet ]) ) { 75 $update = $themes_update->response[ $stylesheet ]; 76 $details_url = add_query_arg(array('TB_iframe' => 'true', 'width' => 1024, 'height' => 800), $update['url']); //Theme browser inside WP? replace this, Also, theme preview JS will override this on the available list. 77 $update_url = wp_nonce_url('update.php?action=upgrade-theme&theme=' . urlencode($stylesheet), 'upgrade-theme_' . $stylesheet); 78 79 if ( ! current_user_can('update_themes') ) 80 printf( __('<p>There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%1$s">View version %3$s Details</a>.</p>'), $ct->name, $details_url, $update['new_version']); 81 else if ( empty($update->package) ) 82 printf( __('<p>There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%1$s">View version %3$s Details</a> <em>automatic upgrade unavailable for this theme</em>.</p>'), $ct->name, $details_url, $update['new_version']); 83 else 84 printf( __('<p>There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%1$s">View version %3$s Details</a> or <a href="%4$s">upgrade automatically</a>.</p>'), $ct->name, $details_url, $update['new_version'], $update_url ); 85 } 86 } 87 62 88 ?> 63 89 64 90 <div class="wrap"> … … 77 103 <?php if ( $ct->tags ) : ?> 78 104 <p><?php _e('Tags:'); ?> <?php echo join(', ', $ct->tags); ?></p> 79 105 <?php endif; ?> 106 <?php theme_update_available($ct); ?> 107 80 108 </div> 81 109 82 110 <h2><?php _e('Available Themes'); ?></h2> … … 141 169 <p><?php echo $description; ?></p> 142 170 <?php if ( $tags ) : ?> 143 171 <p><?php _e('Tags:'); ?> <?php echo join(', ', $tags); ?></p> 172 <?php endif; ?> 173 <?php theme_update_available( $themes[$theme_name] ); ?> 144 174 <noscript><p class="themeactions"><a href="<?php echo $preview_link; ?>" title="<?php echo $preview_text; ?>"><?php _e('Preview'); ?></a> <a href="<?php echo $activate_link; ?>" title="<?php echo $activate_text; ?>"><?php _e('Activate'); ?></a></p></noscript> 145 <?php endif; ?>146 175 <div style="display:none;"><a class="previewlink" href="<?php echo $preview_link; ?>"><?php echo $preview_text; ?></a> <a class="activatelink" href="<?php echo $activate_link; ?>"><?php echo $activate_text; ?></a></div> 147 176 <?php endif; // end if not empty theme_name ?> 148 177 </td> -
wp-admin/update.php
62 62 } 63 63 64 64 /** 65 * Theme upgrade display. 66 * 67 * @since 2.5 68 * 69 * @param string $plugin Plugin 70 */ 71 function do_theme_upgrade($theme) { 72 global $wp_filesystem; 73 74 $url = wp_nonce_url('update.php?action=upgrade-theme&theme=' . urlencode($theme), 'upgrade-plugin_' . urlencode($theme)); 75 if ( false === ($credentials = request_filesystem_credentials($url)) ) 76 return; 77 78 if ( ! WP_Filesystem($credentials) ) { 79 $error = true; 80 if ( is_object($wp_filesystem) && $wp_filesystem->errors->get_error_code() ) 81 $error = $wp_filesystem->errors; 82 request_filesystem_credentials($url, '', $error); //Failed to connect, Error and request again 83 return; 84 } 85 86 echo '<div class="wrap">'; 87 echo '<h2>' . __('Upgrade Theme') . '</h2>'; 88 if ( $wp_filesystem->errors->get_error_code() ) { 89 foreach ( $wp_filesystem->errors->get_error_messages() as $message ) 90 show_message($message); 91 echo '</div>'; 92 return; 93 } 94 95 //TODO: Is theme currently active? 96 $was_current = false; //is_plugin_active($plugin); //Check now, It'll be deactivated by the next line if it is 97 98 $result = wp_update_theme($theme, 'show_message'); 99 100 if ( is_wp_error($result) ) { 101 show_message($result); 102 show_message( __('Installation Failed') ); 103 } else { 104 //Result is the new plugin file relative to WP_PLUGIN_DIR 105 show_message( __('Theme upgraded successfully') ); 106 if( $result && $was_current ){ 107 show_message(__('Setting theme as Current')); 108 //TODO: Actually set it as active again. 109 //echo '<iframe style="border:0" width="100%" height="170px" src="' . wp_nonce_url('update.php?action=activate-plugin&plugin=' . $result, 'activate-plugin_' . $result) .'"></iframe>'; 110 } 111 } 112 echo '</div>'; 113 } 114 115 /** 65 116 * Display upgrade WordPress for downloading latest or upgrading automatically form. 66 117 * 67 118 * @since 2.7 … … 144 195 145 196 if ( isset($_GET['action']) ) { 146 197 $plugin = isset($_GET['plugin']) ? trim($_GET['plugin']) : ''; 147 148 if ( 'upgrade-plugin' == $_GET['action'] ) { 198 $theme = isset($_REQUEST['theme']) ? urldecode($_REQUEST['theme']) : ''; 199 $action = isset($_GET['action']) ? $_GET['action'] : ''; 200 201 if ( 'upgrade-plugin' == $action ) { 149 202 check_admin_referer('upgrade-plugin_' . $plugin); 150 203 $title = __('Upgrade Plugin'); 151 204 $parent_file = 'plugins.php'; 152 205 require_once('admin-header.php'); 153 206 do_plugin_upgrade($plugin); 154 207 include('admin-footer.php'); 155 } elseif ('activate-plugin' == $ _GET['action']) {208 } elseif ('activate-plugin' == $action ) { 156 209 check_admin_referer('activate-plugin_' . $plugin); 157 210 if( ! isset($_GET['failure']) && ! isset($_GET['success']) ) { 158 211 wp_redirect( 'update.php?action=activate-plugin&failure=true&plugin=' . $plugin . '&_wpnonce=' . $_GET['_wpnonce'] ); … … 182 235 include(WP_PLUGIN_DIR . '/' . $plugin); 183 236 } 184 237 echo "</body></html>"; 185 } elseif ( 'upgrade-core' == $ _GET['action']) {238 } elseif ( 'upgrade-core' == $action ) { 186 239 $title = __('Upgrade WordPress'); 187 240 $parent_file = 'index.php'; 188 241 require_once('admin-header.php'); 189 242 core_upgrade_preamble(); 190 243 include('admin-footer.php'); 191 } elseif ( 'do-core-upgrade' ) {244 } elseif ( 'do-core-upgrade' == $action ) { 192 245 check_admin_referer('upgrade-core'); 193 246 $title = __('Upgrade WordPress'); 194 247 $parent_file = 'index.php'; 195 248 require_once('admin-header.php'); 196 249 do_core_upgrade(); 197 250 include('admin-footer.php'); 251 } elseif ( 'upgrade-theme' == $action ) { 252 check_admin_referer('upgrade-theme_' . $theme); 253 $title = __('Upgrade Theme'); 254 $parent_file = 'themes.php'; 255 require_once('admin-header.php'); 256 do_theme_upgrade($theme); 257 include('admin-footer.php'); 198 258 } 199 259 } 200 260 -
wp-includes/version.php
15 15 * 16 16 * @global int $wp_db_version 17 17 */ 18 $wp_db_version = 89 21;18 $wp_db_version = 8980; 19 19 20 20 ?>