Class distance

Description

Distance calculation class to perform the majority of distance and radius calculation functions in ILance.

The current state of the distance calculation server currently supports:

a) Canada b) UK c) United States d) Netherlands e) Australia f) Germany g) Poland h) Spain i) India j) Belgium k) France l) Italy m) Japan n) Kenya

  • author: ILance
  • version: $Revision: 1.0.0 $

Located in /api/class.distance.inc.php (line 43)


	
			
Variable Summary
Method Summary
integer fetch_distance ([string $zipcode1 = ''], [string $zipcode2 = ''], [string $zipcodetype = ''])
integer fetch_distance_response ([string $zipcode1 = ''], [string $zipcode2 = ''], [string $zipcodetype = ''], [string $city1 = ''], [string $city2 = ''], [string $inputdistance = 0])
array fetch_sql_as_distance ([string $zipcode = ''], [integer $countryid = 0], [string $fieldname = ''])
integer fetch_zips_in_range ([string $zipcodetable = ''], [string $fieldname = ''], [string $zipcode = ''], [integer $radius = ''], [integer $countryid = ''], [boolean $includedistance = false], [boolean $leftjoinonly = false], [boolean $radiusjoin = false], [ $fetchcityonly = false])
integer fetch_zip_longitude_latitude ([string $zipcode = ''], [integer $countryid = ''])
integer great_circle_distance ([integer $lat1 = ''], [integer $lon1 = ''], [integer $lat2 = ''], [integer $lon2 = ''], string 4)
string print_distance_results ([integer $countryid1 = 0], [string $zipcode1 = ''], [string $countryid2 = 0], [string $zipcode2 = ''], [integer $inputdistance = 0])
Variables
mixed $accepted_countries = array(
'262',
'330',
'500',
'114',
'307',
'361',
'130',
'156',
'375',
'315',
'357',
'381',
'384',
'386'
)
(line 68)

Accepted country ids allowed for distance calculation operations

mixed $countries = array(
'262' => 'UK',
'330' => 'CAN',
'500' => 'USA',
'114' => 'NL',
'307' => 'AUS',
'361' => 'DE',
'130' => 'PL',
'156' => 'SP',
'375' => 'IN',
'315' => 'BE',
'357' => 'FR',
'381' => 'IT',
'384' => 'JP',
'386' => 'KE'
)
(line 48)

Country ids to short form identifiers accepted in the distance calculation server

