Просмотр исходного кода

Dodanie funkcji V::deleteWholeDirectory usuwającej katalogi z całą zawartością

Mariusz Muszyński 8 лет назад
Родитель
Сommit
22bd59a68d
1 измененных файлов с 30 добавлено и 0 удалено
  1. 30 0
      SE/se-lib/V.php

+ 30 - 0
SE/se-lib/V.php

@@ -654,4 +654,34 @@ EOF';
 		}, "");
 	}
 
+	static function deleteWholeDirectory($dir, $returnFiles = false, $doDelete = true) {
+		if (!is_dir($dir)) throw new Exception("{$dir} must be a directory");
+		$it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
+		$files = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST);
+
+		if ($doDelete) {
+			$rmdir = 'rmdir';
+			$unlink = 'unlink';
+		} else {
+			$rmdir = 'is_string';
+			$unlink = 'is_string';
+		}
+
+		if ($returnFiles) {
+			$return = [];
+			foreach ($files as $file) {
+				if ($file->isDir()) $return['dirs'][$file->getRealPath()] = @$rmdir($file->getRealPath());
+				else $return['files'][$file->getRealPath()] = @$unlink($file->getRealPath());
+			}
+			$return['dirs'][$dir] = @$rmdir($dir);
+			return $return;
+		} else {
+			foreach ($files as $file) {
+				if ($file->isDir()) @$rmdir($file->getRealPath());
+				else @$unlink($file->getRealPath());
+			}
+			@$rmdir($dir);
+		}
+	}
+
 }