fix calc, add check if quota is enabled
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user