- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/lib/helper/mailbox/imap.php
- Класс: BitrixMailHelperMailboxImap
- Вызов: Imap::getSyncStatusTotal
public function getSyncStatusTotal()
{
$currentDir = null;
if (!empty($this->syncParams['currentDir']))
{
$currentDir = $this->syncParams['currentDir'];
}
$totalSyncDirs = count($this->getDirsHelper()->getSyncDirs());
$currentSyncDirPath = MailboxDirectoryHelper::getCurrentSyncDir();
$currentSyncDir = $this->getDirsHelper()->getDirByPath($currentSyncDirPath);
if ($totalSyncDirs > 0 && $currentSyncDir != null)
{
$currentSyncDirMessages = MailMailMessageUidTable::getList([
'select' => [
new MainEntityExpressionField('TOTAL', 'COUNT(1)'),
],
'filter' => [
'=MAILBOX_ID' => $this->mailbox['ID'],
'=DIR_MD5' => $currentSyncDir->getDirMd5(),
'==DELETE_TIME' => 0,
],
])->fetch();
$currentSyncDirMessagesCount = (int)$currentSyncDirMessages['TOTAL'];
$currentSyncDirMessagesAll = (int)$currentSyncDir->getMessageCount();
$currentSyncDirPosition = $this->getDirsHelper()->getCurrentSyncDirPositionByDefault(
$currentSyncDir->getPath(),
$currentDir
);
if ($currentDir != null) {
$totalSyncDirs--;
}
if ($currentSyncDirMessagesAll <= 0)
{
$progress = ($currentSyncDirPosition + 1) / $totalSyncDirs;
}
else
{
$progress = ($currentSyncDirMessagesCount / $currentSyncDirMessagesAll + $currentSyncDirPosition) / $totalSyncDirs;
}
return $progress;
}
else
{
return parent::getSyncStatus();
}
}