- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/lib/imap.php
- Класс: BitrixMailImap
- Вызов: Imap::listMessages
public function listMessages($mailbox, &$uidtoken, &$error)
{
$error = null;
$params = array(
'offset' => 0,
'limit' => -1,
);
if (is_array($mailbox))
{
$params = array_merge($params, $mailbox);
$mailbox = $mailbox['mailbox'];
}
if (!($params['offset'] > 0))
{
$params['offset'] = 0;
}
if (!($params['limit'] > 0))
{
$params['limit'] = -1;
}
if (!$this->select($mailbox, $error))
{
return false;
}
if (!($this->sessMailbox['exists'] > 0) || $params['offset'] + 1 > $this->sessMailbox['exists'])
{
return array();
}
if ($params['limit'] > 0 && $params['offset'] + $params['limit'] > $this->sessMailbox['exists'])
{
$params['limit'] = $this->sessMailbox['exists'] - $params['offset'];
}
$uidtoken = $this->sessMailbox['uidvalidity'];
$list = $this->fetch(
false,
$mailbox,
sprintf(
'%u:%s',
$params['offset'] + 1,
$params['limit'] > 0 ? (int) ($params['offset']+$params['limit']) : '*'
),
array_merge(
!is_null($uidtoken) ? array('UID') : array(),
array('INTERNALDATE', 'RFC822.SIZE', 'FLAGS')
),
$error
);
foreach ($list as $id => $data)
{
$list[$id] = array(
'id' => $id,
'uid' => array_key_exists('UID', $data) ? $data['UID'] : null,
'date' => array_key_exists('INTERNALDATE', $data) ? $data['INTERNALDATE'] : null,
'size' => array_key_exists('RFC822.SIZE', $data) ? $data['RFC822.SIZE'] : null,
'flags' => array_key_exists('FLAGS', $data) ? $data['FLAGS'] : array(),
);
}
$list = array_filter(
$list,
function ($item)
{
return isset($item['date'], $item['size'], $item['flags']);
}
);
return $list;
}