- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/classes/general/invite_dialog.php
- Класс: CIntranetInviteDialog
- Вызов: CIntranetInviteDialog::RequestToSonetGroups
static function RequestToSonetGroups($arUserId, $arGroupCode, $arGroupName, $bExtranetUser = false)
{
global $APPLICATION, $USER;
$arGroupToAdd = array();
$strError = false;
if (!is_array($arUserId))
{
$arUserId = array($arUserId);
}
if (
is_array($arGroupCode)
&& !empty($arGroupCode)
&& Loader::includeModule("socialnetwork")
)
{
foreach ($arGroupCode as $group_code)
{
if(
$bExtranetUser
&& is_array($arGroupName)
&& preg_match('/^(SGNd+)$/', $group_code, $match)
&& isset($arGroupName[$match[1]])
&& (string)$arGroupName[$match[1]] !== ''
&& Loader::includeModule('extranet')
&& Loader::includeModule('socialnetwork')
&& BitrixSocialnetworkHelperWorkgroup::canCreate([
'siteId' => CExtranet::GetExtranetSiteID(),
'checkAdminSession' => false,
])
)
{
// check and create group, for extranet only
$dbSubjects = CSocNetGroupSubject::GetList(
array("SORT"=>"ASC", "NAME" => "ASC"),
array("SITE_ID" => CExtranet::GetExtranetSiteID()),
false,
false,
array("ID")
);
if ($arSubject = $dbSubjects->GetNext())
{
$arSocNetGroupFields = array(
"NAME" => $arGroupName[$match[1]],
"DESCRIPTION" => "",
"VISIBLE" => "N",
"OPENED" => "N",
"CLOSED" => "N",
"SUBJECT_ID" => $arSubject["ID"],
"INITIATE_PERMS" => "E",
"SPAM_PERMS" => "K",
"SITE_ID" => array(SITE_ID, CExtranet::GetExtranetSiteID())
);
if ($group_id = CSocNetGroup::CreateGroup(
$USER->GetID(),
$arSocNetGroupFields,
false
))
{
$arGroupToAdd[] = $group_id;
}
elseif ($e = $APPLICATION->GetException())
{
$strError = $e->GetString();
}
}
}
elseif(preg_match('/^SG(d+)$/', $group_code, $match))
{
$group_id = $match[1];
if (
($arGroup = CSocNetGroup::GetByID($group_id))
&& ($arCurrentUserPerms = CSocNetUserToGroup::InitUserPerms($USER->GetID(), $arGroup, CSocNetUser::IsCurrentUserModuleAdmin(SITE_ID, false)))
&& $arCurrentUserPerms["UserCanInitiate"]
&& $arGroup["CLOSED"] !== "Y"
)
{
$arGroupToAdd[] = $group_id;
}
}
}
if (!$strError)
{
foreach ($arGroupToAdd as $group_id)
{
foreach ($arUserId as $user_id)
{
if (
!CSocNetUserToGroup::SendRequestToJoinGroup($USER->GetID(), $user_id, $group_id, "", false)
&& $e = $APPLICATION->GetException()
)
{
$strError .= $e->GetString();
}
}
}
}
}
return $strError;
}