• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/service/geoip/extension.php
  • Класс: BitrixMainServiceGeoIpExtension
  • Вызов: Extension::getDataResult
public function getDataResult($ip, $lang = ''): Result
{
	$dataResult = new Result;
	$geoData = new Data();
	$geoData->lang = 'en';

	if (self::isAvailableBaseCountry())
	{
		$geoData->countryCode = $this->decode(geoip_country_code_by_name($ip));
		$geoData->countryName = $this->decode(geoip_country_name_by_name($ip));
	}

	if (self::isAvailableBaseCity())
	{
		$recordByName = $this->decode(geoip_record_by_name($ip));

		if (isset($recordByName['country_code']) && isset($recordByName['region']))
		{
			$geoData->timezone = $this->decode(
				geoip_time_zone_by_country_and_region(
					$recordByName['country_code'],
					$recordByName['region']
				)
			);
		}

		$geoData->countryCode = $recordByName['country_code'];
		$geoData->countryName = $recordByName['country_name'];
		$geoData->regionCode = $recordByName['region'];
		$geoData->cityName = $recordByName['city'];
		$geoData->zipCode = $recordByName['postal_code'];
		$geoData->latitude = $recordByName['latitude'];
		$geoData->longitude = $recordByName['longitude'];
	}

	if (self::isAvailableBaseOrganization())
	{
		$geoData->organizationName = $this->decode(geoip_org_by_name($ip));
	}

	if (self::isAvailableBaseIsp())
	{
		$geoData->ispName = $this->decode(geoip_isp_by_name($ip));
	}

	if (self::isAvailableBaseAsn())
	{
		$geoData->asn = $this->decode(geoip_asnum_by_name($ip));
	}

	$dataResult->setGeoData($geoData);
	return $dataResult;
}