mixed $dbtables = array(
'CAN' => 'distance_canada',
'USA' => 'distance_usa',
'UK' => 'distance_uk',
'NL' => 'distance_nl',
'AUS' => 'distance_au',
'DE' => 'distance_de',
'PL' => 'distance_pl',
'SP' => 'distance_sp',
'IN' => 'distance_in',
'BE' => 'distance_be',
'FR' => 'distance_fr',
'IT' => 'distance_it',
'JP' => 'distance_jp',
'KE' => 'distance_ke',

// when searching from Canada to x country
'CANUSA' => array('distance_canada', 'distance_usa'),'CANUK'=>array('distance_canada','distance_uk'),'CANNL'=>array('distance_canada','distance_nl'),'CANAUS'=>array('distance_canada','distance_au'),'CANDE'=>array('distance_canada','distance_de'),'CANPL'=>array('distance_canada','distance_pl'),'CANSP'=>array('distance_canada','distance_sp'),'CANIN'=>array('distance_canada','distance_in'),'CANBE'=>array('distance_canada','distance_be'),'CANFR'=>array('distance_canada','distance_fr'),'CANIT'=>array('distance_canada','distance_it'),'CANJP'=>array('distance_canada','distance_jp'),'CANKE'=>array('distance_canada','distance_ke'),// when searching from US to x country
'USACAN'=>array('distance_usa','distance_canada'),'USAUK'=>array('distance_usa','distance_uk'),'USANL'=>array('distance_usa','distance_nl'),'USAAUS'=>array('distance_usa','distance_au'),'USADE'=>array('distance_usa','distance_de'),'USAPL'=>array('distance_usa','distance_pl'),'USASP'=>array('distance_usa','distance_sp'),'USAIN'=>array('distance_usa','distance_in'),'USABE'=>array('distance_usa','distance_be'),'USAFR'=>array('distance_usa','distance_fr'),'USAIT'=>array('distance_usa','distance_it'),'USAJP'=>array('distance_usa','distance_jp'),'USAKE'=>array('distance_usa','distance_ke'),// when searching from UK to x country
'UKCAN'=>array('distance_uk','distance_canada'),'UKUSA'=>array('distance_uk','distance_usa'),'UKNL'=>array('distance_uk','distance_nl'),'UKAUS'=>array('distance_uk','distance_au'),'UKDE'=>array('distance_uk','distance_de'),'UKPL'=>array('distance_uk','distance_pl'),'UKSP'=>array('distance_uk','distance_sp'),'UKIN'=>array('distance_uk','distance_in'),'UKBE'=>array('distance_uk','distance_be'),'UKFR'=>array('distance_uk','distance_fr'),'UKIT'=>array('distance_uk','distance_it'),'UKJP'=>array('distance_uk','distance_jp'),'UKKE'=>array('distance_uk','distance_ke'),// when searching from NL to x country
'NLCAN'=>array('distance_nl','distance_canada'),'NLUSA'=>array('distance_nl','distance_usa'),'NLUK'=>array('distance_nl','distance_uk'),'NLAUS'=>array('distance_nl','distance_au'),'NLDE'=>array('distance_nl','distance_de'),'NLPL'=>array('distance_nl','distance_pl'),'NLSP'=>array('distance_nl','distance_sp'),'NLIN'=>array('distance_nl','distance_in'),'NLBE'=>array('distance_nl','distance_be'),'NLFR'=>array('distance_nl','distance_fr'),'NLIT'=>array('distance_nl','distance_it'),'NLJP'=>array('distance_nl','distance_jp'),'NLKE'=>array('distance_nl','distance_ke'),// when searching from AUS to x country
'AUSCAN'=>array('distance_au','distance_canada'),'AUSUSA'=>array('distance_au','distance_usa'),'AUSUK'=>array('distance_au','distance_uk'),'AUSNL'=>array('distance_au','distance_nl'),'AUSDE'=>array('distance_au','distance_de'),'AUSPL'=>array('distance_au','distance_pl'),'AUSSP'=>array('distance_au','distance_sp'),'AUSIN'=>array('distance_au','distance_in'),'AUSBE'=>array('distance_au','distance_be'),'AUSFR'=>array('distance_au','distance_fr'),'AUSIT'=>array('distance_au','distance_it'),'AUSJP'=>array('distance_au','distance_jp'),'AUSKE'=>array('distance_au','distance_ke'),// when searching from DE to x country
'DECAN'=>array('distance_de','distance_canada'),'DEUSA'=>array('distance_de','distance_usa'),'DEUK'=>array('distance_de','distance_uk'),'DENL'=>array('distance_de','distance_nl'),'DEAUS'=>array('distance_de','distance_au'),'DEPL'=>array('distance_de','distance_pl'),'DESP'=>array('distance_de','distance_sp'),'DEIN'=>array('distance_de','distance_in'),'DEBE'=>array('distance_de','distance_be'),'DEFR'=>array('distance_de','distance_fr'),'DEIT'=>array('distance_de','distance_it'),'DEJP'=>array('distance_de','distance_jp'),'DEKE'=>array('distance_de','distance_ke'),// when searching from PL to x country
'PLCAN'=>array('distance_pl','distance_canada'),'PLUSA'=>array('distance_pl','distance_usa'),'PLUK'=>array('distance_pl','distance_uk'),'PLNL'=>array('distance_pl','distance_nl'),'PLAUS'=>array('distance_pl','distance_au'),'PLDE'=>array('distance_pl','distance_de'),'PLSP'=>array('distance_pl','distance_sp'),'PLIN'=>array('distance_pl','distance_in'),'PLBE'=>array('distance_pl','distance_be'),'PLFR'=>array('distance_pl','distance_fr'),'PLIT'=>array('distance_pl','distance_it'),'PLJP'=>array('distance_pl','distance_jp'),'PLKE'=>array('distance_pl','distance_ke'),// when searching from SP to x country
'SPCAN'=>array('distance_sp','distance_canada'),'SPUSA'=>array('distance_sp','distance_usa'),'SPUK'=>array('distance_sp','distance_uk'),'SPNL'=>array('distance_sp','distance_nl'),'SPAUS'=>array('distance_sp','distance_au'),'SPDE'=>array('distance_sp','distance_de'),'SPPL'=>array('distance_sp','distance_pl'),'SPIN'=>array('distance_sp','distance_in'),'SPBE'=>array('distance_sp','distance_be'),'SPFR'=>array('distance_sp','distance_fr'),'SPIT'=>array('distance_sp','distance_it'),'SPJP'=>array('distance_sp','distance_jp'),'SPKE'=>array('distance_sp','distance_ke'),// when searching from IN to x country
'INCAN'=>array('distance_in','distance_canada'),'INUSA'=>array('distance_in','distance_usa'),'INUK'=>array('distance_in','distance_uk'),'INNL'=>array('distance_in','distance_nl'),'INAUS'=>array('distance_in','distance_au'),'INDE'=>array('distance_in','distance_de'),'INPL'=>array('distance_in','distance_pl'),'INSP'=>array('distance_in','distance_sp'),'INBE'=>array('distance_in','distance_be'),'INFR'=>array('distance_in','distance_fr'),'INIT'=>array('distance_in','distance_it'),'INJP'=>array('distance_in','distance_jp'),'INKE'=>array('distance_in','distance_ke'),// when searching from BE to x country
'BECAN'=>array('distance_be','distance_canada'),'BEUSA'=>array('distance_be','distance_usa'),'BEUK'=>array('distance_be','distance_uk'),'BENL'=>array('distance_be','distance_nl'),'BEAUS'=>array('distance_be','distance_au'),'BEDE'=>array('distance_be','distance_de'),'BEPL'=>array('distance_be','distance_pl'),'BESP'=>array('distance_be','distance_sp'),'BEFR'=>array('distance_be','distance_fr'),'BEIN'=>array('distance_be','distance_in'),'BEIT'=>array('distance_be','distance_it'),'BEJP'=>array('distance_be','distance_jp'),'BEKE'=>array('distance_be','distance_ke'),// when searching from FR to x country
'FRCAN'=>array('distance_fr','distance_canada'),'FRUSA'=>array('distance_fr','distance_usa'),'FRUK'=>array('distance_fr','distance_uk'),'FRNL'=>array('distance_fr','distance_nl'),'FRAUS'=>array('distance_fr','distance_au'),'FRDE'=>array('distance_fr','distance_de'),'FRPL'=>array('distance_fr','distance_pl'),'FRSP'=>array('distance_fr','distance_sp'),'FRBE'=>array('distance_fr','distance_be'),'FRIN'=>array('distance_fr','distance_in'),'FRIT'=>array('distance_fr','distance_it'),'FRJP'=>array('distance_fr','distance_jp'),'FRKE'=>array('distance_fr','distance_ke'),// when searching from IT to x country
'ITCAN'=>array('distance_it','distance_canada'),'ITUSA'=>array('distance_it','distance_usa'),'ITUK'=>array('distance_it','distance_uk'),'ITNL'=>array('distance_it','distance_nl'),'ITAUS'=>array('distance_it','distance_au'),'ITDE'=>array('distance_it','distance_de'),'ITPL'=>array('distance_it','distance_pl'),'ITSP'=>array('distance_it','distance_sp'),'ITBE'=>array('distance_it','distance_be'),'ITIN'=>array('distance_it','distance_in'),'ITFR'=>array('distance_it','distance_fr'),'ITJP'=>array('distance_it','distance_jp'),'ITKE'=>array('distance_it','distance_ke'),// when searching from JP to x country
'JPCAN'=>array('distance_jp','distance_canada'),'JPUSA'=>array('distance_jp','distance_usa'),'JPUK'=>array('distance_jp','distance_uk'),'JPNL'=>array('distance_jp','distance_nl'),'JPAUS'=>array('distance_jp','distance_au'),'JPDE'=>array('distance_jp','distance_de'),'JPPL'=>array('distance_jp','distance_pl'),'JPSP'=>array('distance_jp','distance_sp'),'JPBE'=>array('distance_jp','distance_be'),'JPIN'=>array('distance_jp','distance_in'),'JPFR'=>array('distance_jp','distance_fr'),'JPIT'=>array('distance_jp','distance_it'),'JPKE'=>array('distance_jp','distance_ke'),// when searching from KE to x country
'KECAN'=>array('distance_ke','distance_canada'),'KEUSA'=>array('distance_ke','distance_usa'),'KEUK'=>array('distance_ke','distance_uk'),'KENL'=>array('distance_ke','distance_nl'),'KEAUS'=>array('distance_ke','distance_au'),'KEDE'=>array('distance_ke','distance_de'),'KEPL'=>array('distance_ke','distance_pl'),'KESP'=>array('distance_ke','distance_sp'),'KEBE'=>array('distance_ke','distance_be'),'KEIN'=>array('distance_ke','distance_in'),'KEFR'=>array('distance_ke','distance_fr'),'KEIT'=>array('distance_ke','distance_it'),'KEJP'=>array('distance_ke','distance_jp'),)
(line 188)

