• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/component/userprofile.php
  • Класс: BitrixIntranetComponentUserProfile
  • Вызов: UserProfile::getUserData
protected function getUserData(): ?array
{
	if ($this->arParams["ID"] <= 0)
	{
		return null;
	}
	global $USER;

	$filter = [
		"ID_EQUAL_EXACT" => $this->arParams["ID"]
	];

	$params = [
		"FIELDS" => [
			'ID', 'ACTIVE', 'CONFIRM_CODE', 'EXTERNAL_AUTH_ID', 'LAST_ACTIVITY_DATE', 'DATE_REGISTER',
			'LOGIN', 'EMAIL', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'WORK_POSITION',
			'PERSONAL_PHOTO', 'PERSONAL_BIRTHDAY', 'PERSONAL_GENDER',
			'PERSONAL_WWW', 'PERSONAL_MOBILE', 'WORK_PHONE', 'PERSONAL_CITY',
			'TIME_ZONE', 'AUTO_TIME_ZONE', 'TIME_ZONE_OFFSET',
			'PERSONAL_COUNTRY', 'PERSONAL_FAX', 'PERSONAL_MAILBOX',
			'PERSONAL_PHONE', 'PERSONAL_STATE', 'PERSONAL_STREET', 'PERSONAL_ZIP',
			'WORK_CITY', 'WORK_COUNTRY', 'WORK_COMPANY', 'WORK_DEPARTMENT',
			'PERSONAL_PROFESSION', 'WORK_NOTES', 'WORK_PROFILE', 'LANGUAGE_ID',
		],
		'SELECT' => [ 'UF_DEPARTMENT', 'UF_PHONE_INNER', 'UF_SKYPE', 'UF_SKYPE_LINK', 'UF_ZOOM', 'UF_PUBLIC' ]
	];

	$dbUser = CUser::GetList("id", "asc", $filter, $params);
	$user = $dbUser->fetch();

	foreach ($user as $field => $value)
	{
		if ($value === null)
		{
			$user[$field] = "";
		}

		if ($field === "LAST_ACTIVITY_DATE" && $value != '')
		{
			$user["LAST_ACTIVITY_DATE_FROM_DB"] = $value;
			$user[$field] = DateTime::createFromTimestamp(MakeTimeStamp($value, 'YYYY-MM-DD HH:MI:SS'));
			$user[$field] = FormatDateFromDB($user[$field]);
		}
	}

	if ((int)$user["PERSONAL_PHOTO"] <= 0)
	{
		switch($user["PERSONAL_GENDER"])
		{
			case "M":
				$suffix = "male";
				break;
			case "F":
				$suffix = "female";
				break;
			default:
				$suffix = "unknown";
			}
			$user["PERSONAL_PHOTO"] = Option::get('socialnetwork', 'default_user_picture_'.$suffix, false, SITE_ID);
	}

	$user["PHOTO"] = self::getUserPhoto($user["PERSONAL_PHOTO"], 512);

	$user["FULL_NAME"] = CUser::FormatName(CSite::GetNameFormat(), $user, true, false);

	if ($user["PERSONAL_WWW"] <> '')
	{
		$user["PERSONAL_WWW"] = ((mb_strpos($user["PERSONAL_WWW"], "http") === false) ? "http://" : "").$user["PERSONAL_WWW"];
	}

	$user["ONLINE_STATUS"] = CUser::GetOnlineStatus($this->arParams["ID"],
		MakeTimeStamp($user["LAST_ACTIVITY_DATE_FROM_DB"] ?? null, "YYYY-MM-DD HH-MI-SS"));

	$user["SHOW_SONET_ADMIN"] = false;
	if (
		$this->arParams["ID"] == $USER->GetID()
		&& Loader::includeModule("socialnetwork")
		&& CSocNetUser::IsCurrentUserModuleAdmin(SITE_ID, false)
	)
	{
		$user["SHOW_SONET_ADMIN"] = true;
		$user["IS_SESSION_ADMIN"] = CSocNetUser::IsEnabledModuleAdmin();
	}

	$this->setUserStatus($user);
	$this->checkVoximplantPhone($user);
	$this->prepareSubordination($user);
	$user += Util::getAppsInstallationConfig($this->arParams['ID']);

	if (Loader::includeModule("bitrix24") && BitrixBitrix24Integrator::isIntegrator($user["ID"]))
	{
		$user["IS_INTEGRATOR"] = true;
	}

	return $user;
}