Florian Schaal
2014-03-12 852a25f0fb1f1c72b72f68b1f02504909f3f45d9
changed function check_free_space
1 files modified
25 ■■■■■ changed files
server/lib/classes/system.inc.php 25 ●●●●● patch | view | raw | blame | history
server/lib/classes/system.inc.php
@@ -917,13 +917,11 @@
     * 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
     * @return bool - true when the the free space is above limit ohterwise false, opt. available disk-space
    */
    function check_free_space($path, $limit = 0) {
    function check_free_space($path, $limit = 0, &$free_space = 0) {
        $path = rtrim($path, '/');
        $parts = explode('/', $path);
        $out = '';
        /**
        * Make sure that we have only existing directories in the path.
@@ -931,19 +929,16 @@
        * 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];
            }
        while(!is_dir($path) && $path != '/') $path = realpath(dirname($path));
        $free_space = disk_free_space($out);
        if (!$free_space) {
            $free_space = 0;
            return false;
        }
        unset($parts);
        $res = disk_free_space($out);
        if (!$res) return false;
        if ($res >= $limit) {
        if ($free_space >= $limit) {
            return true;
        } else {
            return false;