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