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