Ticket #5586: 5586.9.diff
File 5586.9.diff, 9.6 KB (added by , 13 years ago) |
---|
-
wp-admin/includes/class-wp-filesystem-direct.php
271 271 foreach($filelist as $filename=>$det){ 272 272 if ( '/' == substr($filename,-1,1) ) 273 273 $this->rmdir($path.'/'.$filename,$recursive); 274 @rmdir($ entry);274 @rmdir($filename); 275 275 } 276 276 return @rmdir($path); 277 277 } … … 333 333 return; 334 334 } 335 335 } 336 ?> 337 No newline at end of file 336 ?> -
wp-admin/includes/class-wp-filesystem-ftpext.php
132 132 } 133 133 function get_contents($file,$type='',$resumepos=0){ 134 134 if( empty($type) ){ 135 $extension = substr(strrchr($file name, "."), 1);135 $extension = substr(strrchr($file, "."), 1); 136 136 $type = isset($this->filetypes[ $extension ]) ? $this->filetypes[ $extension ] : FTP_ASCII; 137 137 } 138 138 $temp = tmpfile(); … … 348 348 } 349 349 function rmdir($path,$recursive=false){ 350 350 if( ! $recursive ) 351 return @ftp_rmdir($this->link, $ file);351 return @ftp_rmdir($this->link, $path); 352 352 353 353 //TODO: Recursive Directory delete, Have to delete files from the folder first. 354 354 //$dir = $this->dirlist($path); -
wp-admin/includes/class-wp-filesystem-ftpsockets.php
139 139 return false; 140 140 141 141 if( empty($type) ){ 142 $extension = substr(strrchr($file name, "."), 1);142 $extension = substr(strrchr($file, "."), 1); 143 143 $type = isset($this->filetypes[ $extension ]) ? $this->filetypes[ $extension ] : FTP_AUTOASCII; 144 144 } 145 145 $this->ftp->SetType($type); … … 376 376 377 377 function rmdir($path,$recursive=false){ 378 378 if( ! $recursive ) 379 return $this->ftp->rmdir($ file);379 return $this->ftp->rmdir($path); 380 380 381 381 return $this->ftp->mdel($path); 382 382 } -
wp-admin/includes/file.php
231 231 232 232 // Is the archive valid? 233 233 if ( false == ($archive_files = $archive->extract(PCLZIP_OPT_EXTRACT_AS_STRING)) ) 234 return new WP_Error('incompatible_archive', __('Incompatible archive'), $archive->error _string);234 return new WP_Error('incompatible_archive', __('Incompatible archive'), $archive->errorInfo(true)); 235 235 236 236 if ( 0 == count($archive_files) ) 237 237 return new WP_Error('empty_archive', __('Empty archive')); … … 240 240 $path = explode('/', $to); 241 241 $tmppath = ''; 242 242 for ( $j = 0; $j < count($path) - 1; $j++ ) { 243 $prevpath = $tmppath;244 243 $tmppath .= $path[$j] . '/'; 245 if ( ! $fs->is_dir($tmppath) ) { 246 //$fs->setDefaultPermissions( $fs->getchmod($tmppath) ); 244 if ( ! $fs->is_dir($tmppath) ) 247 245 $fs->mkdir($tmppath, 0755); 248 }249 246 } 250 247 251 248 foreach ($archive_files as $file) { -
wp-admin/includes/update.php
114 114 $r = $current->response[ $file ]; 115 115 116 116 echo "<tr><td colspan='5' class='plugin-update'>"; 117 printf( __('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a> or <a href="%4$s">upgrade automatically</a>.'), $plugin_data['Name'], $r->url, $r->new_version, "update.php?action=upgrade-plugin&plugin=$file");117 printf( __('There is a new version of %1$s available. <a href="%2$s">Download version %3$s here</a> or <a href="%4$s">upgrade automatically</a>.'), $plugin_data['Name'], $r->url, $r->new_version, wp_nonce_url("update.php?action=upgrade-plugin&plugin=$file", 'upgrade-plugin_' . $file) ); 118 118 echo "</td></tr>"; 119 119 } 120 120 add_action( 'after_plugin_row', 'wp_plugin_update_row' ); … … 154 154 155 155 // Download the package 156 156 $package = $r->package; 157 apply_filters('update_feedback', sprintf(__( "Downloading update from %s"), $package));157 apply_filters('update_feedback', sprintf(__('Downloading update from %s'), $package)); 158 158 $file = download_url($package); 159 159 160 160 if ( !$file ) 161 161 return new WP_Error('download_failed', __('Download failed.')); 162 162 163 $name = basename($plugin, '.php'); 164 $working_dir = $base . 'wp-content/upgrade/' . $name; 163 $working_dir = $base . 'wp-content/upgrade/' . basename($plugin, '.php'); 165 164 166 165 // Clean up working directory 167 if ( is_dir($working_dir) )166 if ( $wp_filesystem->is_dir($working_dir) ) 168 167 $wp_filesystem->delete($working_dir, true); 169 168 170 apply_filters('update_feedback', __( "Unpacking the update"));169 apply_filters('update_feedback', __('Unpacking the update')); 171 170 // Unzip package to working directory 172 171 $result = unzip_file($file, $working_dir); 173 172 if ( is_wp_error($result) ) { … … 180 179 unlink($file); 181 180 182 181 // Remove the existing plugin. 183 apply_filters('update_feedback', __( "Removing the old version of the plugin"));182 apply_filters('update_feedback', __('Removing the old version of the plugin')); 184 183 $plugin_dir = dirname($base . PLUGINDIR . "/$plugin"); 185 184 $plugin_dir = trailingslashit($plugin_dir); 185 186 186 // If plugin is in its own directory, recursively delete the directory. 187 if( ! in_array( $plugin_dir, array('.', trailingslashit($base . PLUGINDIR) ) ))187 if( strpos($plugin, '/') && $plugin_dir != $base . PLUGINDIR . '/' ) 188 188 $deleted = $wp_filesystem->delete($plugin_dir, true); 189 189 else 190 190 $deleted = $wp_filesystem->delete($base . PLUGINDIR . "/$plugin"); 191 191 192 if ( !$deleted ) { 192 193 $wp_filesystem->delete($working_dir, true); 193 194 return new WP_Error('delete_failed', __('Could not remove the old plugin')); 194 195 } 195 196 196 apply_filters('update_feedback', __( "Installing the latest version"));197 apply_filters('update_feedback', __('Installing the latest version')); 197 198 // Copy new version of plugin into place. 198 199 if ( !copy_dir($working_dir, $base . PLUGINDIR) ) { 199 //$wp_filesystem->delete($working_dir, true); 200 //$wp_filesystem->delete($working_dir, true); //TODO: Uncomment? This DOES mean that the new files are available in the upgrade folder if it fails. 200 201 return new WP_Error('install_failed', __('Installation failed')); 201 202 } 202 203 … … 207 208 delete_option('update_plugins'); 208 209 } 209 210 210 ?> 211 ?> 212 No newline at end of file -
wp-admin/update.php
5 5 if ( !current_user_can('edit_plugins') ) 6 6 wp_die('<p>'.__('You do not have sufficient permissions to update plugins for this blog.').'</p>'); 7 7 8 function request_filesystem_credentials($form_post, $type = '' ) {8 function request_filesystem_credentials($form_post, $type = '', $error = false) { 9 9 if ( empty($type) ) 10 10 $type = get_filesystem_method(); 11 11 12 12 if ( 'direct' == $type ) 13 13 return array(); 14 14 15 if ( ! empty($_POST['password']) && !empty($_POST['username']) && !empty($_POST['hostname']) ) {15 if ( ! $error && !empty($_POST['password']) && !empty($_POST['username']) && !empty($_POST['hostname']) ) { 16 16 $credentials = array('hostname' => $_POST['hostname'], 'username' => $_POST['username'], 17 17 'password' => $_POST['password'], 'ssl' => $_POST['ssl']); 18 18 $stored_credentials = $credentials; … … 26 26 $ssl = ''; 27 27 if ( $credentials = get_option('ftp_credentials') ) 28 28 extract($credentials, EXTR_OVERWRITE); 29 if( $error ){ 30 echo '<div id="message" class="error"><p>' . __('<strong>Error:</strong> There was an error connecting to the server, Please verify the settings are correct.') . '</p></div>'; 31 } 29 32 ?> 30 33 <form action="<?php echo $form_post ?>" method="post"> 31 34 <div class="wrap"> … … 42 45 </tr> 43 46 <tr valign="top"> 44 47 <th scope="row"><?php _e('Password:') ?></th> 45 <td><input name="password" type=" text" id="password" value="<?php echo attribute_escape($password) ?>" size="40" /></td>48 <td><input name="password" type="password" id="password" value="<?php echo attribute_escape($password) ?>" size="40" /></td> 46 49 </tr> 47 50 <tr valign="top"> 48 51 <th scope="row"><?php _e('Use SSL:') ?></th> … … 80 83 function do_plugin_upgrade($plugin) { 81 84 global $wp_filesystem; 82 85 83 $ credentials = request_filesystem_credentials("update.php?action=upgrade-plugin&plugin=$plugin");84 if ( false === $credentials)86 $url = wp_nonce_url("update.php?action=upgrade-plugin&plugin=$plugin", "upgrade-plugin_$plugin"); 87 if ( false === ($credentials = request_filesystem_credentials($url)) ) 85 88 return; 89 90 if( ! WP_Filesystem($credentials) ){ 91 request_filesystem_credentials($url, '', true); //Failed to connect, Error and request again 92 return; 93 } 94 86 95 echo '<div class="wrap">'; 87 96 echo '<h2>' . __('Upgrade Plugin') . '</h2>'; 88 WP_Filesystem($credentials);89 // TODO: look for auth and connect error codes and direct back to credentials form.90 97 if ( $wp_filesystem->errors->get_error_code() ) { 91 98 foreach ( $wp_filesystem->errors->get_error_messages() as $message ) 92 99 show_message($message); … … 108 115 $plugin = trim($_GET['plugin']); 109 116 110 117 if ( 'upgrade-plugin' == $_GET['action'] ) { 111 //check-admin_referer('upgrade-plugin_' . $plugin);118 check_admin_referer('upgrade-plugin_' . $plugin); 112 119 $title = __('Upgrade Plugin'); 113 120 $parent_file = 'plugins.php'; 114 121 require_once('admin-header.php'); 115 122 do_plugin_upgrade($plugin); 116 123 include('admin-footer.php'); 117 124 } 118 119 125 } 120 126 121 ?> 122 No newline at end of file 127 ?>