- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/mysql/user_group.php
- Класс: CSocNetUserToGroup
- Вызов: CSocNetUserToGroup::Update
static function Update($ID, $arFields)
{
global $DB, $APPLICATION, $CACHE_MANAGER;
if (!CSocNetGroup::__ValidateID($ID))
return false;
$ID = (int)$ID;
$arUser2GroupOld = self::GetByID($ID);
if (!$arUser2GroupOld)
{
$APPLICATION->ThrowException(GetMessage("SONET_NO_USER2GROUP"), "ERROR_NO_USER2GROUP");
return false;
}
$arFields1 = Util::getEqualityFields($arFields);
if (!self::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);
Util::processEqualityFieldsToUpdate($arFields1, $strUpdate);
if ($strUpdate <> '')
{
$strSql =
"UPDATE b_sonet_user2group SET ".
" ".$strUpdate." ".
"WHERE ID = ".$ID." ";
$DB->Query($strSql, False, "File: ".__FILE__."
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, $arUser2GroupOld));
}
EventServiceService::addEvent(EventServiceEventDictionary::EVENT_WORKGROUP_USER_UPDATE, [
'GROUP_ID' => $arUser2GroupOld['GROUP_ID'],
'USER_ID' => $arUser2GroupOld['USER_ID'],
]);
if (array_key_exists($arUser2GroupOld["USER_ID"]."_".$arUser2GroupOld["GROUP_ID"], self::$roleCache))
{
unset(self::$roleCache[$arUser2GroupOld["USER_ID"]."_".$arUser2GroupOld["GROUP_ID"]]);
}
if(defined("BX_COMP_MANAGED_CACHE"))
{
$CACHE_MANAGER->ClearByTag("sonet_user2group_G".$arUser2GroupOld["GROUP_ID"]);
$CACHE_MANAGER->ClearByTag("sonet_user2group_U".$arUser2GroupOld["USER_ID"]);
$CACHE_MANAGER->ClearByTag("sonet_user2group");
}
CounterCounterService::addEvent(CounterEventEventDictionary::EVENT_WORKGROUP_USER_UPDATE, [
'GROUP_ID' => (int)($arFields['GROUP_ID'] ?? $arUser2GroupOld['GROUP_ID']),
'USER_ID' => (int)($arFields['USER_ID'] ?? $arUser2GroupOld['USER_ID']),
'ROLE_OLD' => $arUser2GroupOld['ROLE'],
'ROLE_NEW' => ($arFields['ROLE'] ?? null),
'INITIATED_BY_TYPE' => ($arFields['INITIATED_BY_TYPE'] ?? $arUser2GroupOld['INITIATED_BY_TYPE']),
'RELATION_ID' => $arUser2GroupOld['USER_ID'],
]);
}
else
{
$ID = False;
}
return $ID;
}