From 6ff8d7bcb40c074e6b1b12c33d9478cdad0c6bd0 Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Tue, 11 Mar 2014 14:57:59 -0400
Subject: [PATCH] add function to check the free space for a given directory
---
server/lib/classes/system.inc.php | 37 +++++++++++++++++++++++++++++++++++++
1 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index 92881ba..65fa54b 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -913,6 +913,43 @@
}
+ /**
+ * 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;
+ }
+
+ }
--
Gitblit v1.9.1