diff --git a/build/build_helper.php b/build/build_helper.php index 6a0fc0042e..7c75206d6d 100644 --- a/build/build_helper.php +++ b/build/build_helper.php @@ -325,19 +325,19 @@ class build_package $result = array(); $file_contents = file($deleted_filename); - foreach ($file_contents as $line) + foreach ($file_contents as $filename) { - $line = trim($line); + $filename = trim($filename); - if (!$line) + if (!$filename) { continue; } - $line = str_replace('Only in ' . $package_name, '', $line); - $line = ltrim($line, '/'); + $filename = str_replace('Only in ' . $package_name, '', $filename); + $filename = ltrim($filename, '/'); - if (substr($line, 0, 1) == ':') + if (substr($filename, 0, 1) == ':') { $replace = ''; } @@ -346,45 +346,26 @@ class build_package $replace = '/'; } - $line = str_replace(': ', $replace, $line); + $filename = str_replace(': ', $replace, $filename); - if (is_dir("{$this->locations['old_versions']}{$package_name}/{$line}")) + if (is_dir("{$this->locations['old_versions']}{$package_name}/{$filename}")) { - $result = array_merge($result, $this->get_files_recursive("{$this->locations['old_versions']}{$package_name}/{$line}", $line)); - } - else - { - $result[] = $line; - } - } + $iterator = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator( + "{$this->locations['old_versions']}{$package_name}/{$filename}", + \FilesystemIterator::UNIX_PATHS | \FilesystemIterator::SKIP_DOTS + ), + \RecursiveIteratorIterator::LEAVES_ONLY + ); - return $result; - } - - /** - * Get recursively the list of the files contained in a directory - * - * @param string $directory_absolute Absolute path to the directory - * @param string $directory Relative path to the directory (used to prefixed the name of the files) - * @return array - */ - protected function get_files_recursive($directory_absolute, $directory) - { - $result = array(); - $files = scandir($directory_absolute); - - foreach ($files as $file) - { - if (is_dir($directory_absolute . '/' . $file)) - { - if ($file != '.' && $file != '..') + foreach ($iterator as $file_info) { - $result = array_merge($result, $this->get_files_recursive($directory_absolute . '/' . $file, $directory . '/' . $file)); + $result[] = "{$filename}/{$iterator->getSubPathname()}"; } } else { - $result[] = $directory . '/' . $file; + $result[] = $filename; } }