diff options
author | Benaka Moorthi <benaka.moorthi@gmail.com> | 2013-09-25 06:58:57 +0400 |
---|---|---|
committer | Benaka Moorthi <benaka.moorthi@gmail.com> | 2013-09-25 06:58:57 +0400 |
commit | 085d752a47ad9535cdf7252bd9507830406782e9 (patch) | |
tree | 9cb7843caf5130356d140a440d4f9b6bad96e106 /core | |
parent | 1fac8e8e5c004b0c44abbd89c894ffc3b4120d0a (diff) |
Move UserCountry specific logic out of core tracker files and into UserCountry plugin and remove some uses of Zend_Registry in tests.
Diffstat (limited to 'core')
-rw-r--r-- | core/Tracker/Cache.php | 3 | ||||
-rw-r--r-- | core/Tracker/Request.php | 21 | ||||
-rw-r--r-- | core/Tracker/Visit.php | 78 |
3 files changed, 13 insertions, 89 deletions
diff --git a/core/Tracker/Cache.php b/core/Tracker/Cache.php index 7319818e41..2acf983c78 100644 --- a/core/Tracker/Cache.php +++ b/core/Tracker/Cache.php @@ -15,7 +15,6 @@ use Piwik\Config; use Piwik\Piwik; use Piwik\CacheFile; use Piwik\Tracker; -use Piwik\Plugins\UserCountry\LocationProvider; /** * Simple cache mechanism used in Tracker to avoid requesting settings from mysql on every request @@ -104,8 +103,8 @@ class Cache $cacheContent = array( 'isBrowserTriggerEnabled' => Rules::isBrowserTriggerEnabled(), 'lastTrackerCronRun' => Piwik_GetOption('lastTrackerCronRun'), - 'currentLocationProviderId' => LocationProvider::getCurrentProviderId(), ); + Piwik_PostEvent('Tracker.setTrackerCacheGeneral', array(&$cacheContent)); self::setCacheGeneral($cacheContent); return $cacheContent; } diff --git a/core/Tracker/Request.php b/core/Tracker/Request.php index 0687090245..e81838b233 100644 --- a/core/Tracker/Request.php +++ b/core/Tracker/Request.php @@ -8,7 +8,6 @@ use Piwik\Cookie; use Piwik\IP; use Piwik\Tracker; use Piwik\Tracker\Cache; -use Piwik\Plugins\UserCountry\LocationProvider; /** * Piwik - Open source web analytics @@ -483,29 +482,29 @@ class Request return $this->forcedVisitorId; } - public function enrichLocation($location) + public function overrideLocation(&$visitorInfo) { if (!$this->isAuthenticated()) { - return $location; + return; } // check for location override query parameters (ie, lat, long, country, region, city) static $locationOverrideParams = array( - 'country' => array('string', LocationProvider::COUNTRY_CODE_KEY), - 'region' => array('string', LocationProvider::REGION_CODE_KEY), - 'city' => array('string', LocationProvider::CITY_NAME_KEY), - 'lat' => array('float', LocationProvider::LATITUDE_KEY), - 'long' => array('float', LocationProvider::LONGITUDE_KEY), + 'country' => array('string', 'location_country'), + 'region' => array('string', 'location_region'), + 'city' => array('string', 'location_city'), + 'lat' => array('float', 'location_latitude'), + 'long' => array('float', 'location_longitude'), ); foreach ($locationOverrideParams as $queryParamName => $info) { - list($type, $locationResultKey) = $info; + list($type, $visitorInfoKey) = $info; $value = Common::getRequestVar($queryParamName, false, $type, $this->params); if (!empty($value)) { - $location[$locationResultKey] = $value; + $visitorInfo[$visitorInfoKey] = $value; } } - return $location; + return; } public function getPlugins() diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php index f051658bba..3f3d7588ec 100644 --- a/core/Tracker/Visit.php +++ b/core/Tracker/Visit.php @@ -39,7 +39,6 @@ use Piwik\Tracker\Request; use Piwik\Tracker\Referrer; use Exception; use Piwik\Tracker\VisitExcluded; -use Piwik\Plugins\UserCountry\LocationProvider; use UserAgentParser; /** @@ -477,10 +476,6 @@ class Visit implements Tracker\VisitInterface 'location_browser_lang' => $userInfo['location_browser_lang'], ); - // add optional location components - $location = $this->getVisitorLocation($userInfo['location_browser_lang']); - $this->updateVisitInfoWithLocation($location); - // Add Custom variable key,value to the visitor array $this->visitorInfo = array_merge($this->visitorInfo, $this->visitorCustomVariables); @@ -489,6 +484,8 @@ class Visit implements Tracker\VisitInterface ); Piwik_PostEvent('Tracker.newVisitorInformation', array(&$this->visitorInfo, $extraInfo)); + $this->request->overrideLocation($this->visitorInfo); + $debugVisitInfo = $this->visitorInfo; $debugVisitInfo['idvisitor'] = bin2hex($debugVisitInfo['idvisitor']); $debugVisitInfo['config_id'] = bin2hex($debugVisitInfo['config_id']); @@ -511,77 +508,6 @@ class Visit implements Tracker\VisitInterface } /** - * Returns the location of the visitor, based on the visitor's IP and browser language. - * - * @param string $browserLang - * @return array See LocationProvider::getLocation for more info. - */ - private function getVisitorLocation($browserLang) - { - $location = array(); - $userInfo = array('lang' => $browserLang, 'ip' => IP::N2P($this->getVisitorIp())); - Piwik_PostEvent('Tracker.getVisitorLocation', array(&$location, $userInfo)); - - $location = $this->request->enrichLocation($location); - - if (empty($location['country_code'])) // sanity check - { - $location['country_code'] = self::UNKNOWN_CODE; - } - - return $location; - } - - /** - * Sets visitor info array with location info. - * - * @param array $location See LocationProvider::getLocation for more info. - */ - private function updateVisitInfoWithLocation($location) - { - static $logVisitToLowerLocationMapping = array( - 'location_country' => LocationProvider::COUNTRY_CODE_KEY, - ); - - static $logVisitToLocationMapping = array( - 'location_region' => LocationProvider::REGION_CODE_KEY, - 'location_city' => LocationProvider::CITY_NAME_KEY, - 'location_latitude' => LocationProvider::LATITUDE_KEY, - 'location_longitude' => LocationProvider::LONGITUDE_KEY, - ); - - foreach ($logVisitToLowerLocationMapping as $column => $locationKey) { - if (!empty($location[$locationKey])) { - $this->visitorInfo[$column] = strtolower($location[$locationKey]); - } - } - - foreach ($logVisitToLocationMapping as $column => $locationKey) { - if (!empty($location[$locationKey])) { - $this->visitorInfo[$column] = $location[$locationKey]; - } - } - - // if the location has provider/organization info, set it - if (!empty($location[LocationProvider::ISP_KEY])) { - $providerValue = $location[LocationProvider::ISP_KEY]; - - // if the org is set and not the same as the isp, add it to the provider value - if (!empty($location[LocationProvider::ORG_KEY]) - && $location[LocationProvider::ORG_KEY] != $providerValue - ) { - $providerValue .= ' - ' . $location[LocationProvider::ORG_KEY]; - } - } else if (!empty($location[LocationProvider::ORG_KEY])) { - $providerValue = $location[LocationProvider::ORG_KEY]; - } - - if (isset($providerValue)) { - $this->visitorInfo['location_provider'] = $providerValue; - } - } - - /** * Save new visitor information to log_visit table. * Provides pre- and post- event hooks (Tracker.saveVisitorInformation and Tracker.saveVisitorInformation.end) for plugins */ |