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