/** * @param Piwik_Event_Notification $notification notification object */ public function getVisitorLocation($notification) { require_once PIWIK_INCLUDE_PATH . "/plugins/UserCountry/LocationProvider.php"; $location =& $notification->getNotificationObject(); $visitorInfo = $notification->getNotificationInfo(); $id = Piwik_Common::getCurrentLocationProviderId(); $provider = Piwik_UserCountry_LocationProvider::getProviderById($id); if ($provider === false) { $id = Piwik_UserCountry_LocationProvider_Default::ID; $provider = Piwik_UserCountry_LocationProvider::getProviderById($id); printDebug("GEO: no current location provider sent, falling back to default '{$id}' one."); } $location = $provider->getLocation($visitorInfo); // if we can't find a location, use default provider if ($location === false) { $defaultId = Piwik_UserCountry_LocationProvider_Default::ID; $provider = Piwik_UserCountry_LocationProvider::getProviderById($defaultId); $location = $provider->getLocation($visitorInfo); printDebug("GEO: couldn't find a location with Geo Module '{$id}', using Default '{$defaultId}' provider as fallback..."); $id = $defaultId; } printDebug("GEO: Found IP location (provider '" . $id . "'): " . var_export($location, true)); }