• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/imapcommands/repository.php
  • Класс: BitrixMailImapCommandsRepository
  • Вызов: Repository::getMessages
public function getMessages()
{
	if (empty($this->messagesIds))
	{
		return [];
	}
	$messages = [];
	$messagesSelected = MailMailMessageUidTable::query()
		->addSelect('MESSAGE_ID')
		->where('MAILBOX_ID', $this->mailboxId)
		->whereIn('ID', $this->messagesIds)
		->whereNot('MSG_UID', 0)
		->where('MESSAGE_ID', '>', 0)
		->addFilter('==DELETE_TIME', 0)
		->exec()
		->fetchAll();
	if ($messagesSelected)
	{
		$messagesSelectedIds = array_map(
			function ($item)
			{
				return $item['MESSAGE_ID'];
			},
			$messagesSelected
		);
		if (empty($messagesSelectedIds))
		{
			return [];
		}
		$messages = MailMailMessageUidTable::query()
			->registerRuntimeField(
				'',
				new ReferenceField(
					'ref',
					MailMailMessageTable::class,
					['=this.MESSAGE_ID' => 'ref.ID']
				)
			)
			->addSelect('ID')
			->addSelect('MAILBOX_ID')
			->addSelect('DIR_MD5')
			->addSelect('DIR_UIDV')
			->addSelect('MSG_UID')
			->addSelect('HEADER_MD5')
			->addSelect('IS_SEEN')
			->addSelect('SESSION_ID')
			->addSelect('MESSAGE_ID')
			->addSelect('ref.FIELD_FROM', 'FIELD_FROM')
			->whereIn('MESSAGE_ID', $messagesSelectedIds)
			->where('MAILBOX_ID', $this->mailboxId)
			->whereNot('MSG_UID', 0)
			->exec()
			->fetchAll();
	}

	return $messages;
}