• Модуль: 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,
	];
}