public function GetFormHtml($arParams=false)
{
global $USER;
if(
!$USER->IsAuthorized()
// || CModule::IncludeModule('extranet') && !CExtranet::IsIntranetUser($arParams["SITE_ID"])
)
return false;
$elements = '';
$arElement = array();
$arElements = array();
$arLRU = CAccess::GetLastRecentlyUsed($this->id);
if(!empty($arLRU))
{
$arFinderParams = Array(
'PROVIDER' => $this->id,
'TYPE' => 3,
);
$arLast = array();
$arLastID = array();
foreach($arLRU as $val)
{
if (mb_substr($val, 0, 2) == 'DR')
{
$id = mb_substr($val, 2);
$arLast['DR'][] = $id;
$arLastID[$id] = $id;
}
else if (mb_substr($val, 0, 1) == 'D')
{
$id = mb_substr($val, 1);
$arLast['D'][] = $id;
$arLastID[$id] = $id;
}
else if (mb_substr($val, 0, 2) == 'IU')
$arLast['U'][] = mb_substr($val, 2);
}
$dbRes = CIBlockSection::GetList(
array('ID' => 'ASC'),
array('IBLOCK_ID' => COption::GetOptionInt('intranet', 'iblock_structure'), 'ID' => $arLastID),
false,
array('ID', 'NAME')
);
while ($arSection = $dbRes->Fetch())
{
$arElement[$arSection['ID']] = $arSection;
}
if (!empty($arLast['DR']))
{
foreach ($arLast['DR'] as $value)
{
$arItem = Array(
"ID" => 'DR'.$arElement[$value]['ID'],
"NAME" => $arElement[$value]['NAME'].': '.GetMessage("authprov_check_dr"),
"AVATAR" => '/bitrix/js/main/core/images/access/avatar-user-everyone.png',
);
$arElements['DR'.$value] = CFinder::GetFinderItem($arFinderParams, $arItem);
}
}
if (!empty($arLast['D']))
{
foreach ($arLast['D'] as $value)
{
$arItem = Array(
"ID" => 'D'.$arElement[$value]['ID'],
"NAME" => $arElement[$value]['NAME'].': '.GetMessage("authprov_check_d"),
"AVATAR" => '/bitrix/js/main/core/images/access/avatar-user-everyone.png',
);
$arElements['D'.$value] = CFinder::GetFinderItem($arFinderParams, $arItem);
}
}
if (!empty($arLast['U']))
{
//be careful with field list because of CUser::FormatName()
$res = CUser::GetList("LAST_NAME", "asc",
array("ID"=>implode("|", $arLast['U'])),
array("FIELDS" => array('ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN', 'EMAIL', 'PERSONAL_PHOTO', 'PERSONAL_GENDER', 'WORK_POSITION', 'PERSONAL_PROFESSION'))
);
while($arUser = $res->Fetch())
{
$arPhoto = array('IMG' => '');
if (!$arUser['PERSONAL_PHOTO'])
{
switch ($arUser['PERSONAL_GENDER'])
{
case "M":
$suffix = "male";
break;
case "F":
$suffix = "female";
break;
default:
$suffix = "unknown";
}
$arUser['PERSONAL_PHOTO'] = COption::GetOptionInt("socialnetwork", "default_user_picture_".$suffix, false, SITE_ID);
}
if ($arUser['PERSONAL_PHOTO'] > 0)
{
$arPhoto = CIntranetUtils::InitImage($arUser['PERSONAL_PHOTO'], 30);
}
$arItem = Array(
"ID" => "IU".$arUser["ID"],
"NAME" => CUser::FormatName(CSite::GetNameFormat(false), $arUser, true, false),
"AVATAR" => $arPhoto['CACHE']['src'],
"DESC" => $arUser['WORK_POSITION'] ? $arUser['WORK_POSITION'] : $arUser['PERSONAL_PROFESSION'],
);
$elements .= CFinder::GetFinderItem($arFinderParams, $arItem);
}
}
foreach($arLRU as $val)
{
$elements .= $arElements[$val] ?? '';
}
}
$arFinderParams = Array(
'PROVIDER' => 'intranet',
'TYPE' => 'structure',
);
$obCache = new CPHPCache();
$IBlockID = COption::GetOptionInt('intranet', 'iblock_structure');
$arSecFilter = array('IBLOCK_ID' => $IBlockID);
$arStructure = array();
$arSections = array();
if (!CModule::IncludeModule('extranet') || CExtranet::IsIntranetUser())
{
$cache_id = md5(serialize($arSecFilter));
$cacheDir = '/intranet';
if($obCache->InitCache(30*86400, $cache_id, $cacheDir))
{
$vars = $obCache->GetVars();
$arSections = $vars["SECTIONS"];
$arStructure = $vars["STRUCTURE"];
}
elseif ($obCache->StartDataCache())
{
global $CACHE_MANAGER;
$CACHE_MANAGER->StartTagCache($cacheDir);
$CACHE_MANAGER->RegisterTag("iblock_id_".$IBlockID);
$dbRes = CIBlockSection::GetTreeList($arSecFilter);
while ($arRes = $dbRes->Fetch())
{
$iblockSectionID = intval($arRes['IBLOCK_SECTION_ID']);
if (!isset($arStructure[$iblockSectionID]) || !is_array($arStructure[$iblockSectionID]))
$arStructure[$iblockSectionID] = array($arRes['ID']);
else
$arStructure[$iblockSectionID][] = $arRes['ID'];
$arSections[$arRes['ID']] = $arRes;
}
$CACHE_MANAGER->EndTagCache();
$obCache->EndDataCache(array("SECTIONS" => $arSections, "STRUCTURE" => $arStructure));
}
}
$arItem = self::InEmployeeDrawStructure($arStructure, $arSections, 0);
$elementsStructure = CFinder::GetFinderItem($arFinderParams, $arItem);
$arPanels = Array(
Array(
"NAME" => GetMessage("authprov_panel_last"),
"ELEMENTS" => $elements,
),
Array(
"NAME" => GetMessage("authprov_panel_group"),
"ELEMENTS" => $elementsStructure,
),
Array(
"NAME" => GetMessage("authprov_panel_search"),
"ELEMENTS" => CFinder::GetFinderItem(Array("TYPE" => "text"), Array("TEXT" => GetMessage("authprov_panel_search_text"))),
"SEARCH" => "Y",
),
);
$html = CFinder::GetFinderAppearance($arFinderParams, $arPanels);
return array("HTML"=>$html);
}