Skip to content
Extraits de code Groupes Projets
Valider 7156a97e rédigé par benakamoorthi's avatar benakamoorthi
Parcourir les fichiers

Fixes #3481, added extra tracking query parameters: lat, long, city, region, country.


git-svn-id: http://dev.piwik.org/svn/trunk@7480 59fd770c-687e-43c8-a1e3-f5a4ff64c105
parent 5ecce0ef
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -608,6 +608,25 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface ...@@ -608,6 +608,25 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
$userInfo = array('lang' => $browserLang, 'ip' => Piwik_IP::N2P($this->getVisitorIp())); $userInfo = array('lang' => $browserLang, 'ip' => Piwik_IP::N2P($this->getVisitorIp()));
Piwik_PostEvent('Tracker.getVisitorLocation', $location, $userInfo); Piwik_PostEvent('Tracker.getVisitorLocation', $location, $userInfo);
// check for location override query parameters (ie, lat, long, country, region, city)
$locationOverrideParams = array(
'country' => array('string', Piwik_UserCountry_LocationProvider::COUNTRY_CODE_KEY),
'region' => array('string', Piwik_UserCountry_LocationProvider::REGION_CODE_KEY),
'city' => array('string', Piwik_UserCountry_LocationProvider::CITY_NAME_KEY),
'lat' => array('float', Piwik_UserCountry_LocationProvider::LATITUDE_KEY),
'long' => array('float', Piwik_UserCountry_LocationProvider::LONGITUDE_KEY),
);
foreach ($locationOverrideParams as $queryParamName => $info)
{
list($type, $locationResultKey) = $info;
$value = Piwik_Common::getRequestVar($queryParamName, false, $type, $this->request);
if (!empty($value))
{
$location[$locationResultKey] = $value;
}
}
if (empty($location['country_code'])) // sanity check if (empty($location['country_code'])) // sanity check
{ {
$location['country_code'] = self::UNKNOWN_CODE; $location['country_code'] = self::UNKNOWN_CODE;
......
...@@ -251,6 +251,61 @@ class PiwikTracker ...@@ -251,6 +251,61 @@ class PiwikTracker
$this->userAgent = $userAgent; $this->userAgent = $userAgent;
} }
/**
* Sets the country of the visitor. If not used, Piwik will try to find the country
* using either the visitor's IP address or language.
*
* @param string $country
*/
public function setCountry($country)
{
$this->country = $country;
}
/**
* Sets the region of the visitor. If not used, Piwik may try to find the region
* using the visitor's IP address (if configured to do so).
*
* @param string $region
*/
public function setRegion($region)
{
$this->region = $region;
}
/**
* Sets the city of the visitor. If not used, Piwik may try to find the city
* using the visitor's IP address (if configured to do so).
*
* @param string $city
*/
public function setCity($city)
{
$this->city = $city;
}
/**
* Sets the latitude of the visitor. If not used, Piwik may try to find the visitor's
* latitude using the visitor's IP address (if configured to do so).
*
* @param float $lat
*/
public function setLatitude($lat)
{
$this->lat = $lat;
}
/**
* Sets the longitude of the visitor. If not used, Piwik may try to find the visitor's
* longitude using the visitor's IP address (if configured to do so).
*
* @param float $long
*/
public function setLongitude($long)
{
$this->long = $long;
}
/** /**
* Enables the bulk request feature. When used, each tracking action is stored until the * Enables the bulk request feature. When used, each tracking action is stored until the
* doBulkTrack method is called. This method will send all tracking data at once. * doBulkTrack method is called. This method will send all tracking data at once.
...@@ -993,6 +1048,13 @@ class PiwikTracker ...@@ -993,6 +1048,13 @@ class PiwikTracker
(!empty($this->attributionInfo[2]) ? '&_refts=' . $this->attributionInfo[2] : '') . (!empty($this->attributionInfo[2]) ? '&_refts=' . $this->attributionInfo[2] : '') .
// Referrer URL // Referrer URL
(!empty($this->attributionInfo[3]) ? '&_ref=' . urlencode($this->attributionInfo[3]) : '') . (!empty($this->attributionInfo[3]) ? '&_ref=' . urlencode($this->attributionInfo[3]) : '') .
// custom location info
(!empty($this->country) ? '&country='.urlencode($this->country) : '') .
(!empty($this->region) ? '&region='.urlencode($this->region) : '') .
(!empty($this->city) ? '&city='.urlencode($this->city) : '') .
(!empty($this->lat) ? '&lat='.urlencode($this->lat) : '') .
(!empty($this->long) ? '&long='.urlencode($this->long) : '') .
// DEBUG // DEBUG
$this->DEBUG_APPEND_URL $this->DEBUG_APPEND_URL
......
...@@ -53,6 +53,8 @@ class Test_Piwik_Integration_ManyVisitorsOneWebsiteTest extends IntegrationTestC ...@@ -53,6 +53,8 @@ class Test_Piwik_Integration_ManyVisitorsOneWebsiteTest extends IntegrationTestC
self::setLocationProvider('GeoIP.dat'); self::setLocationProvider('GeoIP.dat');
self::trackVisits(2, true); self::trackVisits(2, true);
self::trackOtherVisits();
} catch(Exception $e) { } catch(Exception $e) {
// Skip whole test suite if an error occurs while setup // Skip whole test suite if an error occurs while setup
throw new PHPUnit_Framework_SkippedTestSuiteError($e->getMessage()); throw new PHPUnit_Framework_SkippedTestSuiteError($e->getMessage());
...@@ -165,6 +167,23 @@ class Test_Piwik_Integration_ManyVisitorsOneWebsiteTest extends IntegrationTestC ...@@ -165,6 +167,23 @@ class Test_Piwik_Integration_ManyVisitorsOneWebsiteTest extends IntegrationTestC
} }
} }
protected static function trackOtherVisits()
{
$dateTime = self::$dateTime;
$idSite = self::$idSite;
$t = self::getTracker($idSite, $dateTime, $defaultInit = true);
$t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addDay(20)->getDatetime());
$t->setIp('194.57.91.215');
$t->setCountry('us');
$t->setRegion('CA');
$t->setCity('not a city');
$t->setLatitude(1);
$t->setLongitude(2);
$t->setUrl("http://piwik.net/grue/lair");
self::checkResponse($t->doTrackPageView('It\'s pitch black...'));
}
public static function setLocationProvider( $file ) public static function setLocationProvider( $file )
{ {
Piwik_UserCountry_LocationProvider_GeoIp::$dbNames['loc'] = array($file); Piwik_UserCountry_LocationProvider_GeoIp::$dbNames['loc'] = array($file);
......
...@@ -246,4 +246,30 @@ ...@@ -246,4 +246,30 @@
<region_name>Kent</region_name> <region_name>Kent</region_name>
<logo>plugins/UserCountry/flags/gb.png</logo> <logo>plugins/UserCountry/flags/gb.png</logo>
</row> </row>
<row>
<label>not a city, California, United States</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<goals>
<row idgoal='1'>
<nb_conversions>1</nb_conversions>
<nb_visits_converted>1</nb_visits_converted>
<revenue>5</revenue>
</row>
</goals>
<nb_conversions>1</nb_conversions>
<revenue>5</revenue>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<lat>1</lat>
<long>2</long>
<city_name>not a city</city_name>
<region>CA</region>
<country>us</country>
<country_name>United States</country_name>
<region_name>California</region_name>
<logo>plugins/UserCountry/flags/us.png</logo>
</row>
</result> </result>
\ No newline at end of file
...@@ -21,21 +21,21 @@ ...@@ -21,21 +21,21 @@
</row> </row>
<row> <row>
<label>North America</label> <label>North America</label>
<nb_visits>6</nb_visits> <nb_visits>7</nb_visits>
<nb_actions>6</nb_actions> <nb_actions>7</nb_actions>
<max_actions>1</max_actions> <max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length> <sum_visit_length>0</sum_visit_length>
<bounce_count>6</bounce_count> <bounce_count>7</bounce_count>
<goals> <goals>
<row idgoal='1'> <row idgoal='1'>
<nb_conversions>6</nb_conversions> <nb_conversions>7</nb_conversions>
<nb_visits_converted>6</nb_visits_converted> <nb_visits_converted>7</nb_visits_converted>
<revenue>30</revenue> <revenue>35</revenue>
</row> </row>
</goals> </goals>
<nb_conversions>6</nb_conversions> <nb_conversions>7</nb_conversions>
<revenue>30</revenue> <revenue>35</revenue>
<sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors> <sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors>
<code>North America</code> <code>North America</code>
</row> </row>
<row> <row>
......
...@@ -176,4 +176,26 @@ ...@@ -176,4 +176,26 @@
<logoWidth>16</logoWidth> <logoWidth>16</logoWidth>
<logoHeight>11</logoHeight> <logoHeight>11</logoHeight>
</row> </row>
<row>
<label>United States</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<goals>
<row idgoal='1'>
<nb_conversions>1</nb_conversions>
<nb_visits_converted>1</nb_visits_converted>
<revenue>5</revenue>
</row>
</goals>
<nb_conversions>1</nb_conversions>
<revenue>5</revenue>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<code>us</code>
<logo>plugins/UserCountry/flags/us.png</logo>
<logoWidth>16</logoWidth>
<logoHeight>11</logoHeight>
</row>
</result> </result>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<result>8</result> <result>9</result>
\ No newline at end of file \ No newline at end of file
...@@ -184,4 +184,27 @@ ...@@ -184,4 +184,27 @@
<region_name>London, City of</region_name> <region_name>London, City of</region_name>
<logo>plugins/UserCountry/flags/gb.png</logo> <logo>plugins/UserCountry/flags/gb.png</logo>
</row> </row>
<row>
<label>California, United States</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<goals>
<row idgoal='1'>
<nb_conversions>1</nb_conversions>
<nb_visits_converted>1</nb_visits_converted>
<revenue>5</revenue>
</row>
</goals>
<nb_conversions>1</nb_conversions>
<revenue>5</revenue>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<region>CA</region>
<country>us</country>
<country_name>United States</country_name>
<region_name>California</region_name>
<logo>plugins/UserCountry/flags/us.png</logo>
</row>
</result> </result>
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter