- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/classes/general/mail.php
- Класс: CAllMailBox
- Вызов: CAllMailBox::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);
}