function Delete($ID) { global $DB; if (!CSocNetGroup::__ValidateID($ID)) { return false; } $ID = IntVal($ID); $bSuccess = True; $db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetGroupDelete"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($ID)) === false) { return false; } } $arGroup = CSocNetGroup::GetByID($ID); if (!$arGroup) { $GLOBALS["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)); } if ($bSuccess) { $bSuccess = $DB->Query("DELETE FROM b_sonet_user2group WHERE GROUP_ID = " . $ID . "", true); } if ($bSuccess) { $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 'SG" . $ID . "\\_%' OR GROUP_CODE = 'SG" . $ID . "'", true); } if ($bSuccess) { $bSuccess = CSocNetSubscription::DeleteEx(false, "SG" . $ID); } if ($bSuccess) { CFile::Delete($arGroup["IMAGE_ID"]); $bSuccess = $DB->Query("DELETE FROM b_sonet_group WHERE ID = " . $ID . "", true); } if ($bSuccess) { CUserOptions::DeleteOption("socialnetwork", "~menu_" . SONET_ENTITY_GROUP . "_" . $ID, false, 0); unset($GLOBALS["SONET_GROUP_CACHE"][$ID]); } if ($bSuccess) { $DB->Commit(); } else { $DB->Rollback(); } if ($bSuccess) { unset($GLOBALS["SONET_GROUP_CACHE"][$ID]); if (defined("BX_COMP_MANAGED_CACHE")) { $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group_G" . $ID); $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group"); $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_group_" . $ID); $GLOBALS["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) { $GLOBALS["USER_FIELD_MANAGER"]->Delete("SONET_GROUP", $ID); } return $bSuccess; }