- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/lib/helper.php
- Класс: BitrixMailHelper
- Вызов: Helper::syncAllDirsInMailboxForTheFirstSyncDayAgent
static function syncAllDirsInMailboxForTheFirstSyncDayAgent()
{
$userMailboxes = BitrixMailMailboxTable::getList([
'select' => [
'ID'
],
'filter' => [
'=ACTIVE' => 'Y',
'=SERVER_TYPE' => 'imap',
],
])->fetchAll();
if (empty($userMailboxes))
{
return '';
}
$numberOfUnSynchronizedMailboxes = count($userMailboxes);
foreach ($userMailboxes as $mailbox)
{
$mailboxID = $mailbox['ID'];
$mailboxHelper = HelperMailbox::createInstance($mailboxID, false);
if (empty($mailboxHelper))
{
$numberOfUnSynchronizedMailboxes--;
continue;
}
$keyRow = [
'MAILBOX_ID' => $mailboxID,
'ENTITY_TYPE' => 'MAILBOX',
'ENTITY_ID' => $mailboxID,
'PROPERTY_NAME' => 'SYNC_FIRST_DAY',
];
$filter = [
'=MAILBOX_ID' => $keyRow['MAILBOX_ID'],
'=ENTITY_TYPE' => $keyRow['ENTITY_TYPE'],
'=ENTITY_ID' => $keyRow['ENTITY_ID'],
'=PROPERTY_NAME' => $keyRow['PROPERTY_NAME'],
];
$startValue = 'started_for_id_'.$mailboxID;
if(BitrixMailInternalsMailEntityOptionsTable::getCount($filter))
{
if(InternalsMailEntityOptionsTable::getList([
'select' => [
'VALUE',
],
'filter' => $filter,
])->fetchAll()[0]['VALUE'] !== 'completed')
{
BitrixMailInternalsMailEntityOptionsTable::update(
$keyRow,
['VALUE' => $startValue]
);
$synchronizationSuccess = $mailboxHelper->syncFirstDay();
if($synchronizationSuccess)
{
BitrixMailInternalsMailEntityOptionsTable::update(
$keyRow,
['VALUE' => 'completed']
);
$numberOfUnSynchronizedMailboxes--;
}
}
else
{
$numberOfUnSynchronizedMailboxes--;
}
}
else
{
$fields = $keyRow;
$fields['VALUE'] = $startValue;
BitrixMailInternalsMailEntityOptionsTable::add(
$fields
);
$synchronizationSuccess = $mailboxHelper->syncFirstDay();
if($synchronizationSuccess)
{
BitrixMailInternalsMailEntityOptionsTable::update(
$keyRow,
['VALUE' => 'completed']
);
$numberOfUnSynchronizedMailboxes--;
}
}
}
if($numberOfUnSynchronizedMailboxes === 0)
{
return '';
}
else
{
return 'BitrixMailHelper::syncAllDirsInMailboxForTheFirstSyncDayAgent();';
}
}