Piwik\Plugins\UserCountry\LocationProvider::completeLocationResult PHP Method

completeLocationResult() public method

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.
public completeLocationResult ( array &$location )
$location array 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]);
            }
        }
    }

Usage Example

Example #1
0
 /**
  * Attempts to fill in some missing information in a GeoIP location.
  *
  * This method will call LocationProvider::completeLocationResult and then
  * try to set the region name of the location if the country code & region
  * code are set.
  *
  * @param array $location The location information to modify.
  */
 public function completeLocationResult(&$location)
 {
     $this->fixupLocation($location);
     parent::completeLocationResult($location);
     // set region name if region code is set
     if (empty($location[self::REGION_NAME_KEY]) && !empty($location[self::REGION_CODE_KEY]) && !empty($location[self::COUNTRY_CODE_KEY])) {
         $countryCode = $location[self::COUNTRY_CODE_KEY];
         $regionCode = (string) $location[self::REGION_CODE_KEY];
         $location[self::REGION_NAME_KEY] = self::getRegionNameFromCodes($countryCode, $regionCode);
     }
 }