/var/www/vhosts/ihelp.ro/ajutam.ro/wp-content/plugins/woocommerce/includes
NameSizeModeActions
abstracts/-0755rm
admin/-0755rm
blocks/-0755rm
cli/-0755rm
customizer/-0755rm
data-stores/-0755rm
emails/-0755rm
export/-0755rm
gateways/-0755rm
import/-0755rm
integrations/-0755rm
interfaces/-0755rm
legacy/-0755rm
libraries/-0755rm
log-handlers/-0755rm
payment-tokens/-0755rm
queue/-0755rm
rest-api/-0755rm
shipping/-0755rm
shortcodes/-0755rm
theme-support/-0755rm
tracks/-0755rm
traits/-0755rm
walkers/-0755rm
wccom-site/-0755rm
widgets/-0755rm
class-wc-ajax.php1021580644editdlrm
class-wc-api.php51050644editdlrm
class-wc-auth.php118820644editdlrm
class-wc-autoloader.php28100644editdlrm
class-wc-background-emailer.php46850644editdlrm
class-wc-background-updater.php35350644editdlrm
class-wc-breadcrumb.php97220644editdlrm
class-wc-cache-helper.php120630644editdlrm
class-wc-cart-fees.php34920644editdlrm
class-wc-cart-session.php150320644editdlrm
class-wc-cart-totals.php288230644editdlrm
class-wc-cart.php665200644editdlrm
class-wc-checkout.php450810644editdlrm
class-wc-cli.php11900644editdlrm
class-wc-comments.php158880644editdlrm
class-wc-countries.php471720644editdlrm
class-wc-coupon.php347090644editdlrm
class-wc-customer-download-log.php34520644editdlrm
class-wc-customer-download.php107020644editdlrm
class-wc-customer.php296060644editdlrm
class-wc-data-exception.php13210644editdlrm
class-wc-data-store.php59890644editdlrm
class-wc-datetime.php22510644editdlrm
class-wc-deprecated-action-hooks.php70420644editdlrm
class-wc-deprecated-filter-hooks.php69890644editdlrm
class-wc-discounts.php334430644editdlrm
class-wc-download-handler.php246740644editdlrm
class-wc-emails.php230160644editdlrm
class-wc-embed.php42840644editdlrm
class-wc-form-handler.php450340644editdlrm
class-wc-frontend-scripts.php265310644editdlrm
class-wc-geo-ip.php311410644editdlrm
class-wc-geolite-integration.php20360644editdlrm
class-wc-geolocation.php105880644editdlrm
class-wc-https.php44300644editdlrm
class-wc-install.php637420644editdlrm
class-wc-integrations.php13080644editdlrm
class-wc-log-levels.php26000644editdlrm
class-wc-logger.php89750644editdlrm
class-wc-meta-data.php22340644editdlrm
class-wc-order-factory.php31940644editdlrm
class-wc-order-item-coupon.php41750644editdlrm
class-wc-order-item-fee.php89720644editdlrm
class-wc-order-item-meta.php59420644editdlrm
class-wc-order-item-product.php134530644editdlrm
class-wc-order-item-shipping.php79690644editdlrm
class-wc-order-item-tax.php66440644editdlrm
class-wc-order-item.php110360644editdlrm
class-wc-order-query.php26150644editdlrm
class-wc-order-refund.php50000644editdlrm
class-wc-order.php631860644editdlrm
class-wc-payment-gateways.php55450644editdlrm
class-wc-payment-tokens.php60440644editdlrm
class-wc-post-data.php207400644editdlrm
class-wc-post-types.php287870644editdlrm
class-wc-privacy-background-process.php17070644editdlrm
class-wc-privacy-erasers.php139340644editdlrm
class-wc-privacy-exporters.php150440644editdlrm
class-wc-privacy.php158960644editdlrm
class-wc-product-attribute.php71370644editdlrm
class-wc-product-download.php73340644editdlrm
class-wc-product-external.php49550644editdlrm
class-wc-product-factory.php36680644editdlrm
class-wc-product-grouped.php53490644editdlrm
class-wc-product-query.php22310644editdlrm
class-wc-product-simple.php19380644editdlrm
class-wc-product-variable.php220220644editdlrm
class-wc-product-variation.php172710644editdlrm
class-wc-query.php323610644editdlrm
class-wc-rate-limiter.php41000644editdlrm
class-wc-regenerate-images-request.php84110644editdlrm
class-wc-regenerate-images.php156530644editdlrm
class-wc-register-wp-admin-settings.php51710644editdlrm
class-wc-rest-authentication.php199880644editdlrm
class-wc-rest-exception.php2760644editdlrm
class-wc-session-handler.php119670644editdlrm
class-wc-shipping-rate.php56280644editdlrm
class-wc-shipping-zone.php133920644editdlrm
class-wc-shipping-zones.php41060644editdlrm
class-wc-shipping.php118460644editdlrm
class-wc-shortcodes.php176480644editdlrm
class-wc-structured-data.php177330644editdlrm
class-wc-tax.php378890644editdlrm
class-wc-template-loader.php208730644editdlrm
class-wc-tracker.php238860644editdlrm
class-wc-validation.php59750644editdlrm
class-wc-webhook.php306900644editdlrm
class-woocommerce.php351040644editdlrm
wc-account-functions.php132260644editdlrm
wc-attribute-functions.php211100644editdlrm
wc-cart-functions.php175680644editdlrm
wc-conditional-functions.php127800644editdlrm
wc-core-functions.php800210644editdlrm
wc-coupon-functions.php27410644editdlrm
wc-deprecated-functions.php334850644editdlrm
wc-formatting-functions.php439850644editdlrm
wc-notice-functions.php76770644editdlrm
wc-order-functions.php348920644editdlrm
wc-order-item-functions.php51530644editdlrm
wc-page-functions.php70870644editdlrm
wc-product-functions.php492790644editdlrm
wc-rest-functions.php111470644editdlrm
wc-stock-functions.php135320644editdlrm
wc-template-functions.php1178290644editdlrm
wc-template-hooks.php126810644editdlrm
wc-term-functions.php211130644editdlrm
wc-update-functions.php696990644editdlrm
wc-user-functions.php272420644editdlrm
wc-webhook-functions.php57310644editdlrm
wc-widget-functions.php20630644editdlrm
Edit: /var/www/vhosts/ihelp.ro/ajutam.ro/wp-content/plugins/woocommerce/includes/class-wc-geo-ip.php (31141B)
log( $level, $message, array( 'source' => 'geoip' ) ); } /** * Open geoip file. * * @param string $filename * @param int $flags */ public function geoip_open( $filename, $flags ) { $this->flags = $flags; if ( $this->flags & self::GEOIP_SHARED_MEMORY ) { $this->shmid = @shmop_open( self::GEOIP_SHM_KEY, 'a', 0, 0 ); } else { if ( $this->filehandle = fopen( $filename, 'rb' ) ) { if ( $this->flags & self::GEOIP_MEMORY_CACHE ) { $s_array = fstat( $this->filehandle ); $this->memory_buffer = fread( $this->filehandle, $s_array['size'] ); } } else { $this->log( 'GeoIP API: Can not open ' . $filename, 'error' ); } } $this->_setup_segments(); } /** * Setup segments. * * @return WC_Geo_IP instance */ private function _setup_segments() { $this->databaseType = self::GEOIP_COUNTRY_EDITION; $this->record_length = self::STANDARD_RECORD_LENGTH; if ( $this->flags & self::GEOIP_SHARED_MEMORY ) { $offset = @shmop_size( $this->shmid ) - 3; for ( $i = 0; $i < self::STRUCTURE_INFO_MAX_SIZE; $i++ ) { $delim = @shmop_read( $this->shmid, $offset, 3 ); $offset += 3; if ( ( chr( 255 ) . chr( 255 ) . chr( 255 ) ) == $delim ) { $this->databaseType = ord( @shmop_read( $this->shmid, $offset, 1 ) ); if ( $this->databaseType >= 106 ) { $this->databaseType -= 105; } $offset++; if ( self::GEOIP_REGION_EDITION_REV0 == $this->databaseType ) { $this->databaseSegments = self::GEOIP_STATE_BEGIN_REV0; } elseif ( self::GEOIP_REGION_EDITION_REV1 == $this->databaseType ) { $this->databaseSegments = self::GEOIP_STATE_BEGIN_REV1; } elseif ( ( self::GEOIP_CITY_EDITION_REV0 == $this->databaseType ) || ( self::GEOIP_CITY_EDITION_REV1 == $this->databaseType ) || ( self::GEOIP_ORG_EDITION == $this->databaseType ) || ( self::GEOIP_ORG_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_DOMAIN_EDITION == $this->databaseType ) || ( self::GEOIP_DOMAIN_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_ISP_EDITION == $this->databaseType ) || ( self::GEOIP_ISP_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_USERTYPE_EDITION == $this->databaseType ) || ( self::GEOIP_USERTYPE_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_LOCATIONA_EDITION == $this->databaseType ) || ( self::GEOIP_ACCURACYRADIUS_EDITION == $this->databaseType ) || ( self::GEOIP_CITY_EDITION_REV0_V6 == $this->databaseType ) || ( self::GEOIP_CITY_EDITION_REV1_V6 == $this->databaseType ) || ( self::GEOIP_NETSPEED_EDITION_REV1 == $this->databaseType ) || ( self::GEOIP_NETSPEED_EDITION_REV1_V6 == $this->databaseType ) || ( self::GEOIP_ASNUM_EDITION == $this->databaseType ) || ( self::GEOIP_ASNUM_EDITION_V6 == $this->databaseType ) ) { $this->databaseSegments = 0; $buf = @shmop_read( $this->shmid, $offset, self::SEGMENT_RECORD_LENGTH ); for ( $j = 0; $j < self::SEGMENT_RECORD_LENGTH; $j++ ) { $this->databaseSegments += ( ord( $buf[ $j ] ) << ( $j * 8 ) ); } if ( ( self::GEOIP_ORG_EDITION == $this->databaseType ) || ( self::GEOIP_ORG_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_DOMAIN_EDITION == $this->databaseType ) || ( self::GEOIP_DOMAIN_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_ISP_EDITION == $this->databaseType ) || ( self::GEOIP_ISP_EDITION_V6 == $this->databaseType ) ) { $this->record_length = self::ORG_RECORD_LENGTH; } } break; } else { $offset -= 4; } } if ( ( self::GEOIP_COUNTRY_EDITION == $this->databaseType ) || ( self::GEOIP_COUNTRY_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_PROXY_EDITION == $this->databaseType ) || ( self::GEOIP_NETSPEED_EDITION == $this->databaseType ) ) { $this->databaseSegments = self::GEOIP_COUNTRY_BEGIN; } } else { $filepos = ftell( $this->filehandle ); fseek( $this->filehandle, -3, SEEK_END ); for ( $i = 0; $i < self::STRUCTURE_INFO_MAX_SIZE; $i++ ) { $delim = fread( $this->filehandle, 3 ); if ( ( chr( 255 ) . chr( 255 ) . chr( 255 ) ) == $delim ) { $this->databaseType = ord( fread( $this->filehandle, 1 ) ); if ( $this->databaseType >= 106 ) { $this->databaseType -= 105; } if ( self::GEOIP_REGION_EDITION_REV0 == $this->databaseType ) { $this->databaseSegments = self::GEOIP_STATE_BEGIN_REV0; } elseif ( self::GEOIP_REGION_EDITION_REV1 == $this->databaseType ) { $this->databaseSegments = self::GEOIP_STATE_BEGIN_REV1; } elseif ( ( self::GEOIP_CITY_EDITION_REV0 == $this->databaseType ) || ( self::GEOIP_CITY_EDITION_REV1 == $this->databaseType ) || ( self::GEOIP_CITY_EDITION_REV0_V6 == $this->databaseType ) || ( self::GEOIP_CITY_EDITION_REV1_V6 == $this->databaseType ) || ( self::GEOIP_ORG_EDITION == $this->databaseType ) || ( self::GEOIP_DOMAIN_EDITION == $this->databaseType ) || ( self::GEOIP_ISP_EDITION == $this->databaseType ) || ( self::GEOIP_ORG_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_DOMAIN_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_ISP_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_LOCATIONA_EDITION == $this->databaseType ) || ( self::GEOIP_ACCURACYRADIUS_EDITION == $this->databaseType ) || ( self::GEOIP_NETSPEED_EDITION_REV1 == $this->databaseType ) || ( self::GEOIP_NETSPEED_EDITION_REV1_V6 == $this->databaseType ) || ( self::GEOIP_USERTYPE_EDITION == $this->databaseType ) || ( self::GEOIP_USERTYPE_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_ASNUM_EDITION == $this->databaseType ) || ( self::GEOIP_ASNUM_EDITION_V6 == $this->databaseType ) ) { $this->databaseSegments = 0; $buf = fread( $this->filehandle, self::SEGMENT_RECORD_LENGTH ); for ( $j = 0; $j < self::SEGMENT_RECORD_LENGTH; $j++ ) { $this->databaseSegments += ( ord( $buf[ $j ] ) << ( $j * 8 ) ); } if ( ( self::GEOIP_ORG_EDITION == $this->databaseType ) || ( self::GEOIP_DOMAIN_EDITION == $this->databaseType ) || ( self::GEOIP_ISP_EDITION == $this->databaseType ) || ( self::GEOIP_ORG_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_DOMAIN_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_ISP_EDITION_V6 == $this->databaseType ) ) { $this->record_length = self::ORG_RECORD_LENGTH; } } break; } else { fseek( $this->filehandle, -4, SEEK_CUR ); } } if ( ( self::GEOIP_COUNTRY_EDITION == $this->databaseType ) || ( self::GEOIP_COUNTRY_EDITION_V6 == $this->databaseType ) || ( self::GEOIP_PROXY_EDITION == $this->databaseType ) || ( self::GEOIP_NETSPEED_EDITION == $this->databaseType ) ) { $this->databaseSegments = self::GEOIP_COUNTRY_BEGIN; } fseek( $this->filehandle, $filepos, SEEK_SET ); } return $this; } /** * Close geoip file. * * @return bool */ public function geoip_close() { if ( $this->flags & self::GEOIP_SHARED_MEMORY ) { return true; } return fclose( $this->filehandle ); } /** * Common get record. * * @param string $seek_country * @return WC_Geo_IP_Record instance */ private function _common_get_record( $seek_country ) { // workaround php's broken substr, strpos, etc handling with // mbstring.func_overload and mbstring.internal_encoding $mbExists = extension_loaded( 'mbstring' ); if ( $mbExists ) { $enc = mb_internal_encoding(); mb_internal_encoding( 'ISO-8859-1' ); } $record_pointer = $seek_country + ( 2 * $this->record_length - 1 ) * $this->databaseSegments; if ( $this->flags & self::GEOIP_MEMORY_CACHE ) { $record_buf = substr( $this->memory_buffer, $record_pointer, FULL_RECORD_LENGTH ); } elseif ( $this->flags & self::GEOIP_SHARED_MEMORY ) { $record_buf = @shmop_read( $this->shmid, $record_pointer, FULL_RECORD_LENGTH ); } else { fseek( $this->filehandle, $record_pointer, SEEK_SET ); $record_buf = fread( $this->filehandle, FULL_RECORD_LENGTH ); } $record = new WC_Geo_IP_Record(); $record_buf_pos = 0; $char = ord( substr( $record_buf, $record_buf_pos, 1 ) ); $record->country_code = $this->GEOIP_COUNTRY_CODES[ $char ]; $record->country_code3 = $this->GEOIP_COUNTRY_CODES3[ $char ]; $record->country_name = $this->GEOIP_COUNTRY_NAMES[ $char ]; $record->continent_code = $this->GEOIP_CONTINENT_CODES[ $char ]; $str_length = 0; $record_buf_pos++; // Get region $char = ord( substr( $record_buf, $record_buf_pos + $str_length, 1 ) ); while ( 0 != $char ) { $str_length++; $char = ord( substr( $record_buf, $record_buf_pos + $str_length, 1 ) ); } if ( $str_length > 0 ) { $record->region = substr( $record_buf, $record_buf_pos, $str_length ); } $record_buf_pos += $str_length + 1; $str_length = 0; // Get city $char = ord( substr( $record_buf, $record_buf_pos + $str_length, 1 ) ); while ( 0 != $char ) { $str_length++; $char = ord( substr( $record_buf, $record_buf_pos + $str_length, 1 ) ); } if ( $str_length > 0 ) { $record->city = substr( $record_buf, $record_buf_pos, $str_length ); } $record_buf_pos += $str_length + 1; $str_length = 0; // Get postal code $char = ord( substr( $record_buf, $record_buf_pos + $str_length, 1 ) ); while ( 0 != $char ) { $str_length++; $char = ord( substr( $record_buf, $record_buf_pos + $str_length, 1 ) ); } if ( $str_length > 0 ) { $record->postal_code = substr( $record_buf, $record_buf_pos, $str_length ); } $record_buf_pos += $str_length + 1; // Get latitude and longitude $latitude = 0; $longitude = 0; for ( $j = 0; $j < 3; ++$j ) { $char = ord( substr( $record_buf, $record_buf_pos++, 1 ) ); $latitude += ( $char << ( $j * 8 ) ); } $record->latitude = ( $latitude / 10000 ) - 180; for ( $j = 0; $j < 3; ++$j ) { $char = ord( substr( $record_buf, $record_buf_pos++, 1 ) ); $longitude += ( $char << ( $j * 8 ) ); } $record->longitude = ( $longitude / 10000 ) - 180; if ( self::GEOIP_CITY_EDITION_REV1 == $this->databaseType ) { $metroarea_combo = 0; if ( 'US' === $record->country_code ) { for ( $j = 0; $j < 3; ++$j ) { $char = ord( substr( $record_buf, $record_buf_pos++, 1 ) ); $metroarea_combo += ( $char << ( $j * 8 ) ); } $record->metro_code = $record->dma_code = floor( $metroarea_combo / 1000 ); $record->area_code = $metroarea_combo % 1000; } } if ( $mbExists ) { mb_internal_encoding( $enc ); } return $record; } /** * Get record. * * @param int $ipnum * @return WC_Geo_IP_Record instance */ private function _get_record( $ipnum ) { $seek_country = $this->_geoip_seek_country( $ipnum ); if ( $seek_country == $this->databaseSegments ) { return null; } return $this->_common_get_record( $seek_country ); } /** * Seek country IPv6. * * @param int $ipnum * @return string */ public function _geoip_seek_country_v6( $ipnum ) { // arrays from unpack start with offset 1 // yet another php mystery. array_merge work around // this broken behaviour $v6vec = array_merge( unpack( 'C16', $ipnum ) ); $offset = 0; for ( $depth = 127; $depth >= 0; --$depth ) { if ( $this->flags & self::GEOIP_MEMORY_CACHE ) { $buf = $this->_safe_substr( $this->memory_buffer, 2 * $this->record_length * $offset, 2 * $this->record_length ); } elseif ( $this->flags & self::GEOIP_SHARED_MEMORY ) { $buf = @shmop_read( $this->shmid, 2 * $this->record_length * $offset, 2 * $this->record_length ); } else { if ( 0 != fseek( $this->filehandle, 2 * $this->record_length * $offset, SEEK_SET ) ) { break; } $buf = fread( $this->filehandle, 2 * $this->record_length ); } $x = array( 0, 0 ); for ( $i = 0; $i < 2; ++$i ) { for ( $j = 0; $j < $this->record_length; ++$j ) { $x[ $i ] += ord( $buf[ $this->record_length * $i + $j ] ) << ( $j * 8 ); } } $bnum = 127 - $depth; $idx = $bnum >> 3; $b_mask = 1 << ( $bnum & 7 ^ 7 ); if ( ( $v6vec[ $idx ] & $b_mask ) > 0 ) { if ( $x[1] >= $this->databaseSegments ) { return $x[1]; } $offset = $x[1]; } else { if ( $x[0] >= $this->databaseSegments ) { return $x[0]; } $offset = $x[0]; } } $this->log( 'GeoIP API: Error traversing database - perhaps it is corrupt?', 'error' ); return false; } /** * Seek country. * * @param int $ipnum * @return string */ private function _geoip_seek_country( $ipnum ) { $offset = 0; for ( $depth = 31; $depth >= 0; --$depth ) { if ( $this->flags & self::GEOIP_MEMORY_CACHE ) { $buf = $this->_safe_substr( $this->memory_buffer, 2 * $this->record_length * $offset, 2 * $this->record_length ); } elseif ( $this->flags & self::GEOIP_SHARED_MEMORY ) { $buf = @shmop_read( $this->shmid, 2 * $this->record_length * $offset, 2 * $this->record_length ); } else { if ( 0 != fseek( $this->filehandle, 2 * $this->record_length * $offset, SEEK_SET ) ) { break; } $buf = fread( $this->filehandle, 2 * $this->record_length ); } $x = array( 0, 0 ); for ( $i = 0; $i < 2; ++$i ) { for ( $j = 0; $j < $this->record_length; ++$j ) { $x[ $i ] += ord( $buf[ $this->record_length * $i + $j ] ) << ( $j * 8 ); } } if ( $ipnum & ( 1 << $depth ) ) { if ( $x[1] >= $this->databaseSegments ) { return $x[1]; } $offset = $x[1]; } else { if ( $x[0] >= $this->databaseSegments ) { return $x[0]; } $offset = $x[0]; } } $this->log( 'GeoIP API: Error traversing database - perhaps it is corrupt?', 'error' ); return false; } /** * Record by addr. * * @param string $addr * * @return WC_Geo_IP_Record */ public function geoip_record_by_addr( $addr ) { if ( null == $addr ) { return 0; } $ipnum = ip2long( $addr ); return $this->_get_record( $ipnum ); } /** * Country ID by addr IPv6. * * @param string $addr * @return int|bool */ public function geoip_country_id_by_addr_v6( $addr ) { if ( ! defined( 'AF_INET6' ) ) { $this->log( 'GEOIP (geoip_country_id_by_addr_v6): PHP was compiled with --disable-ipv6 option' ); return false; } $ipnum = inet_pton( $addr ); return $this->_geoip_seek_country_v6( $ipnum ) - self::GEOIP_COUNTRY_BEGIN; } /** * Country ID by addr. * * @param string $addr * @return int */ public function geoip_country_id_by_addr( $addr ) { $ipnum = ip2long( $addr ); return $this->_geoip_seek_country( $ipnum ) - self::GEOIP_COUNTRY_BEGIN; } /** * Country code by addr IPv6. * * @param string $addr * @return string */ public function geoip_country_code_by_addr_v6( $addr ) { $country_id = $this->geoip_country_id_by_addr_v6( $addr ); if ( false !== $country_id && isset( $this->GEOIP_COUNTRY_CODES[ $country_id ] ) ) { return $this->GEOIP_COUNTRY_CODES[ $country_id ]; } return false; } /** * Country code by addr. * * @param string $addr * @return string */ public function geoip_country_code_by_addr( $addr ) { if ( self::GEOIP_CITY_EDITION_REV1 == $this->databaseType ) { $record = $this->geoip_record_by_addr( $addr ); if ( false !== $record ) { return $record->country_code; } } else { $country_id = $this->geoip_country_id_by_addr( $addr ); if ( false !== $country_id && isset( $this->GEOIP_COUNTRY_CODES[ $country_id ] ) ) { return $this->GEOIP_COUNTRY_CODES[ $country_id ]; } } return false; } /** * Encode string. * * @param string $string * @param int $start * @param int $length * @return string */ private function _safe_substr( $string, $start, $length ) { // workaround php's broken substr, strpos, etc handling with // mbstring.func_overload and mbstring.internal_encoding $mb_exists = extension_loaded( 'mbstring' ); if ( $mb_exists ) { $enc = mb_internal_encoding(); mb_internal_encoding( 'ISO-8859-1' ); } $buf = substr( $string, $start, $length ); if ( $mb_exists ) { mb_internal_encoding( $enc ); } return $buf; } } /** * Geo IP Record class. */ class WC_Geo_IP_Record { /** * Country code. * * @var string */ public $country_code; /** * 3 letters country code. * * @var string */ public $country_code3; /** * Country name. * * @var string */ public $country_name; /** * Region. * * @var string */ public $region; /** * City. * * @var string */ public $city; /** * Postal code. * * @var string */ public $postal_code; /** * Latitude * * @var int */ public $latitude; /** * Longitude. * * @var int */ public $longitude; /** * Area code. * * @var int */ public $area_code; /** * DMA Code. * * Metro and DMA code are the same. * Use metro code instead. * * @var float */ public $dma_code; /** * Metro code. * * @var float */ public $metro_code; /** * Continent code. * * @var string */ public $continent_code; }