- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/lib/helper/mailboxdirectoryhelper.php
- Класс: BitrixMailHelperMailboxDirectoryHelper
- Вызов: MailboxDirectoryHelper::syncChildren
public function syncChildren($parent)
{
$pattern = sprintf('%s%s%%', $parent->getPath(), $parent->getDelimiter());
$mailboxHelper = Mailbox::createInstance($this->mailboxId);
$dirs = $mailboxHelper->listDirs($pattern);
if ($dirs === false)
{
$this->errors = $mailboxHelper->getErrors();
return false;
}
$dbDirs = $this->getOneLevelByParentId($parent);
$params = [
'level' => $parent->getLevel() + 1,
'parent_id' => $parent->getId(),
'root_id' => $parent->getRootId() ?: $parent->getId(),
'is_sync' => MailboxDirectoryTable::INACTIVE,
];
$dirs = array_map(function ($item) use ($params)
{
return array_merge($item, $params);
}, $dirs);
$this->addSyncDirs($dirs, $dbDirs);
if (!empty($dbDirs))
{
$this->updateSyncDirs($dirs, $dbDirs);
$this->removeSyncDirs($dirs, $dbDirs);
}
return true;
}