public function AjaxRequest($arParams=false)
{
global $USER;
if (
!$USER->IsAuthorized()
// || CModule::IncludeModule('extranet') && !CExtranet::IsIntranetUser($arParams["SITE_ID"])
)
return false;
$elements = "";
if ($_REQUEST['action'] == 'structure-item')
{
$arFinderParams = Array(
"PROVIDER" => $this->id,
"TYPE" => 'structure-item',
);
//be careful with field list because of CUser::FormatName()
if (
CModule::IncludeModule('extranet')
&& !CExtranet::IsIntranetUser($arParams["SITE_ID"])
)
{
$arExtranetUsers = CExtranet::GetMyGroupsUsersFull(CExtranet::GetExtranetSiteID(), false);
$dbRes = new CDBResult;
$dbRes->InitFromArray($arExtranetUsers);
}
else
{
$arFilter = array(
'ACTIVE' => 'Y',
'CONFIRM_CODE' => false,
'UF_DEPARTMENT' => intval($_REQUEST['item']),
'!EXTERNAL_AUTH_ID' => BitrixMainUserTable::getExternalUserTypes()
);
$dbRes = CUser::GetList(
'last_name',
'asc',
$arFilter,
array(
"FIELDS" => array('ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN', 'EMAIL', 'PERSONAL_PHOTO', 'PERSONAL_GENDER', 'WORK_POSITION', 'PERSONAL_PROFESSION')
)
);
}
while ($arUser = $dbRes->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);
}
}
else
{
$search = urldecode($_REQUEST['search']);
if (
!CModule::IncludeModule('extranet')
|| CExtranet::IsIntranetUser($arParams["SITE_ID"])
)
{
$arFinderParams = Array(
"PROVIDER" => $this->id,
"TYPE" => 4,
);
$dbRes = CIBlockSection::GetList(
array('ID' => 'ASC'),
array('IBLOCK_ID' => COption::GetOptionInt('intranet', 'iblock_structure'), '%NAME' => $search),
false,
array('ID', 'NAME'),
array('nTopCount' => 7)
);
while ($arSection = $dbRes->fetch())
{
$arItem = Array(
"ID" => $arSection["ID"],
"AVATAR" => "/bitrix/js/main/core/images/access/avatar-user-everyone.png",
"NAME" => $arSection["NAME"],
"DESC" => GetMessage("authprov_group"),
"CHECKBOX" => array(
"D#ID#" => GetMessage("authprov_check_d"),
"DR#ID#" => GetMessage("authprov_check_dr"),
),
);
$elements .= CFinder::GetFinderItem($arFinderParams, $arItem);
}
}
$arFinderParams = Array(
"PROVIDER" => $this->id,
"TYPE" => 3,
);
$arFilter = array(
"ACTIVE" => "Y",
"CONFIRM_CODE" => false,
"NAME_SEARCH" => $search
);
$arExternalAuthId = array();
if (IsModuleInstalled('socialservices'))
{
$arExternalAuthId[] = 'replica';
}
if (IsModuleInstalled('mail'))
{
$arExternalAuthId[] = 'email';
}
if (IsModuleInstalled('im'))
{
$arExternalAuthId[] = 'bot';
}
if (IsModuleInstalled('imconnector'))
{
$arExternalAuthId[] = 'imconnector';
}
if (!empty($arExternalAuthId))
{
$arFilter["!EXTERNAL_AUTH_ID"] = $arExternalAuthId;
}
if (
CModule::IncludeModule('extranet')
&& !CExtranet::IsIntranetUser($arParams["SITE_ID"])
)
{
$arExtranetUsersId = CExtranet::GetMyGroupsUsers($arParams["SITE_ID"]);
if (count($arExtranetUsersId) > 0)
{
$arFilter["ID"] = implode('|', $arExtranetUsersId);
}
else
{
$arFilter = false;
}
}
else
{
$arFilter['!UF_DEPARTMENT'] = false;
}
if ($arFilter)
{
//be careful with field list because of CUser::FormatName()
$dbRes = CUser::GetList('last_name', 'asc',
$arFilter,
array(
"FIELDS" => array('ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN', 'EMAIL', 'PERSONAL_PHOTO', 'PERSONAL_GENDER', 'WORK_POSITION', 'PERSONAL_PROFESSION'),
"NAV_PARAMS" => Array("nTopCount" => 7)
)
);
while ($arUser = $dbRes->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);
}
}
}
return $elements;
}