Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorBenaka Moorthi <benaka.moorthi@gmail.com>2013-09-25 06:58:57 +0400
committerBenaka Moorthi <benaka.moorthi@gmail.com>2013-09-25 06:58:57 +0400
commit085d752a47ad9535cdf7252bd9507830406782e9 (patch)
tree9cb7843caf5130356d140a440d4f9b6bad96e106 /core
parent1fac8e8e5c004b0c44abbd89c894ffc3b4120d0a (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.php3
-rw-r--r--core/Tracker/Request.php21
-rw-r--r--core/Tracker/Visit.php78
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
*/