Database tables to call based on a distance operation

mixed $distance_areacodes = array(
'CAN' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'USA' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'UK' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'NL' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'AUS' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'DE' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'PL' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'SP' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'IN' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'BE' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'FR' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'IT' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'JP' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'KE' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />'
)
(line 148)

Area codes for the AdminCP > Distance area

mixed $distance_cities = array(
'CAN' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'USA' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'UK' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'NL' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'AUS' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'DE' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'PL' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'SP' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'IN' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'BE' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'FR' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'IT' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'JP' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'KE' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />'
)
(line 108)

Cities for the AdminCP > Distance area

mixed $distance_count = array(
'CAN' => '774,014',
'USA' => '70,706',
'UK' => '1,969,257',
'NL' => '435,296',
'AUS' => '16,079',
'DE' => '16,375',
'PL' => '21,987',
'SP' => '54,116',
'IN' => '14,568',
'BE' => '3,778',
'FR' => '39,069',
'IT' => '17,965',
'JP' => '83,289',
'KE' => '0'
)
(line 168)

Table counts for the AdminCP > Distance area

mixed $distance_states = array(
'CAN' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'USA' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'UK' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'NL' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'AUS' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'DE' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'PL' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'SP' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'IN' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'BE' => '<img src="../images/default/unchecked.gif" border="0" alt="" id="" />',
'FR' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'IT' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'JP' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />',
'KE' => '<img src="../images/default/checked.gif" border="0" alt="" id="" />'
)
(line 128)

