- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/user_group.php
- Класс: CAllSocNetUserToGroup
- Вызов: CAllSocNetUserToGroup::notifyModeratorAdded
static function notifyModeratorAdded($params): void
{
static $groupCache = array();
$userId = (!empty($params['userId']) ? (int)$params['userId'] : 0);
$relationFields = (!empty($params['relationFields']) && is_array($params['relationFields']) ? $params['relationFields'] : array());
$groupFields = (!empty($params['groupFields']) && is_array($params['groupFields']) ? $params['groupFields'] : array());
$groupId = (
!empty($params['groupId'])
? (int)$params['groupId']
: (!empty($groupFields['ID']) ? (int)$groupFields['ID'] : 0)
);
$relationId = (
!empty($params['relationId'])
? (int)$params['relationId']
: (!empty($relationFields['ID']) ? (int)$relationFields['ID'] : 0)
);
if (
empty($groupFields)
&& $groupId > 0
)
{
if (isset($groupCache[$groupId]))
{
$groupFields = $groupCache[$groupId];
}
else
{
$res = WorkgroupTable::getList(array(
'filter' => array(
'=ID' => $groupId
),
'select' => array('ID', 'NAME', 'SITE_ID')
));
$groupFields = $groupCache[$groupId] = $res->fetch();
}
}
if (
empty($relationFields)
&& $relationId > 0
)
{
$res = UserToGroupTable::getList(array(
'filter' => array(
'=ID' => $relationId
),
'select' => array('ID', 'USER_ID')
));
$relationFields = $res->fetch();
}
if (
$groupId <= 0
|| empty($relationFields)
|| empty($relationFields['ID'])
|| empty($relationFields['USER_ID'])
|| empty($groupFields)
|| !Loader::includeModule('im')
)
{
return;
}
$groupSiteId = CSocNetGroup::getDefaultSiteId($groupId, $groupFields["SITE_ID"]);
$workgroupsPage = COption::getOptionString("socialnetwork", "workgroups_page", "/workgroups/", SITE_ID);
$groupUrlTemplate = Path::get('group_path_template');
$groupUrlTemplate = "#GROUPS_PATH#".mb_substr($groupUrlTemplate, mb_strlen($workgroupsPage));
$groupUrl = str_replace(array("#group_id#", "#GROUP_ID#"), $groupId, $groupUrlTemplate);
$arTmp = CSocNetLogTools::processPath(
array(
"GROUP_URL" => $groupUrl
),
$relationFields["USER_ID"],
$groupSiteId
);
$groupUrl = $arTmp["URLS"]["GROUP_URL"];
$serverName = (
mb_strpos($groupUrl, "http://") === 0
|| mb_strpos($groupUrl, "https://") === 0
? ""
: $arTmp["SERVER_NAME"]
);
$domainName = (
mb_strpos($groupUrl, "http://") === 0
|| mb_strpos($groupUrl, "https://") === 0
? ""
: (
isset($arTmp["DOMAIN"])
&& !empty($arTmp["DOMAIN"])
? "//".$arTmp["DOMAIN"]
: ""
)
);
$arMessageFields = array(
"TO_USER_ID" => $relationFields["USER_ID"],
"FROM_USER_ID" => $userId,
"NOTIFY_TYPE" => IM_NOTIFY_FROM,
"NOTIFY_MODULE" => "socialnetwork",
"NOTIFY_EVENT" => "moderators_group",
"NOTIFY_TAG" => "SOCNET|MOD_GROUP|" . $userId . "|".$groupId."|".$relationFields["ID"]."|".$relationFields["USER_ID"],
"NOTIFY_MESSAGE" => str_replace(
array("#NAME#"),
array("".$groupFields["NAME"].""),
GetMessage("SONET_UG_MEMBER2MOD_MESSAGE")
),
"NOTIFY_MESSAGE_OUT" => str_replace(
array("#NAME#"),
array($groupFields["NAME"]),
Loc::getMessage("SONET_UG_MEMBER2MOD_MESSAGE")
)." (".$serverName.$groupUrl.")"
);
CIMNotify::add($arMessageFields);
}