- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/usertype.php
- Класс: CAllUserTypeEntity
- Вызов: CAllUserTypeEntity::DropEntity
function DropEntity($entity_id)
{
global $DB, $CACHE_MANAGER, $USER_FIELD_MANAGER;
$entity_id = preg_replace("/[^0-9A-Z_]+/", "", $entity_id);
$rs = true;
$rsFields = $this->GetList(array(), array("ENTITY_ID" => $entity_id));
//We need special handling of file and enum type properties
while($arField = $rsFields->Fetch())
{
$arType = $USER_FIELD_MANAGER->GetUserType($arField["USER_TYPE_ID"]);
if($arType && ($arType["BASE_TYPE"] == "file" || $arType["BASE_TYPE"] == "enum"))
{
$this->Delete($arField["ID"]);
}
}
$bDropTable = false;
$rsFields = $this->GetList(array(), array("ENTITY_ID" => $entity_id));
while($arField = $rsFields->Fetch())
{
$bDropTable = true;
$DB->Query("DELETE FROM b_user_field_lang WHERE USER_FIELD_ID = " . $arField["ID"], false, "FILE: " . __FILE__ . "
LINE: " . __LINE__);
$rs = $DB->Query("DELETE FROM b_user_field WHERE ID = " . $arField["ID"], false, "FILE: " . __FILE__ . "
LINE: " . __LINE__);
}
if($bDropTable)
{
$DB->Query("DROP SEQUENCE SQ_B_UTM_" . $entity_id, true);
$DB->Query("DROP TABLE b_uts_".mb_strtolower($entity_id), true, "FILE: " . __FILE__ . "
LINE: " . __LINE__);
$rs = $DB->Query("DROP TABLE b_utm_".mb_strtolower($entity_id), true, "FILE: " . __FILE__ . "
LINE: " . __LINE__);
}
if(CACHED_b_user_field !== false)
$CACHE_MANAGER->CleanDir("b_user_field");
if(is_object($USER_FIELD_MANAGER))
$USER_FIELD_MANAGER->CleanCache();
return $rs;
}