• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/invitation/register.php
  • Класс: BitrixIntranetInvitationRegister
  • Вызов: Register::checkExistingUserByPhone
static function checkExistingUserByPhone(array $phoneItems): array
{
	$arPhoneToReinvite = [];
	$arPhoneExist = [];
	$arPhoneToRegister = [];

	$bExtranetInstalled = (
		ModuleManager::isModuleInstalled("extranet")
		&& Option::get("extranet", "extranet_site") !== ''
	);

	if (Loader::includeModule('socialnetwork'))
	{
		$externalAuthIdList = SocialnetworkComponentHelper::checkPredefinedAuthIdList(
			array_diff(BitrixMainUserTable::getExternalUserTypes(), [ 'email', 'shop' ])
		);
	}

	foreach ($phoneItems as $item)
	{
		$filter = array(
			"=PHONE_NUMBER" => $item["PHONE_NUMBER"]
		);

		if (!empty($externalAuthIdList))
		{
			$filter['!=USER.EXTERNAL_AUTH_ID'] = $externalAuthIdList;
		}

		$rsUser = BitrixMainUserPhoneAuthTable::getList(array(
			'filter' => $filter,
			'select' => array(
				"USER_ID",
				"USER_CONFIRM_CODE" => "USER.CONFIRM_CODE",
				"USER_EXTERNAL_AUTH_ID" => "USER.EXTERNAL_AUTH_ID",
				"USER_UF_DEPARTMENT" => "USER.UF_DEPARTMENT"
			)
		));

		$bFound = false;
		while ($arUser = $rsUser->Fetch())
		{
			$arUser = array(
				'ID' => $arUser["USER_ID"],
				'CONFIRM_CODE' => $arUser["USER_CONFIRM_CODE"],
				'EXTERNAL_AUTH_ID' => $arUser["USER_ID"],
				'UF_DEPARTMENT' => $arUser["USER_UF_DEPARTMENT"],
			);

			$bFound = true;

			if (
				(string)$arUser["CONFIRM_CODE"] !== ''
				&& (
					!$bExtranetInstalled
					|| ( // both intranet
						isset($item["UF_DEPARTMENT"], $arUser["UF_DEPARTMENT"])
						&& !empty($item["UF_DEPARTMENT"])
						&& (
							(
								is_array($arUser["UF_DEPARTMENT"])
								&& (int)$arUser["UF_DEPARTMENT"][0] > 0
							)
							|| (
								!is_array($arUser["UF_DEPARTMENT"])
								&& (int)$arUser["UF_DEPARTMENT"] > 0
							)
						)
					)
					||
					(	// both extranet
						(!isset($item["UF_DEPARTMENT"]) || empty($item["UF_DEPARTMENT"]))
						&& (
							!isset($arUser["UF_DEPARTMENT"])
							|| (
								is_array($arUser["UF_DEPARTMENT"])
								&& (int)$arUser["UF_DEPARTMENT"][0] <= 0
							)
							|| (
								!is_array($arUser["UF_DEPARTMENT"])
								&& (int)$arUser["UF_DEPARTMENT"] <= 0
							)
						)
					)
				)
			)
			{
				$arPhoneToReinvite[] = array(
					"PHONE_NUMBER" => $item["PHONE_NUMBER"],
					"REINVITE" => true,
					"ID" => $arUser["ID"],
					"CONFIRM_CODE" => $arUser["CONFIRM_CODE"],
					"UF_DEPARTMENT" => $arUser["UF_DEPARTMENT"]
				);
			}
			else
			{
				$arPhoneExist[] = $item["PHONE_NUMBER"];
			}
		}

		if (!$bFound)
		{
			$item["REINVITE"] = false;
			$arPhoneToRegister[] = $item;
		}
	}

	return [
		"PHONE_TO_REINVITE" => $arPhoneToReinvite,
		"PHONE_EXIST" => $arPhoneExist,
		"PHONE_TO_REGISTER" => $arPhoneToRegister
	];
}