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