- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/group.php
- Класс: CAllSocNetGroup
- Вызов: CAllSocNetGroup::Delete
static function Delete($ID)
{
global $DB, $APPLICATION, $CACHE_MANAGER, $USER_FIELD_MANAGER;
if (!CSocNetGroup::__ValidateID($ID))
{
return false;
}
$ID = intval($ID);
$db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetGroupDelete");
while ($arEvent = $db_events->Fetch())
{
if (ExecuteModuleEventEx($arEvent, array($ID))===false)
{
return false;
}
}
$arGroup = CSocNetGroup::GetByID($ID);
if (!$arGroup)
{
$APPLICATION->ThrowException(GetMessage("SONET_NO_GROUP"), "ERROR_NO_GROUP");
return false;
}
$DB->StartTransaction();
$events = GetModuleEvents("socialnetwork", "OnSocNetGroupDelete");
while ($arEvent = $events->Fetch())
{
ExecuteModuleEventEx($arEvent, array($ID));
}
EventServiceService::addEvent(EventServiceEventDictionary::EVENT_WORKGROUP_DELETE, [
'GROUP_ID' => $ID,
]);
$res = UserToGroupTable::getList([
'filter' => [
'=GROUP_ID' => $ID
],
'select' => [ 'USER_ID' ]
]);
while($relationFields = $res->fetch())
{
CSocNetSearch::onUserRelationsChange($relationFields['USER_ID']);
}
$bSuccess = $DB->Query("DELETE FROM b_sonet_user2group WHERE GROUP_ID = ".$ID, true);
if ($bSuccess)
{
BitrixSocialnetworkIntegrationImChatWorkgroup::unlinkChat(array(
'group_id' => $ID
));
$bSuccessTmp = true;
$dbResult = CSocNetFeatures::GetList(
array(),
array("ENTITY_ID" => $ID, "ENTITY_TYPE" => SONET_ENTITY_GROUP)
);
while ($arResult = $dbResult->Fetch())
{
$bSuccessTmp = $DB->Query("DELETE FROM b_sonet_features2perms WHERE FEATURE_ID = ".$arResult["ID"]."", true);
if (!$bSuccessTmp)
{
break;
}
}
if (!$bSuccessTmp)
{
$bSuccess = false;
}
}
if ($bSuccess)
{
$bSuccess = $DB->Query("DELETE FROM b_sonet_features WHERE ENTITY_ID = ".$ID." AND ENTITY_TYPE = '".$DB->ForSql(SONET_ENTITY_GROUP, 1)."'", true);
}
if ($bSuccess)
{
$dbResult = CSocNetLog::GetList(
array(),
array("ENTITY_ID" => $ID, "ENTITY_TYPE" => SONET_ENTITY_GROUP),
false,
false,
array("ID")
);
while ($arResult = $dbResult->Fetch())
{
$bSuccessTmp = $DB->Query("DELETE FROM b_sonet_log_site WHERE LOG_ID = ".$arResult["ID"]."", true);
if (!$bSuccessTmp)
{
break;
}
$bSuccessTmp = $DB->Query("DELETE FROM b_sonet_log_right WHERE LOG_ID = ".$arResult["ID"]."", true);
if (!$bSuccessTmp)
{
break;
}
}
if (!$bSuccessTmp)
{
$bSuccess = false;
}
}
if ($bSuccess)
{
$bSuccess = $DB->Query("DELETE FROM b_sonet_log WHERE ENTITY_TYPE = '".SONET_ENTITY_GROUP."' AND ENTITY_ID = ".$ID."", true);
}
if ($bSuccess)
{
$bSuccess = CSocNetLog::DeleteSystemEventsByGroupID($ID);
}
if ($bSuccess)
{
$bSuccess = $DB->Query("DELETE FROM b_sonet_log_events WHERE ENTITY_TYPE = 'G' AND ENTITY_ID = ".$ID."", true);
}
if ($bSuccess)
{
$bSuccess = $DB->Query("DELETE FROM b_sonet_group_site WHERE GROUP_ID = ".$ID."", true);
}
if ($bSuccess)
{
$bSuccess = $DB->Query("DELETE FROM b_sonet_log_right WHERE GROUP_CODE LIKE 'OSG".$ID."_%'", true);
}
if ($bSuccess)
{
$bSuccess = $DB->Query("DELETE FROM b_sonet_log_right WHERE GROUP_CODE LIKE 'SG".$ID."_%'", true);
}
if ($bSuccess)
{
$bSuccess = $DB->Query("DELETE FROM b_sonet_log_right WHERE GROUP_CODE = 'SG".$ID."'", true);
}
if ($bSuccess)
{
$bSuccess = CSocNetSubscription::DeleteEx(false, "SG".$ID);
}
if ($bSuccess)
{
$bSuccess = BitrixSocialnetworkWorkgroupTagTable::deleteByGroupId(['groupId' => $ID]);
}
if ($bSuccess)
{
CFile::Delete($arGroup["IMAGE_ID"]);
$bSuccess = $DB->Query("DELETE FROM b_sonet_group WHERE ID = ".$ID."", true);
}
$sonetGroupCache = self::getStaticCache();
if ($bSuccess)
{
CUserOptions::DeleteOption("socialnetwork", "~menu_".SONET_ENTITY_GROUP."_".$ID, false, 0);
unset($sonetGroupCache[$ID]);
self::setStaticCache($sonetGroupCache);
}
if ($bSuccess)
{
$DB->Commit();
}
else
{
$DB->Rollback();
}
if ($bSuccess)
{
unset($sonetGroupCache[$ID]);
self::setStaticCache($sonetGroupCache);
if(defined("BX_COMP_MANAGED_CACHE"))
{
$CACHE_MANAGER->ClearByTag("sonet_user2group_G".$ID);
$CACHE_MANAGER->ClearByTag("sonet_user2group");
$CACHE_MANAGER->ClearByTag("sonet_group_".$ID);
$CACHE_MANAGER->ClearByTag("sonet_group");
}
}
if (
$bSuccess
&& CModule::IncludeModule("search")
)
{
CSearch::DeleteIndex("socialnetwork", "G".$ID);
}
if ($bSuccess)
{
$DB->Query("DELETE FROM b_sonet_event_user_view WHERE ENTITY_TYPE = '".SONET_ENTITY_GROUP."' AND ENTITY_ID = ".$ID, true);
}
if ($bSuccess)
{
$USER_FIELD_MANAGER->Delete("SONET_GROUP", $ID);
}
if (Loader::includeModule('tasks'))
{
$tagService = new Tag(0);
$tagService->deleteGroupTags($ID);
}
return $bSuccess;
}