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