• Модуль: 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;
}