From 6ff8d7bcb40c074e6b1b12c33d9478cdad0c6bd0 Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Tue, 11 Mar 2014 19:57:59 +0100
Subject: [PATCH] add function to check the free space for a given directory

---
 server/lib/classes/system.inc.php | 37 +++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index 92881ba331..65fa54baa5 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -913,6 +913,43 @@ class system{
 	}
 
 
+	/**
+	 * This function checks the free space for a given directory
+	 * @param path check path
+	 * @param limit min. free space in bytes
+	 * @return bool - true when the the free space is above limit ohterwise false
+	*/
+
+	function check_free_space($path, $limit = 0) {
+		$path = rtrim($path, '/');
+		$parts = explode('/', $path);
+        $out = '';
+
+		/**
+		* Make sure that we have only existing directories in the path.
+
+		* Given a file name instead of a directory, the behaviour of the disk_free_space
+		function is unspecified and may differ between operating systems and PHP versions.
+        */
+		for ($i = 1; $i < count($parts); $i++) {
+			if ( !is_file($out.'/'.$parts[$i]) && is_dir($out.'/'.$parts[$i]) ) {
+				$out .= '/'.$parts[$i];
+			}
+		}
+
+		unset($parts);
+
+		$res = disk_free_space($out);
+
+		if (!$res) return false;
+
+		if ($res >= $limit) {
+			return true;
+		} else {
+			return false;
+		}
+
+	}
 
 
 
-- 
GitLab