• Модуль: 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; }