From 31cebccd5d35c05cd396741b7ad3f8c288de87d6 Mon Sep 17 00:00:00 2001 From: Bobselp Date: Tue, 24 Sep 2019 18:16:07 +0200 Subject: [PATCH] fix calc, add check if quota is enabled --- lib/Froxlor/Cron/System/MailboxsizeCron.php | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/Froxlor/Cron/System/MailboxsizeCron.php b/lib/Froxlor/Cron/System/MailboxsizeCron.php index 65749b6a..d35df4ef 100644 --- a/lib/Froxlor/Cron/System/MailboxsizeCron.php +++ b/lib/Froxlor/Cron/System/MailboxsizeCron.php @@ -38,16 +38,24 @@ class MailboxsizeCron extends \Froxlor\Cron\FroxlorCron $_maildir = \Froxlor\FileDir::makeCorrectDir($maildir['maildirpath']); if (file_exists($_maildir) && is_dir($_maildir)) { - // 1. Check if maildirsize exists (usually when quota is enabled) - $maildirsize = $_maildir.'maildirsize'; - if (file_exists($maildirsize)) { + $maildirsize = \Froxlor\FileDir::makeCorrectFile($_maildir . '/maildirsize'); + + // When quota is enabled and maildirsize file exists, use that to calculate size + if (\Froxlor\Settings::Get('system.mail_quota_enabled') == 1 && file_exists($maildirsize)) { \Froxlor\FroxlorLogger::getInstanceOf()->logAction(\Froxlor\FroxlorLogger::CRON_ACTION, LOG_NOTICE, 'found maildirsize file in ' . $_maildir); $file = file($maildirsize, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); - if (!empty($file[1])) { - $emailusage = floatval(explode(' ', $file[1])[0]); + // Remove header + array_shift($file); + $emailusage = 0; + // Sum up all the changes (line 2 -> end) + foreach ($file as $line) { + $parts = explode(' ', $line); + if (!empty($parts[0])) { + $emailusage += floatval($parts[0]); + } } } else { - // 2. If maildirsize file does not exist, compute with du + // if quota is disabled or maildirsize file does not exist, compute with du // mail-address allows many special characters, see http://en.wikipedia.org/wiki/Email_address#Local_part $return = false; $back = \Froxlor\FileDir::safe_exec('du -sk ' . escapeshellarg($_maildir), $return, array(