• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/helper/mailbox/imap.php
  • Класс: BitrixMailHelperMailboxImap
  • Вызов: Imap::removeExistingMessagesFromSynchronizationList
protected function removeExistingMessagesFromSynchronizationList($dirPath, $uidToken, &$messages)
{
	$existingMessagesId = [];

	$range = array(
		reset($messages)['UID'],
		end($messages)['UID'],
	);
	sort($range);

	$result = $this->listMessages(array(
		'select' => [
			'ID'
		],
		'filter' => array(
			'=DIR_MD5'  => md5(Emoji::encode($dirPath)),
			'=DIR_UIDV' => $uidToken,
			'>=MSG_UID' => $range[0],
			'<=MSG_UID' => $range[1],
		),
	), false);

	while ($item = $result->fetch())
	{
		$existingMessagesId[] = $item['ID'];
	}

	foreach ($messages as $id => $item)
	{
		$messageUid = $this->buildMessageIdForDataBase($dirPath, $uidToken, $item['UID']);

		if (in_array($messageUid, $existingMessagesId))
		{
			unset($messages[$id]);
			continue;
		}

		//We also remove duplicate messages
		$existingMessagesId[] = $messageUid;
	}
}