From a3fa8c87e00e249e6e3f4ee5b78b561d44bec073 Mon Sep 17 00:00:00 2001 From: Chenx221 Date: Sun, 10 Mar 2024 16:35:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86utils=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=94=A8=E6=88=B7home,vault=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E5=A4=A7=E5=B0=8F=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/FileSizeHelper.php | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/utils/FileSizeHelper.php b/utils/FileSizeHelper.php index b9e8dac..7b89077 100644 --- a/utils/FileSizeHelper.php +++ b/utils/FileSizeHelper.php @@ -38,18 +38,38 @@ class FileSizeHelper if ($user_id === null) { $user_id = Yii::$app->user->id; } - $userHomeDir = Yii::getAlias(Yii::$app->params['dataDirectory']) . '/' . $user_id; - $userHomeDirSize_MB = self::getDirectorySize($userHomeDir) / 1024 / 1024; - $file_size_MB = $file_size / 1024 / 1024; + $userHomeDirSize = self::getUserHomeDirSize($user_id); + $userHomeDirSize_MB = $userHomeDirSize / 1024 / 1024; + $userVaultDirSize = self::getUserVaultDirSize($user_id); + $userVaultDirSize_MB = $userVaultDirSize / 1024 / 1024; + + $file_size_MB = $file_size / 1024 / 1024; // 即将新增的文件 + $user = User::findOne($user_id); - if ($user === null) { - throw new NotFoundHttpException('User not found.'); - } $limit = $user->storage_limit; if ($limit == -1) { return true; } - return $userHomeDirSize_MB + $file_size_MB <= $limit; + + return $userHomeDirSize_MB + $userVaultDirSize_MB + $file_size_MB <= $limit; + } + + public static function getUserHomeDirSize(int $user_id = null): int + { + if ($user_id === null) { + $user_id = Yii::$app->user->id; + } + $userHomeDir = Yii::getAlias(Yii::$app->params['dataDirectory']) . '/' . $user_id; + return self::getDirectorySize($userHomeDir); + } + + public static function getUserVaultDirSize(int $user_id = null): int + { + if ($user_id === null) { + $user_id = Yii::$app->user->id; + } + $userHomeDir = Yii::getAlias(Yii::$app->params['dataDirectory']) . '/' . $user_id . '.secret'; + return self::getDirectorySize($userHomeDir); } /**