- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/lib/invitation/register.php
- Класс: BitrixIntranetInvitationRegister
- Вызов: Register::checkExistingUserByEmail
static function checkExistingUserByEmail(array $emailItems): array
{
$arUserForTransfer = [];
$arEmailToReinvite = [];
$arEmailExist = [];
$arEmailToRegister = [];
$bExtranetInstalled = (
ModuleManager::isModuleInstalled("extranet")
&& Option::get("extranet", "extranet_site") !== ''
);
if (Loader::includeModule('socialnetwork'))
{
$externalAuthIdList = SocialnetworkComponentHelper::checkPredefinedAuthIdList(
array_diff(BitrixMainUserTable::getExternalUserTypes(), [ 'email', 'shop' ])
);
}
foreach ($emailItems as $item)
{
$filter = array(
"=EMAIL" => $item["EMAIL"]
);
if (!empty($externalAuthIdList))
{
$filter['!=EXTERNAL_AUTH_ID'] = $externalAuthIdList;
}
$rsUser = UserTable::getList([
'filter' => $filter,
'select' => array("ID", "CONFIRM_CODE", "EXTERNAL_AUTH_ID", "UF_DEPARTMENT")
]);
$bFound = false;
while ($arUser = $rsUser->Fetch())
{
$bFound = true;
if (
$arUser["EXTERNAL_AUTH_ID"] === 'email'
|| $arUser["EXTERNAL_AUTH_ID"] === 'shop'
)
{
if (isset($item["UF_DEPARTMENT"]))
{
$arUser["UF_DEPARTMENT"] = $item["UF_DEPARTMENT"];
}
$arUserForTransfer[] = $arUser;
}
elseif (
(string)$arUser["CONFIRM_CODE"] !== ''
&& (
!$bExtranetInstalled
|| ( // both intranet
isset($item["UF_DEPARTMENT"])
&& !empty($item["UF_DEPARTMENT"])
&& static::isIntranetUser($arUser)
)
||
( // both extranet
(!isset($item["UF_DEPARTMENT"]) || empty($item["UF_DEPARTMENT"]))
&& static::isExtranetUser($arUser)
)
)
)
{
$arEmailToReinvite[] = array(
"EMAIL" => $item["EMAIL"],
"REINVITE" => true,
"ID" => $arUser["ID"],
"CONFIRM_CODE" => $arUser["CONFIRM_CODE"],
"UF_DEPARTMENT" => $arUser["UF_DEPARTMENT"]
);
}
else
{
$arEmailExist[] = $item["EMAIL"];
}
}
if (!$bFound)
{
$item["REINVITE"] = false;
$arEmailToRegister[] = $item;
}
}
return [
"TRANSFER_USER" => $arUserForTransfer,
"EMAIL_TO_REINVITE" => $arEmailToReinvite,
"EMAIL_EXIST" => $arEmailExist,
"EMAIL_TO_REGISTER" => $arEmailToRegister,
];
}