Ticket #5586: download-url-wp_error.diff
File download-url-wp_error.diff, 2.0 KB (added by , 13 years ago) |
---|
-
wp-admin/includes/file.php
192 210 * Downloads a url to a local file using the Snoopy HTTP Class 193 211 * 194 212 * @param string $url the URL of the file to download 195 * @return mixed falseon failure, string Filename on success.213 * @return mixed WP_Error on failure, string Filename on success. 196 214 */ 197 215 function download_url( $url ) { 198 216 //WARNING: The file is not automatically deleted, The script must unlink() the file. 199 217 if( ! $url ) 200 return false;218 return new WP_Error('http_no_url', __('Invalid URL Provided')); 201 219 202 220 $tmpfname = tempnam(get_temp_dir(), 'wpupdate'); 203 221 if( ! $tmpfname ) 204 return false;222 return new WP_Error('http_no_file', __('Could not create Temporary file')); 205 223 206 224 $handle = @fopen($tmpfname, 'w'); 207 225 if( ! $handle ) 208 return false;226 return new WP_Error('http_no_file', __('Could not create Temporary file')); 209 227 210 228 require_once( ABSPATH . 'wp-includes/class-snoopy.php' ); 211 229 $snoopy = new Snoopy(); 212 230 $snoopy->fetch($url); 213 231 232 if( $snoopy->status != '200' ){ 233 fclose($handle); 234 unlink($tmpfname); 235 return new WP_Error('http_404', trim($snoopy->response_code)); 236 } 214 237 fwrite($handle, $snoopy->results); 215 238 fclose($handle); 216 239 -
wp-admin/includes/update.php
176 176 apply_filters('update_feedback', sprintf(__('Downloading update from %s'), $package)); 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'); 183 183