Changeset 7547
- Timestamp:
- 03/27/2008 07:36:30 AM (17 years ago)
- Location:
- trunk/wp-admin/includes
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/includes/file.php
r7414 r7547 193 193 * 194 194 * @param string $url the URL of the file to download 195 * @return mixed falseon failure, string Filename on success.195 * @return mixed WP_Error on failure, string Filename on success. 196 196 */ 197 197 function download_url( $url ) { 198 198 //WARNING: The file is not automatically deleted, The script must unlink() the file. 199 199 if( ! $url ) 200 return false;200 return new WP_Error('http_no_url', __('Invalid URL Provided')); 201 201 202 202 $tmpfname = tempnam(get_temp_dir(), 'wpupdate'); 203 203 if( ! $tmpfname ) 204 return false;204 return new WP_Error('http_no_file', __('Could not create Temporary file')); 205 205 206 206 $handle = @fopen($tmpfname, 'w'); 207 207 if( ! $handle ) 208 return false;208 return new WP_Error('http_no_file', __('Could not create Temporary file')); 209 209 210 210 require_once( ABSPATH . 'wp-includes/class-snoopy.php' ); … … 212 212 $snoopy->fetch($url); 213 213 214 if( $snoopy->status != '200' ){ 215 fclose($handle); 216 unlink($tmpfname); 217 return new WP_Error('http_404', trim($snoopy->response_code)); 218 } 214 219 fwrite($handle, $snoopy->results); 215 220 fclose($handle); -
trunk/wp-admin/includes/update.php
r7465 r7547 177 177 $file = download_url($package); 178 178 179 if ( !$file)180 return new WP_Error('download_failed', __('Download failed.') );179 if ( is_wp_error($file) ) 180 return new WP_Error('download_failed', __('Download failed.'), $file->get_error_message()); 181 181 182 182 $working_dir = $base . 'wp-content/upgrade/' . basename($plugin, '.php'); … … 195 195 } 196 196 197 // Once installed, delete the package197 // Once extracted, delete the package 198 198 unlink($file); 199 199 200 200 if ( is_plugin_active($plugin) ) { 201 //Deactivate the plugin 201 //Deactivate the plugin silently, Prevent deactivation hooks from running. 202 202 apply_filters('update_feedback', __('Deactivating the plugin')); 203 203 deactivate_plugins($plugin, true); … … 210 210 211 211 // If plugin is in its own directory, recursively delete the directory. 212 if ( strpos($plugin, '/') && $plugin_dir != $base . PLUGINDIR . '/' ) 212 if ( strpos($plugin, '/') && $plugin_dir != $base . PLUGINDIR . '/' ) //base check on if plugin includes directory seperator AND that its not the root plugin folder 213 213 $deleted = $wp_filesystem->delete($plugin_dir, true); 214 214 else … … 227 227 } 228 228 229 //Get a list of the directories in the working directory before we delete it, We need to know the new folder for the plugin 230 $filelist = array_keys( $wp_filesystem->dirlist($working_dir) ); 231 229 232 // Remove working directory 230 233 $wp_filesystem->delete($working_dir, true); … … 233 236 delete_option('update_plugins'); 234 237 235 //Return the new plugin file. 236 if ( ! preg_match('!/([a-z0-9\-]+)/?$!i', $working_dir, $mat) ) 237 return false; 238 $plugin = get_plugins('/' . $mat[1]); //Pass it with a leading slash 239 $list = array_keys($plugin); 240 return $mat[1] . '/' . $list[0]; //Pass it without a leading slash. 238 if( empty($filelist) ) 239 return false; //We couldnt find any files in the working dir 240 241 $folder = $filelist[0]; 242 $plugin = get_plugins('/' . $folder); //Pass it with a leading slash, search out the plugins in the folder, 243 $pluginfiles = array_keys($plugin); //Assume the requested plugin is the first in the list 244 245 return $folder . '/' . $pluginfiles[0]; //Pass it without a leading slash as WP requires 241 246 } 242 247
Note: See TracChangeset
for help on using the changeset viewer.