• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/helper/mailbox.php
  • Класс: BitrixMailHelperMailbox
  • Вызов: Mailbox::getDirsMd5WithCounter
public function getDirsMd5WithCounter($mailboxId)
{
	if($this->dirsMd5WithCounter)
	{
		return $this->dirsMd5WithCounter;
	}

	$countersById = [];
	$counterResult = MailInternalsMailCounterTable::getList([
		'select' => [
			'DIRECTORY_ID' => 'ENTITY_ID',
			'UNSEEN' => 'VALUE',
		],
		'filter' => [
			'=ENTITY_TYPE' => 'DIR',
			'=MAILBOX_ID' => $mailboxId,
		],
	]);
	while ($item = $counterResult->fetch()) {
		$countersById[(int)$item['DIRECTORY_ID']] = (int)$item['UNSEEN'];
	}

	if (empty($countersById)) {
		return [];
	}

	$directoriesWithCounter = [];
	$res = MailInternalsMailboxDirectoryTable::query()
		->whereIn('ID', array_keys($countersById))
		->setSelect([
			'ID',
			'DIR_MD5',
		])
		->where('MAILBOX_ID', $mailboxId)
		->exec();
	while ($item = $res->fetch()) {
		$id = $item['ID'];
		$dirMd5 = $item['DIR_MD5'];
		$directoriesWithCounter[$dirMd5] = [
			'UNSEEN' => $countersById[$id] ?? 0,
			'DIR_MD5' => $dirMd5,
		];
	}

	$this->dirsMd5WithCounter = $directoriesWithCounter;

	return $directoriesWithCounter;
}