diff --git a/wp-admin/includes/class-wp-filesystem-direct.php b/wp-admin/includes/class-wp-filesystem-direct.php index 24ed2a8519..c8d031587c 100644 --- a/wp-admin/includes/class-wp-filesystem-direct.php +++ b/wp-admin/includes/class-wp-filesystem-direct.php @@ -2,7 +2,9 @@ class WP_Filesystem_Direct{ var $permission = null; + var $errors = array(); function WP_Filesystem_Direct($arg){ + $this->errors = new WP_Error(); $this->permission = umask(); } function connect(){ @@ -188,11 +190,16 @@ class WP_Filesystem_Direct{ function delete($file,$recursive=false){ $file = str_replace('\\','/',$file); //for win32, occasional problems deleteing files otherwise + if( $this->is_file($file) ) return @unlink($file); - if( !$recursive ) + + if( !$recursive && $this->is_dir($file) ) return @rmdir($file); + $filelist = $this->dirlist($file); + if( ! $filelist ) + return true; //No files exist, Say we've deleted them $retval = true; foreach($filelist as $filename=>$fileinfo){ diff --git a/wp-admin/includes/update.php b/wp-admin/includes/update.php index f872f39236..da1f682a45 100644 --- a/wp-admin/includes/update.php +++ b/wp-admin/includes/update.php @@ -178,7 +178,7 @@ function wp_update_plugin($plugin, $feedback = '') { $plugin_dir = dirname(ABSPATH . PLUGINDIR . "/$plugin"); // If plugin is in its own directory, recursively delete the directory. - if ( '.' != $plugin_dir ) + if ( '.' != $plugin_dir && ABSPATH . PLUGINDIR != $plugin_dir ) $wp_filesystem->delete($plugin_dir, true); apply_filters('update_feedback', __("Installing the latest version"));