- Модуль: extranet
- Путь к файлу: ~/bitrix/modules/extranet/classes/general/extranet.php
- Класс: CExtranet
- Вызов: CExtranet::fillUserListFilterORM
static function fillUserListFilterORM($arParams = array(), &$arFilter = array(), &$bFilteredByUserId = null)
{
global $USER;
static $IsShowAllContacts = false;
static $IsExtranetWorkGroupsAllowed = false;
if (!is_array($arParams))
{
$arParams = array();
}
$currentUserId = (int)($arParams["CURRENT_USER_ID"] ?? $USER->GetId());
$bExtranetUser = (bool)($arParams["EXTRANET_USER"] ?? !self::IsIntranetUser(SITE_ID, $currentUserId));
$arFilteredUserIDs = (
isset($arParams["MY_USERS"])
&& is_array($arParams["MY_USERS"])
? $arParams["MY_USERS"]
: []
);
if ($IsShowAllContacts === false)
{
$IsShowAllContacts = (
self::ShowAllContactsAllowed()
|| (
isset($arParams['SHOW_ALL_EXTRANET_CONTACTS'])
&& $arParams['SHOW_ALL_EXTRANET_CONTACTS']
&& CSocNetUser::isUserModuleAdmin($currentUserId)
)
? "Y"
: "N"
);
}
if ($IsExtranetWorkGroupsAllowed === false)
{
$IsExtranetWorkGroupsAllowed = (
self::WorkgroupsAllowed()
? "Y"
: "N"
);
}
if (
$IsExtranetWorkGroupsAllowed === "Y"
&& (
$bExtranetUser
|| $IsShowAllContacts !== "Y"
)
)
{
$arFilteredUserIDs = array_merge($arFilteredUserIDs, self::GetMyGroupsUsers(self::GetExtranetSiteID()));
}
if ($bExtranetUser)
{
if ($IsExtranetWorkGroupsAllowed !== "Y")
{
$arFilter = false;
}
else
{
$arFilter["ID"] = array_unique(array_merge(array($currentUserId), $arFilteredUserIDs));
$bFilteredByUserId = true;
}
}
elseif ($IsShowAllContacts !== "Y")
{
$subFilter = [
'!UF_DEPARTMENT' => false,
];
if ($IsExtranetWorkGroupsAllowed === "Y")
{
$subFilter['=EXTERNAL_AUTH_ID'] = 'email';
$subFilter['ID'] = array_unique(array_merge([ $currentUserId ], $arFilteredUserIDs));
$bFilteredByUserId = true;
}
if (isset($arParams['ALLOW_BOTS']) && $arParams['ALLOW_BOTS'] === true)
{
$subFilter['=EXTERNAL_AUTH_ID'] = 'bot';
}
if (count($subFilter) <= 1)
{
foreach($subFilter as $key => $value)
{
$arFilter[$key] = $value;
}
}
else
{
$subFilter['LOGIC'] = 'OR';
$arFilter[] = $subFilter;
}
}
if ($arFilter)
{
if (
isset($arParams["INTRANET_ONLY"])
&& $arParams["INTRANET_ONLY"]
)
{
if (isset($arFilter["UF_DEPARTMENT"]))
{
unset($arFilter["UF_DEPARTMENT"]);
}
$arFilter["!UF_DEPARTMENT"] = false;
}
elseif (
isset($arParams["EXTRANET_ONLY"])
&& $arParams["EXTRANET_ONLY"]
)
{
if (isset($arFilter["!UF_DEPARTMENT"]))
{
unset($arFilter["!UF_DEPARTMENT"]);
}
$arFilter["UF_DEPARTMENT"] = false;
}
}
}