States for the AdminCP > Distance area

mixed $distance_titles = array(
'CAN' => 'Canada',
'USA' => 'United States',
'UK' => 'United Kingdom',
'NL' => 'Netherlands',
'AUS' => 'Australia',
'DE' => 'Germany',
'PL' => 'Poland',
'SP' => 'Spain',
'IN' => 'India',
'BE' => 'Belgium',
'FR' => 'France',
'IT' => 'Italy',
'JP' => 'Japan',
'KE' => 'Kenya'
)
(line 88)

Lables for the AdminCP > Distance area

Methods
fetch_distance (line 522)

Function to calculate the great circle distance between two zip or postal codes.

  • return: This function returns the distance between two longitude and latitude coordinates (default = miles)
integer fetch_distance ([string $zipcode1 = ''], [string $zipcode2 = ''], [string $zipcodetype = ''])
  • string $zipcode1: zip code 1
  • string $zipcode2: zip code 2
  • string $zipcodetype: zip code fetch type (de, usde, cande, nlde, etc)
fetch_distance_response (line 431)

Function to fetch the distance between two postal/zip codes (postal/zip code 1 vs postal/zip code 2).

The usage of this calculation works best within Canada & USA although it will also work for other countries. Additionally this function will accept two city names (city name 1 vs city name 2). This function is now cachable.

  • return: This function returns the actual distance between the two elements and will also properly format the result calculation (based on Miles) into KM if you have this option enabled within the AdminCP.
