- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/lib/helper/mailbox.php
- Класс: BitrixMailHelperMailbox
- Вызов: Mailbox::syncOutgoing
public function syncOutgoing()
{
$res = $this->listMessages(
array(
'runtime' => array(
new BitrixMainEntityReferenceField(
'UPLOAD_QUEUE',
'BitrixMailInternalsMessageUploadQueueTable',
array(
'=this.ID' => 'ref.ID',
'=this.MAILBOX_ID' => 'ref.MAILBOX_ID',
),
array(
'join_type' => 'INNER',
)
),
),
'select' => array(
'*',
'__' => 'MESSAGE.*',
'UPLOAD_LOCK' => 'UPLOAD_QUEUE.SYNC_LOCK',
'UPLOAD_STAGE' => 'UPLOAD_QUEUE.SYNC_STAGE',
'UPLOAD_ATTEMPTS' => 'UPLOAD_QUEUE.ATTEMPTS',
),
'filter' => array(
'>=UPLOAD_QUEUE.SYNC_STAGE' => 0,
' time() - static::getTimeout(),
' 5,
),
'order' => array(
'UPLOAD_QUEUE.SYNC_LOCK' => 'ASC',
'UPLOAD_QUEUE.SYNC_STAGE' => 'ASC',
'UPLOAD_QUEUE.ATTEMPTS' => 'ASC',
),
),
false
);
while ($excerpt = $res->fetch())
{
$n = $excerpt['UPLOAD_ATTEMPTS'] + 1;
$interval = min(static::getTimeout() * pow($n, $n), 3600 * 24 * 7);
if ($excerpt['UPLOAD_LOCK'] > time() - $interval)
{
continue;
}
$this->syncOutgoingMessage($excerpt);
if ($this->isTimeQuotaExceeded())
{
break;
}
}
}