- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/lib/helper/mailbox/imap.php
- Класс: BitrixMailHelperMailboxImap
- Вызов: Imap::syncFirstDay
public function syncFirstDay()
{
$mailboxID = $this->mailbox['ID'];
$directoryHelper = new MailHelperMailboxDirectoryHelper($mailboxID);
$syncDirs = $directoryHelper->getSyncDirs();
$numberOfUnSynchronizedDirs = count($syncDirs);
foreach ($syncDirs as $dir)
{
$dirPath = $dir->getPath();
$dirId = $dir->getId();
$internalDate = BitrixMailHelper::getStartInternalDateForDir($mailboxID,$dirPath);
$keyRow = [
'MAILBOX_ID' => $mailboxID,
'ENTITY_TYPE' => 'DIR',
'ENTITY_ID' => $dirId,
'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_date_'.$internalDate;
if(MailInternalsMailEntityOptionsTable::getCount($filter))
{
if(MailInternalsMailEntityOptionsTable::getList([
'select' => [
'VALUE',
],
'filter' => $filter,
])->fetchAll()[0]['VALUE'] !== 'completed')
{
MailInternalsMailEntityOptionsTable::update(
$keyRow,
['VALUE' => $startValue]
);
CTimeZone::Disable();
$synchronizationSuccess = $this->syncDirForSpecificDay($dirPath,$internalDate);
CTimeZone::Enable();
if($synchronizationSuccess)
{
MailInternalsMailEntityOptionsTable::update(
$keyRow,
['VALUE' => 'completed']
);
$numberOfUnSynchronizedDirs--;
}
}
else
{
$numberOfUnSynchronizedDirs--;
}
}
else
{
$fields = $keyRow;
$fields['VALUE'] = $startValue;
MailInternalsMailEntityOptionsTable::add(
$fields
);
CTimeZone::Disable();
$synchronizationSuccess = $this->syncDirForSpecificDay($dirPath,$internalDate);
CTimeZone::Enable();
if($synchronizationSuccess)
{
BitrixMailInternalsMailEntityOptionsTable::update(
$keyRow,
['VALUE' => 'completed']
);
$numberOfUnSynchronizedDirs--;
}
}
}
if($numberOfUnSynchronizedDirs === 0)
{
return true;
}
else
{
return false;
}
}