/** * Recursively determines the size of a folder in bytes * @return int Number of bytes in folder and subfolders * @param string $folder Path to folder */ static function getFolderSize($folder) { // Sanity check if (!file_exists($folder)) { return 0; } // Simple delete for a file if (is_file($folder) || is_link($folder)) { return is_link($folder) ? 0 : filesize($folder); } // Loop through the folder $size = 0; $dir = dir($folder); while (false !== ($entry = $dir->read())) { // Skip pointers if ($entry == '.' || $entry == '..') { continue; } // Recurse $size += MediabirdUtility::getFolderSize($folder . DIRECTORY_SEPARATOR . $entry); } // Clean up $dir->close(); return $size; }
/** * Return quota left for current user * @return int */ function quotaLeft() { //determine quota if($records = $this->db->getRecords(MediabirdConfig::tableName("User",true),"id=$this->userId",'','quota')) { $quota = intval($records[0]->quota); } else { return 0; } if ($quota == 0) { return -1; } $folder = $this->getUserFolder(); if (file_exists($folder)) { $folderSize = MediabirdUtility::getFolderSize($folder); } else { $folderSize = 0; } return $quota-$folderSize; }