function OnAfterUserUpdate(&$arFields) { if (array_key_exists("ACTIVE", $arFields) && defined("GLOBAL_ACTIVE_VALUE") && GLOBAL_ACTIVE_VALUE != $arFields["ACTIVE"]) { $dbResult = CSocNetUserToGroup::GetList(array(), array("USER_ID" => $arFields["ID"]), false, false, array("GROUP_ID")); while ($arResult = $dbResult->Fetch()) { $arGroups[] = $arResult["GROUP_ID"]; } for ($i = 0; $i < count($arGroups); $i++) { CSocNetGroup::SetStat($arGroups[$i]); } } }
function DeleteNoDemand($userID) { global $DB; if (!CSocNetGroup::__ValidateID($userID)) { return false; } $userID = IntVal($userID); $bSuccess = True; $arGroups = array(); $dbResult = CSocNetUserToGroup::GetList(array(), array("USER_ID" => $userID), false, false, array("GROUP_ID")); while ($arResult = $dbResult->Fetch()) { $arGroups[] = $arResult["GROUP_ID"]; } $DB->Query("DELETE FROM b_sonet_user2group WHERE USER_ID = " . $userID . "", true); $tmp_count = count($arGroups); for ($i = 0; $i < $tmp_count; $i++) { CSocNetGroup::SetStat($arGroups[$i]); } global $arSocNetUserInRoleCache; $arSocNetUserInRoleCache = array(); CSocNetUserToGroup::__SpeedFileDelete($userID); CSocNetSearch::OnUserRelationsChange($userID); return $bSuccess; }
function Update($ID, $arFields) { global $DB; if (!CSocNetGroup::__ValidateID($ID)) { return false; } $ID = IntVal($ID); $arUser2GroupOld = CSocNetUserToGroup::GetByID($ID); if (!$arUser2GroupOld) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_NO_USER2GROUP"), "ERROR_NO_USER2GROUP"); return false; } $arFields1 = array(); foreach ($arFields as $key => $value) { if (substr($key, 0, 1) == "=") { $arFields1[substr($key, 1)] = $value; unset($arFields[$key]); } } if (!CSocNetUserToGroup::CheckFields("UPDATE", $arFields, $ID)) { return false; } $db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetUserToGroupUpdate"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($ID, $arFields)) === false) { return false; } } $strUpdate = $DB->PrepareUpdate("b_sonet_user2group", $arFields); foreach ($arFields1 as $key => $value) { if (strlen($strUpdate) > 0) { $strUpdate .= ", "; } $strUpdate .= $key . "=" . $value . " "; } if (strlen($strUpdate) > 0) { $strSql = "UPDATE b_sonet_user2group SET " . "\t" . $strUpdate . " " . "WHERE ID = " . $ID . " "; $DB->Query($strSql, False, "File: " . __FILE__ . "<br>Line: " . __LINE__); CSocNetGroup::SetStat($arUser2GroupOld["GROUP_ID"]); CSocNetSearch::OnUserRelationsChange($arUser2GroupOld["USER_ID"]); if (array_key_exists("GROUP_ID", $arFields) && $arUser2GroupOld["GROUP_ID"] != $arFields["GROUP_ID"]) { CSocNetGroup::SetStat($arFields["GROUP_ID"]); } $events = GetModuleEvents("socialnetwork", "OnSocNetUserToGroupUpdate"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } global $arSocNetUserInRoleCache; if (!isset($arSocNetUserInRoleCache) || !is_array($arSocNetUserInRoleCache)) { $arSocNetUserInRoleCache = array(); } if (array_key_exists($arUser2GroupOld["USER_ID"] . "_" . $arUser2GroupOld["GROUP_ID"], $arSocNetUserInRoleCache)) { unset($arSocNetUserInRoleCache[$arUser2GroupOld["USER_ID"] . "_" . $arUser2GroupOld["GROUP_ID"]]); } if (defined("BX_COMP_MANAGED_CACHE")) { $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group_G" . $arUser2GroupOld["GROUP_ID"]); $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group_U" . $arUser2GroupOld["USER_ID"]); $GLOBALS["CACHE_MANAGER"]->ClearByTag("sonet_user2group"); } } else { $ID = False; } return $ID; }