• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/mysql/user_group.php
  • Класс: CSocNetUserToGroup
  • Вызов: CSocNetUserToGroup::Add
static function Add($arFields)
{
	global $DB, $CACHE_MANAGER;

	$arFields1 = Util::getEqualityFields($arFields);

	if (!self::CheckFields("ADD", $arFields))
	{
		return false;
	}

	$db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetUserToGroupAdd");
	while ($arEvent = $db_events->Fetch())
	{
		if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
		{
			return false;
		}
	}

	$arInsert = $DB->PrepareInsert("b_sonet_user2group", $arFields);
	$strUpdate = $DB->PrepareUpdate("b_sonet_user2group", $arFields);

	Util::processEqualityFieldsToInsert($arFields1, $arInsert);
	Util::processEqualityFieldsToUpdate($arFields1, $strUpdate);

	$ID = false;
	if ($arInsert[0] <> '')
	{
		$strSql =
			"INSERT INTO b_sonet_user2group(".$arInsert[0].") ".
			"VALUES(".$arInsert[1].") 
			ON DUPLICATE KEY UPDATE ".$strUpdate;

		$DB->Query($strSql, False, "File: ".__FILE__."
Line: ".__LINE__); $ID = (int)$DB->LastID(); } if ($ID) { CSocNetGroup::SetStat($arFields["GROUP_ID"]); CSocNetSearch::OnUserRelationsChange($arFields["USER_ID"]); $events = GetModuleEvents("socialnetwork", "OnSocNetUserToGroupAdd"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, &$arFields)); } EventServiceService::addEvent(EventServiceEventDictionary::EVENT_WORKGROUP_USER_ADD, [ 'GROUP_ID' => $arFields['GROUP_ID'], 'USER_ID' => $arFields['USER_ID'], 'ROLE' => $arFields['ROLE'], ]); if ( $arFields['INITIATED_BY_TYPE'] === SONET_INITIATED_BY_GROUP && $arFields['SEND_MAIL'] !== 'N' && !ModuleManager::isModuleInstalled('im') ) { self::SendEvent($ID); } self::$roleCache[$arFields["USER_ID"]."_".$arFields["GROUP_ID"]] = array( "ROLE" => $arFields["ROLE"], "AUTO_MEMBER" => (isset($arFields["AUTO_MEMBER"]) ? $arFields["AUTO_MEMBER"] : "N") ); if (defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->ClearByTag("sonet_user2group_G".$arFields["GROUP_ID"]); $CACHE_MANAGER->ClearByTag("sonet_user2group_U".$arFields["USER_ID"]); $CACHE_MANAGER->ClearByTag("sonet_user2group"); } CounterCounterService::addEvent(CounterEventEventDictionary::EVENT_WORKGROUP_USER_ADD, [ 'GROUP_ID' => (int)$arFields['GROUP_ID'], 'USER_ID' => (int)$arFields['USER_ID'], 'ROLE' => $arFields['ROLE'], 'INITIATED_BY_TYPE' => $arFields['INITIATED_BY_TYPE'], 'RELATION_ID' => $ID, ]); } return $ID; }