Index: branches/5.2.x/core/units/helpers/file_helper.php =================================================================== diff -u -N -r14681 -r14699 --- branches/5.2.x/core/units/helpers/file_helper.php (.../file_helper.php) (revision 14681) +++ branches/5.2.x/core/units/helpers/file_helper.php (.../file_helper.php) (revision 14699) @@ -1,6 +1,6 @@ CheckFolder($destination); - if (!$result || !is_resource($dir)) { - // failed to create target directory OR failed to open source directory - return false; - } - - while ( false !== ($file = readdir($dir)) ) { - if ($file == '.' || $file == '..') { + foreach ($iterator as $file_info) { + if ( $file_info->isDot() ) { continue; } - if ( is_dir($source . DIRECTORY_SEPARATOR . $file) ) { - $result = $this->copyFolderRecursive($source . DIRECTORY_SEPARATOR . $file, $destination . DIRECTORY_SEPARATOR . $file); + $file = $file_info->getFilename(); + + if ( $file_info->isDir() ) { + $result = $this->copyFolderRecursive($file_info->getPathname(), $destination . DIRECTORY_SEPARATOR . $file); } else { - $result = copy($source . DIRECTORY_SEPARATOR . $file, $destination . DIRECTORY_SEPARATOR . $file); + $result = copy($file_info->getPathname(), $destination . DIRECTORY_SEPARATOR . $file); } if (!$result) { @@ -340,8 +339,6 @@ } } - closedir($dir); - return $result; } @@ -360,29 +357,26 @@ $destination .= DIRECTORY_SEPARATOR . basename($source); } - $dir = opendir($source); + $iterator = new DirectoryIterator($source); + /* @var $file_info DirectoryIterator */ + $result = $this->CheckFolder($destination); - if (!$result || !is_resource($dir)) { - // failed to create target directory OR failed to open source directory - return false; - } - - while ( false !== ($file = readdir($dir)) ) { - if ($file == '.' || $file == '..' || !is_file($source . DIRECTORY_SEPARATOR . $file)) { + foreach ($iterator as $file_info) { + if ( $file_info->isDot() || !$file_info->isFile() ) { continue; } - $result = copy($source . DIRECTORY_SEPARATOR . $file, $destination . DIRECTORY_SEPARATOR . $file); + $file = $file_info->getFilename(); - if (!$result) { + $result = copy($file_info->getPathname(), $destination . DIRECTORY_SEPARATOR . $file); + + if ( !$result ) { trigger_error('Cannot create file "' . $destination . DIRECTORY_SEPARATOR . $file . '"', E_USER_WARNING); break; } } - closedir($dir); - return $result; }