• Модуль: rest
  • Путь к файлу: ~/bitrix/modules/rest/lib/api/user.php
  • Класс: BitrixRestApiUser
  • Вызов: User::getUserData
static function getUserData($userFields, $allowedFields = null)
{
	static $extranetModuleInstalled = null;
	if ($extranetModuleInstalled === null)
	{
		$extranetModuleInstalled = ModuleManager::isModuleInstalled('extranet');
	}
	global $USER_FIELD_MANAGER;
	$fieldsList = $USER_FIELD_MANAGER->getUserFields(static::$entityUser, 0, LANGUAGE_ID);

	$urlManager = BitrixMainEngineUrlManager::getInstance();

	$res = array();
	if (is_null($allowedFields))
	{
		$allowedFields = static::getDefaultAllowedUserFields();
	}
	foreach ($allowedFields as $key)
	{
		switch ($key)
		{
			case 'ACTIVE':
				$res[$key] = $userFields[$key] == 'Y';
				break;
			case 'PERSONAL_BIRTHDAY':
			case 'DATE_REGISTER':
				$res[$key] = CRestUtil::convertDate($userFields[$key]);
				break;
			case 'LAST_LOGIN':
				$res[$key] = CRestUtil::convertDateTime($userFields[$key]);
				break;
			case 'EXTERNAL_AUTH_ID':
				$res['IS_NETWORK'] = $userFields[$key] == 'replica';
				$res['IS_EMAIL'] = $userFields[$key] == 'email';
				unset($userFields[$key]);
				break;
			default:
				if (!empty($fieldsList[$key]))
				{
					if ($fieldsList[$key]['USER_TYPE_ID'] === 'date')
					{
						if ($fieldsList[$key]['MULTIPLE'] === 'Y' && is_array($userFields[$key]))
						{
							foreach ($userFields[$key] as $k => $value)
							{
								$res[$key][$k] = CRestUtil::convertDate($userFields[$key][$k]);
							}
						}
						else
						{
							$res[$key] = CRestUtil::convertDate($userFields[$key]);
						}
					}
					elseif ($fieldsList[$key]['USER_TYPE_ID'] === 'datetime')
					{
						if ($fieldsList[$key]['MULTIPLE'] === 'Y' && is_array($userFields[$key]))
						{
							foreach ($userFields[$key] as $k => $value)
							{
								$res[$key][$k] = CRestUtil::convertDateTime($userFields[$key][$k]);
							}
						}
						else
						{
							$res[$key] = CRestUtil::convertDateTime($userFields[$key]);
						}
					}
					elseif ($fieldsList[$key]['USER_TYPE_ID'] === 'file')
					{
						if ($fieldsList[$key]['MULTIPLE'] === 'Y' && is_array($userFields[$key]))
						{
							foreach ($userFields[$key] as $k => $value)
							{
								$res[$key][$k] = [
									'id' => $userFields[$key][$k],
									'showUrl' => $urlManager->create(
										'rest.file.get',
										[
											'entity' => static::$entityUser,
											'id' => $userFields['ID'],
											'field' => $key,
											'value' => $userFields[$key]
										]
									),
									'downloadData' => [
										'id' => $userFields['ID'],
										'field' => $key,
										'value' => $userFields[$key][$k],
									],
								];
							}
						}
						else
						{
							$res[$key] = [
								'id' => $userFields[$key],
								'showUrl' => $urlManager->create(
									'rest.file.get',
									[
										'entity' => static::$entityUser,
										'id' => $userFields['ID'],
										'field' => $key,
										'value' => $userFields[$key]
									]
								),
								'downloadData' => [
									'id' => $userFields['ID'],
									'field' => $key,
									'value' => $userFields[$key]
								]
							];
						}
					}
				}

				if (!isset($res[$key]) && isset($userFields[$key]))
				{
					$res[$key] = $userFields[$key];
				}
				break;
		}
	}

	return $res;
}