public function GetFormHtml($arParams=false)
{
global $USER;
if (
is_array($arParams["socnetgroups"] ?? null)
&& $arParams["socnetgroups"]["disabled"] == "true"
)
{
return false;
}
$currElements = '';
if (
is_array($arParams[$this->id] ?? null)
&& ($group_id = intval($arParams[$this->id]["group_id"])) > 0
)
{
$arFinderParams = Array(
"PROVIDER" => $this->id,
"TYPE" => 4,
);
$arFilter = array(
"ID" => $group_id,
"ACTIVE" => "Y"
);
if (!CSocNetUser::IsCurrentUserModuleAdmin($arParams["SITE_ID"]))
{
$arFilter["CHECK_PERMISSIONS"] = $USER->GetID();
}
$rsGroups = CSocNetGroup::GetList(array(), $arFilter);
if($arGroup = $rsGroups->Fetch())
{
$arItem = Array(
"ID" => "SG".$arGroup['ID'],
"AVATAR" => '/bitrix/js/main/core/images/access/avatar-user-everyone.png',
"NAME" => Emoji::decode($arGroup['NAME']),
"DESC" => Emoji::decode($arGroup['DESCRIPTION']),
"OPEN" => "Y",
"CHECKBOX" => array(
"#ID#_A" => GetMessage("authprov_sg_a"),
"#ID#_E" => GetMessage("authprov_sg_e"),
"#ID#_K" => GetMessage("authprov_sg_k"),
),
);
if($arGroup["IMAGE_ID"])
{
$imageFile = CFile::GetFileArray($arGroup["IMAGE_ID"]);
if ($imageFile !== false)
{
$arFileTmp = CFile::ResizeImageGet(
$imageFile,
array("width" => 30, "height" => 30),
BX_RESIZE_IMAGE_PROPORTIONAL,
false
);
$arItem["AVATAR"] = $arFileTmp["src"];
}
}
$currElements .= CFinder::GetFinderItem($arFinderParams, $arItem);
}
}
$elements = "";
$arFinderParams = Array(
"PROVIDER" => $this->id,
"TYPE" => 3,
);
$arLRU = CAccess::GetLastRecentlyUsed($this->id);
if (!empty($arLRU))
{
$arLast = array();
$arLastID = array();
$arElements = array();
foreach($arLRU as $val)
{
if (preg_match('/^SG([0-9]+)_([A-Z])/', $val, $match))
{
$arLast[$match[2]][$match[1]] = $match[1];
$arLastID[$match[1]] = $match[1];
}
}
if (!empty($arLastID))
{
$arFilter = array(
"ID" => $arLastID,
"ACTIVE" => "Y"
);
if($arParams["SITE_ID"] <> '')
{
$arFilter["SITE_ID"] = $arParams["SITE_ID"];
}
if(!CSocNetUser::IsCurrentUserModuleAdmin($arParams["SITE_ID"]))
{
$arFilter["CHECK_PERMISSIONS"] = $USER->GetID();
}
$rsGroups = CSocNetGroup::GetList(array("NAME" => "ASC"), $arFilter);
while($arGroup = $rsGroups->Fetch())
{
$arItem = Array(
"ID" => $arGroup['ID'],
"AVATAR" => '/bitrix/js/main/core/images/access/avatar-user-everyone.png',
"NAME" => Emoji::decode($arGroup['NAME']),
"DESC" => Emoji::decode($arGroup['DESCRIPTION']),
);
if($arGroup["IMAGE_ID"])
{
$imageFile = CFile::GetFileArray($arGroup["IMAGE_ID"]);
if ($imageFile !== false)
{
$arFileTmp = CFile::ResizeImageGet(
$imageFile,
array("width" => 30, "height" => 30),
BX_RESIZE_IMAGE_PROPORTIONAL,
false
);
$arItem["AVATAR"] = $arFileTmp["src"];
}
}
$arElements[$arItem['ID']] = $arItem;
}
foreach($arLRU as $val)
{
if (preg_match('/^SG([0-9]+)_([A-Z])/', $val, $match))
{
if (isset($arElements[$match[1]]))
{
$arItem = $arElements[$match[1]];
if ($match[2] == 'K')
{
$arItem['ID'] = 'SG'.$arElements[$match[1]]['ID'].'_K';
$arItem['NAME'] = $arElements[$match[1]]['NAME'].': '.GetMessage("authprov_sg_k");
}
else if ($match[2] == 'E')
{
$arItem['ID'] = 'SG'.$arElements[$match[1]]['ID'].'_E';
$arItem['NAME'] = $arElements[$match[1]]['NAME'].': '.GetMessage("authprov_sg_e");
}
else if ($match[2] == 'A')
{
$arItem['ID'] = 'SG'.$arElements[$match[1]]['ID'].'_A';
$arItem['NAME'] = $arElements[$match[1]]['NAME'].': '.GetMessage("authprov_sg_a");
}
$elements .= CFinder::GetFinderItem($arFinderParams, $arItem);
}
}
}
}
}
$arFinderParams = Array(
"PROVIDER" => $this->id,
"TYPE" => 4,
);
$arFilter = array(
"USER_ID" => $USER->GetID(),
"<=ROLE" => SONET_ROLES_USER,
"GROUP_ACTIVE" => "Y"
);
if($arParams["SITE_ID"] <> '')
{
$arFilter["GROUP_SITE_ID"] = $arParams["SITE_ID"];
}
$rsGroups = CSocNetUserToGroup::GetList(
array("GROUP_NAME" => "ASC"),
$arFilter,
false,
false,
array("ID", "GROUP_ID", "GROUP_NAME", "GROUP_DESCRIPTION", "GROUP_IMAGE_ID")
);
$myElements = '';
while($arGroup = $rsGroups->Fetch())
{
$arItem = Array(
"ID" => "SG".$arGroup['GROUP_ID'],
"AVATAR" => $arGroup['GROUP_IMAGE_ID'],
"NAME" => $arGroup['GROUP_NAME'],
"DESC" => $arGroup['GROUP_DESCRIPTION'],
"CHECKBOX" => array(
"#ID#_A" => GetMessage("authprov_sg_a"),
"#ID#_E" => GetMessage("authprov_sg_e"),
"#ID#_K" => GetMessage("authprov_sg_k"),
),
);
if($arGroup["GROUP_IMAGE_ID"])
{
$imageFile = CFile::GetFileArray($arGroup["GROUP_IMAGE_ID"]);
if ($imageFile !== false)
{
$arFileTmp = CFile::ResizeImageGet(
$imageFile,
array("width" => 30, "height" => 30),
BX_RESIZE_IMAGE_PROPORTIONAL,
false
);
$arItem["AVATAR"] = $arFileTmp["src"];
}
}
$myElements .= CFinder::GetFinderItem($arFinderParams, $arItem);
}
$arPanels = array();
if($currElements <> '')
{
$arPanels[] = array(
"NAME" => GetMessage("authprov_sg_current"),
"ELEMENTS" => $currElements,
);
}
$arPanels[] = array(
"NAME" => GetMessage("authprov_sg_panel_last"),
"ELEMENTS" => $elements,
);
$arPanels[] = array(
"NAME" => GetMessage("authprov_sg_panel_my_group"),
"ELEMENTS" => $myElements,
);
$arPanels[] = array(
"NAME" => GetMessage("authprov_sg_panel_search"),
"ELEMENTS" => CFinder::GetFinderItem(Array("TYPE" => "text"), Array("TEXT" => GetMessage("authprov_sg_panel_search_text"))),
"SEARCH" => "Y",
);
$html = CFinder::GetFinderAppearance($arFinderParams, $arPanels);
return array("HTML"=>$html, "SELECTED"=>($currElements <> ''));
}