• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/imapcommands/repository.php
  • Класс: BitrixMailImapCommandsRepository
  • Вызов: Repository::setMessagesSeen
protected function setMessagesSeen($isSeen, $messages, $mailbox)
{
	$messagesIds = [];

	foreach ($this->messagesIds as $index => $messageId)
	{
		$messagesIds[$index] = $messageId;
	}

	if (empty($messagesIds) || empty($messages) || empty($mailbox))
	{
		return;
	}

	$mailsData = [];

	foreach ($messages as $messageData)
	{
		$mailsData[] = [
			'HEADER_MD5' => $messageData['HEADER_MD5'],
			'MAILBOX_USER_ID' => $mailbox['USER_ID'],
			'IS_SEEN' => $isSeen,
		];
	}

	$mailboxId = intval($this->mailboxId);

	MailMailMessageUidTable::updateList(
		[
			'=MAILBOX_ID' => $mailboxId,
			'@ID' => $messagesIds,
		],
		[
			'IS_SEEN' => $isSeen,
		],
		$mailsData
	);

	$dirWithMessagesId = MessageFolder::getDirIdForMessages($mailboxId,$messagesIds);

	if($isSeen === 'Y')
	{
		MessageFolder::decreaseDirCounter($mailboxId, $dirWithMessagesId, count($messagesIds));
	}
	else
	{
		MessageFolder::increaseDirCounter($mailboxId, false, $dirWithMessagesId, count($messagesIds));
	}

	BitrixMailHelper::updateMailboxUnseenCounter($mailboxId);
}