integer fetch_distance_response ([string $zipcode1 = ''], [string $zipcode2 = ''], [string $zipcodetype = ''], [string $city1 = ''], [string $city2 = ''], [string $inputdistance = 0])
  • string $zipcode1: zip code 1
  • string $zipcode2: zip code 2
  • string $zipcodetype: zip code search type (de, usde, cande, nlde, etc)
  • string $city1: city 1
  • string $city2: city 2
  • string $inputdistance: force which country datastore to use (CAN, USA, CANUSA, USACAN, etc)
fetch_installed_countries (line 756)
void fetch_installed_countries ()
fetch_sql_as_distance (line 615)

Function to fetch valid sql code based on distance calculation mainly used within the search system

  • return: Returns array holding 'leftjoin' and their associated distance 'fields'
array fetch_sql_as_distance ([string $zipcode = ''], [integer $countryid = 0], [string $fieldname = ''])
  • string $zipcode: zip code
  • integer $countryid: country id
  • string $fieldname: field name of zipcode
fetch_zips_in_range (line 654)

Function to return an array of the zip or postal codes within $radius of $zipcode.

Returns an array with keys as the zip or postal codes and their cooresponding values as the distance from the zipcode defined in $zipcode.

  • return: This function returns the longitude and latitude points for a given zip or postal code
integer fetch_zips_in_range ([string $zipcodetable = ''], [string $fieldname = ''], [string $zipcode = ''], [integer $radius = ''], [integer $countryid = ''], [boolean $includedistance = false], [boolean $leftjoinonly = false], [boolean $radiusjoin = false], [ $fetchcityonly = false])
  • string $zipcodetable: table name of requested zipcode data
  • string $fieldname: fieldname of zipcode
  • string $zipcode: zip or postal code
  • integer $radius: radius to search
  • integer $countryid: country id
  • boolean $includedistance: include distance in the array output? ie: [90210] => 33.5 (default false)
  • boolean $leftjoinonly: defines if the returned output is an SQL left join (to use later in search)
  • boolean $radiusjoin: defines if the returned output should only contain the city name for the zip code
  • $fetchcityonly
fetch_zip_longitude_latitude (line 585)

Function to fetch a single specific longitude and latitude point for a given (zip, postal code or city name).

  • return: This function returns the longitude and latitude points for a given zip/postal/city name
integer fetch_zip_longitude_latitude ([string $zipcode = ''], [integer $countryid = ''])
  • string $zipcode: zip or postal code
  • integer $countryid: country id
great_circle_distance (line 502)

Function to calculate the great circle distance between two zip or postal codes.

  • return: This function returns the distance between two longitude and latitude coordinates (default = miles)
integer great_circle_distance ([integer $lat1 = ''], [integer $lon1 = ''], [integer $lat2 = ''], [integer $lon2 = ''], string 4)
  • string 4: unit measure (K = km, N = nautical, M = miles)
  • integer $lat1: latitude 1
  • integer $lon1: longitude 1
  • integer $lat2: latitude 2
  • integer $lon2: longitude 2
print_distance_results (line 469)

Function to print the results of the internal function fetch_distance_response to fetch the distance between two postal/zip codes (postal/zip code 1 vs postal/zip code 2).

  • return: This function returns the actual distance between two areas (ie: 39.4 KM) otherwise the printed result will be " - "
string print_distance_results ([integer $countryid1 = 0], [string $zipcode1 = ''], [string $countryid2 = 0], [string $zipcode2 = ''], [integer $inputdistance = 0])
  • integer $countryid1: country id 1
  • string $zipcode1: zip code 1
  • string $countryid2: country id 2 (optional)
  • string $zipcode2: zip code 2
  • integer $inputdistance: input distance (optional if we already have a number and just want formatting)

Documentation generated on Mon, 08 Aug 2011 17:40:54 +0200 by phpDocumentor 1.4.1