fix recursion on rmdirr

This commit is contained in:
Thomas Müller 2014-06-23 13:33:55 +02:00
parent 65e4348080
commit f83821c388
1 changed files with 11 additions and 7 deletions

View File

@ -405,15 +405,19 @@ class OC_Helper {
*/
static function rmdirr($dir) {
if (is_dir($dir)) {
$files = scandir($dir);
// FIXME: use flat array instead of recursion to avoid
// too many levels
foreach ($files as $file) {
if ($file !== '' && $file !== "." && $file !== "..") {
self::rmdirr("$dir/$file");
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::CHILD_FIRST
);
foreach ($files as $fileInfo) {
/** @var FilesystemIterator $fileInfo */
if ($fileInfo->isDir()) {
rmdir($fileInfo->getRealPath());
} else {
unlink($fileInfo->getRealPath());
}
}
rmdir($dir);
} elseif (file_exists($dir)) {
unlink($dir);
}