• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/invitation/register.php
  • Класс: BitrixIntranetInvitationRegister
  • Вызов: Register::transferUser
static function transferUser($usersForTransfer, &$errors)
{
	global $APPLICATION, $USER;

	$transferedUserIds = [];

	foreach ($usersForTransfer as $user)
	{
		$bExtranetUser = !isset($user["UF_DEPARTMENT"]) || empty($user["UF_DEPARTMENT"]);
		$siteIdByDepartmentId = CIntranetInviteDialog::getUserSiteId(array(
			"UF_DEPARTMENT" => isset($user["UF_DEPARTMENT"]) && is_array($user["UF_DEPARTMENT"])
				? $user["UF_DEPARTMENT"][0] : "",
			"SITE_ID" => SITE_ID
		));

		$userGroups = CIntranetInviteDialog::getUserGroups($siteIdByDepartmentId, $bExtranetUser);
		if ($user["EXTERNAL_AUTH_ID"] === "shop" && Loader::includeModule("crm"))
		{
			$userGroups[] = BitrixCrmOrderBuyerGroup::getSystemGroupId();
		}

		$transferedUserId = CIntranetInviteDialog::TransferEmailUser($user["ID"], array(
			"CONFIRM_CODE" => BitrixMainSecurityRandom::getString(8),
			"GROUP_ID" => $userGroups,
			"UF_DEPARTMENT" => $user["UF_DEPARTMENT"],
			"SITE_ID" => SITE_ID
		));

		if (!$transferedUserId)
		{
			if($e = $APPLICATION->GetException())
			{
				$errors[] = $e->GetString();
			}
			return false;
		}

		$transferedUserIds[] = $transferedUserId;
		CIntranetInviteDialog::InviteUser($user, Loc::getMessage("INTRANET_INVITATION_INVITE_MESSAGE_TEXT"), array('checkB24' => false));
	}

	if (!empty($transferedUserIds))
	{
		foreach($transferedUserIds as $transferedUserId)
		{
			$res = InvitationTable::getList([
				'filter' => [
					'USER_ID' => $transferedUserId
				],
				'select' => [ 'ID' ]
			]);
			while ($invitationFields = $res->fetch())
			{
				InvitationTable::update($invitationFields['ID'], [
					'TYPE' => Invitation::TYPE_EMAIL,
					'ORIGINATOR_ID' => $USER->getId(),
					'DATE_CREATE' => new DateTime()
				]);
			}
		}

		Invitation::add([
			'USER_ID' => $transferedUserIds,
			'TYPE' => Invitation::TYPE_EMAIL
		]);
	}

	return $transferedUserIds;
}