• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/imapcommands/mailsfoldersmanager.php
  • Класс: BitrixMailImapCommandsMailsFoldersManager
  • Вызов: MailsFoldersManager::moveMails
public function moveMails($folderToMoveName)
{
	$result = $this->initData();
	if (!$result->isSuccess())
	{
		return $result;
	}
	$folders = [];
	foreach ($this->messages as $index => $message)
	{
		if (in_array($message['ID'], $this->messagesIds, true))
		{
			$folders[$message['DIR_MD5']] = $message['DIR_MD5'];
		}
	}
	foreach ($folders as $index => $folderHash)
	{
		if ($folderHash === md5($folderToMoveName))
		{
			return $result->addError(new MainError(Loc::getMessage('MAIL_CLIENT_MOVE_TO_SELF_FOLDER', ['#FOLDER#' => $folderToMoveName]),
				'MAIL_CLIENT_MOVE_TO_SELF_FOLDER'));
		}
	}

	$dir = $this->getDirByPath($folderToMoveName);

	if (!$dir)
	{
		return $result->addError(new MainError(Loc::getMessage('MAIL_CLIENT_MAILBOX_NOT_FOUND'),
			'MAIL_CLIENT_MAILBOX_NOT_FOUND'));
	}

	if ($dir->isDisabled())
	{
		return $result->addError(new MainError(Loc::getMessage('MAIL_CLIENT_FOLDER_IS_DISABLED', ['#FOLDER#' => $folderToMoveName]),
			'MAIL_CLIENT_FOLDER_IS_DISABLED'));
	}

	if ($dir->isSpam())
	{
		return $this->sendMailsToSpam();
	}
	elseif ($dir->isTrash())
	{
		return $this->deleteMails();
	}
	elseif ($dir->isIncome())
	{
		return $this->restoreMailsFromSpam();
	}

	$result = $this->moveMailsToFolder($folderToMoveName);
	if (!$result->isSuccess())
	{
		return (new MainResult())->addError(new MainError(Loc::getMessage('MAIL_CLIENT_SYNC_ERROR'), 'MAIL_CLIENT_SYNC_ERROR'));
	}

	return (new MainResult());
}