• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/helper/mailbox.php
  • Класс: BitrixMailHelperMailbox
  • Вызов: Mailbox::getDirsWithUnseenMailCounters
public function getDirsWithUnseenMailCounters()
{
	global $USER;
	$mailboxId = $this->mailbox['ID'];

	if (!HelperMessage::isMailboxOwner($mailboxId, $USER->GetID()))
	{
		return false;
	}

	$syncDirs = $this->getDirsHelper()->getSyncDirs();
	$defaultDirPath = $this->getDirsHelper()->getDefaultDirPath();
	$dirs = [];

	$dirsMd5WithCountOfUnseenMails = $this->getDirsMd5WithCounter($mailboxId);

	$defaultDirPathId = null;

	foreach ($syncDirs as $dir)
	{
		$newDir = [];
		$newDir['path'] = $dir->getPath(true);
		$newDir['name'] = $dir->getName();
		$newDir['count'] = 0;
		$currentDirMd5WithCountsOfUnseenMails = $dirsMd5WithCountOfUnseenMails[$dir->getDirMd5()];

		if ($currentDirMd5WithCountsOfUnseenMails !== null)
		{
			$newDir['count'] = $currentDirMd5WithCountsOfUnseenMails['UNSEEN'];
		}

		if($newDir['path'] === $defaultDirPath)
		{
			$defaultDirPathId = count($dirs);
		}

		$dirs[] = $newDir;
	}

	if (empty($dirs))
	{
		$dirs = [
			[
				'count' => 0,
				'path' => $defaultDirPath,
				'name' => $defaultDirPath,
			],
		];
	}

	//inbox always on top
	array_unshift( $dirs, array_splice($dirs, $defaultDirPathId, 1)[0] );

	return $dirs;
}