From 731b51ee7f9b426c1fd7845d3bce26c8a8930927 Mon Sep 17 00:00:00 2001 From: Dion Hulse Date: Thu, 1 Oct 2015 05:09:25 +0000 Subject: [PATCH] Updates: Try a more compatible method to detect if a file exists when using the FTP Extension. This change causes it to list the parent directories files, and assets that the node exists within the returned listing, this is a little more compatible than relying upon the FTP server to correctly filter the returned resultset to the specific file/node being requested. Fixes #28013 Built from https://develop.svn.wordpress.org/trunk@34733 git-svn-id: http://core.svn.wordpress.org/trunk@34697 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/includes/class-wp-filesystem-ftpext.php | 12 +++++++----- wp-includes/version.php | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/wp-admin/includes/class-wp-filesystem-ftpext.php b/wp-admin/includes/class-wp-filesystem-ftpext.php index 541079d7b3..c869ec0dc9 100644 --- a/wp-admin/includes/class-wp-filesystem-ftpext.php +++ b/wp-admin/includes/class-wp-filesystem-ftpext.php @@ -316,14 +316,16 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base { * @param string $file * @return bool */ - public function exists($file) { - $list = @ftp_rawlist( $this->link, '-a ' . $file ); + public function exists( $file ) { + $path = dirname( $file ); + $filename = basename( $file ); - if ( empty( $list ) && $this->is_dir( $file ) ) { - return true; // File is an empty directory. + $file_list = @ftp_nlist( $this->link, '-a ' . $path ); + if ( $file_list ) { + $file_list = array_map( 'basename', $file_list ); } - return !empty($list); //empty list = no file, so invert. + return $file_list && in_array( $filename, $file_list ); } /** diff --git a/wp-includes/version.php b/wp-includes/version.php index d3ebf11636..03b9d1761b 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '4.4-alpha-34732'; +$wp_version = '4.4-alpha-34733'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.