From: Aaron Schulz Date: Fri, 27 Jan 2012 20:35:42 +0000 (+0000) Subject: Follow-up r110159: set the FilesystemIterator flags when that class is available... X-Git-Tag: 1.31.0-rc.0~25054 X-Git-Url: http://git.cyclocoop.org/%24image?a=commitdiff_plain;h=5fa815b34d722c552df82df8d45a596ca816f192;p=lhc%2Fweb%2Fwiklou.git Follow-up r110159: set the FilesystemIterator flags when that class is available (PHP >= 5.3). Apparently, some versions of PHP 5.3 have different defaults that others for SKIP_DOTS. --- diff --git a/includes/filerepo/backend/FSFileBackend.php b/includes/filerepo/backend/FSFileBackend.php index f229577c1c..602385ec98 100644 --- a/includes/filerepo/backend/FSFileBackend.php +++ b/includes/filerepo/backend/FSFileBackend.php @@ -550,7 +550,17 @@ class FSFileBackendFileList implements Iterator { $this->suffixStart = strlen( $dir ) + 1; // size of "path/to/dir/" try { # Get an iterator that will return leaf nodes (non-directories) - $this->iter = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $dir ) ); + if ( MWInit::classExists( 'FilesystemIterator' ) ) { // PHP >= 5.3 + # RecursiveDirectoryIterator extends FilesystemIterator. + # FilesystemIterator::SKIP_DOTS default is inconsistent in PHP 5.3.x. + $flags = FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS; + $this->iter = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator( $dir, $flags ) ); + } else { // PHP < 5.3 + # RecursiveDirectoryIterator extends DirectoryIterator + $this->iter = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator( $dir ) ); + } } catch ( UnexpectedValueException $e ) { $this->iter = null; // bad permissions? deleted? }