- Модуль: mobile
- Путь к файлу: ~/bitrix/modules/mobile/lib/rest/user.php
- Класс: BitrixMobileRestUser
- Вызов: User::get
static function get($params, $n, CRestServer $server)
{
global $USER;
$users = null;
$error = null;
$filter = [];
//getting resize preset before user data preparing
$resizePresets = [
'small' => ['width' => 150, 'height' => 150],
'medium' => ['width' => 300, 'height' => 300],
'large' => ['width' => 1000, 'height' => 1000],
];
$presetName = $params['image_resize'];
unset($params['image_resize']);
$resize = ($presetName && $resizePresets[$presetName]
? $resizePresets[$presetName]
: false);
if (is_array($params['filter']))
{
$filterCallback = function ($key) {
return in_array(mb_strtoupper($key), self::allowedFields());
};
$filter = array_filter($params['filter'], $filterCallback , ARRAY_FILTER_USE_KEY);
}
if (Loader::includeModule('extranet') )
{
$filteredUserIDs = CExtranet::getMyGroupsUsersSimple(CExtranet::getExtranetSiteID());
$filteredUserIDs[] = $USER->getID();
if (CExtranet::isIntranetUser())
{
if (
!isset($filter["ID"])
|| !Loader::includeModule('socialnetwork')
|| !CSocNetUser::IsCurrentUserModuleAdmin(CSite::getDefSite(), false)
)
{
$filter[] = [
'LOGIC' => 'OR',
'!UF_DEPARTMENT' => false,
'ID' => $filteredUserIDs
];
}
}
else
{
$filter['ID'] = (isset($filter['ID'])
? array_intersect((is_array($filter['ID'])
? $filter['ID']
: [$filter['ID']]), $filteredUserIDs)
: $filteredUserIDs);
}
}
$dbUsers = UserTable::getList([
'filter' => $filter,
'select' => self::allowedFields(),
'limit' => 10,
'offset' => 0
]);
$users = $dbUsers->fetchAll();
if ($users == null)
{
return [];
}
foreach ($users as $index => $user)
{
if ($user['PERSONAL_PHOTO'])
{
$photo = self::getUserPhoto($user['PERSONAL_PHOTO'], $resize);
$users[$index]['PERSONAL_PHOTO_ORIGINAL'] = $photo['PERSONAL_PHOTO_ORIGINAL'];
$users[$index]['PERSONAL_PHOTO'] = $photo['PERSONAL_PHOTO'];
}
$depsData = self::userDepartmentData($user['ID'], $user['UF_DEPARTMENT'], $resize);
if ($user['PERSONAL_BIRTHDAY'])
{
$format = 'j F Y';
if (
$USER->getId() != $user['ID']
&& Option::get('intranet', 'show_year_for_female', 'N') === 'N'
&& $user['PERSONAL_GENDER'] == 'F')
{
$format = 'j F';
}
$date = FormatDate($format, $user['PERSONAL_BIRTHDAY']->getTimestamp());
$users[$index]['PERSONAL_BIRTHDAY'] = $date;
}
$users[$index]['NAME_FORMATTED'] = CUser::FormatName(CSite::GetNameFormat(false), $user);
$users[$index]['COMPANY_STRUCTURE_RELATIONS'] = $depsData;
if(Loader::includeModule('intranet'))
{
$status = Util::getUserStatus($user['ID']);
if($status)
{
$users[$index]['STATUS'] = $status;
$status = toUpper($status);
$users[$index]['STATUS_NAME'] = Loc::getMessage("MOBILE_REST_USER_STATUS_{$status}");
}
}
}
$result = $users;
return $result;
}