- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/lib/integration/syncrequest.php
- Класс: BitrixMailIntegrationSyncRequest
- Вызов: SyncRequest::syncMail
static function syncMail(): array
{
global $USER;
$result = [
'lastFailedToSyncMailboxId' => 0,
'hasSuccessSync' => false,
'unseen' => 0,
];
if (Loader::includeModule('mail') && is_object($USER) && $USER->IsAuthorized())
{
$userId = $USER->GetID();
$mailboxesSyncManager = new MailboxSyncManager($userId);
$mailboxesReadyToSync = $mailboxesSyncManager->getNeedToBeSyncedMailboxes();
if (!empty($mailboxesReadyToSync))
{
foreach ($mailboxesReadyToSync as $mailboxId => $lastMailCheckData)
{
$mailboxHelper = HelperMailbox::createInstance($mailboxId, false);
if (!empty($mailboxHelper))
{
if ($mailboxHelper->sync() === false)
{
$result['lastFailedToSyncMailboxId'] = $mailboxId;
}
else
{
$result['hasSuccessSync'] = true;
}
if ($mailboxHelper->getMailbox()['SYNC_LOCK'] >= 0)
{
break;
}
}
}
$unseen = max(HelperMessage::getCountersForUserMailboxes($userId, true), 0);
$result['unseen'] = $unseen;
CUserCounter::set($userId, 'mail_unseen', $unseen, SITE_ID);
}
}
return $result;
}