• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/site.php
  • Класс: CAllSite
  • Вызов: CAllSite::Delete
static function Delete($ID)
{
	/** @global CMain $APPLICATION */
	global $DB, $APPLICATION, $CACHE_MANAGER;

	$APPLICATION->ResetException();

	foreach(GetModuleEvents("main", "OnBeforeLangDelete", true) as $arEvent)
	{
		if(ExecuteModuleEventEx($arEvent, array($ID))===false)
		{
			$err = GetMessage("MAIN_BEFORE_DEL_ERR1").' '.$arEvent['TO_NAME'];
			if($ex = $APPLICATION->GetException())
				$err .= ': '.$ex->GetString();
			$APPLICATION->throwException($err);
			return false;
		}
	}

	foreach(GetModuleEvents("main", "OnBeforeSiteDelete", true) as $arEvent)
	{
		if(ExecuteModuleEventEx($arEvent, array($ID))===false)
		{
			$err = GetMessage("MAIN_BEFORE_DEL_ERR1").' '.$arEvent['TO_NAME'];
			if($ex = $APPLICATION->GetException())
				$err .= ': '.$ex->GetString();
			$APPLICATION->throwException($err);
			return false;
		}
	}

	foreach(GetModuleEvents("main", "OnLangDelete", true) as $arEvent)
		ExecuteModuleEventEx($arEvent, array($ID));

	foreach(GetModuleEvents("main", "OnSiteDelete", true) as $arEvent)
		ExecuteModuleEventEx($arEvent, array($ID));

	if(!$DB->Query("DELETE FROM b_event_message_site WHERE SITE_ID='".$DB->ForSQL($ID, 2)."'"))
		return false;

	if(!$DB->Query("DELETE FROM b_lang_domain WHERE LID='".$DB->ForSQL($ID, 2)."'"))
		return false;

	if(CACHED_b_lang_domain!==false)
		$CACHE_MANAGER->CleanDir("b_lang_domain");

	if(!$DB->Query("UPDATE b_event_message SET LID=NULL WHERE LID='".$DB->ForSQL($ID, 2)."'"))
		return false;

	if(!$DB->Query("DELETE FROM b_site_template WHERE SITE_ID='".$DB->ForSQL($ID, 2)."'"))
		return false;

	if(CACHED_b_site_template!==false)
		$CACHE_MANAGER->Clean("b_site_template");

	$result = $DB->Query("DELETE FROM b_lang WHERE LID='".$DB->ForSQL($ID, 2)."'", true);

	if(CACHED_b_lang!==false)
		$CACHE_MANAGER->CleanDir("b_lang");

	SiteTable::cleanCache();
	MainSiteDomainTable::cleanCache();

	return $result;
}