• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/invite_dialog.php
  • Класс: CIntranetInviteDialog
  • Вызов: CIntranetInviteDialog::inviteIntegrator
static function inviteIntegrator($SITE_ID, $email, $messageText, &$strError)
{
	CUserOptions::SetOption("bitrix24", "integrator_message_text", $messageText);

	$filter = array(
		"=LOGIN"=> $email,
		"!=EXTERNAL_AUTH_ID" => "imconnector"
	);

	$rsUser = UserTable::getList(array(
		'filter' => $filter,
		'select' => array("ID", "CONFIRM_CODE", "EXTERNAL_AUTH_ID", "UF_DEPARTMENT")
	));

	if  ($arUser = $rsUser->Fetch())
	{
		if (empty($arUser["CONFIRM_CODE"]))
		{
			$strError = Loc::getMessage("BX24_INVITE_DIALOG_USER_EXIST_ERROR1", array("#EMAIL#" => $email));
			return false;
		}

		$userData = array(
			"EMAIL" => $email,
			"REINVITE" => true,
			"ID" => $arUser["ID"],
			"CONFIRM_CODE" => $arUser["CONFIRM_CODE"],
			"UF_DEPARTMENT" => $arUser["UF_DEPARTMENT"]
		);

		self::InviteUser($userData, $messageText, array('checkB24' => false));
	}
	else
	{
		$userData = array(
			"EMAIL" => $email,
			"REINVITE" => false
		);

		if (Loader::includeModule('iblock'))
		{
			$rsIBlock = CIBlock::GetList(array(), array("CODE" => "departments"));
			$arIBlock = $rsIBlock->Fetch();
			$iblockID = $arIBlock["ID"];

			$db_up_department = CIBlockSection::GetList(
				array(),
				array(
					"SECTION_ID" => 0,
					"IBLOCK_ID" => $iblockID
				)
			);
			if ($ar_up_department = $db_up_department->Fetch())
			{
				$arFields["UF_DEPARTMENT"] = $ar_up_department['ID'];
			}
		}

		$arGroups = self::getAdminGroups($SITE_ID);
		if (Loader::includeModule('bitrix24'))
		{
			$integratorGroupId = BitrixBitrix24Integrator::getIntegratorGroupId();
			$arGroups[] = $integratorGroupId;
		}
		//register users
		$userData["CONFIRM_CODE"] = Random::getString(8, true);
		$userData["GROUP_ID"] = $arGroups;
		$userData["UF_DEPARTMENT"] = $arFields["UF_DEPARTMENT"];

		$ID = self::RegisterUser($userData, $SITE_ID);
		if(is_array($ID))
		{
			$strError = $ID[0];
			return false;
		}

		$userData['ID'] = $ID;

		self::InviteUser($userData, $messageText, array('checkB24' => false));

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

		return $ID;
	}
}