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