• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/classes/general/mail.php
  • Класс: CMailBox
  • Вызов: CMailBox::Delete
static function Delete($ID)
{
	global $DB;
	$ID = intval($ID);

	BitrixMainLoader::includeModule('mail');
	$db_msg = BitrixMailMailMessageTable::getList(array(
		'select' => array('ID'),
		'filter' => array('MAILBOX_ID' => $ID)
	));
	while($msg = $db_msg->Fetch())
	{
		if(!CMailMessage::Delete($msg["ID"]))
			return false;
	}

	$db_flt = CMailFilter::GetList(Array(), Array("MAILBOX_ID"=>$ID));
	while($flt = $db_flt->Fetch())
	{
		if(!CMailFilter::Delete($flt["ID"]))
			return false;
	}

	$db_mbox = CMailbox::getList(array('ID' => $ID, 'ACTIVE' => 'Y'));
	if ($mbox = $db_mbox->fetch())
	{
		if ($mbox['USER_ID'] > 0)
		{
			CUserCounter::clear($mbox['USER_ID'], 'mail_unseen', $mbox['LID']);
			$mailboxSyncManager = new BitrixMailHelperMailboxMailboxSyncManager($mbox['USER_ID']);
			$mailboxSyncManager->deleteSyncData($ID);
		}
	}

	CAgent::removeAgent(sprintf('CMailbox::CheckMailAgent(%u);', $ID), 'mail');
	CAgent::removeAgent(sprintf('BitrixMailHelper::syncMailboxAgent(%u);', $ID), 'mail');
	CAgent::removeAgent(sprintf('BitrixMailHelper::cleanupMailboxAgent(%u);', $ID), 'mail');

	$strSql = "DELETE FROM b_mail_log WHERE MAILBOX_ID=".$ID;
	if(!$DB->Query($strSql, true))
		return false;

	$strSql = "DELETE FROM b_mail_message_uid WHERE MAILBOX_ID=".$ID;
	if(!$DB->Query($strSql, true))
		return false;

	// @TODO: make a log optional
	//AddMessage2Log("The mailbox $ID was deleted");

	$strSql = "DELETE FROM b_mail_blacklist WHERE MAILBOX_ID=".$ID;
	if(!$DB->Query($strSql, true))
		return false;

	$DB->query(sprintf('DELETE FROM b_mail_mailbox_access WHERE MAILBOX_ID = %u', $ID));
	$DB->query(sprintf('DELETE FROM b_mail_mailbox_dir WHERE MAILBOX_ID = %u', $ID));
	$DB->query(sprintf('DELETE FROM b_mail_counter WHERE MAILBOX_ID = %u', $ID));
	$DB->query(sprintf('DELETE FROM b_mail_entity_options WHERE MAILBOX_ID = %u', $ID));

	CMailbox::SMTPReload();
	$strSql = "DELETE FROM b_mail_mailbox WHERE ID=".$ID;
	return $DB->Query($strSql, true);
}