• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sharing/sharinguser.php
  • Класс: BitrixCalendarSharingSharingUser
  • Вызов: SharingUser::createUser
private function createUser(array $userParams = []): ?BitrixMainEO_User
{
	$name = $userParams['NAME'] ?? 'Guest';
	$lastName = $userParams['LAST_NAME'] ?? '';
	$personalPhone = '';
	$personalMailbox = '';

	if (SharingEventManager::isEmailCorrect($userParams['CONTACT_DATA']))
	{
		$personalMailbox = $userParams['CONTACT_DATA'];
	}
	if (SharingEventManager::isPhoneNumberCorrect($userParams['CONTACT_DATA']))
	{
		$personalPhone = $userParams['CONTACT_DATA'];
	}

	$login = 'calendar_sharing_' . random_int(10000, 99999) . BitrixMainSecurityRandom::getString(8);
	$password = md5($login . '|' . random_int(10000, 99999). '|' . time());
	$xmlId = self::EXTERNAL_AUTH_ID . '|' . md5($login . $password . time() . BitrixMainSecurityRandom::getString(8));

	$userManager = new CUser();
	$userId = $userManager->add([
		'NAME' => $name,
		'LAST_NAME' => $lastName,
		'LOGIN' => $login,
		'PASSWORD' => $password,
		'CONFIRM_PASSWORD' => $password,
		'EXTERNAL_AUTH_ID' => self::EXTERNAL_AUTH_ID,
		'XML_ID' => $xmlId,
		'ACTIVE' => 'Y',
		'PERSONAL_PHONE' => $personalPhone,
		'PERSONAL_MAILBOX' => $personalMailbox,
	]);

	if ($userId)
	{
		if (Loader::includeModule("socialnetwork"))
		{
			CSocNetUserPerms::SetPerm($userId, 'message', SONET_RELATIONS_TYPE_NONE);
		}

		return BitrixMainUserTable::getById($userId)->fetchObject();
	}

	return null;
}