• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/helper.php
  • Класс: BitrixMailHelper
  • Вызов: Helper::updateMailCounters
static function updateMailCounters($mailbox)
{
	$mailboxId = $mailbox['ID'];

	$directoryHelper = new HelperMailboxDirectoryHelper($mailboxId);
	$syncDirs = $directoryHelper->getSyncDirs();

	$totalCount = 0;

	foreach ($syncDirs as $dir)
	{
		if($dir->isInvisibleToCounters())
		{
			continue;
		}

		$dirPath = $dir->getPath();

		//since we work with internalDate inside the method
		CTimeZone::Disable();
		$dirCount = static::getImapUnseenSyncForDir($mailbox,$dirPath);
		CTimeZone::Enable();

		if($dirCount !== false)
		{
			$totalCount += $dirCount;

			$keyRow = [
				'MAILBOX_ID' => $mailboxId,
				'ENTITY_TYPE' => 'DIR',
				'ENTITY_ID'=>$dir->getId()
			];

			$filter = [
				'=MAILBOX_ID' => $keyRow['MAILBOX_ID'],
				'=ENTITY_TYPE' => $keyRow['ENTITY_TYPE'],
				'=ENTITY_ID' => $keyRow['ENTITY_ID']
			];

			$rowValue = ['VALUE' => $dirCount];

			if(InternalsMailCounterTable::getCount($filter))
			{
				InternalsMailCounterTable::update($keyRow, $rowValue);
			}
			else
			{
				InternalsMailCounterTable::add(array_merge($rowValue,$keyRow));
			};
		}
	}

	return $totalCount;
}