- Модуль: 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;
}