• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/helper.php
  • Класс: BitrixMailHelper
  • Вызов: Helper::updateImapMessage
static function updateImapMessage($userId, $hash, $data, &$error)
{
	$error = null;

	$res = MailMessageUidTable::getList(array(
		'select' => array(
			'ID', 'MAILBOX_ID', 'IS_SEEN',
			'MAILBOX_USER_ID' => 'MAILBOX.USER_ID',
			'MAILBOX_OPTIONS' => 'MAILBOX.OPTIONS',
		),
		'filter' => array(
			'=HEADER_MD5'  => $hash,
			'==DELETE_TIME' => 0,
		),
	));

	while ($item = $res->fetch())
	{
		$isOwner = $item['MAILBOX_USER_ID'] == $userId;
		$isPublic = in_array('crm_public_bind', (array) $item['MAILBOX_OPTIONS']['flags']);
		$inQueue = in_array($userId, (array) $item['MAILBOX_OPTIONS']['crm_lead_resp']);
		if (!$isOwner && !$isPublic && !$inQueue)
		{
			continue;
		}

		if (in_array($item['IS_SEEN'], array('Y', 'S')) != $data['seen'])
		{
			MailMessageUidTable::update(
				array(
					'ID' => $item['ID'],
					'MAILBOX_ID' => $item['MAILBOX_ID'],
				),
				array(
					'IS_SEEN' => $data['seen'] ? 'S' : 'U',
				)
			);
		}
	}
}