/**
* Tries to fill in any missing information in a location result.
*
* This method will try to set the continent code, continent name and country code
* using other information.
*
* Note: This function must always be called by location providers in getLocation.
*
* @param array $location The location information to modify.
*/
public function completeLocationResult(&$location)
{
// fill in continent code if country code is present
if (empty($location[self::CONTINENT_CODE_KEY]) && !empty($location[self::COUNTRY_CODE_KEY])) {
$countryCode = strtolower($location[self::COUNTRY_CODE_KEY]);
$location[self::CONTINENT_CODE_KEY] = Common::getContinent($countryCode);
}
// fill in continent name if continent code is present
if (empty($location[self::CONTINENT_NAME_KEY]) && !empty($location[self::CONTINENT_CODE_KEY])) {
$continentCode = strtolower($location[self::CONTINENT_CODE_KEY]);
$location[self::CONTINENT_NAME_KEY] = continentTranslate($continentCode);
}
// fill in country name if country code is present
if (empty($location[self::COUNTRY_NAME_KEY]) && !empty($location[self::COUNTRY_CODE_KEY])) {
$countryCode = strtolower($location[self::COUNTRY_CODE_KEY]);
$location[self::COUNTRY_NAME_KEY] = countryTranslate($countryCode);
}
// deal w/ improper latitude/longitude & round proper values
if (!empty($location[self::LATITUDE_KEY])) {
if (is_numeric($location[self::LATITUDE_KEY])) {
$location[self::LATITUDE_KEY] = round($location[self::LATITUDE_KEY], self::GEOGRAPHIC_COORD_PRECISION);
} else {
unset($location[self::LATITUDE_KEY]);
}
}
if (!empty($location[self::LONGITUDE_KEY])) {
if (is_numeric($location[self::LONGITUDE_KEY])) {
$location[self::LONGITUDE_KEY] = round($location[self::LONGITUDE_KEY], self::GEOGRAPHIC_COORD_PRECISION);
} else {
unset($location[self::LONGITUDE_KEY]);
}
}
}