• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/helper/mailboxdirectoryhelper.php
  • Класс: BitrixMailHelperMailboxDirectoryHelper
  • Вызов: MailboxDirectoryHelper::addSyncDirs
public function addSyncDirs($dirs, $dbDirs)
{
	$diffDirs = array_diff_key($dirs, $dbDirs);

	$addRows = array_map(
		function ($dir)
		{
			if (!isset($dir['is_sync']))
			{
				$dir['is_sync'] = !preg_grep('/^ x5c ( Drafts | Trash | Junk | Spam ) $/ix', $dir['flags']);
			}

			return [
				'MAILBOX_ID'  => $this->mailboxId,
				'NAME'        => Emoji::encode($dir['name']),
				'PATH'        => Emoji::encode($dir['path']),
				'LEVEL'       => isset($dir['level']) ? $dir['level'] : 1,
				'PARENT_ID'   => isset($dir['parent_id']) ? $dir['parent_id'] : null,
				'ROOT_ID'     => isset($dir['root_id']) ? $dir['root_id'] : null,
				'FLAGS'       => MailboxDirectoryHelper::getFlags($dir['flags']),
				'DELIMITER'   => $dir['delim'],
				'DIR_MD5'     => md5(Emoji::encode($dir['path'])),
				'IS_SYNC'     => $dir['is_sync'],
				'IS_INCOME'   => mb_strtoupper($dir['name']) === 'INBOX',
				'IS_OUTCOME'  => preg_grep('/^ x5c Sent $/ix', $dir['flags']),
				'IS_DRAFT'    => preg_grep('/^ x5c Drafts $/ix', $dir['flags']),
				'IS_TRASH'    => preg_grep('/^ x5c Trash $/ix', $dir['flags']),
				'IS_SPAM'     => preg_grep('/^ x5c ( Junk | Spam ) $/ix', $dir['flags']),
				'IS_DISABLED' => preg_grep('/^ x5c Noselect $/ix', $dir['flags']),
			];
		},
		$diffDirs
	);

	if (!empty($addRows))
	{
		MailboxDirectory::addMulti($addRows, true);
	}
}