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
diff options
context:
space:
mode:
-rw-r--r--composer.lock10
-rw-r--r--core/Concurrency/Lock.php21
-rw-r--r--core/DataAccess/ArchivingDbAdapter.php11
-rw-r--r--core/DataAccess/Model.php2
-rw-r--r--core/Profiler.php11
-rw-r--r--core/Tracker/GoalManager.php12
-rw-r--r--core/Tracker/PageUrl.php7
-rw-r--r--core/Tracker/Visit.php12
-rw-r--r--core/Tracker/VisitorRecognizer.php36
-rw-r--r--js/piwik.js35
-rw-r--r--js/piwik.min.js34
-rw-r--r--matomo.js34
-rw-r--r--piwik.js34
-rw-r--r--plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserEngine__API.getSuggestedValuesForSegment.xml1
-rw-r--r--plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml12
-rw-r--r--plugins/API/tests/System/expected/test_AutoSuggestAPITest_deviceType__API.getSuggestedValuesForSegment.xml1
-rw-r--r--plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_preArchivedSegment0_noOptions__Live.getLastVisitsDetails_year.xml16
-rw-r--r--plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_preArchivedSegment1_noOptions__Live.getLastVisitsDetails_year.xml16
-rw-r--r--plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_range_archive__DevicesDetection.getType_range.xml6
-rw-r--r--plugins/CoreHome/Columns/VisitLastActionTime.php11
-rw-r--r--plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php121
-rw-r--r--plugins/CustomVariables/tests/System/expected/test_CustomVariablesSystemTest__Live.getLastVisitsDetails_day.xml2
-rw-r--r--plugins/DevicesDetection/functions.php1
-rw-r--r--plugins/DevicesDetection/lang/en.json1
-rw-r--r--plugins/DevicesDetection/tests/System/expected/test___DevicesDetection.getType_day.xml6
-rw-r--r--plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__Goals.get_day.xml6
-rw-r--r--plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitTime.getVisitInformationPerServerTime_day.xml12
-rw-r--r--plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitsSummary.get_day.xml10
-rw-r--r--plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit_withLogLinkVisitActionSegment__Goals.get_day.xml6
-rw-r--r--plugins/Morpheus/templates/_jsGlobalVariables.twig2
-rw-r--r--plugins/Referrers/Columns/Base.php56
-rw-r--r--plugins/Referrers/tests/Integration/Columns/ReferrerUrlTest.php106
-rw-r--r--plugins/SitesManager/templates/_trackingCodeEmail.twig1
-rw-r--r--plugins/SitesManager/templates/siteWithoutData.twig1
m---------plugins/TagManager0
-rw-r--r--plugins/UserCountryMap/svg/DEU.svg2
-rw-r--r--tests/PHPUnit/Integration/Concurrency/LockTest.php56
-rw-r--r--tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php5
-rw-r--r--tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php114
-rw-r--r--tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_month.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_CustomEvents__Live.getLastVisitsDetails_day.xml12
-rw-r--r--tests/PHPUnit/System/expected/test_CustomEvents__Live.getLastVisitsDetails_month.xml12
-rw-r--r--tests/PHPUnit/System/expected/test_CustomEvents_eventCategoryOrNameMatch__Actions.getPageUrls_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_CustomEvents_eventValueMatch__Actions.getPageUrls_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_CustomEvents_segmentMatchesEventActionPlay__Actions.getPageUrls_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_month.xml210
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml244
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_month.xml210
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml244
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_range.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_day.xml32
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_month.xml210
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml244
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.get_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Actions.get_range.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__CustomVariables.getCustomVariables_month.xml40
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__CustomVariables.getUsagesOfSlots.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicePlugins.getPlugin_month.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrand_month.xml16
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserEngines_month.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserFamilies_month.xml18
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml26
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml18
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getModel_month.xml16
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getOsFamilies_month.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getOsVersions_month.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getType_month.xml22
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Goals.getDaysToConversion_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Goals.getMetrics_month.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Goals.getVisitsUntilConversion_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Goals.get_month.xml14
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml285
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getAll_month.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getOne_month.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Referrers.getReferrerType_month.xml16
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Referrers.get_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getResolution_month.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml16
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getContinent_month.xml18
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCountry_month.xml18
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml16
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__UserLanguage.getLanguageCode_month.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__UserLanguage.getLanguage_month.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitFrequency.get_month.xml12
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitFrequency.get_range.xml14
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getByDayOfWeek_month.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getVisitInformationPerLocalTime_month.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getVisitInformationPerServerTime_month.xml18
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByDaysSinceLast_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByDaysSinceLast_range.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByVisitCount_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByVisitCount_range.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerPage_month.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerPage_range.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerVisitDuration_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerVisitDuration_range.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getBounceCount_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getVisitsConverted_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getVisits_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.get_month.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Live.getLastVisitsDetails_range.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs_withEnhancedAndLast7__MultiSites.getAll_month.xml10
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__DevicesDetection.getType_day.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__DevicesDetection.getType_day.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitor_NoKeywordSpecified__Live.getLastVisitsDetails_day.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_PiwikTracker_trackForceUsingVisitId_insteadOfHeuristics_alsoTestsCampaignTracking__Live.getLastVisitsDetails_day.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml4
-rw-r--r--tests/PHPUnit/System/expected/test_csvExport__Live.getLastVisitsDetails_day.csvbin9590 -> 9422 bytes
-rw-r--r--tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisits.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisitsDetails_range.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Live.getLastVisits.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Live.getLastVisitsDetails_range.xml2
-rw-r--r--tests/UI/expected-screenshots/EmptySite_emptySiteDashboard.png4
-rw-r--r--tests/UI/expected-screenshots/OneClickUpdate_login.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_devices.png4
-rw-r--r--tests/javascript/index.php25
121 files changed, 1783 insertions, 1301 deletions
diff --git a/composer.lock b/composer.lock
index ecb39c7532..aa1d177503 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1236,16 +1236,16 @@
},
{
"name": "piwik/device-detector",
- "version": "3.12.4",
+ "version": "3.12.5",
"source": {
"type": "git",
"url": "https://github.com/matomo-org/device-detector.git",
- "reference": "6a92e45a55eb507f53581e9add7dc82835ad6424"
+ "reference": "8b0143211dd4496d86d3b1a6c8857a4d2014bbca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/6a92e45a55eb507f53581e9add7dc82835ad6424",
- "reference": "6a92e45a55eb507f53581e9add7dc82835ad6424",
+ "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/8b0143211dd4496d86d3b1a6c8857a4d2014bbca",
+ "reference": "8b0143211dd4496d86d3b1a6c8857a4d2014bbca",
"shasum": ""
},
"require": {
@@ -1287,7 +1287,7 @@
"parser",
"useragent"
],
- "time": "2020-03-31T08:53:12+00:00"
+ "time": "2020-04-29T12:12:31+00:00"
},
{
"name": "psr/container",
diff --git a/core/Concurrency/Lock.php b/core/Concurrency/Lock.php
index 360c771828..2019c2955f 100644
--- a/core/Concurrency/Lock.php
+++ b/core/Concurrency/Lock.php
@@ -8,11 +8,14 @@
*/
namespace Piwik\Concurrency;
+use Piwik\ArchiveProcessor\ArchivingStatus;
use Piwik\Common;
+use Piwik\Date;
class Lock
{
const MAX_KEY_LEN = 70;
+ const DEFAULT_TTL = 60;
/**
* @var LockBackend
@@ -24,18 +27,28 @@ class Lock
private $lockKey = null;
private $lockValue = null;
private $defaultTtl = null;
+ private $lastExpireTime = null;
public function __construct(LockBackend $backend, $lockKeyStart, $defaultTtl = null)
{
$this->backend = $backend;
$this->lockKeyStart = $lockKeyStart;
$this->lockKey = $this->lockKeyStart;
- $this->defaultTtl = $defaultTtl;
+ $this->defaultTtl = $defaultTtl ?: self::DEFAULT_TTL;
}
public function reexpireLock()
{
- $this->expireLock($this->defaultTtl);
+ $timeBetweenReexpires = $this->defaultTtl - ($this->defaultTtl / 4);
+
+ $now = Date::getNowTimestamp();
+ if (!empty($this->lastExpireTime) &&
+ $now <= $this->lastExpireTime + $timeBetweenReexpires
+ ) {
+ return false;
+ }
+
+ return $this->expireLock($this->defaultTtl);
}
public function getNumberOfAcquiredLocks()
@@ -81,6 +94,8 @@ class Lock
if ($locked) {
$this->lockValue = $lockValue;
+ $this->ttlUsed = $ttlInSeconds;
+ $this->lastExpireTime = Date::getNowTimestamp();
}
return $locked;
@@ -125,6 +140,8 @@ class Lock
return false;
}
+ $this->lastExpireTime = Date::getNowTimestamp();
+
return true;
} else {
Common::printDebug('Lock is not acquired, cannot update expiration.');
diff --git a/core/DataAccess/ArchivingDbAdapter.php b/core/DataAccess/ArchivingDbAdapter.php
index 9e1602d1db..b6d6c14a43 100644
--- a/core/DataAccess/ArchivingDbAdapter.php
+++ b/core/DataAccess/ArchivingDbAdapter.php
@@ -31,11 +31,6 @@ class ArchivingDbAdapter
*/
private $logger;
- /**
- * @var int
- */
- private $lastReexpireTime = null;
-
public function __construct($wrapped, Lock $archivingLock = null, LoggerInterface $logger = null)
{
$this->wrapped = $wrapped;
@@ -107,11 +102,7 @@ class ArchivingDbAdapter
private function reexpireLock()
{
if ($this->archivingLock) {
- $timeBetweenReexpires = ArchivingStatus::DEFAULT_ARCHIVING_TTL / 4;
- if ($this->lastReexpireTime + $timeBetweenReexpires < time()) {
- $this->archivingLock->reexpireLock();
- $this->lastReexpireTime = time();
- }
+ $this->archivingLock->reexpireLock();
}
}
} \ No newline at end of file
diff --git a/core/DataAccess/Model.php b/core/DataAccess/Model.php
index 9dbe315531..20bf53a129 100644
--- a/core/DataAccess/Model.php
+++ b/core/DataAccess/Model.php
@@ -68,7 +68,7 @@ class Model
WHERE name LIKE 'done%'
AND ts_archived IS NOT NULL
AND `value` NOT IN (" . ArchiveWriter::DONE_ERROR . ")
- GROUP BY idsite, date1, date2, period, name";
+ GROUP BY idsite, date1, date2, period, name HAVING count(*) > 1";
$archiveIds = array();
diff --git a/core/Profiler.php b/core/Profiler.php
index 58007a3a29..121c2c09b4 100644
--- a/core/Profiler.php
+++ b/core/Profiler.php
@@ -270,6 +270,17 @@ class Profiler
$outputDir . DIRECTORY_SEPARATOR . $runId . '.' . $profilerNamespace . '.xhprof',
serialize($xhprofData)
);
+ $meta = array('time' => time(), 'instance' => SettingsPiwik::getPiwikInstanceId());
+ if (!empty($_GET)) {
+ $meta['get'] = $_GET;
+ }
+ if (!empty($_POST)) {
+ $meta['post'] = $_POST;
+ }
+ file_put_contents(
+ $outputDir . DIRECTORY_SEPARATOR . $runId . '.' . $profilerNamespace . '.meta',
+ serialize($meta)
+ );
}
if (empty($runId)) {
diff --git a/core/Tracker/GoalManager.php b/core/Tracker/GoalManager.php
index a92593a648..86c01baae1 100644
--- a/core/Tracker/GoalManager.php
+++ b/core/Tracker/GoalManager.php
@@ -879,12 +879,20 @@ class GoalManager
{
$lastVisitTime = $visitProperties->getProperty('visit_last_action_time');
if (!$lastVisitTime) {
- $lastVisitTime = $request->getCurrentTimestamp();
+ $lastVisitTime = $request->getCurrentTimestamp(); // fallback in case visit_last_action_time is not set
}
+
+ if (!empty($lastVisitTime) && is_numeric($lastVisitTime)) {
+ // visit last action time might be 2020-05-05 00:00:00
+ // we want it to prevent this being converted to a timestamp of 2020
+ // resulting in some day in 1970
+ $lastVisitTime = Date::getDatetimeFromTimestamp($lastVisitTime);
+ }
+
$goal = array(
'idvisit' => $visitProperties->getProperty('idvisit'),
'idvisitor' => $visitProperties->getProperty('idvisitor'),
- 'server_time' => Date::getDatetimeFromTimestamp($lastVisitTime),
+ 'server_time' => $lastVisitTime,
);
$visitDimensions = VisitDimension::getAllDimensions();
diff --git a/core/Tracker/PageUrl.php b/core/Tracker/PageUrl.php
index a4f04d1179..7bf7b9bb92 100644
--- a/core/Tracker/PageUrl.php
+++ b/core/Tracker/PageUrl.php
@@ -32,17 +32,18 @@ class PageUrl
* Given the Input URL, will exclude all query parameters set for this site
*
* @static
- * @param $originalUrl
+ * @param string $originalUrl
* @param $idSite
+ * @param array $additionalParametersToExclude
* @return bool|string Returned URL is HTML entities decoded
*/
- public static function excludeQueryParametersFromUrl($originalUrl, $idSite)
+ public static function excludeQueryParametersFromUrl($originalUrl, $idSite, $additionalParametersToExclude = [])
{
$originalUrl = self::cleanupUrl($originalUrl);
$parsedUrl = @parse_url($originalUrl);
$parsedUrl = self::cleanupHostAndHashTag($parsedUrl, $idSite);
- $parametersToExclude = self::getQueryParametersToExclude($idSite);
+ $parametersToExclude = array_merge(self::getQueryParametersToExclude($idSite), $additionalParametersToExclude);
if (empty($parsedUrl['query'])) {
if (empty($parsedUrl['fragment'])) {
diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php
index 9370600d99..f9c845737d 100644
--- a/core/Tracker/Visit.php
+++ b/core/Tracker/Visit.php
@@ -244,6 +244,15 @@ class Visit implements VisitInterface
$processor->onExistingVisit($valuesToUpdate, $this->visitProperties, $this->request);
}
+ // we we remove values that haven't actually changed and are still the same when comparing to the initially
+ // selected visit row. In best case this avoids the update completely. Eg when there is a bulk tracking request
+ // of many content impressions. Then it will update the visit in the first request of the bulk request, and
+ // all other visits that have same visit_last_action_time etc will be ignored and won't issue an update SQL
+ // statement at all avoiding potential lock wait time when too many requests try to update the same visit at
+ // same time
+ $visitorRecognizer = StaticContainer::get(VisitorRecognizer::class);
+ $valuesToUpdate = $visitorRecognizer->removeUnchangedValues($this->visitProperties, $valuesToUpdate);
+
$this->updateExistingVisit($valuesToUpdate);
$this->visitProperties->setProperty('visit_last_action_time', $this->request->getCurrentTimestamp());
@@ -549,8 +558,7 @@ class Visit implements VisitInterface
{
// Might update the idvisitor when it was forced or overwritten for this visit
if (strlen($this->visitProperties->getProperty('idvisitor')) == Tracker::LENGTH_BINARY_ID) {
- $binIdVisitor = $this->visitProperties->getProperty('idvisitor');
- $valuesToUpdate['idvisitor'] = $binIdVisitor;
+ $valuesToUpdate['idvisitor'] = $this->visitProperties->getProperty('idvisitor');
}
return $valuesToUpdate;
diff --git a/core/Tracker/VisitorRecognizer.php b/core/Tracker/VisitorRecognizer.php
index dc1655bb63..e241384419 100644
--- a/core/Tracker/VisitorRecognizer.php
+++ b/core/Tracker/VisitorRecognizer.php
@@ -20,6 +20,12 @@ use Piwik\Tracker\Visit\VisitProperties;
class VisitorRecognizer
{
/**
+ * Set when a visit was found. Stores the original values of the row that is currently stored in the DB when
+ * the visit was selected.
+ */
+ const KEY_ORIGINAL_VISIT_ROW = 'originalVisit';
+
+ /**
* Local variable cache for the getVisitFieldsPersist() method.
*
* @var array
@@ -105,6 +111,7 @@ class VisitorRecognizer
if ($visitRow
&& count($visitRow) > 0
) {
+ $visitProperties->setProperty(self::KEY_ORIGINAL_VISIT_ROW, $visitRow);
$visitProperties->setProperty('idvisitor', $visitRow['idvisitor']);
$visitProperties->setProperty('user_id', $visitRow['user_id']);
@@ -121,6 +128,35 @@ class VisitorRecognizer
}
}
+ public function removeUnchangedValues(VisitProperties $visitProperties, $visit)
+ {
+ $originalRow = $visitProperties->getProperty(self::KEY_ORIGINAL_VISIT_ROW);
+
+ if (empty($originalRow)) {
+ return $visit;
+ }
+
+ if (!empty($originalRow['idvisitor'])
+ && !empty($visit['idvisitor'])
+ && bin2hex($originalRow['idvisitor']) === bin2hex($visit['idvisitor'])) {
+ unset($visit['idvisitor']);
+ }
+
+ $fieldsToCompareValue = array('user_id', 'visit_last_action_time', 'visit_total_time');
+ foreach ($fieldsToCompareValue as $field) {
+ if (!empty($originalRow[$field])
+ && !empty($visit[$field])
+ && $visit[$field] == $originalRow[$field]) {
+ // we can't use === eg for visit_total_time which may be partially an integer and sometimes a string
+ // because we check for !empty things should still work as expected though
+ // (eg we wouldn't compare false with 0)
+ unset($visit[$field]);
+ }
+ }
+
+ return $visit;
+ }
+
public function updateVisitPropertiesFromLastVisitRow(VisitProperties $visitProperties)
{
// These values will be used throughout the request
diff --git a/js/piwik.js b/js/piwik.js
index dfadf4de72..baaa79a34f 100644
--- a/js/piwik.js
+++ b/js/piwik.js
@@ -76,7 +76,7 @@
addListener, enableLinkTracking, enableJSErrorTracking, setLinkTrackingTimer, getLinkTrackingTimer,
enableHeartBeatTimer, disableHeartBeatTimer, killFrame, redirectFile, setCountPreRendered, setVisitStandardLength,
trackGoal, trackLink, trackPageView, getNumTrackedPageViews, trackRequest, ping, queueRequest, trackSiteSearch, trackEvent,
- requests, timeout, enabled, sendRequests, queueRequest, disableQueueRequest,setRequestQueueInterval,interval,getRequestQueue, unsetPageIsUnloading,
+ requests, timeout, enabled, sendRequests, queueRequest, canQueue, pushMultiple, disableQueueRequest,setRequestQueueInterval,interval,getRequestQueue, unsetPageIsUnloading,
setEcommerceView, getEcommerceItems, addEcommerceItem, removeEcommerceItem, clearEcommerceCart, trackEcommerceOrder, trackEcommerceCartUpdate,
deleteCookie, deleteCookies, offsetTop, offsetLeft, offsetHeight, offsetWidth, nodeType, defaultView,
innerHTML, scrollLeft, scrollTop, currentStyle, getComputedStyle, querySelectorAll, splice,
@@ -4745,11 +4745,25 @@ if (typeof window.Piwik !== 'object') {
sendBulkRequest(requestsToTrack, configTrackerPause);
}
},
+ canQueue: function () {
+ return !isPageUnloading && this.enabled;
+ },
+ pushMultiple: function (requests) {
+ if (!this.canQueue()) {
+ sendBulkRequest(requests, configTrackerPause);
+ return;
+ }
+
+ var i;
+ for (i = 0; i < requests.length; i++) {
+ this.push(requests[i]);
+ }
+ },
push: function (requestUrl) {
if (!requestUrl) {
return;
}
- if (isPageUnloading || !this.enabled) {
+ if (!this.canQueue()) {
// we don't queue as we need to ensure the request will be sent when the page is unloading...
sendRequest(requestUrl, configTrackerPause);
return;
@@ -5844,6 +5858,9 @@ if (typeof window.Piwik !== 'object') {
trackCallbackOnReady(function () {
addClickListeners(enable, self);
});
+ trackCallbackOnLoad(function () {
+ addClickListeners(enable, self);
+ });
});
};
@@ -6052,7 +6069,7 @@ if (typeof window.Piwik !== 'object') {
var contentNodes = content.findContentNodes();
var requests = getContentImpressionsRequestsFromNodes(contentNodes);
- sendBulkRequest(requests, configTrackerPause);
+ requestQueue.pushMultiple(requests);
});
});
};
@@ -6112,7 +6129,7 @@ if (typeof window.Piwik !== 'object') {
var contentNodes = content.findContentNodes();
var requests = getCurrentlyVisibleContentImpressionsRequestsIfNotTrackedYet(contentNodes);
- sendBulkRequest(requests, configTrackerPause);
+ requestQueue.pushMultiple(requests);
});
});
};
@@ -6142,7 +6159,7 @@ if (typeof window.Piwik !== 'object') {
trackCallback(function () {
var request = buildContentImpressionRequest(contentName, contentPiece, contentTarget);
- sendRequest(request, configTrackerPause);
+ requestQueue.push(request);
});
};
@@ -6166,7 +6183,7 @@ if (typeof window.Piwik !== 'object') {
var contentNodes = content.findContentNodesWithinNode(domNode);
var requests = getCurrentlyVisibleContentImpressionsRequestsIfNotTrackedYet(contentNodes);
- sendBulkRequest(requests, configTrackerPause);
+ requestQueue.pushMultiple(requests);
});
} else {
trackCallbackOnReady(function () {
@@ -6174,7 +6191,7 @@ if (typeof window.Piwik !== 'object') {
var contentNodes = content.findContentNodesWithinNode(domNode);
var requests = getContentImpressionsRequestsFromNodes(contentNodes);
- sendBulkRequest(requests, configTrackerPause);
+ requestQueue.pushMultiple(requests);
});
}
});
@@ -6209,7 +6226,7 @@ if (typeof window.Piwik !== 'object') {
trackCallback(function () {
var request = buildContentInteractionRequest(contentInteraction, contentName, contentPiece, contentTarget);
if (request) {
- sendRequest(request, configTrackerPause);
+ requestQueue.push(request);
}
});
};
@@ -6238,7 +6255,7 @@ if (typeof window.Piwik !== 'object') {
trackCallback(function () {
theRequest = buildContentInteractionRequestNode(domNode, contentInteraction);
if (theRequest) {
- sendRequest(theRequest, configTrackerPause);
+ requestQueue.push(theRequest);
}
});
//note: return value is only for tests... will only work if dom is already ready...
diff --git a/js/piwik.min.js b/js/piwik.min.js
index 07987b806b..f8c695a390 100644
--- a/js/piwik.min.js
+++ b/js/piwik.min.js
@@ -49,22 +49,22 @@ di--}}if(!dj||!dj.length){return[]}return cz(dj)}function aG(dk,di,dj){var dl=v.
if(dj){dn+="&"+dj}var dm=cs(dn,dq,"link");bF(dm,bJ,dp)}function bU(dj,di){if(dj!==""){return dj+di.charAt(0).toUpperCase()+di.slice(1)}return di}function ch(dn){var dm,di,dl=["","webkit","ms","moz"],dk;if(!be){for(di=0;di<dl.length;di++){dk=dl[di];if(Object.prototype.hasOwnProperty.call(G,bU(dk,"hidden"))){if(G[bU(dk,"visibilityState")]==="prerender"){dm=true}break}}}if(dm){an(G,dk+"visibilitychange",function dj(){G.removeEventListener(dk+"visibilitychange",dj,false);dn()});return}dn()}function br(){var dj=aY().uuid;var di=aJ();return dj+di}function cj(di){if(!di){return}if(!ae.hasNodeAttribute(di,"href")){return}var dj=ae.getAttributeValueFromNode(di,"href");if(!dj||aU(dj)){return}dj=k(dj,av);var dk=br();dj=F(dj,av,dk);ae.setAnyAttribute(di,"href",dj)}function aB(dl){var dm=ae.getAttributeValueFromNode(dl,"href");if(!dm){return false}dm=String(dm);var dj=dm.indexOf("//")===0||dm.indexOf("http://")===0||dm.indexOf("https://")===0;if(!dj){return false}var di=dl.pathname||cl(dl.href);var dk=(dl.hostname||d(dl.href)).toLowerCase();
if(ar(dk,di)){if(!cG(cT,L(dk))){return true}return false}return false}function cF(di){var dj=db(di);if(dj&&dj.type){dj.href=p(dj.href);c0(dj.href,dj.type,undefined,null,di);return}if(cM){di=au(di);if(aB(di)){cj(di)}}}function cv(){return G.all&&!G.addEventListener}function cU(di){var dk=di.which;var dj=(typeof di.button);if(!dk&&dj!=="undefined"){if(cv()){if(di.button&1){dk=1}else{if(di.button&2){dk=3}else{if(di.button&4){dk=2}}}}else{if(di.button===0||di.button==="0"){dk=1}else{if(di.button&1){dk=2}else{if(di.button&2){dk=3}}}}}return dk}function bT(di){switch(cU(di)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function a1(di){return di.target||di.srcElement}function aC(di){return function(dl){dl=dl||T.event;var dk=bT(dl);var dm=a1(dl);if(dl.type==="click"){var dj=false;if(di&&dk==="middle"){dj=true}if(dm&&!dj){cF(dm)}}else{if(dl.type==="mousedown"){if(dk==="middle"&&dm){aR=dk;bA=dm}else{aR=bA=null}}else{if(dl.type==="mouseup"){if(dk===aR&&dm===bA){cF(dm)}aR=bA=null
}else{if(dl.type==="contextmenu"){cF(dm)}}}}}}function aq(dk,dj){var di=typeof dj;if(di==="undefined"){dj=true}an(dk,"click",aC(dj),false);if(dj){an(dk,"mouseup",aC(dj),false);an(dk,"mousedown",aC(dj),false);an(dk,"contextmenu",aC(dj),false)}}function bD(dk,dm){ap=true;var dl,dj=a0(bz,"ignore"),dn=G.links,di=null,dp=null;if(dn){for(dl=0;dl<dn.length;dl++){di=dn[dl];if(!dj.test(di.className)){dp=typeof di.piwikTrackers;if("undefined"===dp){di.piwikTrackers=[]}if(-1===M(di.piwikTrackers,dm)){di.piwikTrackers.push(dm);aq(di,dk)}}}}}function aS(dj,dm,dn){if(cf){return true}cf=true;var dp=false;var dl,dk;function di(){dp=true}n(function(){function dq(ds){setTimeout(function(){if(!cf){return}dp=false;dn.trackVisibleContentImpressions();dq(ds)},ds)}function dr(ds){setTimeout(function(){if(!cf){return}if(dp){dp=false;dn.trackVisibleContentImpressions()}dr(ds)},ds)}if(dj){dl=["scroll","resize"];for(dk=0;dk<dl.length;dk++){if(G.addEventListener){G.addEventListener(dl[dk],di,false)}else{T.attachEvent("on"+dl[dk],di)
-}}dr(100)}if(dm&&dm>0){dm=parseInt(dm,10);dq(dm)}})}var bC={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var di=this.requests;this.requests=[];if(di.length===1){bF(di[0],bJ)}else{de(di,bJ)}},push:function(di){if(!di){return}if(m||!this.enabled){bF(di,bJ);return}bC.requests.push(di);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bC.timeout=null;bC.sendRequests()},bC.interval);var dj="RequestQueue"+aw;if(!Object.prototype.hasOwnProperty.call(b,dj)){b[dj]={unload:function(){if(bC.timeout){clearTimeout(bC.timeout)}bC.sendRequests()}}}}};bi();aM();this.hasConsent=function(){return bB};this.getVisitorId=function(){return aY().uuid};this.getVisitorInfo=function(){return cN()};this.getAttributionInfo=function(){return bM()};this.getAttributionCampaignName=function(){return bM()[0]};this.getAttributionCampaignKeyword=function(){return bM()[1]};this.getAttributionReferrerTimestamp=function(){return bM()[2]};this.getAttributionReferrerUrl=function(){return bM()[3]
-};this.setTrackerUrl=function(di){aE=di};this.getTrackerUrl=function(){return aE};this.getPiwikUrl=function(){return O(this.getTrackerUrl(),bH)};this.addTracker=function(di,dk){if(!J(di)||null===di){di=this.getTrackerUrl()}var dj=new Q(di,dk);I.push(dj);e.trigger("TrackerAdded",[this]);return dj};this.getSiteId=function(){return b6};this.setSiteId=function(di){b3(di)};this.resetUserId=function(){by=""};this.setUserId=function(di){if(Y(di)){by=di}};this.getUserId=function(){return by};this.setCustomData=function(di,dj){if(W(di)){ao=di}else{if(!ao){ao={}}ao[di]=dj}};this.getCustomData=function(){return ao};this.setCustomRequestProcessing=function(di){cb=di};this.appendToTrackingUrl=function(di){cY=di};this.getRequest=function(di){return cs(di)};this.addPlugin=function(di,dj){b[di]=dj};this.setCustomDimension=function(di,dj){di=parseInt(di,10);if(di>0){if(!J(dj)){dj=""}if(!w(dj)){dj=String(dj)}bm[di]=dj}};this.getCustomDimension=function(di){di=parseInt(di,10);if(di>0&&Object.prototype.hasOwnProperty.call(bm,di)){return bm[di]
-}};this.deleteCustomDimension=function(di){di=parseInt(di,10);if(di>0){delete bm[di]}};this.setCustomVariable=function(dj,di,dm,dk){var dl;if(!J(dk)){dk="visit"}if(!J(di)){return}if(!J(dm)){dm=""}if(dj>0){di=!w(di)?String(di):di;dm=!w(dm)?String(dm):dm;dl=[di.slice(0,bt),dm.slice(0,bt)];if(dk==="visit"||dk===2){cE();aQ[dj]=dl}else{if(dk==="page"||dk===3){bW[dj]=dl}else{if(dk==="event"){cm[dj]=dl}}}}};this.getCustomVariable=function(dj,dk){var di;if(!J(dk)){dk="visit"}if(dk==="page"||dk===3){di=bW[dj]}else{if(dk==="event"){di=cm[dj]}else{if(dk==="visit"||dk===2){cE();di=aQ[dj]}}}if(!J(di)||(di&&di[0]==="")){return false}return di};this.deleteCustomVariable=function(di,dj){if(this.getCustomVariable(di,dj)){this.setCustomVariable(di,"","",dj)}};this.deleteCustomVariables=function(di){if(di==="page"||di===3){bW={}}else{if(di==="event"){cm={}}else{if(di==="visit"||di===2){aQ={}}}}};this.storeCustomVariablesInCookie=function(){bQ=true};this.setLinkTrackingTimer=function(di){bJ=di};this.getLinkTrackingTimer=function(){return bJ
-};this.setDownloadExtensions=function(di){if(w(di)){di=di.split("|")}c5=di};this.addDownloadExtensions=function(dj){var di;if(w(dj)){dj=dj.split("|")}for(di=0;di<dj.length;di++){c5.push(dj[di])}};this.removeDownloadExtensions=function(dk){var dj,di=[];if(w(dk)){dk=dk.split("|")}for(dj=0;dj<c5.length;dj++){if(M(dk,c5[dj])===-1){di.push(c5[dj])}}c5=di};this.setDomains=function(di){ax=w(di)?[di]:di;var dm=false,dk=0,dj;for(dk;dk<ax.length;dk++){dj=String(ax[dk]);if(cG(cT,L(dj))){dm=true;break}var dl=cl(dj);if(dl&&dl!=="/"&&dl!=="/*"){dm=true;break}}if(!dm){ax.push(cT)}};this.enableCrossDomainLinking=function(){cM=true};this.disableCrossDomainLinking=function(){cM=false};this.isCrossDomainLinkingEnabled=function(){return cM};this.setCrossDomainLinkingTimeout=function(di){aZ=di};this.getCrossDomainLinkingUrlParameter=function(){return t(av)+"="+t(br())};this.setIgnoreClasses=function(di){bz=w(di)?[di]:di};this.setRequestMethod=function(di){c9=di||ci};this.setRequestContentType=function(di){cw=di||aI
-};this.setReferrerUrl=function(di){bn=di};this.setCustomUrl=function(di){a4=bV(bN,di)};this.getCurrentUrl=function(){return a4||bN};this.setDocumentTitle=function(di){bj=di};this.setAPIUrl=function(di){bH=di};this.setDownloadClasses=function(di){bL=w(di)?[di]:di};this.setLinkClasses=function(di){a8=w(di)?[di]:di};this.setCampaignNameKey=function(di){cq=w(di)?[di]:di};this.setCampaignKeywordKey=function(di){bG=w(di)?[di]:di};this.discardHashTag=function(di){bP=di};this.setCookieNamePrefix=function(di){bk=di;if(aQ){aQ=bX()}};this.setCookieDomain=function(di){var dj=L(di);if(bw(dj)){cW=dj;bi()}};this.getCookieDomain=function(){return cW};this.hasCookies=function(){return"1"===b5()};this.setSessionCookie=function(dk,dj,di){if(!dk){throw new Error("Missing cookie name")}if(!J(di)){di=co}bu.push(dk);dd(aT(dk),dj,di,bp,cW)};this.getCookie=function(dj){var di=aD(aT(dj));if(di===0){return null}return di};this.setCookiePath=function(di){bp=di;bi()};this.getCookiePath=function(di){return bp};this.setVisitorCookieTimeout=function(di){cJ=di*1000
-};this.setSessionCookieTimeout=function(di){co=di*1000};this.getSessionCookieTimeout=function(){return co};this.setReferralCookieTimeout=function(di){c4=di*1000};this.setConversionAttributionFirstReferrer=function(di){bv=di};this.setSecureCookie=function(di){bS=di};this.disableCookies=function(){bl=true;c7.cookie="0";if(b6){aF()}};this.deleteCookies=function(){aF()};this.setDoNotTrack=function(dj){var di=h.doNotTrack||h.msDoNotTrack;cP=dj&&(di==="yes"||di==="1");if(cP){this.disableCookies()}};this.alwaysUseSendBeacon=function(){cV=true};this.disableAlwaysUseSendBeacon=function(){cV=false};this.addListener=function(dj,di){aq(dj,di)};this.enableLinkTracking=function(dj){c8=true;var di=this;ch(function(){q(function(){bD(dj,di)})})};this.enableJSErrorTracking=function(){if(cR){return}cR=true;var di=T.onerror;T.onerror=function(dn,dl,dk,dm,dj){ch(function(){var dp="JavaScript Errors";var dq=dl+":"+dk;if(dm){dq+=":"+dm}at(dp,dq,dn)});if(di){return di(dn,dl,dk,dm,dj)}return false}};this.disablePerformanceTracking=function(){a2=false
-};this.setVisitStandardLength=function(di){di=Math.max(di,5);c6=di};this.enableHeartBeatTimer=function(di){di=Math.max(di,5);a5=(di||15)*1000;if(cX!==null){df()}};this.disableHeartBeatTimer=function(){bK();if(a5||aN){if(T.removeEventListener){T.removeEventListener("focus",ba);T.removeEventListener("blur",ay)}else{if(T.detachEvent){T.detachEvent("onfocus",ba);T.detachEvent("onblur",ay)}}}a5=null;aN=false};this.killFrame=function(){if(T.location!==T.top.location){T.top.location=T.location}};this.redirectFile=function(di){if(T.location.protocol==="file:"){T.location=di}};this.setCountPreRendered=function(di){be=di};this.trackGoal=function(di,dl,dk,dj){ch(function(){cS(di,dl,dk,dj)})};this.trackLink=function(dj,di,dl,dk){ch(function(){c0(dj,di,dl,dk)})};this.getNumTrackedPageViews=function(){return cr};this.trackPageView=function(di,dk,dj){ca=[];cK=[];if(N(b6)){ch(function(){Z(aE,bH,b6)})}else{ch(function(){cr++;b0(di,dk,dj)})}};this.trackAllContentImpressions=function(){if(N(b6)){return}ch(function(){q(function(){var di=v.findContentNodes();
-var dj=cz(di);de(dj,bJ)})})};this.trackVisibleContentImpressions=function(di,dj){if(N(b6)){return}if(!J(di)){di=true}if(!J(dj)){dj=750}aS(di,dj,this);ch(function(){n(function(){var dk=v.findContentNodes();var dl=a9(dk);de(dl,bJ)})})};this.trackContentImpression=function(dk,di,dj){if(N(b6)){return}dk=a(dk);di=a(di);dj=a(dj);if(!dk){return}di=di||"Unknown";ch(function(){var dl=aG(dk,di,dj);bF(dl,bJ)})};this.trackContentImpressionsWithinNode=function(di){if(N(b6)||!di){return}ch(function(){if(cf){n(function(){var dj=v.findContentNodesWithinNode(di);var dk=a9(dj);de(dk,bJ)})}else{q(function(){var dj=v.findContentNodesWithinNode(di);var dk=cz(dj);de(dk,bJ)})}})};this.trackContentInteraction=function(dk,dl,di,dj){if(N(b6)){return}dk=a(dk);dl=a(dl);di=a(di);dj=a(dj);if(!dk||!dl){return}di=di||"Unknown";ch(function(){var dm=aP(dk,dl,di,dj);if(dm){bF(dm,bJ)}})};this.trackContentInteractionNode=function(dk,dj){if(N(b6)||!dk){return}var di=null;ch(function(){di=da(dk,dj);if(di){bF(di,bJ)}});return di
-};this.logAllContentBlocksOnPage=function(){var dk=v.findContentNodes();var di=v.collectContent(dk);var dj=typeof console;if(dj!=="undefined"&&console&&console.log){console.log(di)}};this.trackEvent=function(dj,dl,di,dk,dn,dm){ch(function(){at(dj,dl,di,dk,dn,dm)})};this.trackSiteSearch=function(di,dk,dj,dl){ca=[];ch(function(){b8(di,dk,dj,dl)})};this.setEcommerceView=function(dl,di,dk,dj){if(Y(dk)){dk=String(dk)}if(!J(dk)||dk===null||dk===false||!dk.length){dk=""}else{if(dk instanceof Array){dk=T.JSON.stringify(dk)}}bW[5]=["_pkc",dk];if(J(dj)&&dj!==null&&dj!==false&&String(dj).length){bW[2]=["_pkp",dj]}if(!Y(dl)&&!Y(di)){return}if(Y(dl)){bW[3]=["_pks",dl]}if(!Y(di)){di=""}bW[4]=["_pkn",di]};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(cZ))};this.addEcommerceItem=function(dm,di,dk,dj,dl){if(Y(dm)){cZ[dm]=[String(dm),di,dk,dj,dl]}};this.removeEcommerceItem=function(di){if(Y(di)){di=String(di);delete cZ[di]}};this.clearEcommerceCart=function(){cZ={}};this.trackEcommerceOrder=function(di,dm,dl,dk,dj,dn){bZ(di,dm,dl,dk,dj,dn)
-};this.trackEcommerceCartUpdate=function(di){bs(di)};this.trackRequest=function(dj,dl,dk,di){ch(function(){var dm=cs(dj,dl,di);bF(dm,bJ,dk)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bC.enabled=false};this.setRequestQueueInterval=function(di){if(di<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bC.interval=di};this.queueRequest=function(di){ch(function(){var dj=cs(di);bC.push(dj)})};this.isConsentRequired=function(){return cA};this.getRememberedConsent=function(){var di=aD(bd);if(aD(cL)){if(di){bY(bd,bp,cW)}return null}if(!di||di===0){return null}return di};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cA=true;bB=this.hasRememberedConsent();x++;b["CoreConsent"+x]={unload:function(){if(!bB){aF()}}}};this.setConsentGiven=function(){bB=true;bY(cL,bp,cW);var dj,di;for(dj=0;dj<cK.length;dj++){di=typeof cK[dj];if(di==="string"){bF(cK[dj],bJ)}else{if(di==="object"){de(cK[dj],bJ)
-}}}cK=[]};this.rememberConsentGiven=function(dj){if(dj){dj=dj*60*60*1000}else{dj=30*365*24*60*60*1000}this.setConsentGiven();var di=new Date().getTime();dd(bd,di,dj,bp,cW,bS)};this.forgetConsentGiven=function(){var di=30*365*24*60*60*1000;bY(bd,bp,cW);dd(cL,new Date().getTime(),di,bp,cW,bS);this.requireConsent()};this.isUserOptedOut=function(){return !bB};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=this.rememberConsentGiven;n(function(){setTimeout(function(){bE=true},0)});e.trigger("TrackerSetup",[this])}function H(){return{push:af}}function c(au,at){var av={};var aq,ar;for(aq=0;aq<at.length;aq++){var ao=at[aq];av[ao]=1;for(ar=0;ar<au.length;ar++){if(au[ar]&&au[ar][0]){var ap=au[ar][0];if(ao===ap){af(au[ar]);delete au[ar];if(av[ap]>1&&ap!=="addTracker"){ak("The method "+ap+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: https://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')
-}av[ap]++}}}}return au}var C=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","alwaysUseSendBeacon","enableLinkTracking","requireConsent","setConsentGiven"];function ad(ao,aq){var ap=new Q(ao,aq);I.push(ap);_paq=c(_paq,C);for(E=0;E<_paq.length;E++){if(_paq[E]){af(_paq[E])}}_paq=new H();e.trigger("TrackerAdded",[ap]);return ap}an(T,"beforeunload",ai,false);an(T,"message",function(au){if(!au||!au.origin){return}var aw,ar,ap;var ax=d(au.origin);var at=e.getAsyncTrackers();for(ar=0;ar<at.length;ar++){ap=d(at[ar].getPiwikUrl());if(ap===ax){aw=at[ar];break}}if(!aw){return}var aq=null;try{aq=JSON.parse(au.data)}catch(av){return}if(!aq){return}function ao(aA){var aC=G.getElementsByTagName("iframe");for(ar=0;ar<aC.length;ar++){var aB=aC[ar];var ay=d(aB.src);if(aB.contentWindow&&J(aB.contentWindow.postMessage)&&ay===ax){var az=JSON.stringify(aA);
-aB.contentWindow.postMessage(az,"*")}}}if(J(aq.maq_initial_value)){ao({maq_opted_in:aq.maq_initial_value&&aw.hasConsent(),maq_url:aw.getPiwikUrl(),maq_optout_by_default:aw.isConsentRequired()})}else{if(J(aq.maq_opted_in)){at=e.getAsyncTrackers();for(ar=0;ar<at.length;ar++){aw=at[ar];if(aq.maq_opted_in){aw.rememberConsentGiven()}else{aw.forgetConsentGiven()}}ao({maq_confirm_opted_in:aw.hasConsent(),maq_url:aw.getPiwikUrl(),maq_optout_by_default:aw.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;e={initialized:false,JSON:T.JSON,DOM:{addEventListener:function(ar,aq,ap,ao){var at=typeof ao;if(at==="undefined"){ao=false}an(ar,aq,ap,ao)},onLoad:n,onReady:q,isNodeVisible:j,isOrWasNodeVisible:v.isNodeVisible},on:function(ap,ao){if(!y[ap]){y[ap]=[]}y[ap].push(ao)},off:function(aq,ap){if(!y[aq]){return}var ao=0;for(ao;ao<y[aq].length;ao++){if(y[aq][ao]===ap){y[aq].splice(ao,1)}}},trigger:function(aq,ar,ap){if(!y[aq]){return}var ao=0;for(ao;ao<y[aq].length;ao++){y[aq][ao].apply(ap||T,ar)
-}},addPlugin:function(ao,ap){b[ao]=ap},getTracker:function(ao,ap){if(!J(ap)){ap=this.getAsyncTracker().getSiteId()}if(!J(ao)){ao=this.getAsyncTracker().getTrackerUrl()}return new Q(ao,ap)},getAsyncTrackers:function(){return I},addTracker:function(ao,aq){var ap;if(!I.length){ap=ad(ao,aq)}else{ap=I[0].addTracker(ao,aq)}return ap},getAsyncTracker:function(ap,at){var ar;if(I&&I.length&&I[0]){ar=I[0]}else{return ad(ap,at)}if(!at&&!ap){return ar}if((!J(at)||null===at)&&ar){at=ar.getSiteId()}if((!J(ap)||null===ap)&&ar){ap=ar.getTrackerUrl()}var aq,ao=0;for(ao;ao<I.length;ao++){aq=I[ao];if(aq&&String(aq.getSiteId())===String(at)&&aq.getTrackerUrl()===ap){return aq}}},retryMissedPluginCalls:function(){var ap=ah;ah=[];var ao=0;for(ao;ao<ap.length;ao++){af(ap[ao])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return e});define("matomo",[],function(){return e})}return e}())}
+}}dr(100)}if(dm&&dm>0){dm=parseInt(dm,10);dq(dm)}})}var bC={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var di=this.requests;this.requests=[];if(di.length===1){bF(di[0],bJ)}else{de(di,bJ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(dj){if(!this.canQueue()){de(dj,bJ);return}var di;for(di=0;di<dj.length;di++){this.push(dj[di])}},push:function(di){if(!di){return}if(!this.canQueue()){bF(di,bJ);return}bC.requests.push(di);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bC.timeout=null;bC.sendRequests()},bC.interval);var dj="RequestQueue"+aw;if(!Object.prototype.hasOwnProperty.call(b,dj)){b[dj]={unload:function(){if(bC.timeout){clearTimeout(bC.timeout)}bC.sendRequests()}}}}};bi();aM();this.hasConsent=function(){return bB};this.getVisitorId=function(){return aY().uuid};this.getVisitorInfo=function(){return cN()};this.getAttributionInfo=function(){return bM()};this.getAttributionCampaignName=function(){return bM()[0]
+};this.getAttributionCampaignKeyword=function(){return bM()[1]};this.getAttributionReferrerTimestamp=function(){return bM()[2]};this.getAttributionReferrerUrl=function(){return bM()[3]};this.setTrackerUrl=function(di){aE=di};this.getTrackerUrl=function(){return aE};this.getPiwikUrl=function(){return O(this.getTrackerUrl(),bH)};this.addTracker=function(di,dk){if(!J(di)||null===di){di=this.getTrackerUrl()}var dj=new Q(di,dk);I.push(dj);e.trigger("TrackerAdded",[this]);return dj};this.getSiteId=function(){return b6};this.setSiteId=function(di){b3(di)};this.resetUserId=function(){by=""};this.setUserId=function(di){if(Y(di)){by=di}};this.getUserId=function(){return by};this.setCustomData=function(di,dj){if(W(di)){ao=di}else{if(!ao){ao={}}ao[di]=dj}};this.getCustomData=function(){return ao};this.setCustomRequestProcessing=function(di){cb=di};this.appendToTrackingUrl=function(di){cY=di};this.getRequest=function(di){return cs(di)};this.addPlugin=function(di,dj){b[di]=dj};this.setCustomDimension=function(di,dj){di=parseInt(di,10);
+if(di>0){if(!J(dj)){dj=""}if(!w(dj)){dj=String(dj)}bm[di]=dj}};this.getCustomDimension=function(di){di=parseInt(di,10);if(di>0&&Object.prototype.hasOwnProperty.call(bm,di)){return bm[di]}};this.deleteCustomDimension=function(di){di=parseInt(di,10);if(di>0){delete bm[di]}};this.setCustomVariable=function(dj,di,dm,dk){var dl;if(!J(dk)){dk="visit"}if(!J(di)){return}if(!J(dm)){dm=""}if(dj>0){di=!w(di)?String(di):di;dm=!w(dm)?String(dm):dm;dl=[di.slice(0,bt),dm.slice(0,bt)];if(dk==="visit"||dk===2){cE();aQ[dj]=dl}else{if(dk==="page"||dk===3){bW[dj]=dl}else{if(dk==="event"){cm[dj]=dl}}}}};this.getCustomVariable=function(dj,dk){var di;if(!J(dk)){dk="visit"}if(dk==="page"||dk===3){di=bW[dj]}else{if(dk==="event"){di=cm[dj]}else{if(dk==="visit"||dk===2){cE();di=aQ[dj]}}}if(!J(di)||(di&&di[0]==="")){return false}return di};this.deleteCustomVariable=function(di,dj){if(this.getCustomVariable(di,dj)){this.setCustomVariable(di,"","",dj)}};this.deleteCustomVariables=function(di){if(di==="page"||di===3){bW={}
+}else{if(di==="event"){cm={}}else{if(di==="visit"||di===2){aQ={}}}}};this.storeCustomVariablesInCookie=function(){bQ=true};this.setLinkTrackingTimer=function(di){bJ=di};this.getLinkTrackingTimer=function(){return bJ};this.setDownloadExtensions=function(di){if(w(di)){di=di.split("|")}c5=di};this.addDownloadExtensions=function(dj){var di;if(w(dj)){dj=dj.split("|")}for(di=0;di<dj.length;di++){c5.push(dj[di])}};this.removeDownloadExtensions=function(dk){var dj,di=[];if(w(dk)){dk=dk.split("|")}for(dj=0;dj<c5.length;dj++){if(M(dk,c5[dj])===-1){di.push(c5[dj])}}c5=di};this.setDomains=function(di){ax=w(di)?[di]:di;var dm=false,dk=0,dj;for(dk;dk<ax.length;dk++){dj=String(ax[dk]);if(cG(cT,L(dj))){dm=true;break}var dl=cl(dj);if(dl&&dl!=="/"&&dl!=="/*"){dm=true;break}}if(!dm){ax.push(cT)}};this.enableCrossDomainLinking=function(){cM=true};this.disableCrossDomainLinking=function(){cM=false};this.isCrossDomainLinkingEnabled=function(){return cM};this.setCrossDomainLinkingTimeout=function(di){aZ=di};this.getCrossDomainLinkingUrlParameter=function(){return t(av)+"="+t(br())
+};this.setIgnoreClasses=function(di){bz=w(di)?[di]:di};this.setRequestMethod=function(di){c9=di||ci};this.setRequestContentType=function(di){cw=di||aI};this.setReferrerUrl=function(di){bn=di};this.setCustomUrl=function(di){a4=bV(bN,di)};this.getCurrentUrl=function(){return a4||bN};this.setDocumentTitle=function(di){bj=di};this.setAPIUrl=function(di){bH=di};this.setDownloadClasses=function(di){bL=w(di)?[di]:di};this.setLinkClasses=function(di){a8=w(di)?[di]:di};this.setCampaignNameKey=function(di){cq=w(di)?[di]:di};this.setCampaignKeywordKey=function(di){bG=w(di)?[di]:di};this.discardHashTag=function(di){bP=di};this.setCookieNamePrefix=function(di){bk=di;if(aQ){aQ=bX()}};this.setCookieDomain=function(di){var dj=L(di);if(bw(dj)){cW=dj;bi()}};this.getCookieDomain=function(){return cW};this.hasCookies=function(){return"1"===b5()};this.setSessionCookie=function(dk,dj,di){if(!dk){throw new Error("Missing cookie name")}if(!J(di)){di=co}bu.push(dk);dd(aT(dk),dj,di,bp,cW)};this.getCookie=function(dj){var di=aD(aT(dj));
+if(di===0){return null}return di};this.setCookiePath=function(di){bp=di;bi()};this.getCookiePath=function(di){return bp};this.setVisitorCookieTimeout=function(di){cJ=di*1000};this.setSessionCookieTimeout=function(di){co=di*1000};this.getSessionCookieTimeout=function(){return co};this.setReferralCookieTimeout=function(di){c4=di*1000};this.setConversionAttributionFirstReferrer=function(di){bv=di};this.setSecureCookie=function(di){bS=di};this.disableCookies=function(){bl=true;c7.cookie="0";if(b6){aF()}};this.deleteCookies=function(){aF()};this.setDoNotTrack=function(dj){var di=h.doNotTrack||h.msDoNotTrack;cP=dj&&(di==="yes"||di==="1");if(cP){this.disableCookies()}};this.alwaysUseSendBeacon=function(){cV=true};this.disableAlwaysUseSendBeacon=function(){cV=false};this.addListener=function(dj,di){aq(dj,di)};this.enableLinkTracking=function(dj){c8=true;var di=this;ch(function(){q(function(){bD(dj,di)});n(function(){bD(dj,di)})})};this.enableJSErrorTracking=function(){if(cR){return}cR=true;var di=T.onerror;
+T.onerror=function(dn,dl,dk,dm,dj){ch(function(){var dp="JavaScript Errors";var dq=dl+":"+dk;if(dm){dq+=":"+dm}at(dp,dq,dn)});if(di){return di(dn,dl,dk,dm,dj)}return false}};this.disablePerformanceTracking=function(){a2=false};this.setVisitStandardLength=function(di){di=Math.max(di,5);c6=di};this.enableHeartBeatTimer=function(di){di=Math.max(di,5);a5=(di||15)*1000;if(cX!==null){df()}};this.disableHeartBeatTimer=function(){bK();if(a5||aN){if(T.removeEventListener){T.removeEventListener("focus",ba);T.removeEventListener("blur",ay)}else{if(T.detachEvent){T.detachEvent("onfocus",ba);T.detachEvent("onblur",ay)}}}a5=null;aN=false};this.killFrame=function(){if(T.location!==T.top.location){T.top.location=T.location}};this.redirectFile=function(di){if(T.location.protocol==="file:"){T.location=di}};this.setCountPreRendered=function(di){be=di};this.trackGoal=function(di,dl,dk,dj){ch(function(){cS(di,dl,dk,dj)})};this.trackLink=function(dj,di,dl,dk){ch(function(){c0(dj,di,dl,dk)})};this.getNumTrackedPageViews=function(){return cr
+};this.trackPageView=function(di,dk,dj){ca=[];cK=[];if(N(b6)){ch(function(){Z(aE,bH,b6)})}else{ch(function(){cr++;b0(di,dk,dj)})}};this.trackAllContentImpressions=function(){if(N(b6)){return}ch(function(){q(function(){var di=v.findContentNodes();var dj=cz(di);bC.pushMultiple(dj)})})};this.trackVisibleContentImpressions=function(di,dj){if(N(b6)){return}if(!J(di)){di=true}if(!J(dj)){dj=750}aS(di,dj,this);ch(function(){n(function(){var dk=v.findContentNodes();var dl=a9(dk);bC.pushMultiple(dl)})})};this.trackContentImpression=function(dk,di,dj){if(N(b6)){return}dk=a(dk);di=a(di);dj=a(dj);if(!dk){return}di=di||"Unknown";ch(function(){var dl=aG(dk,di,dj);bC.push(dl)})};this.trackContentImpressionsWithinNode=function(di){if(N(b6)||!di){return}ch(function(){if(cf){n(function(){var dj=v.findContentNodesWithinNode(di);var dk=a9(dj);bC.pushMultiple(dk)})}else{q(function(){var dj=v.findContentNodesWithinNode(di);var dk=cz(dj);bC.pushMultiple(dk)})}})};this.trackContentInteraction=function(dk,dl,di,dj){if(N(b6)){return
+}dk=a(dk);dl=a(dl);di=a(di);dj=a(dj);if(!dk||!dl){return}di=di||"Unknown";ch(function(){var dm=aP(dk,dl,di,dj);if(dm){bC.push(dm)}})};this.trackContentInteractionNode=function(dk,dj){if(N(b6)||!dk){return}var di=null;ch(function(){di=da(dk,dj);if(di){bC.push(di)}});return di};this.logAllContentBlocksOnPage=function(){var dk=v.findContentNodes();var di=v.collectContent(dk);var dj=typeof console;if(dj!=="undefined"&&console&&console.log){console.log(di)}};this.trackEvent=function(dj,dl,di,dk,dn,dm){ch(function(){at(dj,dl,di,dk,dn,dm)})};this.trackSiteSearch=function(di,dk,dj,dl){ca=[];ch(function(){b8(di,dk,dj,dl)})};this.setEcommerceView=function(dl,di,dk,dj){if(Y(dk)){dk=String(dk)}if(!J(dk)||dk===null||dk===false||!dk.length){dk=""}else{if(dk instanceof Array){dk=T.JSON.stringify(dk)}}bW[5]=["_pkc",dk];if(J(dj)&&dj!==null&&dj!==false&&String(dj).length){bW[2]=["_pkp",dj]}if(!Y(dl)&&!Y(di)){return}if(Y(dl)){bW[3]=["_pks",dl]}if(!Y(di)){di=""}bW[4]=["_pkn",di]};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(cZ))
+};this.addEcommerceItem=function(dm,di,dk,dj,dl){if(Y(dm)){cZ[dm]=[String(dm),di,dk,dj,dl]}};this.removeEcommerceItem=function(di){if(Y(di)){di=String(di);delete cZ[di]}};this.clearEcommerceCart=function(){cZ={}};this.trackEcommerceOrder=function(di,dm,dl,dk,dj,dn){bZ(di,dm,dl,dk,dj,dn)};this.trackEcommerceCartUpdate=function(di){bs(di)};this.trackRequest=function(dj,dl,dk,di){ch(function(){var dm=cs(dj,dl,di);bF(dm,bJ,dk)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bC.enabled=false};this.setRequestQueueInterval=function(di){if(di<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bC.interval=di};this.queueRequest=function(di){ch(function(){var dj=cs(di);bC.push(dj)})};this.isConsentRequired=function(){return cA};this.getRememberedConsent=function(){var di=aD(bd);if(aD(cL)){if(di){bY(bd,bp,cW)}return null}if(!di||di===0){return null}return di};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()
+};this.requireConsent=function(){cA=true;bB=this.hasRememberedConsent();x++;b["CoreConsent"+x]={unload:function(){if(!bB){aF()}}}};this.setConsentGiven=function(){bB=true;bY(cL,bp,cW);var dj,di;for(dj=0;dj<cK.length;dj++){di=typeof cK[dj];if(di==="string"){bF(cK[dj],bJ)}else{if(di==="object"){de(cK[dj],bJ)}}}cK=[]};this.rememberConsentGiven=function(dj){if(dj){dj=dj*60*60*1000}else{dj=30*365*24*60*60*1000}this.setConsentGiven();var di=new Date().getTime();dd(bd,di,dj,bp,cW,bS)};this.forgetConsentGiven=function(){var di=30*365*24*60*60*1000;bY(bd,bp,cW);dd(cL,new Date().getTime(),di,bp,cW,bS);this.requireConsent()};this.isUserOptedOut=function(){return !bB};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=this.rememberConsentGiven;n(function(){setTimeout(function(){bE=true},0)});e.trigger("TrackerSetup",[this])}function H(){return{push:af}}function c(au,at){var av={};var aq,ar;for(aq=0;aq<at.length;aq++){var ao=at[aq];av[ao]=1;for(ar=0;ar<au.length;ar++){if(au[ar]&&au[ar][0]){var ap=au[ar][0];
+if(ao===ap){af(au[ar]);delete au[ar];if(av[ap]>1&&ap!=="addTracker"){ak("The method "+ap+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: https://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}av[ap]++}}}}return au}var C=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","alwaysUseSendBeacon","enableLinkTracking","requireConsent","setConsentGiven"];function ad(ao,aq){var ap=new Q(ao,aq);I.push(ap);_paq=c(_paq,C);for(E=0;E<_paq.length;E++){if(_paq[E]){af(_paq[E])}}_paq=new H();e.trigger("TrackerAdded",[ap]);return ap}an(T,"beforeunload",ai,false);an(T,"message",function(au){if(!au||!au.origin){return}var aw,ar,ap;var ax=d(au.origin);
+var at=e.getAsyncTrackers();for(ar=0;ar<at.length;ar++){ap=d(at[ar].getPiwikUrl());if(ap===ax){aw=at[ar];break}}if(!aw){return}var aq=null;try{aq=JSON.parse(au.data)}catch(av){return}if(!aq){return}function ao(aA){var aC=G.getElementsByTagName("iframe");for(ar=0;ar<aC.length;ar++){var aB=aC[ar];var ay=d(aB.src);if(aB.contentWindow&&J(aB.contentWindow.postMessage)&&ay===ax){var az=JSON.stringify(aA);aB.contentWindow.postMessage(az,"*")}}}if(J(aq.maq_initial_value)){ao({maq_opted_in:aq.maq_initial_value&&aw.hasConsent(),maq_url:aw.getPiwikUrl(),maq_optout_by_default:aw.isConsentRequired()})}else{if(J(aq.maq_opted_in)){at=e.getAsyncTrackers();for(ar=0;ar<at.length;ar++){aw=at[ar];if(aq.maq_opted_in){aw.rememberConsentGiven()}else{aw.forgetConsentGiven()}}ao({maq_confirm_opted_in:aw.hasConsent(),maq_url:aw.getPiwikUrl(),maq_optout_by_default:aw.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;e={initialized:false,JSON:T.JSON,DOM:{addEventListener:function(ar,aq,ap,ao){var at=typeof ao;
+if(at==="undefined"){ao=false}an(ar,aq,ap,ao)},onLoad:n,onReady:q,isNodeVisible:j,isOrWasNodeVisible:v.isNodeVisible},on:function(ap,ao){if(!y[ap]){y[ap]=[]}y[ap].push(ao)},off:function(aq,ap){if(!y[aq]){return}var ao=0;for(ao;ao<y[aq].length;ao++){if(y[aq][ao]===ap){y[aq].splice(ao,1)}}},trigger:function(aq,ar,ap){if(!y[aq]){return}var ao=0;for(ao;ao<y[aq].length;ao++){y[aq][ao].apply(ap||T,ar)}},addPlugin:function(ao,ap){b[ao]=ap},getTracker:function(ao,ap){if(!J(ap)){ap=this.getAsyncTracker().getSiteId()}if(!J(ao)){ao=this.getAsyncTracker().getTrackerUrl()}return new Q(ao,ap)},getAsyncTrackers:function(){return I},addTracker:function(ao,aq){var ap;if(!I.length){ap=ad(ao,aq)}else{ap=I[0].addTracker(ao,aq)}return ap},getAsyncTracker:function(ap,at){var ar;if(I&&I.length&&I[0]){ar=I[0]}else{return ad(ap,at)}if(!at&&!ap){return ar}if((!J(at)||null===at)&&ar){at=ar.getSiteId()}if((!J(ap)||null===ap)&&ar){ap=ar.getTrackerUrl()}var aq,ao=0;for(ao;ao<I.length;ao++){aq=I[ao];if(aq&&String(aq.getSiteId())===String(at)&&aq.getTrackerUrl()===ap){return aq
+}}},retryMissedPluginCalls:function(){var ap=ah;ah=[];var ao=0;for(ao;ao<ap.length;ao++){af(ap[ao])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return e});define("matomo",[],function(){return e})}return e}())}
/*!!! pluginTrackerHook */
-(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;
-if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(!window.Piwik.getAsyncTrackers().length){if(b()){window.Piwik.addTracker()}else{_paq={push:function(c){var d=typeof console;if(d!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",c)}}}}}window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());(function(){var a=(typeof AnalyticsTracker);
-if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}}}
+(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(!window.Piwik.getAsyncTrackers().length){if(b()){window.Piwik.addTracker()}else{_paq={push:function(c){var d=typeof console;if(d!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",c)
+}}}}}window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());(function(){var a=(typeof AnalyticsTracker);if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}}}
/*!! @license-end */; \ No newline at end of file
diff --git a/matomo.js b/matomo.js
index 07987b806b..f8c695a390 100644
--- a/matomo.js
+++ b/matomo.js
@@ -49,22 +49,22 @@ di--}}if(!dj||!dj.length){return[]}return cz(dj)}function aG(dk,di,dj){var dl=v.
if(dj){dn+="&"+dj}var dm=cs(dn,dq,"link");bF(dm,bJ,dp)}function bU(dj,di){if(dj!==""){return dj+di.charAt(0).toUpperCase()+di.slice(1)}return di}function ch(dn){var dm,di,dl=["","webkit","ms","moz"],dk;if(!be){for(di=0;di<dl.length;di++){dk=dl[di];if(Object.prototype.hasOwnProperty.call(G,bU(dk,"hidden"))){if(G[bU(dk,"visibilityState")]==="prerender"){dm=true}break}}}if(dm){an(G,dk+"visibilitychange",function dj(){G.removeEventListener(dk+"visibilitychange",dj,false);dn()});return}dn()}function br(){var dj=aY().uuid;var di=aJ();return dj+di}function cj(di){if(!di){return}if(!ae.hasNodeAttribute(di,"href")){return}var dj=ae.getAttributeValueFromNode(di,"href");if(!dj||aU(dj)){return}dj=k(dj,av);var dk=br();dj=F(dj,av,dk);ae.setAnyAttribute(di,"href",dj)}function aB(dl){var dm=ae.getAttributeValueFromNode(dl,"href");if(!dm){return false}dm=String(dm);var dj=dm.indexOf("//")===0||dm.indexOf("http://")===0||dm.indexOf("https://")===0;if(!dj){return false}var di=dl.pathname||cl(dl.href);var dk=(dl.hostname||d(dl.href)).toLowerCase();
if(ar(dk,di)){if(!cG(cT,L(dk))){return true}return false}return false}function cF(di){var dj=db(di);if(dj&&dj.type){dj.href=p(dj.href);c0(dj.href,dj.type,undefined,null,di);return}if(cM){di=au(di);if(aB(di)){cj(di)}}}function cv(){return G.all&&!G.addEventListener}function cU(di){var dk=di.which;var dj=(typeof di.button);if(!dk&&dj!=="undefined"){if(cv()){if(di.button&1){dk=1}else{if(di.button&2){dk=3}else{if(di.button&4){dk=2}}}}else{if(di.button===0||di.button==="0"){dk=1}else{if(di.button&1){dk=2}else{if(di.button&2){dk=3}}}}}return dk}function bT(di){switch(cU(di)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function a1(di){return di.target||di.srcElement}function aC(di){return function(dl){dl=dl||T.event;var dk=bT(dl);var dm=a1(dl);if(dl.type==="click"){var dj=false;if(di&&dk==="middle"){dj=true}if(dm&&!dj){cF(dm)}}else{if(dl.type==="mousedown"){if(dk==="middle"&&dm){aR=dk;bA=dm}else{aR=bA=null}}else{if(dl.type==="mouseup"){if(dk===aR&&dm===bA){cF(dm)}aR=bA=null
}else{if(dl.type==="contextmenu"){cF(dm)}}}}}}function aq(dk,dj){var di=typeof dj;if(di==="undefined"){dj=true}an(dk,"click",aC(dj),false);if(dj){an(dk,"mouseup",aC(dj),false);an(dk,"mousedown",aC(dj),false);an(dk,"contextmenu",aC(dj),false)}}function bD(dk,dm){ap=true;var dl,dj=a0(bz,"ignore"),dn=G.links,di=null,dp=null;if(dn){for(dl=0;dl<dn.length;dl++){di=dn[dl];if(!dj.test(di.className)){dp=typeof di.piwikTrackers;if("undefined"===dp){di.piwikTrackers=[]}if(-1===M(di.piwikTrackers,dm)){di.piwikTrackers.push(dm);aq(di,dk)}}}}}function aS(dj,dm,dn){if(cf){return true}cf=true;var dp=false;var dl,dk;function di(){dp=true}n(function(){function dq(ds){setTimeout(function(){if(!cf){return}dp=false;dn.trackVisibleContentImpressions();dq(ds)},ds)}function dr(ds){setTimeout(function(){if(!cf){return}if(dp){dp=false;dn.trackVisibleContentImpressions()}dr(ds)},ds)}if(dj){dl=["scroll","resize"];for(dk=0;dk<dl.length;dk++){if(G.addEventListener){G.addEventListener(dl[dk],di,false)}else{T.attachEvent("on"+dl[dk],di)
-}}dr(100)}if(dm&&dm>0){dm=parseInt(dm,10);dq(dm)}})}var bC={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var di=this.requests;this.requests=[];if(di.length===1){bF(di[0],bJ)}else{de(di,bJ)}},push:function(di){if(!di){return}if(m||!this.enabled){bF(di,bJ);return}bC.requests.push(di);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bC.timeout=null;bC.sendRequests()},bC.interval);var dj="RequestQueue"+aw;if(!Object.prototype.hasOwnProperty.call(b,dj)){b[dj]={unload:function(){if(bC.timeout){clearTimeout(bC.timeout)}bC.sendRequests()}}}}};bi();aM();this.hasConsent=function(){return bB};this.getVisitorId=function(){return aY().uuid};this.getVisitorInfo=function(){return cN()};this.getAttributionInfo=function(){return bM()};this.getAttributionCampaignName=function(){return bM()[0]};this.getAttributionCampaignKeyword=function(){return bM()[1]};this.getAttributionReferrerTimestamp=function(){return bM()[2]};this.getAttributionReferrerUrl=function(){return bM()[3]
-};this.setTrackerUrl=function(di){aE=di};this.getTrackerUrl=function(){return aE};this.getPiwikUrl=function(){return O(this.getTrackerUrl(),bH)};this.addTracker=function(di,dk){if(!J(di)||null===di){di=this.getTrackerUrl()}var dj=new Q(di,dk);I.push(dj);e.trigger("TrackerAdded",[this]);return dj};this.getSiteId=function(){return b6};this.setSiteId=function(di){b3(di)};this.resetUserId=function(){by=""};this.setUserId=function(di){if(Y(di)){by=di}};this.getUserId=function(){return by};this.setCustomData=function(di,dj){if(W(di)){ao=di}else{if(!ao){ao={}}ao[di]=dj}};this.getCustomData=function(){return ao};this.setCustomRequestProcessing=function(di){cb=di};this.appendToTrackingUrl=function(di){cY=di};this.getRequest=function(di){return cs(di)};this.addPlugin=function(di,dj){b[di]=dj};this.setCustomDimension=function(di,dj){di=parseInt(di,10);if(di>0){if(!J(dj)){dj=""}if(!w(dj)){dj=String(dj)}bm[di]=dj}};this.getCustomDimension=function(di){di=parseInt(di,10);if(di>0&&Object.prototype.hasOwnProperty.call(bm,di)){return bm[di]
-}};this.deleteCustomDimension=function(di){di=parseInt(di,10);if(di>0){delete bm[di]}};this.setCustomVariable=function(dj,di,dm,dk){var dl;if(!J(dk)){dk="visit"}if(!J(di)){return}if(!J(dm)){dm=""}if(dj>0){di=!w(di)?String(di):di;dm=!w(dm)?String(dm):dm;dl=[di.slice(0,bt),dm.slice(0,bt)];if(dk==="visit"||dk===2){cE();aQ[dj]=dl}else{if(dk==="page"||dk===3){bW[dj]=dl}else{if(dk==="event"){cm[dj]=dl}}}}};this.getCustomVariable=function(dj,dk){var di;if(!J(dk)){dk="visit"}if(dk==="page"||dk===3){di=bW[dj]}else{if(dk==="event"){di=cm[dj]}else{if(dk==="visit"||dk===2){cE();di=aQ[dj]}}}if(!J(di)||(di&&di[0]==="")){return false}return di};this.deleteCustomVariable=function(di,dj){if(this.getCustomVariable(di,dj)){this.setCustomVariable(di,"","",dj)}};this.deleteCustomVariables=function(di){if(di==="page"||di===3){bW={}}else{if(di==="event"){cm={}}else{if(di==="visit"||di===2){aQ={}}}}};this.storeCustomVariablesInCookie=function(){bQ=true};this.setLinkTrackingTimer=function(di){bJ=di};this.getLinkTrackingTimer=function(){return bJ
-};this.setDownloadExtensions=function(di){if(w(di)){di=di.split("|")}c5=di};this.addDownloadExtensions=function(dj){var di;if(w(dj)){dj=dj.split("|")}for(di=0;di<dj.length;di++){c5.push(dj[di])}};this.removeDownloadExtensions=function(dk){var dj,di=[];if(w(dk)){dk=dk.split("|")}for(dj=0;dj<c5.length;dj++){if(M(dk,c5[dj])===-1){di.push(c5[dj])}}c5=di};this.setDomains=function(di){ax=w(di)?[di]:di;var dm=false,dk=0,dj;for(dk;dk<ax.length;dk++){dj=String(ax[dk]);if(cG(cT,L(dj))){dm=true;break}var dl=cl(dj);if(dl&&dl!=="/"&&dl!=="/*"){dm=true;break}}if(!dm){ax.push(cT)}};this.enableCrossDomainLinking=function(){cM=true};this.disableCrossDomainLinking=function(){cM=false};this.isCrossDomainLinkingEnabled=function(){return cM};this.setCrossDomainLinkingTimeout=function(di){aZ=di};this.getCrossDomainLinkingUrlParameter=function(){return t(av)+"="+t(br())};this.setIgnoreClasses=function(di){bz=w(di)?[di]:di};this.setRequestMethod=function(di){c9=di||ci};this.setRequestContentType=function(di){cw=di||aI
-};this.setReferrerUrl=function(di){bn=di};this.setCustomUrl=function(di){a4=bV(bN,di)};this.getCurrentUrl=function(){return a4||bN};this.setDocumentTitle=function(di){bj=di};this.setAPIUrl=function(di){bH=di};this.setDownloadClasses=function(di){bL=w(di)?[di]:di};this.setLinkClasses=function(di){a8=w(di)?[di]:di};this.setCampaignNameKey=function(di){cq=w(di)?[di]:di};this.setCampaignKeywordKey=function(di){bG=w(di)?[di]:di};this.discardHashTag=function(di){bP=di};this.setCookieNamePrefix=function(di){bk=di;if(aQ){aQ=bX()}};this.setCookieDomain=function(di){var dj=L(di);if(bw(dj)){cW=dj;bi()}};this.getCookieDomain=function(){return cW};this.hasCookies=function(){return"1"===b5()};this.setSessionCookie=function(dk,dj,di){if(!dk){throw new Error("Missing cookie name")}if(!J(di)){di=co}bu.push(dk);dd(aT(dk),dj,di,bp,cW)};this.getCookie=function(dj){var di=aD(aT(dj));if(di===0){return null}return di};this.setCookiePath=function(di){bp=di;bi()};this.getCookiePath=function(di){return bp};this.setVisitorCookieTimeout=function(di){cJ=di*1000
-};this.setSessionCookieTimeout=function(di){co=di*1000};this.getSessionCookieTimeout=function(){return co};this.setReferralCookieTimeout=function(di){c4=di*1000};this.setConversionAttributionFirstReferrer=function(di){bv=di};this.setSecureCookie=function(di){bS=di};this.disableCookies=function(){bl=true;c7.cookie="0";if(b6){aF()}};this.deleteCookies=function(){aF()};this.setDoNotTrack=function(dj){var di=h.doNotTrack||h.msDoNotTrack;cP=dj&&(di==="yes"||di==="1");if(cP){this.disableCookies()}};this.alwaysUseSendBeacon=function(){cV=true};this.disableAlwaysUseSendBeacon=function(){cV=false};this.addListener=function(dj,di){aq(dj,di)};this.enableLinkTracking=function(dj){c8=true;var di=this;ch(function(){q(function(){bD(dj,di)})})};this.enableJSErrorTracking=function(){if(cR){return}cR=true;var di=T.onerror;T.onerror=function(dn,dl,dk,dm,dj){ch(function(){var dp="JavaScript Errors";var dq=dl+":"+dk;if(dm){dq+=":"+dm}at(dp,dq,dn)});if(di){return di(dn,dl,dk,dm,dj)}return false}};this.disablePerformanceTracking=function(){a2=false
-};this.setVisitStandardLength=function(di){di=Math.max(di,5);c6=di};this.enableHeartBeatTimer=function(di){di=Math.max(di,5);a5=(di||15)*1000;if(cX!==null){df()}};this.disableHeartBeatTimer=function(){bK();if(a5||aN){if(T.removeEventListener){T.removeEventListener("focus",ba);T.removeEventListener("blur",ay)}else{if(T.detachEvent){T.detachEvent("onfocus",ba);T.detachEvent("onblur",ay)}}}a5=null;aN=false};this.killFrame=function(){if(T.location!==T.top.location){T.top.location=T.location}};this.redirectFile=function(di){if(T.location.protocol==="file:"){T.location=di}};this.setCountPreRendered=function(di){be=di};this.trackGoal=function(di,dl,dk,dj){ch(function(){cS(di,dl,dk,dj)})};this.trackLink=function(dj,di,dl,dk){ch(function(){c0(dj,di,dl,dk)})};this.getNumTrackedPageViews=function(){return cr};this.trackPageView=function(di,dk,dj){ca=[];cK=[];if(N(b6)){ch(function(){Z(aE,bH,b6)})}else{ch(function(){cr++;b0(di,dk,dj)})}};this.trackAllContentImpressions=function(){if(N(b6)){return}ch(function(){q(function(){var di=v.findContentNodes();
-var dj=cz(di);de(dj,bJ)})})};this.trackVisibleContentImpressions=function(di,dj){if(N(b6)){return}if(!J(di)){di=true}if(!J(dj)){dj=750}aS(di,dj,this);ch(function(){n(function(){var dk=v.findContentNodes();var dl=a9(dk);de(dl,bJ)})})};this.trackContentImpression=function(dk,di,dj){if(N(b6)){return}dk=a(dk);di=a(di);dj=a(dj);if(!dk){return}di=di||"Unknown";ch(function(){var dl=aG(dk,di,dj);bF(dl,bJ)})};this.trackContentImpressionsWithinNode=function(di){if(N(b6)||!di){return}ch(function(){if(cf){n(function(){var dj=v.findContentNodesWithinNode(di);var dk=a9(dj);de(dk,bJ)})}else{q(function(){var dj=v.findContentNodesWithinNode(di);var dk=cz(dj);de(dk,bJ)})}})};this.trackContentInteraction=function(dk,dl,di,dj){if(N(b6)){return}dk=a(dk);dl=a(dl);di=a(di);dj=a(dj);if(!dk||!dl){return}di=di||"Unknown";ch(function(){var dm=aP(dk,dl,di,dj);if(dm){bF(dm,bJ)}})};this.trackContentInteractionNode=function(dk,dj){if(N(b6)||!dk){return}var di=null;ch(function(){di=da(dk,dj);if(di){bF(di,bJ)}});return di
-};this.logAllContentBlocksOnPage=function(){var dk=v.findContentNodes();var di=v.collectContent(dk);var dj=typeof console;if(dj!=="undefined"&&console&&console.log){console.log(di)}};this.trackEvent=function(dj,dl,di,dk,dn,dm){ch(function(){at(dj,dl,di,dk,dn,dm)})};this.trackSiteSearch=function(di,dk,dj,dl){ca=[];ch(function(){b8(di,dk,dj,dl)})};this.setEcommerceView=function(dl,di,dk,dj){if(Y(dk)){dk=String(dk)}if(!J(dk)||dk===null||dk===false||!dk.length){dk=""}else{if(dk instanceof Array){dk=T.JSON.stringify(dk)}}bW[5]=["_pkc",dk];if(J(dj)&&dj!==null&&dj!==false&&String(dj).length){bW[2]=["_pkp",dj]}if(!Y(dl)&&!Y(di)){return}if(Y(dl)){bW[3]=["_pks",dl]}if(!Y(di)){di=""}bW[4]=["_pkn",di]};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(cZ))};this.addEcommerceItem=function(dm,di,dk,dj,dl){if(Y(dm)){cZ[dm]=[String(dm),di,dk,dj,dl]}};this.removeEcommerceItem=function(di){if(Y(di)){di=String(di);delete cZ[di]}};this.clearEcommerceCart=function(){cZ={}};this.trackEcommerceOrder=function(di,dm,dl,dk,dj,dn){bZ(di,dm,dl,dk,dj,dn)
-};this.trackEcommerceCartUpdate=function(di){bs(di)};this.trackRequest=function(dj,dl,dk,di){ch(function(){var dm=cs(dj,dl,di);bF(dm,bJ,dk)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bC.enabled=false};this.setRequestQueueInterval=function(di){if(di<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bC.interval=di};this.queueRequest=function(di){ch(function(){var dj=cs(di);bC.push(dj)})};this.isConsentRequired=function(){return cA};this.getRememberedConsent=function(){var di=aD(bd);if(aD(cL)){if(di){bY(bd,bp,cW)}return null}if(!di||di===0){return null}return di};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cA=true;bB=this.hasRememberedConsent();x++;b["CoreConsent"+x]={unload:function(){if(!bB){aF()}}}};this.setConsentGiven=function(){bB=true;bY(cL,bp,cW);var dj,di;for(dj=0;dj<cK.length;dj++){di=typeof cK[dj];if(di==="string"){bF(cK[dj],bJ)}else{if(di==="object"){de(cK[dj],bJ)
-}}}cK=[]};this.rememberConsentGiven=function(dj){if(dj){dj=dj*60*60*1000}else{dj=30*365*24*60*60*1000}this.setConsentGiven();var di=new Date().getTime();dd(bd,di,dj,bp,cW,bS)};this.forgetConsentGiven=function(){var di=30*365*24*60*60*1000;bY(bd,bp,cW);dd(cL,new Date().getTime(),di,bp,cW,bS);this.requireConsent()};this.isUserOptedOut=function(){return !bB};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=this.rememberConsentGiven;n(function(){setTimeout(function(){bE=true},0)});e.trigger("TrackerSetup",[this])}function H(){return{push:af}}function c(au,at){var av={};var aq,ar;for(aq=0;aq<at.length;aq++){var ao=at[aq];av[ao]=1;for(ar=0;ar<au.length;ar++){if(au[ar]&&au[ar][0]){var ap=au[ar][0];if(ao===ap){af(au[ar]);delete au[ar];if(av[ap]>1&&ap!=="addTracker"){ak("The method "+ap+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: https://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')
-}av[ap]++}}}}return au}var C=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","alwaysUseSendBeacon","enableLinkTracking","requireConsent","setConsentGiven"];function ad(ao,aq){var ap=new Q(ao,aq);I.push(ap);_paq=c(_paq,C);for(E=0;E<_paq.length;E++){if(_paq[E]){af(_paq[E])}}_paq=new H();e.trigger("TrackerAdded",[ap]);return ap}an(T,"beforeunload",ai,false);an(T,"message",function(au){if(!au||!au.origin){return}var aw,ar,ap;var ax=d(au.origin);var at=e.getAsyncTrackers();for(ar=0;ar<at.length;ar++){ap=d(at[ar].getPiwikUrl());if(ap===ax){aw=at[ar];break}}if(!aw){return}var aq=null;try{aq=JSON.parse(au.data)}catch(av){return}if(!aq){return}function ao(aA){var aC=G.getElementsByTagName("iframe");for(ar=0;ar<aC.length;ar++){var aB=aC[ar];var ay=d(aB.src);if(aB.contentWindow&&J(aB.contentWindow.postMessage)&&ay===ax){var az=JSON.stringify(aA);
-aB.contentWindow.postMessage(az,"*")}}}if(J(aq.maq_initial_value)){ao({maq_opted_in:aq.maq_initial_value&&aw.hasConsent(),maq_url:aw.getPiwikUrl(),maq_optout_by_default:aw.isConsentRequired()})}else{if(J(aq.maq_opted_in)){at=e.getAsyncTrackers();for(ar=0;ar<at.length;ar++){aw=at[ar];if(aq.maq_opted_in){aw.rememberConsentGiven()}else{aw.forgetConsentGiven()}}ao({maq_confirm_opted_in:aw.hasConsent(),maq_url:aw.getPiwikUrl(),maq_optout_by_default:aw.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;e={initialized:false,JSON:T.JSON,DOM:{addEventListener:function(ar,aq,ap,ao){var at=typeof ao;if(at==="undefined"){ao=false}an(ar,aq,ap,ao)},onLoad:n,onReady:q,isNodeVisible:j,isOrWasNodeVisible:v.isNodeVisible},on:function(ap,ao){if(!y[ap]){y[ap]=[]}y[ap].push(ao)},off:function(aq,ap){if(!y[aq]){return}var ao=0;for(ao;ao<y[aq].length;ao++){if(y[aq][ao]===ap){y[aq].splice(ao,1)}}},trigger:function(aq,ar,ap){if(!y[aq]){return}var ao=0;for(ao;ao<y[aq].length;ao++){y[aq][ao].apply(ap||T,ar)
-}},addPlugin:function(ao,ap){b[ao]=ap},getTracker:function(ao,ap){if(!J(ap)){ap=this.getAsyncTracker().getSiteId()}if(!J(ao)){ao=this.getAsyncTracker().getTrackerUrl()}return new Q(ao,ap)},getAsyncTrackers:function(){return I},addTracker:function(ao,aq){var ap;if(!I.length){ap=ad(ao,aq)}else{ap=I[0].addTracker(ao,aq)}return ap},getAsyncTracker:function(ap,at){var ar;if(I&&I.length&&I[0]){ar=I[0]}else{return ad(ap,at)}if(!at&&!ap){return ar}if((!J(at)||null===at)&&ar){at=ar.getSiteId()}if((!J(ap)||null===ap)&&ar){ap=ar.getTrackerUrl()}var aq,ao=0;for(ao;ao<I.length;ao++){aq=I[ao];if(aq&&String(aq.getSiteId())===String(at)&&aq.getTrackerUrl()===ap){return aq}}},retryMissedPluginCalls:function(){var ap=ah;ah=[];var ao=0;for(ao;ao<ap.length;ao++){af(ap[ao])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return e});define("matomo",[],function(){return e})}return e}())}
+}}dr(100)}if(dm&&dm>0){dm=parseInt(dm,10);dq(dm)}})}var bC={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var di=this.requests;this.requests=[];if(di.length===1){bF(di[0],bJ)}else{de(di,bJ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(dj){if(!this.canQueue()){de(dj,bJ);return}var di;for(di=0;di<dj.length;di++){this.push(dj[di])}},push:function(di){if(!di){return}if(!this.canQueue()){bF(di,bJ);return}bC.requests.push(di);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bC.timeout=null;bC.sendRequests()},bC.interval);var dj="RequestQueue"+aw;if(!Object.prototype.hasOwnProperty.call(b,dj)){b[dj]={unload:function(){if(bC.timeout){clearTimeout(bC.timeout)}bC.sendRequests()}}}}};bi();aM();this.hasConsent=function(){return bB};this.getVisitorId=function(){return aY().uuid};this.getVisitorInfo=function(){return cN()};this.getAttributionInfo=function(){return bM()};this.getAttributionCampaignName=function(){return bM()[0]
+};this.getAttributionCampaignKeyword=function(){return bM()[1]};this.getAttributionReferrerTimestamp=function(){return bM()[2]};this.getAttributionReferrerUrl=function(){return bM()[3]};this.setTrackerUrl=function(di){aE=di};this.getTrackerUrl=function(){return aE};this.getPiwikUrl=function(){return O(this.getTrackerUrl(),bH)};this.addTracker=function(di,dk){if(!J(di)||null===di){di=this.getTrackerUrl()}var dj=new Q(di,dk);I.push(dj);e.trigger("TrackerAdded",[this]);return dj};this.getSiteId=function(){return b6};this.setSiteId=function(di){b3(di)};this.resetUserId=function(){by=""};this.setUserId=function(di){if(Y(di)){by=di}};this.getUserId=function(){return by};this.setCustomData=function(di,dj){if(W(di)){ao=di}else{if(!ao){ao={}}ao[di]=dj}};this.getCustomData=function(){return ao};this.setCustomRequestProcessing=function(di){cb=di};this.appendToTrackingUrl=function(di){cY=di};this.getRequest=function(di){return cs(di)};this.addPlugin=function(di,dj){b[di]=dj};this.setCustomDimension=function(di,dj){di=parseInt(di,10);
+if(di>0){if(!J(dj)){dj=""}if(!w(dj)){dj=String(dj)}bm[di]=dj}};this.getCustomDimension=function(di){di=parseInt(di,10);if(di>0&&Object.prototype.hasOwnProperty.call(bm,di)){return bm[di]}};this.deleteCustomDimension=function(di){di=parseInt(di,10);if(di>0){delete bm[di]}};this.setCustomVariable=function(dj,di,dm,dk){var dl;if(!J(dk)){dk="visit"}if(!J(di)){return}if(!J(dm)){dm=""}if(dj>0){di=!w(di)?String(di):di;dm=!w(dm)?String(dm):dm;dl=[di.slice(0,bt),dm.slice(0,bt)];if(dk==="visit"||dk===2){cE();aQ[dj]=dl}else{if(dk==="page"||dk===3){bW[dj]=dl}else{if(dk==="event"){cm[dj]=dl}}}}};this.getCustomVariable=function(dj,dk){var di;if(!J(dk)){dk="visit"}if(dk==="page"||dk===3){di=bW[dj]}else{if(dk==="event"){di=cm[dj]}else{if(dk==="visit"||dk===2){cE();di=aQ[dj]}}}if(!J(di)||(di&&di[0]==="")){return false}return di};this.deleteCustomVariable=function(di,dj){if(this.getCustomVariable(di,dj)){this.setCustomVariable(di,"","",dj)}};this.deleteCustomVariables=function(di){if(di==="page"||di===3){bW={}
+}else{if(di==="event"){cm={}}else{if(di==="visit"||di===2){aQ={}}}}};this.storeCustomVariablesInCookie=function(){bQ=true};this.setLinkTrackingTimer=function(di){bJ=di};this.getLinkTrackingTimer=function(){return bJ};this.setDownloadExtensions=function(di){if(w(di)){di=di.split("|")}c5=di};this.addDownloadExtensions=function(dj){var di;if(w(dj)){dj=dj.split("|")}for(di=0;di<dj.length;di++){c5.push(dj[di])}};this.removeDownloadExtensions=function(dk){var dj,di=[];if(w(dk)){dk=dk.split("|")}for(dj=0;dj<c5.length;dj++){if(M(dk,c5[dj])===-1){di.push(c5[dj])}}c5=di};this.setDomains=function(di){ax=w(di)?[di]:di;var dm=false,dk=0,dj;for(dk;dk<ax.length;dk++){dj=String(ax[dk]);if(cG(cT,L(dj))){dm=true;break}var dl=cl(dj);if(dl&&dl!=="/"&&dl!=="/*"){dm=true;break}}if(!dm){ax.push(cT)}};this.enableCrossDomainLinking=function(){cM=true};this.disableCrossDomainLinking=function(){cM=false};this.isCrossDomainLinkingEnabled=function(){return cM};this.setCrossDomainLinkingTimeout=function(di){aZ=di};this.getCrossDomainLinkingUrlParameter=function(){return t(av)+"="+t(br())
+};this.setIgnoreClasses=function(di){bz=w(di)?[di]:di};this.setRequestMethod=function(di){c9=di||ci};this.setRequestContentType=function(di){cw=di||aI};this.setReferrerUrl=function(di){bn=di};this.setCustomUrl=function(di){a4=bV(bN,di)};this.getCurrentUrl=function(){return a4||bN};this.setDocumentTitle=function(di){bj=di};this.setAPIUrl=function(di){bH=di};this.setDownloadClasses=function(di){bL=w(di)?[di]:di};this.setLinkClasses=function(di){a8=w(di)?[di]:di};this.setCampaignNameKey=function(di){cq=w(di)?[di]:di};this.setCampaignKeywordKey=function(di){bG=w(di)?[di]:di};this.discardHashTag=function(di){bP=di};this.setCookieNamePrefix=function(di){bk=di;if(aQ){aQ=bX()}};this.setCookieDomain=function(di){var dj=L(di);if(bw(dj)){cW=dj;bi()}};this.getCookieDomain=function(){return cW};this.hasCookies=function(){return"1"===b5()};this.setSessionCookie=function(dk,dj,di){if(!dk){throw new Error("Missing cookie name")}if(!J(di)){di=co}bu.push(dk);dd(aT(dk),dj,di,bp,cW)};this.getCookie=function(dj){var di=aD(aT(dj));
+if(di===0){return null}return di};this.setCookiePath=function(di){bp=di;bi()};this.getCookiePath=function(di){return bp};this.setVisitorCookieTimeout=function(di){cJ=di*1000};this.setSessionCookieTimeout=function(di){co=di*1000};this.getSessionCookieTimeout=function(){return co};this.setReferralCookieTimeout=function(di){c4=di*1000};this.setConversionAttributionFirstReferrer=function(di){bv=di};this.setSecureCookie=function(di){bS=di};this.disableCookies=function(){bl=true;c7.cookie="0";if(b6){aF()}};this.deleteCookies=function(){aF()};this.setDoNotTrack=function(dj){var di=h.doNotTrack||h.msDoNotTrack;cP=dj&&(di==="yes"||di==="1");if(cP){this.disableCookies()}};this.alwaysUseSendBeacon=function(){cV=true};this.disableAlwaysUseSendBeacon=function(){cV=false};this.addListener=function(dj,di){aq(dj,di)};this.enableLinkTracking=function(dj){c8=true;var di=this;ch(function(){q(function(){bD(dj,di)});n(function(){bD(dj,di)})})};this.enableJSErrorTracking=function(){if(cR){return}cR=true;var di=T.onerror;
+T.onerror=function(dn,dl,dk,dm,dj){ch(function(){var dp="JavaScript Errors";var dq=dl+":"+dk;if(dm){dq+=":"+dm}at(dp,dq,dn)});if(di){return di(dn,dl,dk,dm,dj)}return false}};this.disablePerformanceTracking=function(){a2=false};this.setVisitStandardLength=function(di){di=Math.max(di,5);c6=di};this.enableHeartBeatTimer=function(di){di=Math.max(di,5);a5=(di||15)*1000;if(cX!==null){df()}};this.disableHeartBeatTimer=function(){bK();if(a5||aN){if(T.removeEventListener){T.removeEventListener("focus",ba);T.removeEventListener("blur",ay)}else{if(T.detachEvent){T.detachEvent("onfocus",ba);T.detachEvent("onblur",ay)}}}a5=null;aN=false};this.killFrame=function(){if(T.location!==T.top.location){T.top.location=T.location}};this.redirectFile=function(di){if(T.location.protocol==="file:"){T.location=di}};this.setCountPreRendered=function(di){be=di};this.trackGoal=function(di,dl,dk,dj){ch(function(){cS(di,dl,dk,dj)})};this.trackLink=function(dj,di,dl,dk){ch(function(){c0(dj,di,dl,dk)})};this.getNumTrackedPageViews=function(){return cr
+};this.trackPageView=function(di,dk,dj){ca=[];cK=[];if(N(b6)){ch(function(){Z(aE,bH,b6)})}else{ch(function(){cr++;b0(di,dk,dj)})}};this.trackAllContentImpressions=function(){if(N(b6)){return}ch(function(){q(function(){var di=v.findContentNodes();var dj=cz(di);bC.pushMultiple(dj)})})};this.trackVisibleContentImpressions=function(di,dj){if(N(b6)){return}if(!J(di)){di=true}if(!J(dj)){dj=750}aS(di,dj,this);ch(function(){n(function(){var dk=v.findContentNodes();var dl=a9(dk);bC.pushMultiple(dl)})})};this.trackContentImpression=function(dk,di,dj){if(N(b6)){return}dk=a(dk);di=a(di);dj=a(dj);if(!dk){return}di=di||"Unknown";ch(function(){var dl=aG(dk,di,dj);bC.push(dl)})};this.trackContentImpressionsWithinNode=function(di){if(N(b6)||!di){return}ch(function(){if(cf){n(function(){var dj=v.findContentNodesWithinNode(di);var dk=a9(dj);bC.pushMultiple(dk)})}else{q(function(){var dj=v.findContentNodesWithinNode(di);var dk=cz(dj);bC.pushMultiple(dk)})}})};this.trackContentInteraction=function(dk,dl,di,dj){if(N(b6)){return
+}dk=a(dk);dl=a(dl);di=a(di);dj=a(dj);if(!dk||!dl){return}di=di||"Unknown";ch(function(){var dm=aP(dk,dl,di,dj);if(dm){bC.push(dm)}})};this.trackContentInteractionNode=function(dk,dj){if(N(b6)||!dk){return}var di=null;ch(function(){di=da(dk,dj);if(di){bC.push(di)}});return di};this.logAllContentBlocksOnPage=function(){var dk=v.findContentNodes();var di=v.collectContent(dk);var dj=typeof console;if(dj!=="undefined"&&console&&console.log){console.log(di)}};this.trackEvent=function(dj,dl,di,dk,dn,dm){ch(function(){at(dj,dl,di,dk,dn,dm)})};this.trackSiteSearch=function(di,dk,dj,dl){ca=[];ch(function(){b8(di,dk,dj,dl)})};this.setEcommerceView=function(dl,di,dk,dj){if(Y(dk)){dk=String(dk)}if(!J(dk)||dk===null||dk===false||!dk.length){dk=""}else{if(dk instanceof Array){dk=T.JSON.stringify(dk)}}bW[5]=["_pkc",dk];if(J(dj)&&dj!==null&&dj!==false&&String(dj).length){bW[2]=["_pkp",dj]}if(!Y(dl)&&!Y(di)){return}if(Y(dl)){bW[3]=["_pks",dl]}if(!Y(di)){di=""}bW[4]=["_pkn",di]};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(cZ))
+};this.addEcommerceItem=function(dm,di,dk,dj,dl){if(Y(dm)){cZ[dm]=[String(dm),di,dk,dj,dl]}};this.removeEcommerceItem=function(di){if(Y(di)){di=String(di);delete cZ[di]}};this.clearEcommerceCart=function(){cZ={}};this.trackEcommerceOrder=function(di,dm,dl,dk,dj,dn){bZ(di,dm,dl,dk,dj,dn)};this.trackEcommerceCartUpdate=function(di){bs(di)};this.trackRequest=function(dj,dl,dk,di){ch(function(){var dm=cs(dj,dl,di);bF(dm,bJ,dk)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bC.enabled=false};this.setRequestQueueInterval=function(di){if(di<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bC.interval=di};this.queueRequest=function(di){ch(function(){var dj=cs(di);bC.push(dj)})};this.isConsentRequired=function(){return cA};this.getRememberedConsent=function(){var di=aD(bd);if(aD(cL)){if(di){bY(bd,bp,cW)}return null}if(!di||di===0){return null}return di};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()
+};this.requireConsent=function(){cA=true;bB=this.hasRememberedConsent();x++;b["CoreConsent"+x]={unload:function(){if(!bB){aF()}}}};this.setConsentGiven=function(){bB=true;bY(cL,bp,cW);var dj,di;for(dj=0;dj<cK.length;dj++){di=typeof cK[dj];if(di==="string"){bF(cK[dj],bJ)}else{if(di==="object"){de(cK[dj],bJ)}}}cK=[]};this.rememberConsentGiven=function(dj){if(dj){dj=dj*60*60*1000}else{dj=30*365*24*60*60*1000}this.setConsentGiven();var di=new Date().getTime();dd(bd,di,dj,bp,cW,bS)};this.forgetConsentGiven=function(){var di=30*365*24*60*60*1000;bY(bd,bp,cW);dd(cL,new Date().getTime(),di,bp,cW,bS);this.requireConsent()};this.isUserOptedOut=function(){return !bB};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=this.rememberConsentGiven;n(function(){setTimeout(function(){bE=true},0)});e.trigger("TrackerSetup",[this])}function H(){return{push:af}}function c(au,at){var av={};var aq,ar;for(aq=0;aq<at.length;aq++){var ao=at[aq];av[ao]=1;for(ar=0;ar<au.length;ar++){if(au[ar]&&au[ar][0]){var ap=au[ar][0];
+if(ao===ap){af(au[ar]);delete au[ar];if(av[ap]>1&&ap!=="addTracker"){ak("The method "+ap+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: https://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}av[ap]++}}}}return au}var C=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","alwaysUseSendBeacon","enableLinkTracking","requireConsent","setConsentGiven"];function ad(ao,aq){var ap=new Q(ao,aq);I.push(ap);_paq=c(_paq,C);for(E=0;E<_paq.length;E++){if(_paq[E]){af(_paq[E])}}_paq=new H();e.trigger("TrackerAdded",[ap]);return ap}an(T,"beforeunload",ai,false);an(T,"message",function(au){if(!au||!au.origin){return}var aw,ar,ap;var ax=d(au.origin);
+var at=e.getAsyncTrackers();for(ar=0;ar<at.length;ar++){ap=d(at[ar].getPiwikUrl());if(ap===ax){aw=at[ar];break}}if(!aw){return}var aq=null;try{aq=JSON.parse(au.data)}catch(av){return}if(!aq){return}function ao(aA){var aC=G.getElementsByTagName("iframe");for(ar=0;ar<aC.length;ar++){var aB=aC[ar];var ay=d(aB.src);if(aB.contentWindow&&J(aB.contentWindow.postMessage)&&ay===ax){var az=JSON.stringify(aA);aB.contentWindow.postMessage(az,"*")}}}if(J(aq.maq_initial_value)){ao({maq_opted_in:aq.maq_initial_value&&aw.hasConsent(),maq_url:aw.getPiwikUrl(),maq_optout_by_default:aw.isConsentRequired()})}else{if(J(aq.maq_opted_in)){at=e.getAsyncTrackers();for(ar=0;ar<at.length;ar++){aw=at[ar];if(aq.maq_opted_in){aw.rememberConsentGiven()}else{aw.forgetConsentGiven()}}ao({maq_confirm_opted_in:aw.hasConsent(),maq_url:aw.getPiwikUrl(),maq_optout_by_default:aw.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;e={initialized:false,JSON:T.JSON,DOM:{addEventListener:function(ar,aq,ap,ao){var at=typeof ao;
+if(at==="undefined"){ao=false}an(ar,aq,ap,ao)},onLoad:n,onReady:q,isNodeVisible:j,isOrWasNodeVisible:v.isNodeVisible},on:function(ap,ao){if(!y[ap]){y[ap]=[]}y[ap].push(ao)},off:function(aq,ap){if(!y[aq]){return}var ao=0;for(ao;ao<y[aq].length;ao++){if(y[aq][ao]===ap){y[aq].splice(ao,1)}}},trigger:function(aq,ar,ap){if(!y[aq]){return}var ao=0;for(ao;ao<y[aq].length;ao++){y[aq][ao].apply(ap||T,ar)}},addPlugin:function(ao,ap){b[ao]=ap},getTracker:function(ao,ap){if(!J(ap)){ap=this.getAsyncTracker().getSiteId()}if(!J(ao)){ao=this.getAsyncTracker().getTrackerUrl()}return new Q(ao,ap)},getAsyncTrackers:function(){return I},addTracker:function(ao,aq){var ap;if(!I.length){ap=ad(ao,aq)}else{ap=I[0].addTracker(ao,aq)}return ap},getAsyncTracker:function(ap,at){var ar;if(I&&I.length&&I[0]){ar=I[0]}else{return ad(ap,at)}if(!at&&!ap){return ar}if((!J(at)||null===at)&&ar){at=ar.getSiteId()}if((!J(ap)||null===ap)&&ar){ap=ar.getTrackerUrl()}var aq,ao=0;for(ao;ao<I.length;ao++){aq=I[ao];if(aq&&String(aq.getSiteId())===String(at)&&aq.getTrackerUrl()===ap){return aq
+}}},retryMissedPluginCalls:function(){var ap=ah;ah=[];var ao=0;for(ao;ao<ap.length;ao++){af(ap[ao])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return e});define("matomo",[],function(){return e})}return e}())}
/*!!! pluginTrackerHook */
-(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;
-if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(!window.Piwik.getAsyncTrackers().length){if(b()){window.Piwik.addTracker()}else{_paq={push:function(c){var d=typeof console;if(d!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",c)}}}}}window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());(function(){var a=(typeof AnalyticsTracker);
-if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}}}
+(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(!window.Piwik.getAsyncTrackers().length){if(b()){window.Piwik.addTracker()}else{_paq={push:function(c){var d=typeof console;if(d!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",c)
+}}}}}window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());(function(){var a=(typeof AnalyticsTracker);if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}}}
/*!! @license-end */; \ No newline at end of file
diff --git a/piwik.js b/piwik.js
index 07987b806b..f8c695a390 100644
--- a/piwik.js
+++ b/piwik.js
@@ -49,22 +49,22 @@ di--}}if(!dj||!dj.length){return[]}return cz(dj)}function aG(dk,di,dj){var dl=v.
if(dj){dn+="&"+dj}var dm=cs(dn,dq,"link");bF(dm,bJ,dp)}function bU(dj,di){if(dj!==""){return dj+di.charAt(0).toUpperCase()+di.slice(1)}return di}function ch(dn){var dm,di,dl=["","webkit","ms","moz"],dk;if(!be){for(di=0;di<dl.length;di++){dk=dl[di];if(Object.prototype.hasOwnProperty.call(G,bU(dk,"hidden"))){if(G[bU(dk,"visibilityState")]==="prerender"){dm=true}break}}}if(dm){an(G,dk+"visibilitychange",function dj(){G.removeEventListener(dk+"visibilitychange",dj,false);dn()});return}dn()}function br(){var dj=aY().uuid;var di=aJ();return dj+di}function cj(di){if(!di){return}if(!ae.hasNodeAttribute(di,"href")){return}var dj=ae.getAttributeValueFromNode(di,"href");if(!dj||aU(dj)){return}dj=k(dj,av);var dk=br();dj=F(dj,av,dk);ae.setAnyAttribute(di,"href",dj)}function aB(dl){var dm=ae.getAttributeValueFromNode(dl,"href");if(!dm){return false}dm=String(dm);var dj=dm.indexOf("//")===0||dm.indexOf("http://")===0||dm.indexOf("https://")===0;if(!dj){return false}var di=dl.pathname||cl(dl.href);var dk=(dl.hostname||d(dl.href)).toLowerCase();
if(ar(dk,di)){if(!cG(cT,L(dk))){return true}return false}return false}function cF(di){var dj=db(di);if(dj&&dj.type){dj.href=p(dj.href);c0(dj.href,dj.type,undefined,null,di);return}if(cM){di=au(di);if(aB(di)){cj(di)}}}function cv(){return G.all&&!G.addEventListener}function cU(di){var dk=di.which;var dj=(typeof di.button);if(!dk&&dj!=="undefined"){if(cv()){if(di.button&1){dk=1}else{if(di.button&2){dk=3}else{if(di.button&4){dk=2}}}}else{if(di.button===0||di.button==="0"){dk=1}else{if(di.button&1){dk=2}else{if(di.button&2){dk=3}}}}}return dk}function bT(di){switch(cU(di)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function a1(di){return di.target||di.srcElement}function aC(di){return function(dl){dl=dl||T.event;var dk=bT(dl);var dm=a1(dl);if(dl.type==="click"){var dj=false;if(di&&dk==="middle"){dj=true}if(dm&&!dj){cF(dm)}}else{if(dl.type==="mousedown"){if(dk==="middle"&&dm){aR=dk;bA=dm}else{aR=bA=null}}else{if(dl.type==="mouseup"){if(dk===aR&&dm===bA){cF(dm)}aR=bA=null
}else{if(dl.type==="contextmenu"){cF(dm)}}}}}}function aq(dk,dj){var di=typeof dj;if(di==="undefined"){dj=true}an(dk,"click",aC(dj),false);if(dj){an(dk,"mouseup",aC(dj),false);an(dk,"mousedown",aC(dj),false);an(dk,"contextmenu",aC(dj),false)}}function bD(dk,dm){ap=true;var dl,dj=a0(bz,"ignore"),dn=G.links,di=null,dp=null;if(dn){for(dl=0;dl<dn.length;dl++){di=dn[dl];if(!dj.test(di.className)){dp=typeof di.piwikTrackers;if("undefined"===dp){di.piwikTrackers=[]}if(-1===M(di.piwikTrackers,dm)){di.piwikTrackers.push(dm);aq(di,dk)}}}}}function aS(dj,dm,dn){if(cf){return true}cf=true;var dp=false;var dl,dk;function di(){dp=true}n(function(){function dq(ds){setTimeout(function(){if(!cf){return}dp=false;dn.trackVisibleContentImpressions();dq(ds)},ds)}function dr(ds){setTimeout(function(){if(!cf){return}if(dp){dp=false;dn.trackVisibleContentImpressions()}dr(ds)},ds)}if(dj){dl=["scroll","resize"];for(dk=0;dk<dl.length;dk++){if(G.addEventListener){G.addEventListener(dl[dk],di,false)}else{T.attachEvent("on"+dl[dk],di)
-}}dr(100)}if(dm&&dm>0){dm=parseInt(dm,10);dq(dm)}})}var bC={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var di=this.requests;this.requests=[];if(di.length===1){bF(di[0],bJ)}else{de(di,bJ)}},push:function(di){if(!di){return}if(m||!this.enabled){bF(di,bJ);return}bC.requests.push(di);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bC.timeout=null;bC.sendRequests()},bC.interval);var dj="RequestQueue"+aw;if(!Object.prototype.hasOwnProperty.call(b,dj)){b[dj]={unload:function(){if(bC.timeout){clearTimeout(bC.timeout)}bC.sendRequests()}}}}};bi();aM();this.hasConsent=function(){return bB};this.getVisitorId=function(){return aY().uuid};this.getVisitorInfo=function(){return cN()};this.getAttributionInfo=function(){return bM()};this.getAttributionCampaignName=function(){return bM()[0]};this.getAttributionCampaignKeyword=function(){return bM()[1]};this.getAttributionReferrerTimestamp=function(){return bM()[2]};this.getAttributionReferrerUrl=function(){return bM()[3]
-};this.setTrackerUrl=function(di){aE=di};this.getTrackerUrl=function(){return aE};this.getPiwikUrl=function(){return O(this.getTrackerUrl(),bH)};this.addTracker=function(di,dk){if(!J(di)||null===di){di=this.getTrackerUrl()}var dj=new Q(di,dk);I.push(dj);e.trigger("TrackerAdded",[this]);return dj};this.getSiteId=function(){return b6};this.setSiteId=function(di){b3(di)};this.resetUserId=function(){by=""};this.setUserId=function(di){if(Y(di)){by=di}};this.getUserId=function(){return by};this.setCustomData=function(di,dj){if(W(di)){ao=di}else{if(!ao){ao={}}ao[di]=dj}};this.getCustomData=function(){return ao};this.setCustomRequestProcessing=function(di){cb=di};this.appendToTrackingUrl=function(di){cY=di};this.getRequest=function(di){return cs(di)};this.addPlugin=function(di,dj){b[di]=dj};this.setCustomDimension=function(di,dj){di=parseInt(di,10);if(di>0){if(!J(dj)){dj=""}if(!w(dj)){dj=String(dj)}bm[di]=dj}};this.getCustomDimension=function(di){di=parseInt(di,10);if(di>0&&Object.prototype.hasOwnProperty.call(bm,di)){return bm[di]
-}};this.deleteCustomDimension=function(di){di=parseInt(di,10);if(di>0){delete bm[di]}};this.setCustomVariable=function(dj,di,dm,dk){var dl;if(!J(dk)){dk="visit"}if(!J(di)){return}if(!J(dm)){dm=""}if(dj>0){di=!w(di)?String(di):di;dm=!w(dm)?String(dm):dm;dl=[di.slice(0,bt),dm.slice(0,bt)];if(dk==="visit"||dk===2){cE();aQ[dj]=dl}else{if(dk==="page"||dk===3){bW[dj]=dl}else{if(dk==="event"){cm[dj]=dl}}}}};this.getCustomVariable=function(dj,dk){var di;if(!J(dk)){dk="visit"}if(dk==="page"||dk===3){di=bW[dj]}else{if(dk==="event"){di=cm[dj]}else{if(dk==="visit"||dk===2){cE();di=aQ[dj]}}}if(!J(di)||(di&&di[0]==="")){return false}return di};this.deleteCustomVariable=function(di,dj){if(this.getCustomVariable(di,dj)){this.setCustomVariable(di,"","",dj)}};this.deleteCustomVariables=function(di){if(di==="page"||di===3){bW={}}else{if(di==="event"){cm={}}else{if(di==="visit"||di===2){aQ={}}}}};this.storeCustomVariablesInCookie=function(){bQ=true};this.setLinkTrackingTimer=function(di){bJ=di};this.getLinkTrackingTimer=function(){return bJ
-};this.setDownloadExtensions=function(di){if(w(di)){di=di.split("|")}c5=di};this.addDownloadExtensions=function(dj){var di;if(w(dj)){dj=dj.split("|")}for(di=0;di<dj.length;di++){c5.push(dj[di])}};this.removeDownloadExtensions=function(dk){var dj,di=[];if(w(dk)){dk=dk.split("|")}for(dj=0;dj<c5.length;dj++){if(M(dk,c5[dj])===-1){di.push(c5[dj])}}c5=di};this.setDomains=function(di){ax=w(di)?[di]:di;var dm=false,dk=0,dj;for(dk;dk<ax.length;dk++){dj=String(ax[dk]);if(cG(cT,L(dj))){dm=true;break}var dl=cl(dj);if(dl&&dl!=="/"&&dl!=="/*"){dm=true;break}}if(!dm){ax.push(cT)}};this.enableCrossDomainLinking=function(){cM=true};this.disableCrossDomainLinking=function(){cM=false};this.isCrossDomainLinkingEnabled=function(){return cM};this.setCrossDomainLinkingTimeout=function(di){aZ=di};this.getCrossDomainLinkingUrlParameter=function(){return t(av)+"="+t(br())};this.setIgnoreClasses=function(di){bz=w(di)?[di]:di};this.setRequestMethod=function(di){c9=di||ci};this.setRequestContentType=function(di){cw=di||aI
-};this.setReferrerUrl=function(di){bn=di};this.setCustomUrl=function(di){a4=bV(bN,di)};this.getCurrentUrl=function(){return a4||bN};this.setDocumentTitle=function(di){bj=di};this.setAPIUrl=function(di){bH=di};this.setDownloadClasses=function(di){bL=w(di)?[di]:di};this.setLinkClasses=function(di){a8=w(di)?[di]:di};this.setCampaignNameKey=function(di){cq=w(di)?[di]:di};this.setCampaignKeywordKey=function(di){bG=w(di)?[di]:di};this.discardHashTag=function(di){bP=di};this.setCookieNamePrefix=function(di){bk=di;if(aQ){aQ=bX()}};this.setCookieDomain=function(di){var dj=L(di);if(bw(dj)){cW=dj;bi()}};this.getCookieDomain=function(){return cW};this.hasCookies=function(){return"1"===b5()};this.setSessionCookie=function(dk,dj,di){if(!dk){throw new Error("Missing cookie name")}if(!J(di)){di=co}bu.push(dk);dd(aT(dk),dj,di,bp,cW)};this.getCookie=function(dj){var di=aD(aT(dj));if(di===0){return null}return di};this.setCookiePath=function(di){bp=di;bi()};this.getCookiePath=function(di){return bp};this.setVisitorCookieTimeout=function(di){cJ=di*1000
-};this.setSessionCookieTimeout=function(di){co=di*1000};this.getSessionCookieTimeout=function(){return co};this.setReferralCookieTimeout=function(di){c4=di*1000};this.setConversionAttributionFirstReferrer=function(di){bv=di};this.setSecureCookie=function(di){bS=di};this.disableCookies=function(){bl=true;c7.cookie="0";if(b6){aF()}};this.deleteCookies=function(){aF()};this.setDoNotTrack=function(dj){var di=h.doNotTrack||h.msDoNotTrack;cP=dj&&(di==="yes"||di==="1");if(cP){this.disableCookies()}};this.alwaysUseSendBeacon=function(){cV=true};this.disableAlwaysUseSendBeacon=function(){cV=false};this.addListener=function(dj,di){aq(dj,di)};this.enableLinkTracking=function(dj){c8=true;var di=this;ch(function(){q(function(){bD(dj,di)})})};this.enableJSErrorTracking=function(){if(cR){return}cR=true;var di=T.onerror;T.onerror=function(dn,dl,dk,dm,dj){ch(function(){var dp="JavaScript Errors";var dq=dl+":"+dk;if(dm){dq+=":"+dm}at(dp,dq,dn)});if(di){return di(dn,dl,dk,dm,dj)}return false}};this.disablePerformanceTracking=function(){a2=false
-};this.setVisitStandardLength=function(di){di=Math.max(di,5);c6=di};this.enableHeartBeatTimer=function(di){di=Math.max(di,5);a5=(di||15)*1000;if(cX!==null){df()}};this.disableHeartBeatTimer=function(){bK();if(a5||aN){if(T.removeEventListener){T.removeEventListener("focus",ba);T.removeEventListener("blur",ay)}else{if(T.detachEvent){T.detachEvent("onfocus",ba);T.detachEvent("onblur",ay)}}}a5=null;aN=false};this.killFrame=function(){if(T.location!==T.top.location){T.top.location=T.location}};this.redirectFile=function(di){if(T.location.protocol==="file:"){T.location=di}};this.setCountPreRendered=function(di){be=di};this.trackGoal=function(di,dl,dk,dj){ch(function(){cS(di,dl,dk,dj)})};this.trackLink=function(dj,di,dl,dk){ch(function(){c0(dj,di,dl,dk)})};this.getNumTrackedPageViews=function(){return cr};this.trackPageView=function(di,dk,dj){ca=[];cK=[];if(N(b6)){ch(function(){Z(aE,bH,b6)})}else{ch(function(){cr++;b0(di,dk,dj)})}};this.trackAllContentImpressions=function(){if(N(b6)){return}ch(function(){q(function(){var di=v.findContentNodes();
-var dj=cz(di);de(dj,bJ)})})};this.trackVisibleContentImpressions=function(di,dj){if(N(b6)){return}if(!J(di)){di=true}if(!J(dj)){dj=750}aS(di,dj,this);ch(function(){n(function(){var dk=v.findContentNodes();var dl=a9(dk);de(dl,bJ)})})};this.trackContentImpression=function(dk,di,dj){if(N(b6)){return}dk=a(dk);di=a(di);dj=a(dj);if(!dk){return}di=di||"Unknown";ch(function(){var dl=aG(dk,di,dj);bF(dl,bJ)})};this.trackContentImpressionsWithinNode=function(di){if(N(b6)||!di){return}ch(function(){if(cf){n(function(){var dj=v.findContentNodesWithinNode(di);var dk=a9(dj);de(dk,bJ)})}else{q(function(){var dj=v.findContentNodesWithinNode(di);var dk=cz(dj);de(dk,bJ)})}})};this.trackContentInteraction=function(dk,dl,di,dj){if(N(b6)){return}dk=a(dk);dl=a(dl);di=a(di);dj=a(dj);if(!dk||!dl){return}di=di||"Unknown";ch(function(){var dm=aP(dk,dl,di,dj);if(dm){bF(dm,bJ)}})};this.trackContentInteractionNode=function(dk,dj){if(N(b6)||!dk){return}var di=null;ch(function(){di=da(dk,dj);if(di){bF(di,bJ)}});return di
-};this.logAllContentBlocksOnPage=function(){var dk=v.findContentNodes();var di=v.collectContent(dk);var dj=typeof console;if(dj!=="undefined"&&console&&console.log){console.log(di)}};this.trackEvent=function(dj,dl,di,dk,dn,dm){ch(function(){at(dj,dl,di,dk,dn,dm)})};this.trackSiteSearch=function(di,dk,dj,dl){ca=[];ch(function(){b8(di,dk,dj,dl)})};this.setEcommerceView=function(dl,di,dk,dj){if(Y(dk)){dk=String(dk)}if(!J(dk)||dk===null||dk===false||!dk.length){dk=""}else{if(dk instanceof Array){dk=T.JSON.stringify(dk)}}bW[5]=["_pkc",dk];if(J(dj)&&dj!==null&&dj!==false&&String(dj).length){bW[2]=["_pkp",dj]}if(!Y(dl)&&!Y(di)){return}if(Y(dl)){bW[3]=["_pks",dl]}if(!Y(di)){di=""}bW[4]=["_pkn",di]};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(cZ))};this.addEcommerceItem=function(dm,di,dk,dj,dl){if(Y(dm)){cZ[dm]=[String(dm),di,dk,dj,dl]}};this.removeEcommerceItem=function(di){if(Y(di)){di=String(di);delete cZ[di]}};this.clearEcommerceCart=function(){cZ={}};this.trackEcommerceOrder=function(di,dm,dl,dk,dj,dn){bZ(di,dm,dl,dk,dj,dn)
-};this.trackEcommerceCartUpdate=function(di){bs(di)};this.trackRequest=function(dj,dl,dk,di){ch(function(){var dm=cs(dj,dl,di);bF(dm,bJ,dk)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bC.enabled=false};this.setRequestQueueInterval=function(di){if(di<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bC.interval=di};this.queueRequest=function(di){ch(function(){var dj=cs(di);bC.push(dj)})};this.isConsentRequired=function(){return cA};this.getRememberedConsent=function(){var di=aD(bd);if(aD(cL)){if(di){bY(bd,bp,cW)}return null}if(!di||di===0){return null}return di};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cA=true;bB=this.hasRememberedConsent();x++;b["CoreConsent"+x]={unload:function(){if(!bB){aF()}}}};this.setConsentGiven=function(){bB=true;bY(cL,bp,cW);var dj,di;for(dj=0;dj<cK.length;dj++){di=typeof cK[dj];if(di==="string"){bF(cK[dj],bJ)}else{if(di==="object"){de(cK[dj],bJ)
-}}}cK=[]};this.rememberConsentGiven=function(dj){if(dj){dj=dj*60*60*1000}else{dj=30*365*24*60*60*1000}this.setConsentGiven();var di=new Date().getTime();dd(bd,di,dj,bp,cW,bS)};this.forgetConsentGiven=function(){var di=30*365*24*60*60*1000;bY(bd,bp,cW);dd(cL,new Date().getTime(),di,bp,cW,bS);this.requireConsent()};this.isUserOptedOut=function(){return !bB};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=this.rememberConsentGiven;n(function(){setTimeout(function(){bE=true},0)});e.trigger("TrackerSetup",[this])}function H(){return{push:af}}function c(au,at){var av={};var aq,ar;for(aq=0;aq<at.length;aq++){var ao=at[aq];av[ao]=1;for(ar=0;ar<au.length;ar++){if(au[ar]&&au[ar][0]){var ap=au[ar][0];if(ao===ap){af(au[ar]);delete au[ar];if(av[ap]>1&&ap!=="addTracker"){ak("The method "+ap+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: https://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')
-}av[ap]++}}}}return au}var C=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","alwaysUseSendBeacon","enableLinkTracking","requireConsent","setConsentGiven"];function ad(ao,aq){var ap=new Q(ao,aq);I.push(ap);_paq=c(_paq,C);for(E=0;E<_paq.length;E++){if(_paq[E]){af(_paq[E])}}_paq=new H();e.trigger("TrackerAdded",[ap]);return ap}an(T,"beforeunload",ai,false);an(T,"message",function(au){if(!au||!au.origin){return}var aw,ar,ap;var ax=d(au.origin);var at=e.getAsyncTrackers();for(ar=0;ar<at.length;ar++){ap=d(at[ar].getPiwikUrl());if(ap===ax){aw=at[ar];break}}if(!aw){return}var aq=null;try{aq=JSON.parse(au.data)}catch(av){return}if(!aq){return}function ao(aA){var aC=G.getElementsByTagName("iframe");for(ar=0;ar<aC.length;ar++){var aB=aC[ar];var ay=d(aB.src);if(aB.contentWindow&&J(aB.contentWindow.postMessage)&&ay===ax){var az=JSON.stringify(aA);
-aB.contentWindow.postMessage(az,"*")}}}if(J(aq.maq_initial_value)){ao({maq_opted_in:aq.maq_initial_value&&aw.hasConsent(),maq_url:aw.getPiwikUrl(),maq_optout_by_default:aw.isConsentRequired()})}else{if(J(aq.maq_opted_in)){at=e.getAsyncTrackers();for(ar=0;ar<at.length;ar++){aw=at[ar];if(aq.maq_opted_in){aw.rememberConsentGiven()}else{aw.forgetConsentGiven()}}ao({maq_confirm_opted_in:aw.hasConsent(),maq_url:aw.getPiwikUrl(),maq_optout_by_default:aw.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;e={initialized:false,JSON:T.JSON,DOM:{addEventListener:function(ar,aq,ap,ao){var at=typeof ao;if(at==="undefined"){ao=false}an(ar,aq,ap,ao)},onLoad:n,onReady:q,isNodeVisible:j,isOrWasNodeVisible:v.isNodeVisible},on:function(ap,ao){if(!y[ap]){y[ap]=[]}y[ap].push(ao)},off:function(aq,ap){if(!y[aq]){return}var ao=0;for(ao;ao<y[aq].length;ao++){if(y[aq][ao]===ap){y[aq].splice(ao,1)}}},trigger:function(aq,ar,ap){if(!y[aq]){return}var ao=0;for(ao;ao<y[aq].length;ao++){y[aq][ao].apply(ap||T,ar)
-}},addPlugin:function(ao,ap){b[ao]=ap},getTracker:function(ao,ap){if(!J(ap)){ap=this.getAsyncTracker().getSiteId()}if(!J(ao)){ao=this.getAsyncTracker().getTrackerUrl()}return new Q(ao,ap)},getAsyncTrackers:function(){return I},addTracker:function(ao,aq){var ap;if(!I.length){ap=ad(ao,aq)}else{ap=I[0].addTracker(ao,aq)}return ap},getAsyncTracker:function(ap,at){var ar;if(I&&I.length&&I[0]){ar=I[0]}else{return ad(ap,at)}if(!at&&!ap){return ar}if((!J(at)||null===at)&&ar){at=ar.getSiteId()}if((!J(ap)||null===ap)&&ar){ap=ar.getTrackerUrl()}var aq,ao=0;for(ao;ao<I.length;ao++){aq=I[ao];if(aq&&String(aq.getSiteId())===String(at)&&aq.getTrackerUrl()===ap){return aq}}},retryMissedPluginCalls:function(){var ap=ah;ah=[];var ao=0;for(ao;ao<ap.length;ao++){af(ap[ao])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return e});define("matomo",[],function(){return e})}return e}())}
+}}dr(100)}if(dm&&dm>0){dm=parseInt(dm,10);dq(dm)}})}var bC={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var di=this.requests;this.requests=[];if(di.length===1){bF(di[0],bJ)}else{de(di,bJ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(dj){if(!this.canQueue()){de(dj,bJ);return}var di;for(di=0;di<dj.length;di++){this.push(dj[di])}},push:function(di){if(!di){return}if(!this.canQueue()){bF(di,bJ);return}bC.requests.push(di);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bC.timeout=null;bC.sendRequests()},bC.interval);var dj="RequestQueue"+aw;if(!Object.prototype.hasOwnProperty.call(b,dj)){b[dj]={unload:function(){if(bC.timeout){clearTimeout(bC.timeout)}bC.sendRequests()}}}}};bi();aM();this.hasConsent=function(){return bB};this.getVisitorId=function(){return aY().uuid};this.getVisitorInfo=function(){return cN()};this.getAttributionInfo=function(){return bM()};this.getAttributionCampaignName=function(){return bM()[0]
+};this.getAttributionCampaignKeyword=function(){return bM()[1]};this.getAttributionReferrerTimestamp=function(){return bM()[2]};this.getAttributionReferrerUrl=function(){return bM()[3]};this.setTrackerUrl=function(di){aE=di};this.getTrackerUrl=function(){return aE};this.getPiwikUrl=function(){return O(this.getTrackerUrl(),bH)};this.addTracker=function(di,dk){if(!J(di)||null===di){di=this.getTrackerUrl()}var dj=new Q(di,dk);I.push(dj);e.trigger("TrackerAdded",[this]);return dj};this.getSiteId=function(){return b6};this.setSiteId=function(di){b3(di)};this.resetUserId=function(){by=""};this.setUserId=function(di){if(Y(di)){by=di}};this.getUserId=function(){return by};this.setCustomData=function(di,dj){if(W(di)){ao=di}else{if(!ao){ao={}}ao[di]=dj}};this.getCustomData=function(){return ao};this.setCustomRequestProcessing=function(di){cb=di};this.appendToTrackingUrl=function(di){cY=di};this.getRequest=function(di){return cs(di)};this.addPlugin=function(di,dj){b[di]=dj};this.setCustomDimension=function(di,dj){di=parseInt(di,10);
+if(di>0){if(!J(dj)){dj=""}if(!w(dj)){dj=String(dj)}bm[di]=dj}};this.getCustomDimension=function(di){di=parseInt(di,10);if(di>0&&Object.prototype.hasOwnProperty.call(bm,di)){return bm[di]}};this.deleteCustomDimension=function(di){di=parseInt(di,10);if(di>0){delete bm[di]}};this.setCustomVariable=function(dj,di,dm,dk){var dl;if(!J(dk)){dk="visit"}if(!J(di)){return}if(!J(dm)){dm=""}if(dj>0){di=!w(di)?String(di):di;dm=!w(dm)?String(dm):dm;dl=[di.slice(0,bt),dm.slice(0,bt)];if(dk==="visit"||dk===2){cE();aQ[dj]=dl}else{if(dk==="page"||dk===3){bW[dj]=dl}else{if(dk==="event"){cm[dj]=dl}}}}};this.getCustomVariable=function(dj,dk){var di;if(!J(dk)){dk="visit"}if(dk==="page"||dk===3){di=bW[dj]}else{if(dk==="event"){di=cm[dj]}else{if(dk==="visit"||dk===2){cE();di=aQ[dj]}}}if(!J(di)||(di&&di[0]==="")){return false}return di};this.deleteCustomVariable=function(di,dj){if(this.getCustomVariable(di,dj)){this.setCustomVariable(di,"","",dj)}};this.deleteCustomVariables=function(di){if(di==="page"||di===3){bW={}
+}else{if(di==="event"){cm={}}else{if(di==="visit"||di===2){aQ={}}}}};this.storeCustomVariablesInCookie=function(){bQ=true};this.setLinkTrackingTimer=function(di){bJ=di};this.getLinkTrackingTimer=function(){return bJ};this.setDownloadExtensions=function(di){if(w(di)){di=di.split("|")}c5=di};this.addDownloadExtensions=function(dj){var di;if(w(dj)){dj=dj.split("|")}for(di=0;di<dj.length;di++){c5.push(dj[di])}};this.removeDownloadExtensions=function(dk){var dj,di=[];if(w(dk)){dk=dk.split("|")}for(dj=0;dj<c5.length;dj++){if(M(dk,c5[dj])===-1){di.push(c5[dj])}}c5=di};this.setDomains=function(di){ax=w(di)?[di]:di;var dm=false,dk=0,dj;for(dk;dk<ax.length;dk++){dj=String(ax[dk]);if(cG(cT,L(dj))){dm=true;break}var dl=cl(dj);if(dl&&dl!=="/"&&dl!=="/*"){dm=true;break}}if(!dm){ax.push(cT)}};this.enableCrossDomainLinking=function(){cM=true};this.disableCrossDomainLinking=function(){cM=false};this.isCrossDomainLinkingEnabled=function(){return cM};this.setCrossDomainLinkingTimeout=function(di){aZ=di};this.getCrossDomainLinkingUrlParameter=function(){return t(av)+"="+t(br())
+};this.setIgnoreClasses=function(di){bz=w(di)?[di]:di};this.setRequestMethod=function(di){c9=di||ci};this.setRequestContentType=function(di){cw=di||aI};this.setReferrerUrl=function(di){bn=di};this.setCustomUrl=function(di){a4=bV(bN,di)};this.getCurrentUrl=function(){return a4||bN};this.setDocumentTitle=function(di){bj=di};this.setAPIUrl=function(di){bH=di};this.setDownloadClasses=function(di){bL=w(di)?[di]:di};this.setLinkClasses=function(di){a8=w(di)?[di]:di};this.setCampaignNameKey=function(di){cq=w(di)?[di]:di};this.setCampaignKeywordKey=function(di){bG=w(di)?[di]:di};this.discardHashTag=function(di){bP=di};this.setCookieNamePrefix=function(di){bk=di;if(aQ){aQ=bX()}};this.setCookieDomain=function(di){var dj=L(di);if(bw(dj)){cW=dj;bi()}};this.getCookieDomain=function(){return cW};this.hasCookies=function(){return"1"===b5()};this.setSessionCookie=function(dk,dj,di){if(!dk){throw new Error("Missing cookie name")}if(!J(di)){di=co}bu.push(dk);dd(aT(dk),dj,di,bp,cW)};this.getCookie=function(dj){var di=aD(aT(dj));
+if(di===0){return null}return di};this.setCookiePath=function(di){bp=di;bi()};this.getCookiePath=function(di){return bp};this.setVisitorCookieTimeout=function(di){cJ=di*1000};this.setSessionCookieTimeout=function(di){co=di*1000};this.getSessionCookieTimeout=function(){return co};this.setReferralCookieTimeout=function(di){c4=di*1000};this.setConversionAttributionFirstReferrer=function(di){bv=di};this.setSecureCookie=function(di){bS=di};this.disableCookies=function(){bl=true;c7.cookie="0";if(b6){aF()}};this.deleteCookies=function(){aF()};this.setDoNotTrack=function(dj){var di=h.doNotTrack||h.msDoNotTrack;cP=dj&&(di==="yes"||di==="1");if(cP){this.disableCookies()}};this.alwaysUseSendBeacon=function(){cV=true};this.disableAlwaysUseSendBeacon=function(){cV=false};this.addListener=function(dj,di){aq(dj,di)};this.enableLinkTracking=function(dj){c8=true;var di=this;ch(function(){q(function(){bD(dj,di)});n(function(){bD(dj,di)})})};this.enableJSErrorTracking=function(){if(cR){return}cR=true;var di=T.onerror;
+T.onerror=function(dn,dl,dk,dm,dj){ch(function(){var dp="JavaScript Errors";var dq=dl+":"+dk;if(dm){dq+=":"+dm}at(dp,dq,dn)});if(di){return di(dn,dl,dk,dm,dj)}return false}};this.disablePerformanceTracking=function(){a2=false};this.setVisitStandardLength=function(di){di=Math.max(di,5);c6=di};this.enableHeartBeatTimer=function(di){di=Math.max(di,5);a5=(di||15)*1000;if(cX!==null){df()}};this.disableHeartBeatTimer=function(){bK();if(a5||aN){if(T.removeEventListener){T.removeEventListener("focus",ba);T.removeEventListener("blur",ay)}else{if(T.detachEvent){T.detachEvent("onfocus",ba);T.detachEvent("onblur",ay)}}}a5=null;aN=false};this.killFrame=function(){if(T.location!==T.top.location){T.top.location=T.location}};this.redirectFile=function(di){if(T.location.protocol==="file:"){T.location=di}};this.setCountPreRendered=function(di){be=di};this.trackGoal=function(di,dl,dk,dj){ch(function(){cS(di,dl,dk,dj)})};this.trackLink=function(dj,di,dl,dk){ch(function(){c0(dj,di,dl,dk)})};this.getNumTrackedPageViews=function(){return cr
+};this.trackPageView=function(di,dk,dj){ca=[];cK=[];if(N(b6)){ch(function(){Z(aE,bH,b6)})}else{ch(function(){cr++;b0(di,dk,dj)})}};this.trackAllContentImpressions=function(){if(N(b6)){return}ch(function(){q(function(){var di=v.findContentNodes();var dj=cz(di);bC.pushMultiple(dj)})})};this.trackVisibleContentImpressions=function(di,dj){if(N(b6)){return}if(!J(di)){di=true}if(!J(dj)){dj=750}aS(di,dj,this);ch(function(){n(function(){var dk=v.findContentNodes();var dl=a9(dk);bC.pushMultiple(dl)})})};this.trackContentImpression=function(dk,di,dj){if(N(b6)){return}dk=a(dk);di=a(di);dj=a(dj);if(!dk){return}di=di||"Unknown";ch(function(){var dl=aG(dk,di,dj);bC.push(dl)})};this.trackContentImpressionsWithinNode=function(di){if(N(b6)||!di){return}ch(function(){if(cf){n(function(){var dj=v.findContentNodesWithinNode(di);var dk=a9(dj);bC.pushMultiple(dk)})}else{q(function(){var dj=v.findContentNodesWithinNode(di);var dk=cz(dj);bC.pushMultiple(dk)})}})};this.trackContentInteraction=function(dk,dl,di,dj){if(N(b6)){return
+}dk=a(dk);dl=a(dl);di=a(di);dj=a(dj);if(!dk||!dl){return}di=di||"Unknown";ch(function(){var dm=aP(dk,dl,di,dj);if(dm){bC.push(dm)}})};this.trackContentInteractionNode=function(dk,dj){if(N(b6)||!dk){return}var di=null;ch(function(){di=da(dk,dj);if(di){bC.push(di)}});return di};this.logAllContentBlocksOnPage=function(){var dk=v.findContentNodes();var di=v.collectContent(dk);var dj=typeof console;if(dj!=="undefined"&&console&&console.log){console.log(di)}};this.trackEvent=function(dj,dl,di,dk,dn,dm){ch(function(){at(dj,dl,di,dk,dn,dm)})};this.trackSiteSearch=function(di,dk,dj,dl){ca=[];ch(function(){b8(di,dk,dj,dl)})};this.setEcommerceView=function(dl,di,dk,dj){if(Y(dk)){dk=String(dk)}if(!J(dk)||dk===null||dk===false||!dk.length){dk=""}else{if(dk instanceof Array){dk=T.JSON.stringify(dk)}}bW[5]=["_pkc",dk];if(J(dj)&&dj!==null&&dj!==false&&String(dj).length){bW[2]=["_pkp",dj]}if(!Y(dl)&&!Y(di)){return}if(Y(dl)){bW[3]=["_pks",dl]}if(!Y(di)){di=""}bW[4]=["_pkn",di]};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(cZ))
+};this.addEcommerceItem=function(dm,di,dk,dj,dl){if(Y(dm)){cZ[dm]=[String(dm),di,dk,dj,dl]}};this.removeEcommerceItem=function(di){if(Y(di)){di=String(di);delete cZ[di]}};this.clearEcommerceCart=function(){cZ={}};this.trackEcommerceOrder=function(di,dm,dl,dk,dj,dn){bZ(di,dm,dl,dk,dj,dn)};this.trackEcommerceCartUpdate=function(di){bs(di)};this.trackRequest=function(dj,dl,dk,di){ch(function(){var dm=cs(dj,dl,di);bF(dm,bJ,dk)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bC.enabled=false};this.setRequestQueueInterval=function(di){if(di<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bC.interval=di};this.queueRequest=function(di){ch(function(){var dj=cs(di);bC.push(dj)})};this.isConsentRequired=function(){return cA};this.getRememberedConsent=function(){var di=aD(bd);if(aD(cL)){if(di){bY(bd,bp,cW)}return null}if(!di||di===0){return null}return di};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()
+};this.requireConsent=function(){cA=true;bB=this.hasRememberedConsent();x++;b["CoreConsent"+x]={unload:function(){if(!bB){aF()}}}};this.setConsentGiven=function(){bB=true;bY(cL,bp,cW);var dj,di;for(dj=0;dj<cK.length;dj++){di=typeof cK[dj];if(di==="string"){bF(cK[dj],bJ)}else{if(di==="object"){de(cK[dj],bJ)}}}cK=[]};this.rememberConsentGiven=function(dj){if(dj){dj=dj*60*60*1000}else{dj=30*365*24*60*60*1000}this.setConsentGiven();var di=new Date().getTime();dd(bd,di,dj,bp,cW,bS)};this.forgetConsentGiven=function(){var di=30*365*24*60*60*1000;bY(bd,bp,cW);dd(cL,new Date().getTime(),di,bp,cW,bS);this.requireConsent()};this.isUserOptedOut=function(){return !bB};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=this.rememberConsentGiven;n(function(){setTimeout(function(){bE=true},0)});e.trigger("TrackerSetup",[this])}function H(){return{push:af}}function c(au,at){var av={};var aq,ar;for(aq=0;aq<at.length;aq++){var ao=at[aq];av[ao]=1;for(ar=0;ar<au.length;ar++){if(au[ar]&&au[ar][0]){var ap=au[ar][0];
+if(ao===ap){af(au[ar]);delete au[ar];if(av[ap]>1&&ap!=="addTracker"){ak("The method "+ap+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: https://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}av[ap]++}}}}return au}var C=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","alwaysUseSendBeacon","enableLinkTracking","requireConsent","setConsentGiven"];function ad(ao,aq){var ap=new Q(ao,aq);I.push(ap);_paq=c(_paq,C);for(E=0;E<_paq.length;E++){if(_paq[E]){af(_paq[E])}}_paq=new H();e.trigger("TrackerAdded",[ap]);return ap}an(T,"beforeunload",ai,false);an(T,"message",function(au){if(!au||!au.origin){return}var aw,ar,ap;var ax=d(au.origin);
+var at=e.getAsyncTrackers();for(ar=0;ar<at.length;ar++){ap=d(at[ar].getPiwikUrl());if(ap===ax){aw=at[ar];break}}if(!aw){return}var aq=null;try{aq=JSON.parse(au.data)}catch(av){return}if(!aq){return}function ao(aA){var aC=G.getElementsByTagName("iframe");for(ar=0;ar<aC.length;ar++){var aB=aC[ar];var ay=d(aB.src);if(aB.contentWindow&&J(aB.contentWindow.postMessage)&&ay===ax){var az=JSON.stringify(aA);aB.contentWindow.postMessage(az,"*")}}}if(J(aq.maq_initial_value)){ao({maq_opted_in:aq.maq_initial_value&&aw.hasConsent(),maq_url:aw.getPiwikUrl(),maq_optout_by_default:aw.isConsentRequired()})}else{if(J(aq.maq_opted_in)){at=e.getAsyncTrackers();for(ar=0;ar<at.length;ar++){aw=at[ar];if(aq.maq_opted_in){aw.rememberConsentGiven()}else{aw.forgetConsentGiven()}}ao({maq_confirm_opted_in:aw.hasConsent(),maq_url:aw.getPiwikUrl(),maq_optout_by_default:aw.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;e={initialized:false,JSON:T.JSON,DOM:{addEventListener:function(ar,aq,ap,ao){var at=typeof ao;
+if(at==="undefined"){ao=false}an(ar,aq,ap,ao)},onLoad:n,onReady:q,isNodeVisible:j,isOrWasNodeVisible:v.isNodeVisible},on:function(ap,ao){if(!y[ap]){y[ap]=[]}y[ap].push(ao)},off:function(aq,ap){if(!y[aq]){return}var ao=0;for(ao;ao<y[aq].length;ao++){if(y[aq][ao]===ap){y[aq].splice(ao,1)}}},trigger:function(aq,ar,ap){if(!y[aq]){return}var ao=0;for(ao;ao<y[aq].length;ao++){y[aq][ao].apply(ap||T,ar)}},addPlugin:function(ao,ap){b[ao]=ap},getTracker:function(ao,ap){if(!J(ap)){ap=this.getAsyncTracker().getSiteId()}if(!J(ao)){ao=this.getAsyncTracker().getTrackerUrl()}return new Q(ao,ap)},getAsyncTrackers:function(){return I},addTracker:function(ao,aq){var ap;if(!I.length){ap=ad(ao,aq)}else{ap=I[0].addTracker(ao,aq)}return ap},getAsyncTracker:function(ap,at){var ar;if(I&&I.length&&I[0]){ar=I[0]}else{return ad(ap,at)}if(!at&&!ap){return ar}if((!J(at)||null===at)&&ar){at=ar.getSiteId()}if((!J(ap)||null===ap)&&ar){ap=ar.getTrackerUrl()}var aq,ao=0;for(ao;ao<I.length;ao++){aq=I[ao];if(aq&&String(aq.getSiteId())===String(at)&&aq.getTrackerUrl()===ap){return aq
+}}},retryMissedPluginCalls:function(){var ap=ah;ah=[];var ao=0;for(ao;ao<ap.length;ao++){af(ap[ao])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return e});define("matomo",[],function(){return e})}return e}())}
/*!!! pluginTrackerHook */
-(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;
-if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(!window.Piwik.getAsyncTrackers().length){if(b()){window.Piwik.addTracker()}else{_paq={push:function(c){var d=typeof console;if(d!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",c)}}}}}window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());(function(){var a=(typeof AnalyticsTracker);
-if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}}}
+(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.piwikPluginAsyncInit&&window.piwikPluginAsyncInit.length){var a=0;for(a;a<window.piwikPluginAsyncInit.length;a++){if(typeof window.piwikPluginAsyncInit[a]==="function"){window.piwikPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(!window.Piwik.getAsyncTrackers().length){if(b()){window.Piwik.addTracker()}else{_paq={push:function(c){var d=typeof console;if(d!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",c)
+}}}}}window.Piwik.trigger("PiwikInitialized",[]);window.Piwik.initialized=true}());(function(){var a=(typeof AnalyticsTracker);if(a==="undefined"){AnalyticsTracker=window.Piwik}}());if(typeof piwik_log!=="function"){piwik_log=function(b,f,d,g){function a(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var c,e=window.Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}}}
/*!! @license-end */; \ No newline at end of file
diff --git a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserEngine__API.getSuggestedValuesForSegment.xml b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserEngine__API.getSuggestedValuesForSegment.xml
index 4d3987cb15..c8113891c7 100644
--- a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserEngine__API.getSuggestedValuesForSegment.xml
+++ b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserEngine__API.getSuggestedValuesForSegment.xml
@@ -14,4 +14,5 @@
<row>Edge</row>
<row>NetSurf</row>
<row>Servo</row>
+ <row>Goanna</row>
</result> \ No newline at end of file
diff --git a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml
index d4244b015f..5aa3c56cb7 100644
--- a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml
+++ b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
+ <row>115 Browser</row>
<row>2345 Browser</row>
<row>360 Phone Browser</row>
<row>360 Browser</row>
@@ -12,10 +13,13 @@
<row>Amaya</row>
<row>Amigo</row>
<row>Android Browser</row>
+ <row>AOL Desktop</row>
<row>AOL Shield</row>
<row>Arora</row>
+ <row>Arctic Fox</row>
<row>Amiga Voyager</row>
<row>Amiga Aweb</row>
+ <row>Atom</row>
<row>Atomic Web Browser</row>
<row>Avast Secure Browser</row>
<row>AVG Secure Browser</row>
@@ -34,6 +38,7 @@
<row>BrowseX</row>
<row>Camino</row>
<row>CCleaner</row>
+ <row>Centaury</row>
<row>Coc Coc</row>
<row>Comodo Dragon</row>
<row>Coast</row>
@@ -67,6 +72,7 @@
<row>Epic</row>
<row>Elinks</row>
<row>Element Browser</row>
+ <row>Elements Browser</row>
<row>eZ Browser</row>
<row>EUI Browser</row>
<row>GNOME Web</row>
@@ -119,6 +125,7 @@
<row>Cheetah Browser</row>
<row>LieBaoFast</row>
<row>LG Browser</row>
+ <row>Light</row>
<row>Links</row>
<row>Lovense Browser</row>
<row>LuaKit</row>
@@ -137,6 +144,7 @@
<row>Minimo</row>
<row>Mint Browser</row>
<row>Maxthon</row>
+ <row>Mypal</row>
<row>Nokia Browser</row>
<row>Nokia OSS Browser</row>
<row>Nokia Ovi Browser</row>
@@ -163,6 +171,7 @@
<row>Opera Touch</row>
<row>Ordissimo</row>
<row>Oregano</row>
+ <row>Origin In-Game Overlay</row>
<row>Origyn Web Browser</row>
<row>Openwave Mobile Browser</row>
<row>OmniWeb</row>
@@ -205,7 +214,9 @@
<row>Sunrise</row>
<row>SuperBird</row>
<row>Super Fast Browser</row>
+ <row>surf</row>
<row>START Internet Browser</row>
+ <row>Steam In-Game Overlay</row>
<row>Streamy</row>
<row>Swiftfox</row>
<row>Seznam Browser</row>
@@ -224,6 +235,7 @@
<row>Vivaldi</row>
<row>vivo Browser</row>
<row>Vision Mobile Browser</row>
+ <row>VMware AirWatch</row>
<row>Wear Internet Browser</row>
<row>Web Explorer</row>
<row>WebPositive</row>
diff --git a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_deviceType__API.getSuggestedValuesForSegment.xml b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_deviceType__API.getSuggestedValuesForSegment.xml
index c912de4505..73bbf36546 100644
--- a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_deviceType__API.getSuggestedValuesForSegment.xml
+++ b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_deviceType__API.getSuggestedValuesForSegment.xml
@@ -12,4 +12,5 @@
<row>portable media player</row>
<row>phablet</row>
<row>smart speaker</row>
+ <row>wearable</row>
</result> \ No newline at end of file
diff --git a/plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_preArchivedSegment0_noOptions__Live.getLastVisitsDetails_year.xml b/plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_preArchivedSegment0_noOptions__Live.getLastVisitsDetails_year.xml
index f0f2986a8a..6afcb33679 100644
--- a/plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_preArchivedSegment0_noOptions__Live.getLastVisitsDetails_year.xml
+++ b/plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_preArchivedSegment0_noOptions__Live.getLastVisitsDetails_year.xml
@@ -106,8 +106,8 @@
<pageId>71</pageId>
<bandwidth />
- <timeSpent>50</timeSpent>
- <timeSpentPretty>50s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>2</pageviewPosition>
<title />
<subtitle>http://piwik.net/faq/</subtitle>
@@ -131,8 +131,8 @@
<pageId>75</pageId>
<bandwidth />
- <timeSpent>49</timeSpent>
- <timeSpentPretty>49s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>6</pageviewPosition>
<title />
<subtitle>http://piwik.net/faq/</subtitle>
@@ -181,8 +181,8 @@
<pageId>72</pageId>
<bandwidth />
- <timeSpent>26</timeSpent>
- <timeSpentPretty>26s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>3</pageviewPosition>
<title />
<subtitle>http://piwik.net/blog/category/community/</subtitle>
@@ -231,8 +231,8 @@
<pageId>73</pageId>
<bandwidth />
- <timeSpent>8</timeSpent>
- <timeSpentPretty>8s</timeSpentPretty>
+ <timeSpent>1</timeSpent>
+ <timeSpentPretty>1s</timeSpentPretty>
<pageviewPosition>4</pageviewPosition>
<title />
<subtitle>http://piwik.net/docs/manage-websites/</subtitle>
diff --git a/plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_preArchivedSegment1_noOptions__Live.getLastVisitsDetails_year.xml b/plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_preArchivedSegment1_noOptions__Live.getLastVisitsDetails_year.xml
index f0f2986a8a..6afcb33679 100644
--- a/plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_preArchivedSegment1_noOptions__Live.getLastVisitsDetails_year.xml
+++ b/plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_preArchivedSegment1_noOptions__Live.getLastVisitsDetails_year.xml
@@ -106,8 +106,8 @@
<pageId>71</pageId>
<bandwidth />
- <timeSpent>50</timeSpent>
- <timeSpentPretty>50s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>2</pageviewPosition>
<title />
<subtitle>http://piwik.net/faq/</subtitle>
@@ -131,8 +131,8 @@
<pageId>75</pageId>
<bandwidth />
- <timeSpent>49</timeSpent>
- <timeSpentPretty>49s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>6</pageviewPosition>
<title />
<subtitle>http://piwik.net/faq/</subtitle>
@@ -181,8 +181,8 @@
<pageId>72</pageId>
<bandwidth />
- <timeSpent>26</timeSpent>
- <timeSpentPretty>26s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>3</pageviewPosition>
<title />
<subtitle>http://piwik.net/blog/category/community/</subtitle>
@@ -231,8 +231,8 @@
<pageId>73</pageId>
<bandwidth />
- <timeSpent>8</timeSpent>
- <timeSpentPretty>8s</timeSpentPretty>
+ <timeSpent>1</timeSpent>
+ <timeSpentPretty>1s</timeSpentPretty>
<pageviewPosition>4</pageviewPosition>
<title />
<subtitle>http://piwik.net/docs/manage-websites/</subtitle>
diff --git a/plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_range_archive__DevicesDetection.getType_range.xml b/plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_range_archive__DevicesDetection.getType_range.xml
index c75fcc08b0..0358d288a6 100644
--- a/plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_range_archive__DevicesDetection.getType_range.xml
+++ b/plugins/CoreConsole/tests/System/expected/test_ArchiveCronTest_range_archive__DevicesDetection.getType_range.xml
@@ -125,4 +125,10 @@
<segment>deviceType==tv</segment>
<logo>plugins/Morpheus/icons/dist/devices/tv.png</logo>
</row>
+ <row>
+ <label>Wearable</label>
+ <nb_visits>0</nb_visits>
+ <segment>deviceType==wearable</segment>
+ <logo>plugins/Morpheus/icons/dist/devices/wearable.png</logo>
+ </row>
</result> \ No newline at end of file
diff --git a/plugins/CoreHome/Columns/VisitLastActionTime.php b/plugins/CoreHome/Columns/VisitLastActionTime.php
index bc3ba0f5b1..6dadc3a0ad 100644
--- a/plugins/CoreHome/Columns/VisitLastActionTime.php
+++ b/plugins/CoreHome/Columns/VisitLastActionTime.php
@@ -14,6 +14,7 @@ use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Metrics\Formatter;
+use Piwik\Tracker\VisitorRecognizer;
require_once PIWIK_INCLUDE_PATH . '/plugins/VisitTime/functions.php';
@@ -67,7 +68,15 @@ class VisitLastActionTime extends VisitDimension
if ($request->getParam('ping') == 1) {
return false;
}
-
+
+ $originalVisit = $visitor->getVisitorColumn(VisitorRecognizer::KEY_ORIGINAL_VISIT_ROW);
+
+ if (!empty($originalVisit['visit_last_action_time'])
+ && Date::factory($originalVisit['visit_last_action_time'])->getTimestamp() > $request->getCurrentTimestamp()) {
+ // make sure to not set visit_last_action_time to an earlier time eg if tracking requests aren't sent in order
+ return $originalVisit['visit_last_action_time'];
+ }
+
return $this->onNewVisit($request, $visitor, $action);
}
} \ No newline at end of file
diff --git a/plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php b/plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php
new file mode 100644
index 0000000000..2d82d93689
--- /dev/null
+++ b/plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php
@@ -0,0 +1,121 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\CoreHome\tests\Integration\Column;
+
+use Piwik\Cache;
+use Piwik\Common;
+use Piwik\DataAccess\ArchiveTableCreator;
+use Piwik\Date;
+use Piwik\Db;
+use Piwik\Metrics;
+use Piwik\Plugins\CoreHome\Columns\UserId;
+use Piwik\Plugins\CoreHome\Columns\VisitLastActionTime;
+use Piwik\Tests\Framework\Fixture;
+use Piwik\Tests\Framework\Mock\FakeAccess;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\DataTable;
+use Piwik\Tracker\Request;
+use Piwik\Tracker\Visit\VisitProperties;
+use Piwik\Tracker\Visitor;
+use Piwik\Tracker\VisitorRecognizer;
+
+/**
+ * @group CoreHome
+ * @group VisitLastActionTimeTest
+ * @group Plugins
+ * @group Column
+ */
+class VisitLastActionTimeTest extends IntegrationTestCase
+{
+ /**
+ * @var VisitLastActionTime
+ */
+ private $lastAction;
+
+ public function setUp(): void
+ {
+ parent::setUp();
+ $this->lastAction = new VisitLastActionTime();
+ }
+
+ public function tearDown(): void
+ {
+ parent::tearDown();
+ }
+
+
+ private function makeRequest($request)
+ {
+ $request['idsite'] = 1;
+
+ return new Request($request);
+ }
+
+ private function getVisitor()
+ {
+ $visit = new VisitProperties();
+ $visit->setProperty('idvisit', '321');
+ $visit->setProperty('idvisitor', Common::hex2bin('1234567890234567'));
+ $visitor = new Visitor($visit, $isKnown = false);
+
+ return $visitor;
+ }
+
+ public function test_onExistingVisit_whenPing()
+ {
+ $request = $this->makeRequest(array('ping' => 1));
+ $visitor = $this->getVisitor();
+ $this->assertFalse($this->lastAction->onExistingVisit($request, $visitor, $action = null));
+ }
+
+ public function test_onExistingVisit_whenNewVisitReturnsTimeFromRequest()
+ {
+ $now = time() - 5; // -5 so we make sure this time is used and not actually now
+ $request = $this->makeRequest(array('cdt' => $now));
+ $this->assertEquals($now, $request->getCurrentTimestamp());
+
+ $visitor = $this->getVisitor();
+
+ $expected = Date::factory($now)->getDatetime();
+ $this->assertSame($expected, $this->lastAction->onExistingVisit($request, $visitor, $action = null));
+ }
+
+ public function test_onExistingVisit_whenKnownVisitRequestTimeIsNewer()
+ {
+ $now = time() - 5; // -5 so we make sure this time is used and not actually now
+ $previousTime = $now - 10; // is older
+ $request = $this->makeRequest(array('cdt' => $now));
+ $this->assertEquals($now, $request->getCurrentTimestamp());
+
+ $visitor = $this->getVisitor();
+ $visitor->setVisitorColumn(VisitorRecognizer::KEY_ORIGINAL_VISIT_ROW,
+ array('visit_last_action_time' => Date::factory($previousTime)->getDatetime())
+ );
+
+ $expected = Date::factory($now)->getDatetime();
+ $this->assertSame($expected, $this->lastAction->onExistingVisit($request, $visitor, $action = null));
+ }
+
+ public function test_onExistingVisit_whenKnownVisitAndPreviousVisitTimeIsNewer()
+ {
+ $now = time() - 5; // -5 so we make sure this time is used and not actually now
+ $previousTime = $now + 10; // is newer
+ $request = $this->makeRequest(array('cdt' => $now));
+ $this->assertEquals($now, $request->getCurrentTimestamp());
+
+ $visitor = $this->getVisitor();
+ $visitor->setVisitorColumn(VisitorRecognizer::KEY_ORIGINAL_VISIT_ROW,
+ array('visit_last_action_time' => Date::factory($previousTime)->getDatetime())
+ );
+
+ $expected = Date::factory($previousTime)->getDatetime();
+ // should keep existing visit last action time
+ $this->assertSame($expected, $this->lastAction->onExistingVisit($request, $visitor, $action = null));
+ }
+}
diff --git a/plugins/CustomVariables/tests/System/expected/test_CustomVariablesSystemTest__Live.getLastVisitsDetails_day.xml b/plugins/CustomVariables/tests/System/expected/test_CustomVariablesSystemTest__Live.getLastVisitsDetails_day.xml
index 22a34a78a5..05c93467e9 100644
--- a/plugins/CustomVariables/tests/System/expected/test_CustomVariablesSystemTest__Live.getLastVisitsDetails_day.xml
+++ b/plugins/CustomVariables/tests/System/expected/test_CustomVariablesSystemTest__Live.getLastVisitsDetails_day.xml
@@ -108,7 +108,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>this keyword should be ranked</referrerKeyword>
<referrerKeywordPosition>1</referrerKeywordPosition>
- <referrerUrl>http://www.google.com/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CB4QFjAA&amp;url=http://piwik.org/&amp;rct=j&amp;q=this keyword should be ranked&amp;ei=V8WfTePkKKLfiALrpZWGAw&amp;usg=AFQjCNF_MGJRqKPvaKuUokHtZ3VvNG9ALw&amp;sig2=BvKAdCtNixsmfNWXjsNyMw</referrerUrl>
+ <referrerUrl>http://www.google.com/url?source=web&amp;cd=1&amp;url=http://piwik.org/&amp;rct=j&amp;q=this keyword should be ranked&amp;sig2=BvKAdCtNixsmfNWXjsNyMw</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
diff --git a/plugins/DevicesDetection/functions.php b/plugins/DevicesDetection/functions.php
index 472fe5ad3d..65fc1d2833 100644
--- a/plugins/DevicesDetection/functions.php
+++ b/plugins/DevicesDetection/functions.php
@@ -135,6 +135,7 @@ function getDeviceTypeLabel($label)
'camera' => 'DevicesDetection_Camera',
'portable media player' => 'DevicesDetection_PortableMediaPlayer',
'smart speaker' => 'DevicesDetection_SmartSpeaker',
+ 'wearable' => 'DevicesDetection_Wearable',
);
$deviceTypes = DeviceParser::getAvailableDeviceTypes();
diff --git a/plugins/DevicesDetection/lang/en.json b/plugins/DevicesDetection/lang/en.json
index e985e0c060..26d6bc7182 100644
--- a/plugins/DevicesDetection/lang/en.json
+++ b/plugins/DevicesDetection/lang/en.json
@@ -48,6 +48,7 @@
"TV": "Tv",
"UserAgent": "User-Agent",
"XVisitsFromDevices": "%1$s visits from %2$s devices",
+ "Wearable": "Wearable",
"WidgetBrowsers": "Visitor Browser",
"WidgetBrowsersDocumentation": "This report contains information about what kind of browser your visitors were using. Each browser version is listed separately."
}
diff --git a/plugins/DevicesDetection/tests/System/expected/test___DevicesDetection.getType_day.xml b/plugins/DevicesDetection/tests/System/expected/test___DevicesDetection.getType_day.xml
index c5ea05a965..d959ebf6cb 100644
--- a/plugins/DevicesDetection/tests/System/expected/test___DevicesDetection.getType_day.xml
+++ b/plugins/DevicesDetection/tests/System/expected/test___DevicesDetection.getType_day.xml
@@ -148,4 +148,10 @@
<segment>deviceType==smart+speaker</segment>
<logo>plugins/Morpheus/icons/dist/devices/smart_speaker.png</logo>
</row>
+ <row>
+ <label>Wearable</label>
+ <nb_visits>0</nb_visits>
+ <segment>deviceType==wearable</segment>
+ <logo>plugins/Morpheus/icons/dist/devices/wearable.png</logo>
+ </row>
</result> \ No newline at end of file
diff --git a/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__Goals.get_day.xml b/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__Goals.get_day.xml
index 27200051aa..3a8d1b2d0c 100644
--- a/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__Goals.get_day.xml
+++ b/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__Goals.get_day.xml
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
- <nb_conversions>8</nb_conversions>
+ <nb_conversions>7</nb_conversions>
<nb_visits_converted>2</nb_visits_converted>
<revenue>1332</revenue>
<conversion_rate>100%</conversion_rate>
- <nb_conversions_new_visit>6</nb_conversions_new_visit>
+ <nb_conversions_new_visit>4</nb_conversions_new_visit>
<nb_visits_converted_new_visit>1</nb_visits_converted_new_visit>
<revenue_new_visit>1332</revenue_new_visit>
<conversion_rate_new_visit>100%</conversion_rate_new_visit>
- <nb_conversions_returning_visit>2</nb_conversions_returning_visit>
+ <nb_conversions_returning_visit>3</nb_conversions_returning_visit>
<nb_visits_converted_returning_visit>1</nb_visits_converted_returning_visit>
<revenue_returning_visit>0</revenue_returning_visit>
<conversion_rate_returning_visit>100%</conversion_rate_returning_visit>
diff --git a/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitTime.getVisitInformationPerServerTime_day.xml b/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitTime.getVisitInformationPerServerTime_day.xml
index 4a3f7b7062..c5be750480 100644
--- a/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitTime.getVisitInformationPerServerTime_day.xml
+++ b/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitTime.getVisitInformationPerServerTime_day.xml
@@ -6,9 +6,9 @@
<nb_visits>2</nb_visits>
<nb_actions>5</nb_actions>
<nb_users>0</nb_users>
- <max_actions>3</max_actions>
- <sum_visit_length>363</sum_visit_length>
- <bounce_count>0</bounce_count>
+ <max_actions>4</max_actions>
+ <sum_visit_length>1121</sum_visit_length>
+ <bounce_count>1</bounce_count>
<nb_visits_converted>2</nb_visits_converted>
<goals>
<row idgoal='1'>
@@ -22,8 +22,8 @@
<revenue>666</revenue>
</row>
<row idgoal='3'>
- <nb_conversions>2</nb_conversions>
- <nb_visits_converted>2</nb_visits_converted>
+ <nb_conversions>1</nb_conversions>
+ <nb_visits_converted>1</nb_visits_converted>
<revenue>0</revenue>
</row>
<row idgoal='4'>
@@ -37,7 +37,7 @@
<revenue>0</revenue>
</row>
</goals>
- <nb_conversions>8</nb_conversions>
+ <nb_conversions>7</nb_conversions>
<revenue>1332</revenue>
<segment>visitStartServerHour==0</segment>
</row>
diff --git a/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitsSummary.get_day.xml b/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitsSummary.get_day.xml
index 7168091d51..bfbd730f69 100644
--- a/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitsSummary.get_day.xml
+++ b/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit__VisitsSummary.get_day.xml
@@ -5,10 +5,10 @@
<nb_visits>2</nb_visits>
<nb_actions>5</nb_actions>
<nb_visits_converted>2</nb_visits_converted>
- <bounce_count>0</bounce_count>
- <sum_visit_length>363</sum_visit_length>
- <max_actions>3</max_actions>
- <bounce_rate>0%</bounce_rate>
+ <bounce_count>1</bounce_count>
+ <sum_visit_length>1121</sum_visit_length>
+ <max_actions>4</max_actions>
+ <bounce_rate>50%</bounce_rate>
<nb_actions_per_visit>2.5</nb_actions_per_visit>
- <avg_time_on_site>182</avg_time_on_site>
+ <avg_time_on_site>561</avg_time_on_site>
</result> \ No newline at end of file
diff --git a/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit_withLogLinkVisitActionSegment__Goals.get_day.xml b/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit_withLogLinkVisitActionSegment__Goals.get_day.xml
index 27200051aa..3a8d1b2d0c 100644
--- a/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit_withLogLinkVisitActionSegment__Goals.get_day.xml
+++ b/plugins/Goals/tests/System/expected/test_trackGoals_allowMultipleConversionsPerVisit_withLogLinkVisitActionSegment__Goals.get_day.xml
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
- <nb_conversions>8</nb_conversions>
+ <nb_conversions>7</nb_conversions>
<nb_visits_converted>2</nb_visits_converted>
<revenue>1332</revenue>
<conversion_rate>100%</conversion_rate>
- <nb_conversions_new_visit>6</nb_conversions_new_visit>
+ <nb_conversions_new_visit>4</nb_conversions_new_visit>
<nb_visits_converted_new_visit>1</nb_visits_converted_new_visit>
<revenue_new_visit>1332</revenue_new_visit>
<conversion_rate_new_visit>100%</conversion_rate_new_visit>
- <nb_conversions_returning_visit>2</nb_conversions_returning_visit>
+ <nb_conversions_returning_visit>3</nb_conversions_returning_visit>
<nb_visits_converted_returning_visit>1</nb_visits_converted_returning_visit>
<revenue_returning_visit>0</revenue_returning_visit>
<conversion_rate_returning_visit>100%</conversion_rate_returning_visit>
diff --git a/plugins/Morpheus/templates/_jsGlobalVariables.twig b/plugins/Morpheus/templates/_jsGlobalVariables.twig
index 7f127d5b2c..70f7710936 100644
--- a/plugins/Morpheus/templates/_jsGlobalVariables.twig
+++ b/plugins/Morpheus/templates/_jsGlobalVariables.twig
@@ -16,7 +16,7 @@
symbolDecimal: "{{ 'Intl_NumberSymbolDecimal'|translate }}"
};
- piwik.relativePluginWebDirs = {{ relativePluginWebDirs|json_encode|raw }}
+ piwik.relativePluginWebDirs = {{ relativePluginWebDirs|json_encode|raw }};
{% if userLogin %}piwik.userLogin = "{{ userLogin|e('js')}}";{% endif %}
diff --git a/plugins/Referrers/Columns/Base.php b/plugins/Referrers/Columns/Base.php
index 108a70a48b..b4e840656d 100644
--- a/plugins/Referrers/Columns/Base.php
+++ b/plugins/Referrers/Columns/Base.php
@@ -119,6 +119,8 @@ abstract class Base extends VisitDimension
}
}
+ $this->excludeQueryParamsFromReferrerUrl();
+
$referrerInformation = array(
'referer_type' => $this->typeReferrerAnalyzed,
'referer_name' => $this->nameReferrerAnalyzed,
@@ -137,6 +139,60 @@ abstract class Base extends VisitDimension
return $referrerInformation;
}
+ protected function excludeQueryParamsFromReferrerUrl()
+ {
+ $parametersToExclude = [];
+
+ if (!empty($this->referrerHost) && strpos($this->referrerHost, 'instagram.com') !== false) {
+ $parametersToExclude[] = 'e';
+ $parametersToExclude[] = 's';
+ }
+ if (!empty($this->referrerHost) && strpos($this->referrerHost, 'facebook.com') !== false) {
+ $parametersToExclude[] = 'h';
+ $parametersToExclude[] = 'p';
+ }
+ if (!empty($this->referrerHost) && (strpos($this->referrerHost, 'google.') !== false || strpos($this->referrerHost, 'googleusercontent.') !== false)) {
+ $parametersToExclude[] = 'ust';
+ $parametersToExclude[] = 'usg';
+ $parametersToExclude[] = 'usd';
+ $parametersToExclude[] = 'sa';
+ $parametersToExclude[] = 'sntz';
+ $parametersToExclude[] = 'ei';
+ $parametersToExclude[] = 'sa';
+ $parametersToExclude[] = 'bvm';
+ $parametersToExclude[] = 'usg';
+ $parametersToExclude[] = 'ved';
+ $parametersToExclude[] = 'client';
+ $parametersToExclude[] = 'channel';
+ }
+
+ if (!empty($this->referrerHost) && strpos($this->referrerHost, 'main.exoclick.com') !== false) {
+ $parametersToExclude[] = 'data';
+ $parametersToExclude[] = 'wpn';
+ }
+ if (!empty($this->referrerHost) && strpos($this->referrerHost, 'youtube.com') !== false) {
+ $parametersToExclude[] = 'redir_token';
+ $parametersToExclude[] = 'html_redirect';
+ $parametersToExclude[] = 'continuation';
+ $parametersToExclude[] = 'feature';
+ }
+ if (!empty($this->referrerHost) && strpos($this->referrerHost, 'bing.com') !== false) {
+ $parametersToExclude[] = 'cvid';
+ $parametersToExclude[] = 'refig';
+ $parametersToExclude[] = 'elv';
+ $parametersToExclude[] = 'plvar';
+ $parametersToExclude[] = 'setlang';
+ $parametersToExclude[] = 'qs';
+ $parametersToExclude[] = 'cc';
+ $parametersToExclude[] = 'mkt';
+ $parametersToExclude[] = 'PC';
+ $parametersToExclude[] = 'form';
+ $parametersToExclude[] = 'src';
+ }
+
+ $this->referrerUrl = PageUrl::excludeQueryParametersFromUrl($this->referrerUrl, $this->idsite, $parametersToExclude);
+ }
+
protected function getReferrerInformationFromRequest(Request $request, Visitor $visitor)
{
$referrerUrl = $request->getParam('urlref');
diff --git a/plugins/Referrers/tests/Integration/Columns/ReferrerUrlTest.php b/plugins/Referrers/tests/Integration/Columns/ReferrerUrlTest.php
new file mode 100644
index 0000000000..db02b19613
--- /dev/null
+++ b/plugins/Referrers/tests/Integration/Columns/ReferrerUrlTest.php
@@ -0,0 +1,106 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Referrers\tests\Integration\Columns;
+
+use Piwik\Plugins\Referrers\Columns\ReferrerUrl;
+use Piwik\Tests\Framework\Fixture;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Tracker\Cache;
+use Piwik\Tracker\Request;
+use Piwik\Tracker\Visit\VisitProperties;
+use Piwik\Tracker\Visitor;
+
+/**
+ * @group Referrers
+ * @group ReferrerUrlTest
+ * @group ReferrerUrl
+ * @group Plugins
+ */
+class ReferrerUrlTest extends IntegrationTestCase
+{
+ /**
+ * @var ReferrerUrl
+ */
+ private $referrerUrl;
+ private $idSite1 = 1;
+
+ public function setUp(): void
+ {
+ parent::setUp();
+
+ Cache::clearCacheGeneral();
+
+ $date = '2012-01-01 00:00:00';
+ $ecommerce = false;
+
+ Fixture::createWebsite($date, $ecommerce, $name = 'test1', $url = 'http://piwik.org/foo/bar');
+
+ $this->referrerUrl = new ReferrerUrl();
+ }
+
+ public function tearDown(): void
+ {
+ // clean up your test here if needed
+ Cache::clearCacheGeneral();
+
+ parent::tearDown();
+ }
+
+ /**
+ * @dataProvider getReferrerUrls
+ */
+ public function test_onNewVisit_shouldDetectCorrectReferrerUrl($referrerUrl, $expectedUrl)
+ {
+ $request = $this->getRequest(['idsite' => $this->idSite1, 'url' => 'http://piwik.org/foo/bar', 'urlref' => $referrerUrl]);
+ $detectedUrl = $this->referrerUrl->onNewVisit($request, $this->getNewVisitor(), $action = null);
+
+ $this->assertSame($expectedUrl, $detectedUrl);
+ }
+
+ public function getReferrerUrls()
+ {
+ // $referrerUrl, $expectedUrl
+ return [
+ // instagram referrer urls
+ ['https://l.instagram.com/?u=https%3A%2F%2Fexample.com%2Fexample.com&amp;e=BTPcuqWixl6Mf5hgYPp6wXIlstuaEdJssdYEvT9s8-6yme_lb275lY2Bwc-YvE-fZNtSKux4QB-v8xNk&amp;s=1',
+ 'https://l.instagram.com/?u=https%3A%2F%2Fexample.com%2Fexample.com'],
+ ['https://m.instagram.com/?u=https%3A%2F%2Fexample.com%2Fexample.com&e=BTPcuqWixl6Mf5hgYPp6wXIlstuaEdJssdYEvT9s8-6yme_lb275lY2Bwc-YvE-fZNtSKux4QB-v8xNk',
+ 'https://m.instagram.com/?u=https%3A%2F%2Fexample.com%2Fexample.com'],
+
+ // facebook referrer urls
+ ['http://l.facebook.com/l.php?u=http://www.example.com.com/&h=BL0RXrrUUyk_ZbqijDe_mVGBi3ZsyVxJEvOfIhjlUEiRy4zkKwYMDUWbuoICNzhC6pKm6zbGCPAJQP4s8e2psymaokRV3dhp7FPx4Zk6B4x0fBbYTi54xynmBsoBRFB7f5t',
+ 'http://l.facebook.com/l.php?u=http://www.example.com.com/'],
+ ['http://lm.facebook.com/l.php?u=http://example.com/foobar&h=BT2Dh3r3VDLoabL3Rb1lpmN-_s0lFtReSGzBED3kfUGnaO5fPF-x8LspJAfJN9kkee5ptpybYgyIx68yzgo9kPAN6snSZL_eNcmgu5xhuUcLXJukNKvi0XMOY78Ca9NKexnpJKxKUDeVApPcfB',
+ 'http://lm.facebook.com/l.php?u=http://example.com/foobar'],
+
+ // google referrer urls
+ ['https://www.google.com/url?q=https://example.com/foo&sa=D&ust=1689581471834000&usg=BCQjCNFw5f1S7rLgPNephpTW_4-i2KnAGA',
+ 'https://www.google.com/url?q=https://example.com/foo'],
+
+ // bing referrer urls
+ ['https://www.bing.com/search?q=foo+bar&form=EDGTCK&qs=AB&cvid=ff8399e313a74fb592b0ca1d91c42224&refig=4540178a841b46ce8de1664920449112&cc=BE&setlang=4k-NL&elv=AXXfrEiqqD9r3GuelwApuloWthKnH5oOVtTkjmeLPBeagbGxe4rwyaaV!5HJFcbCTxaO4q5w7QqvI8XbCTXyJKn1N4PzqCvVFSdBSr*sdwlB&plvar=0',
+ 'https://www.bing.com/search?q=foo+bar'],
+
+ // ensure custom url still keep those parameters
+ ['http://www.example.com/index.php?s=test&e=val&h=param&cvid=custom',
+ 'http://www.example.com/index.php?s=test&e=val&h=param&cvid=custom']
+ ];
+ }
+
+ private function getRequest($params)
+ {
+ return new Request($params);
+ }
+
+ private function getNewVisitor()
+ {
+ return new Visitor(new VisitProperties());
+ }
+
+}
diff --git a/plugins/SitesManager/templates/_trackingCodeEmail.twig b/plugins/SitesManager/templates/_trackingCodeEmail.twig
index be2a0e2362..06712f1bce 100644
--- a/plugins/SitesManager/templates/_trackingCodeEmail.twig
+++ b/plugins/SitesManager/templates/_trackingCodeEmail.twig
@@ -15,6 +15,7 @@ Squarespace: https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-
Wix: https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/
SharePoint: https://matomo.org/faq/how-to-install/faq_19424/
Joomla: https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-joomla/
+Shopify: https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-my-shopify-store/
** {{ 'SitesManager_Integrations'|translate }}
{{ 'CoreAdminHome_JSTrackingIntro3a'|translate('', '') }}
diff --git a/plugins/SitesManager/templates/siteWithoutData.twig b/plugins/SitesManager/templates/siteWithoutData.twig
index 19e831c00e..a1215dd8c5 100644
--- a/plugins/SitesManager/templates/siteWithoutData.twig
+++ b/plugins/SitesManager/templates/siteWithoutData.twig
@@ -49,6 +49,7 @@
| <a target="_blank" rel="noreferrer noopener" href='https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/'>Wix</a>
| <a target="_blank" rel="noreferrer noopener" href='https://matomo.org/faq/how-to-install/faq_19424/'>SharePoint</a>
| <a target="_blank" rel="noreferrer noopener" href='https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-joomla/'>Joomla</a>
+ | <a target="_blank" rel="noreferrer noopener" href='https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-my-shopify-store/'>Shopify</a>
<br >
<br >
{{ 'SitesManager_ExtraInformationNeeded'|translate }}
diff --git a/plugins/TagManager b/plugins/TagManager
-Subproject 567f475764f6922a3889d5c9938150fad7f1b52
+Subproject 2105be36d15030f632efd60d71b761f6e1a5f8f
diff --git a/plugins/UserCountryMap/svg/DEU.svg b/plugins/UserCountryMap/svg/DEU.svg
index dc2f760b63..4f11651182 100644
--- a/plugins/UserCountryMap/svg/DEU.svg
+++ b/plugins/UserCountryMap/svg/DEU.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 451" height="451px" style="stroke-linejoin: round; stroke:#000; fill: none;" version="1.1" viewBox="0 0 450 451" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }]]></style></defs><metadata><views><view h="451" padding="0.06" w="450"><proj id="laea" lat0="51.423631497" lon0="7.55593198638"/><bbox h="104.32" w="79.29" x="982.53" y="950.78"/></view></views></metadata><g class="" id="context"><path d="M450,335L443,332L441,332L437,336L427,337L418,332L410,331L403,328L399,328L394,330L394,329L388,328L388,337L387,340L384,340L380,346L380,350L371,350L369,352L362,353L357,352L355,347L349,344L348,344L348,345L348,353L345,357L338,354L337,355L336,365L333,368L319,376L316,379L314,383L322,393L322,397L320,402L325,402L326,405L325,414L318,411L317,408L313,405L306,407L301,405L295,404L295,409L279,412L274,414L264,421L253,423L249,418L249,417L244,417L241,415L235,416L231,425L226,430L224,430L223,425L220,424L219,420L208,415L205,418L201,417L200,418L201,419L204,421L203,425L201,431L201,432L202,436L202,437L203,442L203,443L204,443L213,445L214,449L228,449L231,446L233,447L234,449L258,449L259,447L263,445L273,443L282,443L289,440L296,437L295,442L296,445L300,449L421,449L423,447L428,446L435,447L435,440L437,437L439,436L444,430L447,428L450,428L450,420L449,416L450,413L448,408L450,406L450,394L446,392L450,388L450,335Z " data-iso="AUT"/><path d="M67,245L72,244L74,247L70,247L77,247L77,248L81,251L85,255L83,258L88,263L89,270L83,275L81,280L81,281L80,280L76,278L72,282L68,291L67,297L69,300L72,306L70,310L69,311L66,311L59,312L51,303L40,297L37,297L37,290L35,288L38,279L35,278L32,280L31,285L27,287L21,288L14,287L15,282L13,277L15,272L10,268L1,266L-1,267L-2,267L-3,260L-8,257L-14,256L-16,248L-17,244L-20,242L-26,244L-32,242L-34,239L-37,233L-36,231L-38,223L-23,215L-14,211L-10,210L-7,217L-2,216L1,216L6,220L8,220L13,218L17,215L19,211L22,213L29,207L33,210L37,207L43,211L46,208L48,215L52,218L55,219L62,219L65,223L72,227L69,234L69,237L66,241L67,246L67,245Z " data-iso="BEL"/><path d="M203,443L200,443L199,443L199,441L199,437L201,431L203,425L204,421L201,419L200,418L194,414L188,411L175,409L171,409L167,406L164,406L161,408L162,412L165,412L165,413L160,415L153,414L149,416L143,417L135,417L132,415L127,418L125,423L117,424L114,421L112,421L108,423L106,426L109,428L108,433L98,443L97,445L90,449L214,449L213,445L204,443L203,443Z M234,449L233,447L231,446L228,449L234,449Z " data-iso="CHE"/><path d="M372,230L372,231L371,232L366,231L366,227L361,223L354,222L353,224L358,228L342,238L336,241L330,243L329,247L321,249L319,253L314,255L312,259L306,258L298,261L295,263L290,273L285,266L283,268L288,277L290,280L299,287L295,296L302,304L305,310L311,317L315,316L319,320L323,325L335,335L338,334L347,341L348,344L349,344L355,347L357,352L362,353L369,352L371,350L380,350L380,346L384,340L387,340L388,337L388,328L394,329L394,330L399,328L403,328L410,331L418,332L427,337L437,336L441,332L443,332L450,335L450,245L444,246L449,254L442,259L441,262L437,262L432,256L427,251L423,249L422,248L424,244L426,243L423,235L416,237L394,231L392,231L388,227L387,223L378,221L378,228L375,229L372,230Z " data-iso="CZE"/><path d="M332,64L325,60L328,66L329,73L333,73L336,72L338,72L337,70L337,68L332,64Z M245,50L243,46L238,44L236,48L240,50L245,50Z M320,47L316,45L316,41L318,39L317,37L312,35L309,31L307,31L304,34L304,51L310,55L311,54L313,50L316,49L320,52L320,47Z M161,37L161,35L156,36L155,37L161,37Z M164,33L173,46L173,50L169,52L163,54L163,59L170,59L171,61L172,75L177,80L182,80L185,82L195,95L200,98L196,97L194,95L185,84L181,82L172,83L163,81L160,86L159,92L161,98L159,107L159,101L154,96L151,104L150,105L147,103L149,99L144,91L132,91L121,92L119,93L115,98L114,108L117,111L118,113L118,118L115,134L112,148L104,147L102,153L102,155L112,159L113,161L112,167L111,170L105,175L103,176L102,179L105,182L103,186L95,189L88,189L84,187L77,191L77,193L84,208L83,215L80,222L82,226L76,231L73,231L74,235L76,235L79,239L77,247L77,248L81,251L85,255L83,258L88,263L89,270L83,275L81,280L81,281L80,282L80,285L85,294L93,300L93,303L89,308L88,313L88,316L89,316L92,317L94,319L97,325L101,332L110,331L111,334L117,335L126,333L128,336L131,337L145,340L150,342L150,347L139,360L138,365L137,372L135,379L132,385L131,390L131,394L131,399L129,406L129,411L130,415L132,415L135,417L143,417L149,416L153,414L160,415L165,413L165,412L162,412L161,408L164,406L167,406L171,409L175,409L188,411L194,414L200,418L201,417L205,418L208,415L219,420L220,424L223,425L224,430L226,430L231,425L235,416L241,415L244,417L249,417L249,418L253,423L264,421L274,414L279,412L295,409L295,404L301,405L306,407L313,405L317,408L318,411L325,414L326,405L325,402L320,402L322,397L322,393L314,383L316,379L319,376L333,368L336,365L337,355L338,354L345,357L348,353L348,345L348,344L347,341L338,334L335,335L323,325L319,320L315,316L311,317L305,310L302,304L295,296L299,287L290,280L288,277L283,268L285,266L290,273L295,263L298,261L306,258L312,259L314,255L319,253L321,249L329,247L330,243L336,241L342,238L358,228L353,224L354,222L361,223L366,227L366,231L371,232L372,231L372,230L372,229L375,222L376,217L377,208L372,198L366,195L366,189L361,182L360,179L362,175L364,165L362,164L361,157L356,151L357,142L353,136L344,130L340,125L346,112L347,103L342,89L340,80L340,80L332,78L327,74L325,66L321,59L313,60L303,53L299,47L284,45L276,55L273,58L271,62L261,63L259,65L252,74L250,75L240,72L235,73L233,72L231,69L237,63L238,57L237,52L228,56L216,50L212,52L209,48L201,49L206,43L205,38L201,32L197,31L196,30L193,29L184,32L182,31L179,30L171,27L164,27L164,33Z M153,33L154,30L161,29L162,27L155,27L154,26L157,19L155,19L152,27L152,34L153,33Z " data-iso="DEU"/><path d="M246,25L242,22L236,22L236,31L249,38L253,36L256,37L259,35L255,27L251,28L246,25Z M219,28L212,23L215,28L219,28Z M282,18L277,15L274,15L269,22L271,23L276,19L282,18Z M206,27L204,21L199,18L198,26L203,27L206,27Z M227,33L232,16L232,11L230,17L227,22L225,25L226,33L227,33Z M346,0L346,6L352,9L358,10L360,5L359,2L355,0L346,0Z M199,0L201,9L203,12L212,16L217,18L223,17L228,13L228,9L227,5L228,3L227,0L199,0Z M239,0L239,2L243,8L248,7L254,8L257,20L257,23L261,30L267,27L267,14L267,8L274,5L276,2L276,0L239,0Z M164,27L171,27L179,30L182,31L184,32L193,29L196,30L195,25L196,23L191,19L187,19L189,15L193,10L194,7L192,0L162,0L163,4L163,13L160,15L163,22L164,27Z " data-iso="DNK"/><path d="M132,415L130,415L129,411L129,406L131,399L131,394L131,390L132,385L135,379L137,372L138,365L139,360L150,347L150,342L145,340L131,337L128,336L126,333L117,335L111,334L110,331L101,332L97,325L94,319L92,317L89,316L88,316L85,315L80,314L78,316L70,313L69,311L66,311L59,312L51,303L40,297L37,297L37,290L35,288L38,279L35,278L32,280L31,285L27,287L21,288L14,287L15,282L13,277L15,272L10,268L1,266L0,266L0,449L90,449L97,445L98,443L108,433L109,428L106,426L108,423L112,421L114,421L117,424L125,423L127,418L132,415Z " data-iso="FRA"/><path d="M439,436L446,436L448,440L449,443L450,444L450,428L447,428L444,430L439,436Z M450,406L448,408L450,413L449,416L450,420L450,406Z M450,388L446,392L450,394L450,388Z " data-iso="HUN"/><path d="M300,449L296,445L295,442L296,437L289,440L282,443L273,443L263,445L259,447L258,449L300,449Z " data-iso="ITA"/><path d="M203,442L202,437L202,436L201,432L201,431L199,437L199,441L199,443L200,443L203,443L203,442Z " data-iso="LIE"/><path d="M80,280L76,278L72,282L68,291L67,297L69,300L72,306L70,310L69,311L70,313L78,316L80,314L85,315L88,316L88,313L89,308L93,303L93,300L85,294L80,285L80,282L81,281L80,280Z " data-iso="LUX"/><path d="M1,216L6,220L8,220L13,218L17,215L19,211L15,213L12,210L8,212L0,210L0,216L1,216Z M11,192L6,192L4,195L7,194L11,198L15,197L11,192Z M44,123L45,117L40,122L41,126L44,123Z M52,110L49,110L46,114L52,110Z M19,211L22,213L29,207L33,210L37,207L43,211L46,208L48,215L52,218L55,219L62,219L65,223L72,227L69,234L69,237L66,241L67,246L67,246L69,246L70,247L77,247L79,239L76,235L74,235L73,231L76,231L82,226L80,222L83,215L84,208L77,193L77,191L84,187L88,189L95,189L103,186L105,182L102,179L103,176L105,175L111,170L112,167L113,161L112,159L102,155L102,153L104,147L112,148L115,134L118,118L118,113L114,112L111,111L106,105L98,105L91,106L82,106L76,108L65,113L62,116L59,122L50,129L44,131L40,130L37,136L33,156L30,163L26,169L20,176L16,179L11,188L17,196L18,199L12,200L20,205L21,207L17,208L8,201L4,199L0,199L0,207L6,209L12,208L16,210L19,211Z M75,151L75,155L73,158L63,167L57,165L48,162L47,160L48,158L49,157L49,156L49,152L49,150L49,147L52,147L55,144L55,141L53,138L51,136L51,133L50,131L56,126L60,124L61,125L61,132L61,134L62,135L65,135L69,135L69,137L68,139L67,140L67,144L67,145L68,147L74,148L75,151Z M59,107L67,104L62,104L55,106L59,107Z M78,103L76,102L71,102L72,104L78,103Z M91,101L90,100L86,102L91,101Z M104,97L106,95L101,97L104,97Z " data-iso="NLD"/><path d="M337,68L337,70L338,72L342,73L349,74L351,83L347,82L340,80L342,89L347,103L346,112L340,125L344,130L353,136L357,142L356,151L361,157L362,164L364,165L362,175L360,179L361,182L366,189L366,195L372,198L377,208L376,217L375,222L372,229L372,230L375,229L378,228L378,221L387,223L388,227L392,231L394,231L416,237L423,235L426,243L424,244L422,248L423,249L427,251L432,256L437,262L441,262L442,259L449,254L444,246L450,245L450,7L443,9L426,16L419,21L416,25L406,28L401,35L396,44L388,47L370,55L353,63L343,69L339,69L337,68Z " data-iso="POL"/><path d="M439,436L437,437L435,440L435,447L428,446L423,447L421,449L450,449L450,444L449,443L448,440L446,436L439,436Z " data-iso="SVN"/></g><g class="" id="regions"><path d="M112,169L106,175L103,176L101,179L105,182L103,186L96,188L90,190L82,187L83,188L78,190L79,198L83,205L85,211L83,217L81,220L80,225L82,226L77,230L75,232L74,231L73,233L75,235L77,236L79,241L77,246L81,250L83,254L85,255L82,258L84,261L88,262L89,265L88,268L89,270L89,270L96,267L101,269L104,268L102,264L107,261L109,258L118,254L120,255L124,250L129,249L136,243L136,240L139,240L148,250L149,251L149,250L150,248L149,246L152,243L157,241L163,233L162,229L166,229L168,228L169,221L168,220L163,220L167,215L172,214L175,213L175,212L176,208L179,208L183,210L184,210L189,202L191,200L192,199L190,200L190,195L192,192L192,188L187,188L188,186L186,184L186,182L182,181L183,180L181,174L177,174L179,168L176,167L177,163L178,163L181,159L179,154L177,155L173,160L167,160L167,155L165,153L159,155L159,157L154,157L155,160L158,162L159,163L159,170L160,171L157,175L153,174L148,178L145,178L141,176L145,172L141,170L142,165L143,165L134,159L134,157L130,158L129,161L120,167L115,167L112,169L112,169Z " data-fips="GM07" data-fips-="GM06" data-iso3="DEU" data-name="Nordrhein-Westfalen" data-p="NW"/><path d="M183,309L183,310L183,313L177,314L178,316L175,319L173,319L174,314L170,311L168,308L164,312L160,309L159,310L159,311L160,316L162,317L162,325L158,329L158,334L152,343L151,344L148,351L146,352L138,361L139,366L136,372L136,376L134,381L132,384L130,391L132,394L128,409L131,416L133,415L134,418L142,417L147,417L152,414L156,414L160,416L164,414L166,415L166,411L164,412L161,408L162,406L166,404L169,405L171,410L173,408L181,411L186,411L191,412L201,417L201,418L208,413L217,409L221,409L221,407L220,403L221,402L220,394L221,386L220,384L218,378L216,373L218,367L224,365L227,361L225,356L231,354L232,353L230,352L231,347L230,344L231,343L223,334L224,333L220,327L219,323L218,321L218,314L217,311L215,314L212,313L211,310L208,310L210,307L206,301L202,303L201,299L196,297L190,299L190,301L192,303L193,302L194,305L190,306L188,309L183,310L183,309Z " data-fips="GM01" data-fips-="" data-iso3="DEU" data-name="Baden-Württemberg" data-p="BW"/><path d="M208,212L206,213L204,212L201,214L203,216L200,217L196,215L199,212L198,204L200,203L199,201L192,199L192,199L191,200L189,202L184,210L183,210L179,208L176,208L175,212L175,213L172,214L167,215L163,220L168,220L169,221L168,228L166,229L162,229L163,233L157,241L152,243L149,246L150,248L149,250L149,251L149,252L147,259L145,260L145,263L144,266L146,267L148,271L148,273L146,273L141,278L142,282L137,285L141,289L142,289L146,286L151,285L152,285L156,289L157,295L159,300L161,300L157,305L159,308L159,310L160,309L164,312L168,308L170,311L174,314L173,319L175,319L178,316L177,314L183,313L183,310L183,309L183,309L184,301L182,295L181,295L180,292L180,284L178,284L182,280L190,279L193,282L201,272L204,270L204,265L212,263L214,259L214,259L214,259L214,252L212,250L210,253L208,253L210,243L212,242L213,239L211,237L213,236L213,233L216,233L217,230L216,230L217,227L215,226L218,224L215,222L213,221L212,218L210,218L208,213L209,213L208,212Z " data-fips="GM05" data-fips-="" data-iso3="DEU" data-name="Hessen" data-p="HE"/><path d="M162,117L160,117L166,124L166,125L169,125L173,126L175,125L175,120L172,120L162,117Z M160,96L161,99L161,99L161,100L161,100L164,100L163,97L160,95L160,96Z " data-fips="GM03" data-fips-="" data-iso3="DEU" data-name="Bremen" data-p="HB"/><path d="M104,97L102,96L102,98L104,97Z M123,90L118,90L121,90L123,90Z M125,89L125,90L126,89L125,89Z M149,89L147,90L148,90L149,89Z M137,87L135,86L135,88L137,87Z M160,95L163,97L164,100L161,100L161,101L161,99L153,95L151,97L154,101L152,106L148,104L146,104L146,101L149,100L142,90L128,92L127,91L122,92L115,97L116,100L116,101L114,110L122,110L120,111L117,120L118,128L114,136L113,139L112,148L104,147L101,154L102,157L109,158L111,157L113,160L112,168L112,169L115,167L120,167L129,161L130,158L134,157L134,159L143,165L142,165L141,170L145,172L141,176L145,178L148,178L153,174L157,175L160,171L159,170L159,163L158,162L155,160L154,157L159,157L159,155L165,153L167,155L167,160L173,160L177,155L179,154L181,159L178,163L177,163L176,167L179,168L177,174L181,174L183,180L182,181L186,182L186,184L188,186L187,188L192,188L192,192L190,195L190,200L192,199L192,199L199,201L200,203L198,204L199,212L196,215L200,217L203,216L201,214L204,212L206,213L208,212L209,213L211,211L215,210L223,201L227,203L232,202L232,199L233,198L232,197L232,194L229,191L229,187L231,185L231,182L228,179L244,171L244,165L242,163L243,159L239,154L241,152L237,144L232,137L233,134L235,134L240,131L245,130L248,132L256,128L256,125L258,124L258,122L256,122L254,121L253,120L251,122L250,121L250,121L250,121L249,120L248,118L244,116L240,117L237,114L229,106L228,106L226,106L225,107L224,106L219,104L218,103L217,103L216,104L213,105L209,103L207,104L201,103L199,98L197,98L191,92L190,91L188,88L183,82L178,82L175,83L170,84L165,81L161,84L159,90L160,95L160,95Z M160,117L162,117L172,120L175,120L175,125L173,126L169,125L166,125L166,124L160,117Z " data-fips="GM06" data-fips-="" data-iso3="DEU" data-name="Niedersachsen" data-p="NI"/><path d="M287,225L287,229L286,233L278,232L273,229L270,230L266,225L259,226L258,222L255,220L259,216L256,212L250,210L243,210L242,204L240,202L241,200L234,199L233,198L232,199L232,202L227,203L223,201L215,210L211,211L209,213L208,213L210,218L212,218L213,221L215,222L218,224L215,226L217,227L216,230L217,230L216,233L213,233L213,236L211,237L213,239L212,242L210,243L208,253L210,253L212,250L214,252L214,259L214,259L216,256L219,257L220,259L226,265L227,264L231,266L233,269L234,273L237,274L237,272L241,272L241,271L237,268L239,265L242,264L246,266L249,266L252,267L251,268L255,269L255,260L258,257L260,257L261,261L264,264L266,263L276,262L277,261L276,261L277,257L279,254L280,254L284,253L290,246L288,246L288,241L291,238L295,236L299,235L298,231L296,230L294,226L289,225L287,225L287,225Z " data-fips="GM15" data-fips-="" data-iso3="DEU" data-name="Thüringen" data-p="TH"/><path d="M217,103L212,99L213,91L211,89L209,89L208,91L204,93L198,97L200,97L201,97L201,98L201,98L199,98L201,103L207,104L209,103L213,105L216,104L217,103L217,103Z " data-fips="GM04" data-fips-="" data-iso3="DEU" data-name="Hamburg" data-p="HH"/><path d="M171,50L169,47L168,48L171,50Z M244,47L242,45L238,44L236,48L239,48L239,50L242,50L246,50L244,47Z M164,48L165,45L162,48L164,48Z M154,37L152,39L155,41L153,38L154,37Z M161,38L160,35L156,36L158,38L161,38Z M198,97L204,93L208,91L209,89L211,89L213,91L212,99L217,103L217,103L218,103L219,104L224,106L225,107L226,106L226,106L228,102L233,98L234,96L237,96L236,89L230,86L230,80L234,77L234,75L234,75L230,72L230,70L231,68L232,68L239,63L239,53L240,52L234,52L229,56L224,54L212,52L210,56L211,49L201,49L205,46L206,39L204,33L199,33L198,32L192,30L191,28L188,31L171,27L163,29L163,30L165,36L167,38L169,42L174,48L171,52L167,53L163,55L165,55L162,57L166,59L173,59L170,61L169,67L170,68L173,67L175,69L175,73L169,73L172,78L182,80L187,83L192,94L197,97L198,97Z M155,27L155,22L157,19L156,18L154,20L152,26L152,35L153,29L157,29L155,27Z " data-fips="GM10" data-fips-="" data-iso3="DEU" data-name="Schleswig-Holstein" data-p="SH"/><path d="M89,270L82,275L82,278L81,279L80,284L82,290L84,293L89,297L93,298L93,303L88,312L88,312L97,312L100,311L110,307L113,308L120,310L119,318L123,324L120,328L123,332L124,332L128,336L136,339L137,338L143,339L148,342L152,343L152,343L158,334L158,329L162,325L162,317L160,316L159,311L159,310L159,308L157,305L161,300L159,300L157,295L156,289L152,285L151,285L146,286L142,289L141,289L137,285L142,282L141,278L146,273L148,273L148,271L146,267L144,266L145,263L145,260L147,259L149,252L149,251L148,250L139,240L136,240L136,243L129,249L124,250L120,255L118,254L109,258L107,261L102,264L104,268L101,269L96,267L89,270L89,270Z " data-fips="GM08" data-fips-="" data-iso3="DEU" data-name="Rheinland-Pfalz" data-p="RP"/><path d="M88,314L88,316L90,316L93,317L96,321L101,332L104,333L105,332L111,331L112,335L120,335L123,332L123,332L120,328L123,324L119,318L120,310L113,308L110,307L100,311L97,312L88,312L88,314Z " data-fips="GM09" data-fips-="" data-iso3="DEU" data-name="Saarland" data-p="SL"/><path d="M214,259L214,259L212,263L204,265L204,270L201,272L193,282L190,279L182,280L178,284L180,284L180,292L181,295L182,295L184,301L183,309L183,309L183,310L188,309L190,306L194,305L193,302L192,303L190,301L190,299L196,297L201,299L202,303L206,301L210,307L208,310L211,310L212,313L215,314L217,311L218,314L218,321L219,323L220,327L224,333L223,334L231,343L230,344L231,347L230,352L232,353L231,354L225,356L227,361L224,365L218,367L216,373L218,378L220,384L221,386L220,394L221,402L220,403L221,407L221,409L217,409L208,413L201,418L203,418L206,418L210,414L211,417L215,417L217,420L218,419L220,422L220,426L223,425L225,426L223,431L227,430L229,428L233,423L232,414L236,417L239,415L248,416L249,417L248,418L252,421L252,423L257,423L259,421L263,422L264,420L267,419L266,418L268,416L273,416L276,411L282,412L283,410L286,410L295,409L296,406L295,405L303,404L306,407L313,405L318,408L317,411L321,413L325,415L326,413L327,404L326,404L320,401L322,393L321,391L313,382L318,376L320,376L323,373L327,371L331,370L336,365L337,355L339,354L343,355L346,357L349,347L348,346L348,343L341,336L340,335L337,334L336,336L332,331L328,327L326,327L318,319L318,318L311,317L308,314L305,312L299,299L297,298L298,291L298,291L295,282L289,280L285,271L283,270L283,266L284,266L280,264L279,263L278,261L277,261L276,262L266,263L264,264L261,261L260,257L258,257L255,260L255,269L251,268L252,267L249,266L246,266L242,264L239,265L237,268L241,271L241,272L237,272L237,274L234,273L233,269L231,266L227,264L226,265L220,259L219,257L216,256L214,259Z " data-fips="GM02" data-fips-="GM15" data-iso3="DEU" data-name="Bayern" data-p="BY"/><path d="M321,139L312,141L312,143L310,146L310,148L309,153L311,153L324,152L327,155L329,150L327,147L326,147L326,144L323,143L321,139Z " data-fips="GM16" data-fips-="" data-iso3="DEU" data-name="Berlin" data-p="BE"/><path d="M312,194L314,190L313,186L316,182L305,180L304,180L296,176L295,177L287,174L286,173L281,167L282,153L281,148L278,149L278,144L279,143L279,135L280,134L279,131L269,129L266,128L264,125L262,125L259,122L258,122L258,124L256,125L256,128L248,132L245,130L240,131L235,134L233,134L232,137L237,144L241,152L239,154L243,159L242,163L244,165L244,171L228,179L231,182L231,185L229,187L229,191L232,194L232,197L233,198L234,199L241,200L240,202L242,204L243,210L250,210L256,212L259,216L255,220L258,222L259,226L266,225L270,230L273,229L278,232L286,233L287,229L287,225L287,225L285,225L282,216L283,212L283,201L284,200L290,199L291,197L298,197L302,195L305,192L306,193L310,195L311,195L312,194Z " data-fips="GM14" data-fips-="" data-iso3="DEU" data-name="Sachsen-Anhalt" data-p="ST"/><path d="M287,225L289,225L294,226L296,230L298,231L299,235L295,236L291,238L288,241L288,246L290,246L284,253L280,254L279,254L277,257L276,261L277,261L278,261L279,263L280,264L284,266L285,266L287,269L289,269L291,274L294,265L296,264L297,261L304,260L307,258L312,259L315,254L320,252L321,249L323,249L326,246L327,248L329,246L333,241L340,240L342,237L346,235L352,232L353,231L357,230L358,229L355,226L353,225L355,222L357,223L360,221L364,228L366,228L366,230L372,231L372,229L375,222L377,215L376,206L374,200L372,197L366,195L365,194L362,193L359,194L353,197L349,196L346,198L344,202L341,206L335,207L330,207L323,204L317,206L316,201L311,195L311,195L310,195L306,193L305,192L302,195L298,197L291,197L290,199L284,200L283,201L283,212L282,216L285,225L287,225Z " data-fips="GM13" data-fips-="" data-iso3="DEU" data-name="Sachsen" data-p="SN"/><path d="M268,109L268,109L266,112L263,112L260,111L256,114L256,118L252,118L252,119L248,119L249,120L250,121L250,121L250,121L251,122L253,120L254,121L256,122L258,122L259,122L262,125L264,125L266,128L269,129L279,131L280,134L279,135L279,143L278,144L278,149L281,148L282,153L281,167L286,173L287,174L295,177L296,176L304,180L305,180L316,182L313,186L314,190L312,194L311,195L311,195L316,201L317,206L323,204L330,207L335,207L341,206L344,202L346,198L349,196L353,197L359,194L362,193L365,194L365,194L365,187L360,181L360,178L363,173L364,166L362,164L362,157L357,155L355,148L357,146L358,139L355,137L353,136L349,132L343,128L340,127L341,125L340,121L345,117L347,111L346,109L348,104L346,101L346,100L342,105L337,103L341,99L337,96L336,97L331,97L329,92L326,92L324,95L319,100L318,103L315,106L312,106L309,109L307,108L303,113L297,112L287,108L284,109L281,106L278,105L277,104L272,105L269,109L268,109Z M321,139L323,143L326,144L326,147L327,147L329,150L327,155L324,152L311,153L309,153L310,148L310,146L312,143L312,141L321,139Z " data-fips="GM11" data-fips-="GM16" data-iso3="DEU" data-name="Brandenburg" data-p="BE"/><path d="M254,69L256,66L253,67L254,69Z M330,62L323,57L324,63L323,65L326,64L326,66L329,63L332,65L332,68L328,68L329,70L327,73L329,74L333,73L337,72L337,70L330,62Z M234,75L234,77L230,80L230,86L236,89L237,96L234,96L233,98L228,102L226,106L226,106L228,106L229,106L237,114L240,117L244,116L248,118L248,119L252,119L252,118L254,118L256,118L256,114L260,111L263,112L266,112L268,109L269,109L272,105L277,104L278,105L281,106L284,109L287,108L297,112L303,113L307,108L309,109L312,106L315,106L318,103L319,100L324,95L326,92L329,92L331,97L336,97L337,96L341,99L337,103L342,105L346,100L345,97L344,94L342,90L342,87L339,81L340,79L339,78L338,79L333,79L327,75L325,74L328,69L323,65L324,61L320,59L321,58L314,63L311,58L309,58L307,56L304,54L301,51L300,48L298,46L297,46L293,50L290,49L289,48L282,52L280,56L279,56L281,49L285,49L295,46L285,46L282,45L280,49L276,56L269,61L262,63L257,64L255,69L252,72L252,77L248,74L245,75L245,73L242,71L239,72L235,75L234,75Z M302,37L302,37L302,37L302,37Z M302,37L300,36L301,39L302,37Z M309,33L309,31L304,33L306,34L305,38L308,35L311,38L313,37L313,42L310,41L308,37L302,39L303,41L304,41L304,45L306,48L303,48L302,50L307,54L309,53L309,55L311,53L322,48L315,43L315,42L318,38L315,36L310,37L309,33Z " data-fips="GM12" data-fips-="" data-iso3="DEU" data-name="Mecklenburg-Vorpommern" data-p="MV"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 451" height="451px" style="stroke-linejoin: round; stroke:#000; fill: none;" version="1.1" viewBox="0 0 450 451" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }]]></style></defs><metadata><views><view h="451" padding="0.06" w="450"><proj id="laea" lat0="51.423631497" lon0="7.55593198638"/><bbox h="104.32" w="79.29" x="982.53" y="950.78"/></view></views></metadata><g class="" id="context"><path d="M450,335L443,332L441,332L437,336L427,337L418,332L410,331L403,328L399,328L394,330L394,329L388,328L388,337L387,340L384,340L380,346L380,350L371,350L369,352L362,353L357,352L355,347L349,344L348,344L348,345L348,353L345,357L338,354L337,355L336,365L333,368L319,376L316,379L314,383L322,393L322,397L320,402L325,402L326,405L325,414L318,411L317,408L313,405L306,407L301,405L295,404L295,409L279,412L274,414L264,421L253,423L249,418L249,417L244,417L241,415L235,416L231,425L226,430L224,430L223,425L220,424L219,420L208,415L205,418L201,417L200,418L201,419L204,421L203,425L201,431L201,432L202,436L202,437L203,442L203,443L204,443L213,445L214,449L228,449L231,446L233,447L234,449L258,449L259,447L263,445L273,443L282,443L289,440L296,437L295,442L296,445L300,449L421,449L423,447L428,446L435,447L435,440L437,437L439,436L444,430L447,428L450,428L450,420L449,416L450,413L448,408L450,406L450,394L446,392L450,388L450,335Z " data-iso="AUT"/><path d="M67,245L72,244L74,247L70,247L77,247L77,248L81,251L85,255L83,258L88,263L89,270L83,275L81,280L81,281L80,280L76,278L72,282L68,291L67,297L69,300L72,306L70,310L69,311L66,311L59,312L51,303L40,297L37,297L37,290L35,288L38,279L35,278L32,280L31,285L27,287L21,288L14,287L15,282L13,277L15,272L10,268L1,266L-1,267L-2,267L-3,260L-8,257L-14,256L-16,248L-17,244L-20,242L-26,244L-32,242L-34,239L-37,233L-36,231L-38,223L-23,215L-14,211L-10,210L-7,217L-2,216L1,216L6,220L8,220L13,218L17,215L19,211L22,213L29,207L33,210L37,207L43,211L46,208L48,215L52,218L55,219L62,219L65,223L72,227L69,234L69,237L66,241L67,246L67,245Z " data-iso="BEL"/><path d="M203,443L200,443L199,443L199,441L199,437L201,431L203,425L204,421L201,419L200,418L194,414L188,411L175,409L171,409L167,406L164,406L161,408L162,412L165,412L165,413L160,415L153,414L149,416L143,417L135,417L132,415L127,418L125,423L117,424L114,421L112,421L108,423L106,426L109,428L108,433L98,443L97,445L90,449L214,449L213,445L204,443L203,443Z M234,449L233,447L231,446L228,449L234,449Z " data-iso="CHE"/><path d="M372,230L372,231L371,232L366,231L366,227L361,223L354,222L353,224L358,228L342,238L336,241L330,243L329,247L321,249L319,253L314,255L312,259L306,258L298,261L295,263L290,273L285,266L283,268L288,277L290,280L299,287L295,296L302,304L305,310L311,317L315,316L319,320L323,325L335,335L338,334L347,341L348,344L349,344L355,347L357,352L362,353L369,352L371,350L380,350L380,346L384,340L387,340L388,337L388,328L394,329L394,330L399,328L403,328L410,331L418,332L427,337L437,336L441,332L443,332L450,335L450,245L444,246L449,254L442,259L441,262L437,262L432,256L427,251L423,249L422,248L424,244L426,243L423,235L416,237L394,231L392,231L388,227L387,223L378,221L378,228L375,229L372,230Z " data-iso="CZE"/><path d="M332,64L325,60L328,66L329,73L333,73L336,72L338,72L337,70L337,68L332,64Z M245,50L243,46L238,44L236,48L240,50L245,50Z M320,47L316,45L316,41L318,39L317,37L312,35L309,31L307,31L304,34L304,51L310,55L311,54L313,50L316,49L320,52L320,47Z M161,37L161,35L156,36L155,37L161,37Z M164,33L173,46L173,50L169,52L163,54L163,59L170,59L171,61L172,75L177,80L182,80L185,82L195,95L200,98L196,97L194,95L185,84L181,82L172,83L163,81L160,86L159,92L161,98L159,107L159,101L154,96L151,104L150,105L147,103L149,99L144,91L132,91L121,92L119,93L115,98L114,108L117,111L118,113L118,118L115,134L112,148L104,147L102,153L102,155L112,159L113,161L112,167L111,170L105,175L103,176L102,179L105,182L103,186L95,189L88,189L84,187L77,191L77,193L84,208L83,215L80,222L82,226L76,231L73,231L74,235L76,235L79,239L77,247L77,248L81,251L85,255L83,258L88,263L89,270L83,275L81,280L81,281L80,282L80,285L85,294L93,300L93,303L89,308L88,313L88,316L89,316L92,317L94,319L97,325L101,332L110,331L111,334L117,335L126,333L128,336L131,337L145,340L150,342L150,347L139,360L138,365L137,372L135,379L132,385L131,390L131,394L131,399L129,406L129,411L130,415L132,415L135,417L143,417L149,416L153,414L160,415L165,413L165,412L162,412L161,408L164,406L167,406L171,409L175,409L188,411L194,414L200,418L201,417L205,418L208,415L219,420L220,424L223,425L224,430L226,430L231,425L235,416L241,415L244,417L249,417L249,418L253,423L264,421L274,414L279,412L295,409L295,404L301,405L306,407L313,405L317,408L318,411L325,414L326,405L325,402L320,402L322,397L322,393L314,383L316,379L319,376L333,368L336,365L337,355L338,354L345,357L348,353L348,345L348,344L347,341L338,334L335,335L323,325L319,320L315,316L311,317L305,310L302,304L295,296L299,287L290,280L288,277L283,268L285,266L290,273L295,263L298,261L306,258L312,259L314,255L319,253L321,249L329,247L330,243L336,241L342,238L358,228L353,224L354,222L361,223L366,227L366,231L371,232L372,231L372,230L372,229L375,222L376,217L377,208L372,198L366,195L366,189L361,182L360,179L362,175L364,165L362,164L361,157L356,151L357,142L353,136L344,130L340,125L346,112L347,103L342,89L340,80L340,80L332,78L327,74L325,66L321,59L313,60L303,53L299,47L284,45L276,55L273,58L271,62L261,63L259,65L252,74L250,75L240,72L235,73L233,72L231,69L237,63L238,57L237,52L228,56L216,50L212,52L209,48L201,49L206,43L205,38L201,32L197,31L196,30L193,29L184,32L182,31L179,30L171,27L164,27L164,33Z M153,33L154,30L161,29L162,27L155,27L154,26L157,19L155,19L152,27L152,34L153,33Z " data-iso="DEU"/><path d="M246,25L242,22L236,22L236,31L249,38L253,36L256,37L259,35L255,27L251,28L246,25Z M219,28L212,23L215,28L219,28Z M282,18L277,15L274,15L269,22L271,23L276,19L282,18Z M206,27L204,21L199,18L198,26L203,27L206,27Z M227,33L232,16L232,11L230,17L227,22L225,25L226,33L227,33Z M346,0L346,6L352,9L358,10L360,5L359,2L355,0L346,0Z M199,0L201,9L203,12L212,16L217,18L223,17L228,13L228,9L227,5L228,3L227,0L199,0Z M239,0L239,2L243,8L248,7L254,8L257,20L257,23L261,30L267,27L267,14L267,8L274,5L276,2L276,0L239,0Z M164,27L171,27L179,30L182,31L184,32L193,29L196,30L195,25L196,23L191,19L187,19L189,15L193,10L194,7L192,0L162,0L163,4L163,13L160,15L163,22L164,27Z " data-iso="DNK"/><path d="M132,415L130,415L129,411L129,406L131,399L131,394L131,390L132,385L135,379L137,372L138,365L139,360L150,347L150,342L145,340L131,337L128,336L126,333L117,335L111,334L110,331L101,332L97,325L94,319L92,317L89,316L88,316L85,315L80,314L78,316L70,313L69,311L66,311L59,312L51,303L40,297L37,297L37,290L35,288L38,279L35,278L32,280L31,285L27,287L21,288L14,287L15,282L13,277L15,272L10,268L1,266L0,266L0,449L90,449L97,445L98,443L108,433L109,428L106,426L108,423L112,421L114,421L117,424L125,423L127,418L132,415Z " data-iso="FRA"/><path d="M439,436L446,436L448,440L449,443L450,444L450,428L447,428L444,430L439,436Z M450,406L448,408L450,413L449,416L450,420L450,406Z M450,388L446,392L450,394L450,388Z " data-iso="HUN"/><path d="M300,449L296,445L295,442L296,437L289,440L282,443L273,443L263,445L259,447L258,449L300,449Z " data-iso="ITA"/><path d="M203,442L202,437L202,436L201,432L201,431L199,437L199,441L199,443L200,443L203,443L203,442Z " data-iso="LIE"/><path d="M80,280L76,278L72,282L68,291L67,297L69,300L72,306L70,310L69,311L70,313L78,316L80,314L85,315L88,316L88,313L89,308L93,303L93,300L85,294L80,285L80,282L81,281L80,280Z " data-iso="LUX"/><path d="M1,216L6,220L8,220L13,218L17,215L19,211L15,213L12,210L8,212L0,210L0,216L1,216Z M11,192L6,192L4,195L7,194L11,198L15,197L11,192Z M44,123L45,117L40,122L41,126L44,123Z M52,110L49,110L46,114L52,110Z M19,211L22,213L29,207L33,210L37,207L43,211L46,208L48,215L52,218L55,219L62,219L65,223L72,227L69,234L69,237L66,241L67,246L67,246L69,246L70,247L77,247L79,239L76,235L74,235L73,231L76,231L82,226L80,222L83,215L84,208L77,193L77,191L84,187L88,189L95,189L103,186L105,182L102,179L103,176L105,175L111,170L112,167L113,161L112,159L102,155L102,153L104,147L112,148L115,134L118,118L118,113L114,112L111,111L106,105L98,105L91,106L82,106L76,108L65,113L62,116L59,122L50,129L44,131L40,130L37,136L33,156L30,163L26,169L20,176L16,179L11,188L17,196L18,199L12,200L20,205L21,207L17,208L8,201L4,199L0,199L0,207L6,209L12,208L16,210L19,211Z M75,151L75,155L73,158L63,167L57,165L48,162L47,160L48,158L49,157L49,156L49,152L49,150L49,147L52,147L55,144L55,141L53,138L51,136L51,133L50,131L56,126L60,124L61,125L61,132L61,134L62,135L65,135L69,135L69,137L68,139L67,140L67,144L67,145L68,147L74,148L75,151Z M59,107L67,104L62,104L55,106L59,107Z M78,103L76,102L71,102L72,104L78,103Z M91,101L90,100L86,102L91,101Z M104,97L106,95L101,97L104,97Z " data-iso="NLD"/><path d="M337,68L337,70L338,72L342,73L349,74L351,83L347,82L340,80L342,89L347,103L346,112L340,125L344,130L353,136L357,142L356,151L361,157L362,164L364,165L362,175L360,179L361,182L366,189L366,195L372,198L377,208L376,217L375,222L372,229L372,230L375,229L378,228L378,221L387,223L388,227L392,231L394,231L416,237L423,235L426,243L424,244L422,248L423,249L427,251L432,256L437,262L441,262L442,259L449,254L444,246L450,245L450,7L443,9L426,16L419,21L416,25L406,28L401,35L396,44L388,47L370,55L353,63L343,69L339,69L337,68Z " data-iso="POL"/><path d="M439,436L437,437L435,440L435,447L428,446L423,447L421,449L450,449L450,444L449,443L448,440L446,436L439,436Z " data-iso="SVN"/></g><g class="" id="regions"><path d="M112,169L106,175L103,176L101,179L105,182L103,186L96,188L90,190L82,187L83,188L78,190L79,198L83,205L85,211L83,217L81,220L80,225L82,226L77,230L75,232L74,231L73,233L75,235L77,236L79,241L77,246L81,250L83,254L85,255L82,258L84,261L88,262L89,265L88,268L89,270L89,270L96,267L101,269L104,268L102,264L107,261L109,258L118,254L120,255L124,250L129,249L136,243L136,240L139,240L148,250L149,251L149,250L150,248L149,246L152,243L157,241L163,233L162,229L166,229L168,228L169,221L168,220L163,220L167,215L172,214L175,213L175,212L176,208L179,208L183,210L184,210L189,202L191,200L192,199L190,200L190,195L192,192L192,188L187,188L188,186L186,184L186,182L182,181L183,180L181,174L177,174L179,168L176,167L177,163L178,163L181,159L179,154L177,155L173,160L167,160L167,155L165,153L159,155L159,157L154,157L155,160L158,162L159,163L159,170L160,171L157,175L153,174L148,178L145,178L141,176L145,172L141,170L142,165L143,165L134,159L134,157L130,158L129,161L120,167L115,167L112,169L112,169Z " data-fips="GM07" data-fips-="GM06" data-iso3="DEU" data-name="Nordrhein-Westfalen" data-p="NW"/><path d="M183,309L183,310L183,313L177,314L178,316L175,319L173,319L174,314L170,311L168,308L164,312L160,309L159,310L159,311L160,316L162,317L162,325L158,329L158,334L152,343L151,344L148,351L146,352L138,361L139,366L136,372L136,376L134,381L132,384L130,391L132,394L128,409L131,416L133,415L134,418L142,417L147,417L152,414L156,414L160,416L164,414L166,415L166,411L164,412L161,408L162,406L166,404L169,405L171,410L173,408L181,411L186,411L191,412L201,417L201,418L208,413L217,409L221,409L221,407L220,403L221,402L220,394L221,386L220,384L218,378L216,373L218,367L224,365L227,361L225,356L231,354L232,353L230,352L231,347L230,344L231,343L223,334L224,333L220,327L219,323L218,321L218,314L217,311L215,314L212,313L211,310L208,310L210,307L206,301L202,303L201,299L196,297L190,299L190,301L192,303L193,302L194,305L190,306L188,309L183,310L183,309Z " data-fips="GM01" data-fips-="" data-iso3="DEU" data-name="Baden-Württemberg" data-p="BW"/><path d="M208,212L206,213L204,212L201,214L203,216L200,217L196,215L199,212L198,204L200,203L199,201L192,199L192,199L191,200L189,202L184,210L183,210L179,208L176,208L175,212L175,213L172,214L167,215L163,220L168,220L169,221L168,228L166,229L162,229L163,233L157,241L152,243L149,246L150,248L149,250L149,251L149,252L147,259L145,260L145,263L144,266L146,267L148,271L148,273L146,273L141,278L142,282L137,285L141,289L142,289L146,286L151,285L152,285L156,289L157,295L159,300L161,300L157,305L159,308L159,310L160,309L164,312L168,308L170,311L174,314L173,319L175,319L178,316L177,314L183,313L183,310L183,309L183,309L184,301L182,295L181,295L180,292L180,284L178,284L182,280L190,279L193,282L201,272L204,270L204,265L212,263L214,259L214,259L214,259L214,252L212,250L210,253L208,253L210,243L212,242L213,239L211,237L213,236L213,233L216,233L217,230L216,230L217,227L215,226L218,224L215,222L213,221L212,218L210,218L208,213L209,213L208,212Z " data-fips="GM05" data-fips-="" data-iso3="DEU" data-name="Hessen" data-p="HE"/><path d="M162,117L160,117L166,124L166,125L169,125L173,126L175,125L175,120L172,120L162,117Z M160,96L161,99L161,99L161,100L161,100L164,100L163,97L160,95L160,96Z " data-fips="GM03" data-fips-="" data-iso3="DEU" data-name="Bremen" data-p="HB"/><path d="M104,97L102,96L102,98L104,97Z M123,90L118,90L121,90L123,90Z M125,89L125,90L126,89L125,89Z M149,89L147,90L148,90L149,89Z M137,87L135,86L135,88L137,87Z M160,95L163,97L164,100L161,100L161,101L161,99L153,95L151,97L154,101L152,106L148,104L146,104L146,101L149,100L142,90L128,92L127,91L122,92L115,97L116,100L116,101L114,110L122,110L120,111L117,120L118,128L114,136L113,139L112,148L104,147L101,154L102,157L109,158L111,157L113,160L112,168L112,169L115,167L120,167L129,161L130,158L134,157L134,159L143,165L142,165L141,170L145,172L141,176L145,178L148,178L153,174L157,175L160,171L159,170L159,163L158,162L155,160L154,157L159,157L159,155L165,153L167,155L167,160L173,160L177,155L179,154L181,159L178,163L177,163L176,167L179,168L177,174L181,174L183,180L182,181L186,182L186,184L188,186L187,188L192,188L192,192L190,195L190,200L192,199L192,199L199,201L200,203L198,204L199,212L196,215L200,217L203,216L201,214L204,212L206,213L208,212L209,213L211,211L215,210L223,201L227,203L232,202L232,199L233,198L232,197L232,194L229,191L229,187L231,185L231,182L228,179L244,171L244,165L242,163L243,159L239,154L241,152L237,144L232,137L233,134L235,134L240,131L245,130L248,132L256,128L256,125L258,124L258,122L256,122L254,121L253,120L251,122L250,121L250,121L250,121L249,120L248,118L244,116L240,117L237,114L229,106L228,106L226,106L225,107L224,106L219,104L218,103L217,103L216,104L213,105L209,103L207,104L201,103L199,98L197,98L191,92L190,91L188,88L183,82L178,82L175,83L170,84L165,81L161,84L159,90L160,95L160,95Z M160,117L162,117L172,120L175,120L175,125L173,126L169,125L166,125L166,124L160,117Z " data-fips="GM06" data-fips-="" data-iso3="DEU" data-name="Niedersachsen" data-p="NI"/><path d="M287,225L287,229L286,233L278,232L273,229L270,230L266,225L259,226L258,222L255,220L259,216L256,212L250,210L243,210L242,204L240,202L241,200L234,199L233,198L232,199L232,202L227,203L223,201L215,210L211,211L209,213L208,213L210,218L212,218L213,221L215,222L218,224L215,226L217,227L216,230L217,230L216,233L213,233L213,236L211,237L213,239L212,242L210,243L208,253L210,253L212,250L214,252L214,259L214,259L216,256L219,257L220,259L226,265L227,264L231,266L233,269L234,273L237,274L237,272L241,272L241,271L237,268L239,265L242,264L246,266L249,266L252,267L251,268L255,269L255,260L258,257L260,257L261,261L264,264L266,263L276,262L277,261L276,261L277,257L279,254L280,254L284,253L290,246L288,246L288,241L291,238L295,236L299,235L298,231L296,230L294,226L289,225L287,225L287,225Z " data-fips="GM15" data-fips-="" data-iso3="DEU" data-name="Thüringen" data-p="TH"/><path d="M217,103L212,99L213,91L211,89L209,89L208,91L204,93L198,97L200,97L201,97L201,98L201,98L199,98L201,103L207,104L209,103L213,105L216,104L217,103L217,103Z " data-fips="GM04" data-fips-="" data-iso3="DEU" data-name="Hamburg" data-p="HH"/><path d="M171,50L169,47L168,48L171,50Z M244,47L242,45L238,44L236,48L239,48L239,50L242,50L246,50L244,47Z M164,48L165,45L162,48L164,48Z M154,37L152,39L155,41L153,38L154,37Z M161,38L160,35L156,36L158,38L161,38Z M198,97L204,93L208,91L209,89L211,89L213,91L212,99L217,103L217,103L218,103L219,104L224,106L225,107L226,106L226,106L228,102L233,98L234,96L237,96L236,89L230,86L230,80L234,77L234,75L234,75L230,72L230,70L231,68L232,68L239,63L239,53L240,52L234,52L229,56L224,54L212,52L210,56L211,49L201,49L205,46L206,39L204,33L199,33L198,32L192,30L191,28L188,31L171,27L163,29L163,30L165,36L167,38L169,42L174,48L171,52L167,53L163,55L165,55L162,57L166,59L173,59L170,61L169,67L170,68L173,67L175,69L175,73L169,73L172,78L182,80L187,83L192,94L197,97L198,97Z M155,27L155,22L157,19L156,18L154,20L152,26L152,35L153,29L157,29L155,27Z " data-fips="GM10" data-fips-="" data-iso3="DEU" data-name="Schleswig-Holstein" data-p="SH"/><path d="M89,270L82,275L82,278L81,279L80,284L82,290L84,293L89,297L93,298L93,303L88,312L88,312L97,312L100,311L110,307L113,308L120,310L119,318L123,324L120,328L123,332L124,332L128,336L136,339L137,338L143,339L148,342L152,343L152,343L158,334L158,329L162,325L162,317L160,316L159,311L159,310L159,308L157,305L161,300L159,300L157,295L156,289L152,285L151,285L146,286L142,289L141,289L137,285L142,282L141,278L146,273L148,273L148,271L146,267L144,266L145,263L145,260L147,259L149,252L149,251L148,250L139,240L136,240L136,243L129,249L124,250L120,255L118,254L109,258L107,261L102,264L104,268L101,269L96,267L89,270L89,270Z " data-fips="GM08" data-fips-="" data-iso3="DEU" data-name="Rheinland-Pfalz" data-p="RP"/><path d="M88,314L88,316L90,316L93,317L96,321L101,332L104,333L105,332L111,331L112,335L120,335L123,332L123,332L120,328L123,324L119,318L120,310L113,308L110,307L100,311L97,312L88,312L88,314Z " data-fips="GM09" data-fips-="" data-iso3="DEU" data-name="Saarland" data-p="SL"/><path d="M214,259L214,259L212,263L204,265L204,270L201,272L193,282L190,279L182,280L178,284L180,284L180,292L181,295L182,295L184,301L183,309L183,309L183,310L188,309L190,306L194,305L193,302L192,303L190,301L190,299L196,297L201,299L202,303L206,301L210,307L208,310L211,310L212,313L215,314L217,311L218,314L218,321L219,323L220,327L224,333L223,334L231,343L230,344L231,347L230,352L232,353L231,354L225,356L227,361L224,365L218,367L216,373L218,378L220,384L221,386L220,394L221,402L220,403L221,407L221,409L217,409L208,413L201,418L203,418L206,418L210,414L211,417L215,417L217,420L218,419L220,422L220,426L223,425L225,426L223,431L227,430L229,428L233,423L232,414L236,417L239,415L248,416L249,417L248,418L252,421L252,423L257,423L259,421L263,422L264,420L267,419L266,418L268,416L273,416L276,411L282,412L283,410L286,410L295,409L296,406L295,405L303,404L306,407L313,405L318,408L317,411L321,413L325,415L326,413L327,404L326,404L320,401L322,393L321,391L313,382L318,376L320,376L323,373L327,371L331,370L336,365L337,355L339,354L343,355L346,357L349,347L348,346L348,343L341,336L340,335L337,334L336,336L332,331L328,327L326,327L318,319L318,318L311,317L308,314L305,312L299,299L297,298L298,291L298,291L295,282L289,280L285,271L283,270L283,266L284,266L280,264L279,263L278,261L277,261L276,262L266,263L264,264L261,261L260,257L258,257L255,260L255,269L251,268L252,267L249,266L246,266L242,264L239,265L237,268L241,271L241,272L237,272L237,274L234,273L233,269L231,266L227,264L226,265L220,259L219,257L216,256L214,259Z " data-fips="GM02" data-fips-="GM15" data-iso3="DEU" data-name="Bayern" data-p="BY"/><path d="M321,139L312,141L312,143L310,146L310,148L309,153L311,153L324,152L327,155L329,150L327,147L326,147L326,144L323,143L321,139Z " data-fips="GM16" data-fips-="" data-iso3="DEU" data-name="Berlin" data-p="BE"/><path d="M312,194L314,190L313,186L316,182L305,180L304,180L296,176L295,177L287,174L286,173L281,167L282,153L281,148L278,149L278,144L279,143L279,135L280,134L279,131L269,129L266,128L264,125L262,125L259,122L258,122L258,124L256,125L256,128L248,132L245,130L240,131L235,134L233,134L232,137L237,144L241,152L239,154L243,159L242,163L244,165L244,171L228,179L231,182L231,185L229,187L229,191L232,194L232,197L233,198L234,199L241,200L240,202L242,204L243,210L250,210L256,212L259,216L255,220L258,222L259,226L266,225L270,230L273,229L278,232L286,233L287,229L287,225L287,225L285,225L282,216L283,212L283,201L284,200L290,199L291,197L298,197L302,195L305,192L306,193L310,195L311,195L312,194Z " data-fips="GM14" data-fips-="" data-iso3="DEU" data-name="Sachsen-Anhalt" data-p="ST"/><path d="M287,225L289,225L294,226L296,230L298,231L299,235L295,236L291,238L288,241L288,246L290,246L284,253L280,254L279,254L277,257L276,261L277,261L278,261L279,263L280,264L284,266L285,266L287,269L289,269L291,274L294,265L296,264L297,261L304,260L307,258L312,259L315,254L320,252L321,249L323,249L326,246L327,248L329,246L333,241L340,240L342,237L346,235L352,232L353,231L357,230L358,229L355,226L353,225L355,222L357,223L360,221L364,228L366,228L366,230L372,231L372,229L375,222L377,215L376,206L374,200L372,197L366,195L365,194L362,193L359,194L353,197L349,196L346,198L344,202L341,206L335,207L330,207L323,204L317,206L316,201L311,195L311,195L310,195L306,193L305,192L302,195L298,197L291,197L290,199L284,200L283,201L283,212L282,216L285,225L287,225Z " data-fips="GM13" data-fips-="" data-iso3="DEU" data-name="Sachsen" data-p="SN"/><path d="M268,109L268,109L266,112L263,112L260,111L256,114L256,118L252,118L252,119L248,119L249,120L250,121L250,121L250,121L251,122L253,120L254,121L256,122L258,122L259,122L262,125L264,125L266,128L269,129L279,131L280,134L279,135L279,143L278,144L278,149L281,148L282,153L281,167L286,173L287,174L295,177L296,176L304,180L305,180L316,182L313,186L314,190L312,194L311,195L311,195L316,201L317,206L323,204L330,207L335,207L341,206L344,202L346,198L349,196L353,197L359,194L362,193L365,194L365,194L365,187L360,181L360,178L363,173L364,166L362,164L362,157L357,155L355,148L357,146L358,139L355,137L353,136L349,132L343,128L340,127L341,125L340,121L345,117L347,111L346,109L348,104L346,101L346,100L342,105L337,103L341,99L337,96L336,97L331,97L329,92L326,92L324,95L319,100L318,103L315,106L312,106L309,109L307,108L303,113L297,112L287,108L284,109L281,106L278,105L277,104L272,105L269,109L268,109Z M321,139L323,143L326,144L326,147L327,147L329,150L327,155L324,152L311,153L309,153L310,148L310,146L312,143L312,141L321,139Z " data-fips="GM11" data-fips-="GM16" data-iso3="DEU" data-name="Brandenburg" data-p="BB"/><path d="M254,69L256,66L253,67L254,69Z M330,62L323,57L324,63L323,65L326,64L326,66L329,63L332,65L332,68L328,68L329,70L327,73L329,74L333,73L337,72L337,70L330,62Z M234,75L234,77L230,80L230,86L236,89L237,96L234,96L233,98L228,102L226,106L226,106L228,106L229,106L237,114L240,117L244,116L248,118L248,119L252,119L252,118L254,118L256,118L256,114L260,111L263,112L266,112L268,109L269,109L272,105L277,104L278,105L281,106L284,109L287,108L297,112L303,113L307,108L309,109L312,106L315,106L318,103L319,100L324,95L326,92L329,92L331,97L336,97L337,96L341,99L337,103L342,105L346,100L345,97L344,94L342,90L342,87L339,81L340,79L339,78L338,79L333,79L327,75L325,74L328,69L323,65L324,61L320,59L321,58L314,63L311,58L309,58L307,56L304,54L301,51L300,48L298,46L297,46L293,50L290,49L289,48L282,52L280,56L279,56L281,49L285,49L295,46L285,46L282,45L280,49L276,56L269,61L262,63L257,64L255,69L252,72L252,77L248,74L245,75L245,73L242,71L239,72L235,75L234,75Z M302,37L302,37L302,37L302,37Z M302,37L300,36L301,39L302,37Z M309,33L309,31L304,33L306,34L305,38L308,35L311,38L313,37L313,42L310,41L308,37L302,39L303,41L304,41L304,45L306,48L303,48L302,50L307,54L309,53L309,55L311,53L322,48L315,43L315,42L318,38L315,36L310,37L309,33Z " data-fips="GM12" data-fips-="" data-iso3="DEU" data-name="Mecklenburg-Vorpommern" data-p="MV"/></g></svg> \ No newline at end of file
diff --git a/tests/PHPUnit/Integration/Concurrency/LockTest.php b/tests/PHPUnit/Integration/Concurrency/LockTest.php
index 96929a96d0..0e5f176313 100644
--- a/tests/PHPUnit/Integration/Concurrency/LockTest.php
+++ b/tests/PHPUnit/Integration/Concurrency/LockTest.php
@@ -9,8 +9,11 @@
namespace Piwik\Tests\Integration\Concurrency;
+use Piwik\Common;
use Piwik\Concurrency\Lock;
use Piwik\Concurrency\LockBackend\MySqlLockBackend;
+use Piwik\Date;
+use Piwik\Db;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
/**
@@ -128,6 +131,54 @@ class LockTest extends IntegrationTestCase
$this->assertSame(array('TestLock0', 'TestLock4', 'TestLock5'), $locks);
}
+ public function test_rexpire_onlyRexpiresWhenCloseToOriginalExpirationTime()
+ {
+ Date::$now = strtotime('2015-03-04 03:04:05');
+
+ $this->lock->acquireLock(0);
+
+ $expireTime = $this->getLockExpirationTime();
+
+ sleep(1);
+ $this->lock->reexpireLock();
+ $newExpireTime = $this->getLockExpirationTime();
+ $this->assertEquals($expireTime, $newExpireTime);
+
+ // 30s after initial, no update
+ Date::$now = strtotime('2015-03-04 03:04:35');
+
+ sleep(1);
+ $this->lock->reexpireLock();
+ $newExpireTime = $this->getLockExpirationTime();
+ $this->assertEquals($expireTime, $newExpireTime);
+
+ // 50s after initial, update
+ Date::$now = strtotime('2015-03-04 03:04:55');
+
+ sleep(1);
+ $this->lock->reexpireLock();
+ $newExpireTime = $this->getLockExpirationTime();
+ $this->assertNotEquals($expireTime, $newExpireTime);
+
+ $expireTime = $newExpireTime;
+
+ // 60s after initial, no update
+ Date::$now = strtotime('2015-03-04 03:05:05');
+
+ sleep(1);
+ $this->lock->reexpireLock();
+ $newExpireTime = $this->getLockExpirationTime();
+ $this->assertEquals($expireTime, $newExpireTime);
+
+ // 1m 50s after initial, update
+ Date::$now = strtotime('2015-03-04 03:05:55');
+
+ sleep(1);
+ $this->lock->reexpireLock();
+ $newExpireTime = $this->getLockExpirationTime();
+ $this->assertNotEquals($expireTime, $newExpireTime);
+ }
+
private function assertNumberOfLocksEquals($numExpectedLocks)
{
$this->assertSame($numExpectedLocks, $this->lock->getNumberOfAcquiredLocks());
@@ -138,4 +189,9 @@ class LockTest extends IntegrationTestCase
return new Lock($mysql, 'TestLock');
}
+ private function getLockExpirationTime()
+ {
+ return Db::fetchOne("SELECT expiry_time FROM `" . Common::prefixTable('locks') . "`");
+ }
+
}
diff --git a/tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php b/tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php
index 1bc95a9be9..a086553bce 100644
--- a/tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php
+++ b/tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php
@@ -159,8 +159,9 @@ class LogAggregatorTest extends IntegrationTestCase
$t->setUrl('http://example.com/here/we/go');
$t->doTrackPageView('here we go');
- $params = new Parameters(new Site(self::$fixture->idSite), Period\Factory::build('day', self::$fixture->dateTime), new Segment('', [self::$fixture->idSite]));
+ Date::$now = strtotime('2015-03-04 00:08:04');
+ $params = new Parameters(new Site(self::$fixture->idSite), Period\Factory::build('day', self::$fixture->dateTime), new Segment('', [self::$fixture->idSite]));
$archiveStatus = StaticContainer::get(ArchivingStatus::class);
$archiveStatus->archiveStarted($params);
@@ -170,6 +171,8 @@ class LogAggregatorTest extends IntegrationTestCase
sleep(1);
+ Date::$now = strtotime('2015-03-04 10:08:04');
+
$this->logAggregator->queryVisitsByDimension(['visit_total_time']);
$locks = $this->getAllLocks();
diff --git a/tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php b/tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php
new file mode 100644
index 0000000000..08fe1064f3
--- /dev/null
+++ b/tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php
@@ -0,0 +1,114 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Tests\Integration\Tracker;
+
+use Piwik\Common;
+use Piwik\EventDispatcher;
+use Piwik\Tracker\Model;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Tracker\Visit\VisitProperties;
+use Piwik\Tracker\VisitorRecognizer;
+
+/**
+ * @group Core
+ */
+class VisitorRecognizerTest extends IntegrationTestCase
+{
+ /**
+ * @var VisitorRecognizer
+ */
+ private $recognizer;
+
+ public function setUp(): void
+ {
+ parent::setUp();
+ $this->recognizer = new VisitorRecognizer(true, 1800, 24000,
+ new Model(), EventDispatcher::getInstance());
+ }
+
+ private function getVisitProperties($originalVisit = false)
+ {
+ $visit = new VisitProperties();
+ $visit->setProperty('idvisit', '321');
+ $visit->setProperty('idvisitor', Common::hex2bin('1234567890234567'));
+ if ($originalVisit) {
+ $visit->setProperty(VisitorRecognizer::KEY_ORIGINAL_VISIT_ROW, $originalVisit);
+ }
+
+ return $visit;
+ }
+
+ public function test_removeUnchangedValues_newVisit_shouldNotChangeAnything()
+ {
+ $visit = array(
+ 'visit_last_action_time' => '2020-05-05 05:05:05',
+ 'visit_total_time' => '50',
+ 'foo' => 'bar',
+ );
+ $result = $this->recognizer->removeUnchangedValues($this->getVisitProperties(), $visit);
+
+ $this->assertEquals($visit, $result);
+ }
+
+ public function test_removeUnchangedValues_existingVisitWithDifferentValues_shouldNotChangeAnything()
+ {
+ $visit = array(
+ 'idvisitor' => Common::hex2bin('1234567890234567'),
+ 'visit_last_action_time' => '2020-05-05 05:05:05',
+ 'visit_total_time' => '50',
+ 'foo' => 'bar',
+ );
+ $properties = $this->getVisitProperties(array(
+ 'visit_last_action_time' => '2020-05-05 04:05:05',
+ 'visit_total_time' => '40',
+ ));
+ $result = $this->recognizer->removeUnchangedValues($properties, $visit);
+
+ $this->assertEquals($visit, $result);
+ }
+
+ public function test_removeUnchangedValues_existingVisitWithSomeSameValues_shouldRemoveUnchangedValues()
+ {
+ $visit = array(
+ 'idvisitor' => Common::hex2bin('1234567890234569'),
+ 'user_id' => 'hello',
+ 'visit_last_action_time' => '2020-05-05 05:05:05',
+ 'visit_total_time' => '50',
+ 'foo' => 'bar',
+ );
+ $properties = $this->getVisitProperties(array(
+ 'idvisitor' => Common::hex2bin('1234567890234567'),
+ 'user_id' => 'hello',
+ 'visit_last_action_time' => '2020-05-05 04:05:05',
+ 'visit_total_time' => '50',
+ ));
+ $result = $this->recognizer->removeUnchangedValues($properties, $visit);
+
+ $this->assertEquals(array(
+ 'visit_last_action_time' => '2020-05-05 05:05:05',
+ 'foo' => 'bar',
+ 'idvisitor' => Common::hex2bin('1234567890234569'),
+ ), $result);
+ }
+
+ public function test_removeUnchangedValues_existingVisitWithAllSameValues_shouldRemoveEmptyArray()
+ {
+ $visit = array(
+ 'idvisitor' => Common::hex2bin('1234567890234569'),
+ 'user_id' => 'hello',
+ 'visit_last_action_time' => '2020-05-05 05:05:05',
+ 'visit_total_time' => '50',
+ );
+ $properties = $this->getVisitProperties($visit);
+ $result = $this->recognizer->removeUnchangedValues($properties, $visit);
+
+ $this->assertEquals(array(), $result);
+ }
+
+}
diff --git a/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_day.xml
index c58c5a08f6..e2f3c3a963 100644
--- a/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_day.xml
@@ -54,7 +54,7 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>1620</sum_time_spent>
+ <sum_time_spent>1499</sum_time_spent>
<nb_hits_with_time_network>1</nb_hits_with_time_network>
<min_time_network>0.0050</min_time_network>
<max_time_network>0.0050</max_time_network>
@@ -90,7 +90,7 @@
<avg_time_dom_completion>0.066</avg_time_dom_completion>
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>0.572</avg_page_load_time>
- <avg_time_on_page>1620</avg_time_on_page>
+ <avg_time_on_page>1499</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<url>http://example.org/webradio</url>
diff --git a/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_month.xml
index 6dee178318..2e0763ff17 100644
--- a/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_CustomEvents__Actions.getPageUrls_month.xml
@@ -53,7 +53,7 @@
<label>/webradio</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>1620</sum_time_spent>
+ <sum_time_spent>1499</sum_time_spent>
<nb_hits_with_time_network>1</nb_hits_with_time_network>
<min_time_network>0.0050</min_time_network>
<max_time_network>0.0050</max_time_network>
@@ -90,7 +90,7 @@
<avg_time_dom_completion>0.066</avg_time_dom_completion>
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>0.572</avg_page_load_time>
- <avg_time_on_page>1620</avg_time_on_page>
+ <avg_time_on_page>1499</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<url>http://example.org/webradio</url>
diff --git a/tests/PHPUnit/System/expected/test_CustomEvents__Live.getLastVisitsDetails_day.xml b/tests/PHPUnit/System/expected/test_CustomEvents__Live.getLastVisitsDetails_day.xml
index a90ccc37f9..bc19a53ab0 100644
--- a/tests/PHPUnit/System/expected/test_CustomEvents__Live.getLastVisitsDetails_day.xml
+++ b/tests/PHPUnit/System/expected/test_CustomEvents__Live.getLastVisitsDetails_day.xml
@@ -731,8 +731,8 @@
<eventCategory>Music</eventCategory>
<eventAction>play25%</eventAction>
<bandwidth />
- <timeSpent>60</timeSpent>
- <timeSpentPretty>1 min 0s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>1</pageviewPosition>
<icon>plugins/Morpheus/images/event.png</icon>
@@ -794,8 +794,8 @@
<eventCategory>Music</eventCategory>
<eventAction>play50%</eventAction>
<bandwidth />
- <timeSpent>60</timeSpent>
- <timeSpentPretty>1 min 0s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>1</pageviewPosition>
<icon>plugins/Morpheus/images/event.png</icon>
@@ -939,8 +939,8 @@
<eventCategory>Music</eventCategory>
<eventAction>rating</eventAction>
<bandwidth />
- <timeSpent>1620</timeSpent>
- <timeSpentPretty>27 min 0s</timeSpentPretty>
+ <timeSpent>1499</timeSpent>
+ <timeSpentPretty>24 min 59s</timeSpentPretty>
<pageviewPosition>1</pageviewPosition>
<icon>plugins/Morpheus/images/event.png</icon>
diff --git a/tests/PHPUnit/System/expected/test_CustomEvents__Live.getLastVisitsDetails_month.xml b/tests/PHPUnit/System/expected/test_CustomEvents__Live.getLastVisitsDetails_month.xml
index d831878334..231d489df1 100644
--- a/tests/PHPUnit/System/expected/test_CustomEvents__Live.getLastVisitsDetails_month.xml
+++ b/tests/PHPUnit/System/expected/test_CustomEvents__Live.getLastVisitsDetails_month.xml
@@ -1772,8 +1772,8 @@
<eventCategory>Music</eventCategory>
<eventAction>play25%</eventAction>
<bandwidth />
- <timeSpent>60</timeSpent>
- <timeSpentPretty>1 min 0s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>1</pageviewPosition>
<icon>plugins/Morpheus/images/event.png</icon>
@@ -1835,8 +1835,8 @@
<eventCategory>Music</eventCategory>
<eventAction>play50%</eventAction>
<bandwidth />
- <timeSpent>60</timeSpent>
- <timeSpentPretty>1 min 0s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>1</pageviewPosition>
<icon>plugins/Morpheus/images/event.png</icon>
@@ -1980,8 +1980,8 @@
<eventCategory>Music</eventCategory>
<eventAction>rating</eventAction>
<bandwidth />
- <timeSpent>1620</timeSpent>
- <timeSpentPretty>27 min 0s</timeSpentPretty>
+ <timeSpent>1499</timeSpent>
+ <timeSpentPretty>24 min 59s</timeSpentPretty>
<pageviewPosition>1</pageviewPosition>
<icon>plugins/Morpheus/images/event.png</icon>
diff --git a/tests/PHPUnit/System/expected/test_CustomEvents_eventCategoryOrNameMatch__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_CustomEvents_eventCategoryOrNameMatch__Actions.getPageUrls_day.xml
index c58c5a08f6..e2f3c3a963 100644
--- a/tests/PHPUnit/System/expected/test_CustomEvents_eventCategoryOrNameMatch__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_CustomEvents_eventCategoryOrNameMatch__Actions.getPageUrls_day.xml
@@ -54,7 +54,7 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>1620</sum_time_spent>
+ <sum_time_spent>1499</sum_time_spent>
<nb_hits_with_time_network>1</nb_hits_with_time_network>
<min_time_network>0.0050</min_time_network>
<max_time_network>0.0050</max_time_network>
@@ -90,7 +90,7 @@
<avg_time_dom_completion>0.066</avg_time_dom_completion>
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>0.572</avg_page_load_time>
- <avg_time_on_page>1620</avg_time_on_page>
+ <avg_time_on_page>1499</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<url>http://example.org/webradio</url>
diff --git a/tests/PHPUnit/System/expected/test_CustomEvents_eventValueMatch__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_CustomEvents_eventValueMatch__Actions.getPageUrls_day.xml
index c58c5a08f6..e2f3c3a963 100644
--- a/tests/PHPUnit/System/expected/test_CustomEvents_eventValueMatch__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_CustomEvents_eventValueMatch__Actions.getPageUrls_day.xml
@@ -54,7 +54,7 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>1620</sum_time_spent>
+ <sum_time_spent>1499</sum_time_spent>
<nb_hits_with_time_network>1</nb_hits_with_time_network>
<min_time_network>0.0050</min_time_network>
<max_time_network>0.0050</max_time_network>
@@ -90,7 +90,7 @@
<avg_time_dom_completion>0.066</avg_time_dom_completion>
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>0.572</avg_page_load_time>
- <avg_time_on_page>1620</avg_time_on_page>
+ <avg_time_on_page>1499</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<url>http://example.org/webradio</url>
diff --git a/tests/PHPUnit/System/expected/test_CustomEvents_segmentMatchesEventActionPlay__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_CustomEvents_segmentMatchesEventActionPlay__Actions.getPageUrls_day.xml
index c58c5a08f6..e2f3c3a963 100644
--- a/tests/PHPUnit/System/expected/test_CustomEvents_segmentMatchesEventActionPlay__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_CustomEvents_segmentMatchesEventActionPlay__Actions.getPageUrls_day.xml
@@ -54,7 +54,7 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>1620</sum_time_spent>
+ <sum_time_spent>1499</sum_time_spent>
<nb_hits_with_time_network>1</nb_hits_with_time_network>
<min_time_network>0.0050</min_time_network>
<max_time_network>0.0050</max_time_network>
@@ -90,7 +90,7 @@
<avg_time_dom_completion>0.066</avg_time_dom_completion>
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>0.572</avg_page_load_time>
- <avg_time_on_page>1620</avg_time_on_page>
+ <avg_time_on_page>1499</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<url>http://example.org/webradio</url>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_month.xml
index 5cd2e67ecd..58e89445a7 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_month.xml
@@ -556,8 +556,37 @@
</subtable>
</row>
<row>
+ <label>/index</label>
+ <nb_visits>3</nb_visits>
+ <nb_hits>3</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_server>1</nb_hits_with_time_server>
+ <min_time_server>0.001</min_time_server>
+ <max_time_server>0.001</max_time_server>
+ <sum_bandwidth>8063</sum_bandwidth>
+ <nb_hits_with_bandwidth>3</nb_hits_with_bandwidth>
+ <min_bandwidth>8063</min_bandwidth>
+ <max_bandwidth>8063</max_bandwidth>
+ <entry_nb_visits>3</entry_nb_visits>
+ <entry_nb_actions>3</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
+ <entry_bounce_count>3</entry_bounce_count>
+ <exit_nb_visits>3</exit_nb_visits>
+ <sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
+ <sum_daily_entry_nb_uniq_visitors>3</sum_daily_entry_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>2687</avg_bandwidth>
+ <avg_time_server>0.001</avg_time_server>
+ <avg_page_load_time>0.001</avg_page_load_time>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>100%</bounce_rate>
+ <exit_rate>100%</exit_rate>
+ <url>http://piwik.net/</url>
+ <segment>entryPageUrl==http%253A%252F%252Fpiwik.net%252F</segment>
+ </row>
+ <row>
<label>hello</label>
- <nb_visits>4</nb_visits>
+ <nb_visits>3</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>4</nb_hits_with_time_server>
@@ -567,21 +596,21 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>3</entry_nb_visits>
+ <entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>2</entry_bounce_count>
- <exit_nb_visits>3</exit_nb_visits>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>2</exit_nb_visits>
<avg_bandwidth>0</avg_bandwidth>
<avg_time_server>0.359</avg_time_server>
<avg_page_load_time>0.359</avg_page_load_time>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>67%</bounce_rate>
- <exit_rate>75%</exit_rate>
+ <bounce_rate>50%</bounce_rate>
+ <exit_rate>67%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello</segment>
<subtable>
<row>
- <label>from</label>
+ <label>world</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
@@ -592,19 +621,69 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>2</entry_sum_visit_length>
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
+ <bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
+ <segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Fworld</segment>
+ <subtable>
+ <row>
+ <label>/6,681965</label>
+ <nb_visits>2</nb_visits>
+ <nb_hits>2</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_server>2</nb_hits_with_time_server>
+ <min_time_server>0.3590</min_time_server>
+ <max_time_server>0.3590</max_time_server>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>100%</bounce_rate>
+ <exit_rate>50%</exit_rate>
+ <url>http://hello.example.com/hello/world/6,681965</url>
+ <segment>entryPageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Fworld%252F6%252C681965</segment>
+ </row>
+ </subtable>
+ </row>
+ <row>
+ <label>from</label>
+ <nb_visits>1</nb_visits>
+ <nb_hits>2</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_server>2</nb_hits_with_time_server>
+ <min_time_server>0.359</min_time_server>
+ <max_time_server>0.359</max_time_server>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>3</entry_nb_actions>
+ <entry_sum_visit_length>2</entry_sum_visit_length>
+ <entry_bounce_count>0</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom</segment>
<subtable>
<row>
<label>another</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>2</nb_hits_with_time_server>
@@ -614,19 +693,19 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom%252Fanother</segment>
<subtable>
<row>
<label>world</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>2</nb_hits_with_time_server>
@@ -636,19 +715,19 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom%252Fanother%252Fworld</segment>
<subtable>
<row>
<label>/6,681965</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>2</nb_hits_with_time_server>
@@ -658,17 +737,17 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<url>http://hello.example.com/hello/from/another/world/6,681965</url>
<segment>entryPageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Ffrom%252Fanother%252Fworld%252F6%252C681965</segment>
</row>
@@ -678,88 +757,9 @@
</row>
</subtable>
</row>
- <row>
- <label>world</label>
- <nb_visits>2</nb_visits>
- <nb_hits>2</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_server>2</nb_hits_with_time_server>
- <min_time_server>0.359</min_time_server>
- <max_time_server>0.359</max_time_server>
- <sum_bandwidth>0</sum_bandwidth>
- <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
- <min_bandwidth />
- <max_bandwidth />
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Fworld</segment>
- <subtable>
- <row>
- <label>/6,681965</label>
- <nb_visits>2</nb_visits>
- <nb_hits>2</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_server>2</nb_hits_with_time_server>
- <min_time_server>0.3590</min_time_server>
- <max_time_server>0.3590</max_time_server>
- <sum_bandwidth>0</sum_bandwidth>
- <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
- <min_bandwidth />
- <max_bandwidth />
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
- <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <url>http://hello.example.com/hello/world/6,681965</url>
- <segment>entryPageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Fworld%252F6%252C681965</segment>
- </row>
- </subtable>
- </row>
</subtable>
</row>
<row>
- <label>/index</label>
- <nb_visits>3</nb_visits>
- <nb_hits>3</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_server>1</nb_hits_with_time_server>
- <min_time_server>0.001</min_time_server>
- <max_time_server>0.001</max_time_server>
- <sum_bandwidth>8063</sum_bandwidth>
- <nb_hits_with_bandwidth>3</nb_hits_with_bandwidth>
- <min_bandwidth>8063</min_bandwidth>
- <max_bandwidth>8063</max_bandwidth>
- <entry_nb_visits>3</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>3</entry_bounce_count>
- <exit_nb_visits>3</exit_nb_visits>
- <sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>3</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
- <avg_bandwidth>2687</avg_bandwidth>
- <avg_time_server>0.001</avg_time_server>
- <avg_page_load_time>0.001</avg_page_load_time>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <url>http://piwik.net/</url>
- <segment>entryPageUrl==http%253A%252F%252Fpiwik.net%252F</segment>
- </row>
- <row>
<label>Citrix</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml
index 47a6bb7b40..b5649e9acb 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getEntryPageUrls_range.xml
@@ -4,7 +4,7 @@
<label>blog</label>
<nb_visits>15</nb_visits>
<nb_hits>18</nb_hits>
- <sum_time_spent>166</sum_time_spent>
+ <sum_time_spent>60</sum_time_spent>
<nb_hits_with_time_network>1</nb_hits_with_time_network>
<min_time_network>0.01</min_time_network>
<max_time_network>0.01</max_time_network>
@@ -40,7 +40,7 @@
<avg_time_dom_completion>0.255</avg_time_dom_completion>
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>1.194</avg_page_load_time>
- <avg_time_on_page>9</avg_time_on_page>
+ <avg_time_on_page>3</avg_time_on_page>
<bounce_rate>93%</bounce_rate>
<exit_rate>87%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog</segment>
@@ -49,7 +49,7 @@
<label>category</label>
<nb_visits>12</nb_visits>
<nb_hits>15</nb_hits>
- <sum_time_spent>166</sum_time_spent>
+ <sum_time_spent>60</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -77,7 +77,7 @@
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>10</entry_bounce_count>
<exit_nb_visits>10</exit_nb_visits>
- <avg_time_on_page>11</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>91%</bounce_rate>
<exit_rate>83%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog%252Fcategory</segment>
@@ -86,7 +86,7 @@
<label>meta</label>
<nb_visits>10</nb_visits>
<nb_hits>12</nb_hits>
- <sum_time_spent>151</sum_time_spent>
+ <sum_time_spent>52</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -114,7 +114,7 @@
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>9</entry_bounce_count>
<exit_nb_visits>9</exit_nb_visits>
- <avg_time_on_page>13</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>90%</bounce_rate>
<exit_rate>90%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog%252Fcategory%252Fmeta</segment>
@@ -123,7 +123,7 @@
<label>/index</label>
<nb_visits>10</nb_visits>
<nb_hits>12</nb_hits>
- <sum_time_spent>151</sum_time_spent>
+ <sum_time_spent>52</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -154,7 +154,7 @@
<sum_daily_nb_uniq_visitors>10</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>10</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>9</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>13</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>90%</bounce_rate>
<exit_rate>90%</exit_rate>
<url>http://included1.com/blog/category/meta/</url>
@@ -166,7 +166,7 @@
<label>community</label>
<nb_visits>2</nb_visits>
<nb_hits>3</nb_hits>
- <sum_time_spent>15</sum_time_spent>
+ <sum_time_spent>8</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -194,7 +194,7 @@
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>5</avg_time_on_page>
+ <avg_time_on_page>3</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog%252Fcategory%252Fcommunity</segment>
@@ -203,7 +203,7 @@
<label>/index</label>
<nb_visits>2</nb_visits>
<nb_hits>3</nb_hits>
- <sum_time_spent>15</sum_time_spent>
+ <sum_time_spent>8</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -234,7 +234,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>5</avg_time_on_page>
+ <avg_time_on_page>3</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
<url>http://piwik.net/blog/category/community/</url>
@@ -1062,7 +1062,7 @@
<label>faq</label>
<nb_visits>5</nb_visits>
<nb_hits>7</nb_hits>
- <sum_time_spent>52</sum_time_spent>
+ <sum_time_spent>26</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -1098,7 +1098,7 @@
<avg_time_dom_completion>0</avg_time_dom_completion>
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>0.255</avg_page_load_time>
- <avg_time_on_page>7</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Ffaq</segment>
@@ -1107,7 +1107,7 @@
<label>/index</label>
<nb_visits>3</nb_visits>
<nb_hits>5</nb_hits>
- <sum_time_spent>52</sum_time_spent>
+ <sum_time_spent>26</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -1138,7 +1138,7 @@
<sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>10</avg_time_on_page>
+ <avg_time_on_page>5</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<url>http://piwik.net/faq/</url>
@@ -1308,7 +1308,7 @@
</row>
<row>
<label>hello</label>
- <nb_visits>4</nb_visits>
+ <nb_visits>3</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
@@ -1333,11 +1333,11 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>3</entry_nb_visits>
+ <entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>2</entry_bounce_count>
- <exit_nb_visits>3</exit_nb_visits>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>2</exit_nb_visits>
<avg_bandwidth>0</avg_bandwidth>
<avg_time_network>0</avg_time_network>
<avg_time_server>0.359</avg_time_server>
@@ -1347,12 +1347,12 @@
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>0.359</avg_page_load_time>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>67%</bounce_rate>
- <exit_rate>75%</exit_rate>
+ <bounce_rate>50%</bounce_rate>
+ <exit_rate>67%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello</segment>
<subtable>
<row>
- <label>from</label>
+ <label>world</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
@@ -1378,19 +1378,99 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>2</entry_sum_visit_length>
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
+ <bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
+ <segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Fworld</segment>
+ <subtable>
+ <row>
+ <label>/6,681965</label>
+ <nb_visits>2</nb_visits>
+ <nb_hits>2</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_network>0</nb_hits_with_time_network>
+ <min_time_network />
+ <max_time_network />
+ <nb_hits_with_time_server>2</nb_hits_with_time_server>
+ <min_time_server>0.3590</min_time_server>
+ <max_time_server>0.3590</max_time_server>
+ <nb_hits_with_time_transfer>0</nb_hits_with_time_transfer>
+ <min_time_transfer />
+ <max_time_transfer />
+ <nb_hits_with_time_dom_processing>0</nb_hits_with_time_dom_processing>
+ <min_time_dom_processing />
+ <max_time_dom_processing />
+ <nb_hits_with_time_dom_completion>0</nb_hits_with_time_dom_completion>
+ <min_time_dom_completion />
+ <max_time_dom_completion />
+ <nb_hits_with_time_on_load>0</nb_hits_with_time_on_load>
+ <min_time_on_load />
+ <max_time_on_load />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>100%</bounce_rate>
+ <exit_rate>50%</exit_rate>
+ <url>http://hello.example.com/hello/world/6,681965</url>
+ <segment>entryPageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Fworld%252F6%252C681965</segment>
+ </row>
+ </subtable>
+ </row>
+ <row>
+ <label>from</label>
+ <nb_visits>1</nb_visits>
+ <nb_hits>2</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_network>0</nb_hits_with_time_network>
+ <min_time_network />
+ <max_time_network />
+ <nb_hits_with_time_server>2</nb_hits_with_time_server>
+ <min_time_server>0.359</min_time_server>
+ <max_time_server>0.359</max_time_server>
+ <nb_hits_with_time_transfer>0</nb_hits_with_time_transfer>
+ <min_time_transfer />
+ <max_time_transfer />
+ <nb_hits_with_time_dom_processing>0</nb_hits_with_time_dom_processing>
+ <min_time_dom_processing />
+ <max_time_dom_processing />
+ <nb_hits_with_time_dom_completion>0</nb_hits_with_time_dom_completion>
+ <min_time_dom_completion />
+ <max_time_dom_completion />
+ <nb_hits_with_time_on_load>0</nb_hits_with_time_on_load>
+ <min_time_on_load />
+ <max_time_on_load />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>3</entry_nb_actions>
+ <entry_sum_visit_length>2</entry_sum_visit_length>
+ <entry_bounce_count>0</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom</segment>
<subtable>
<row>
<label>another</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
@@ -1415,19 +1495,19 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom%252Fanother</segment>
<subtable>
<row>
<label>world</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
@@ -1452,19 +1532,19 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom%252Fanother%252Fworld</segment>
<subtable>
<row>
<label>/6,681965</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
@@ -1489,17 +1569,17 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<url>http://hello.example.com/hello/from/another/world/6,681965</url>
<segment>entryPageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Ffrom%252Fanother%252Fworld%252F6%252C681965</segment>
</row>
@@ -1509,86 +1589,6 @@
</row>
</subtable>
</row>
- <row>
- <label>world</label>
- <nb_visits>2</nb_visits>
- <nb_hits>2</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_network>0</nb_hits_with_time_network>
- <min_time_network />
- <max_time_network />
- <nb_hits_with_time_server>2</nb_hits_with_time_server>
- <min_time_server>0.359</min_time_server>
- <max_time_server>0.359</max_time_server>
- <nb_hits_with_time_transfer>0</nb_hits_with_time_transfer>
- <min_time_transfer />
- <max_time_transfer />
- <nb_hits_with_time_dom_processing>0</nb_hits_with_time_dom_processing>
- <min_time_dom_processing />
- <max_time_dom_processing />
- <nb_hits_with_time_dom_completion>0</nb_hits_with_time_dom_completion>
- <min_time_dom_completion />
- <max_time_dom_completion />
- <nb_hits_with_time_on_load>0</nb_hits_with_time_on_load>
- <min_time_on_load />
- <max_time_on_load />
- <sum_bandwidth>0</sum_bandwidth>
- <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
- <min_bandwidth />
- <max_bandwidth />
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Fworld</segment>
- <subtable>
- <row>
- <label>/6,681965</label>
- <nb_visits>2</nb_visits>
- <nb_hits>2</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_network>0</nb_hits_with_time_network>
- <min_time_network />
- <max_time_network />
- <nb_hits_with_time_server>2</nb_hits_with_time_server>
- <min_time_server>0.3590</min_time_server>
- <max_time_server>0.3590</max_time_server>
- <nb_hits_with_time_transfer>0</nb_hits_with_time_transfer>
- <min_time_transfer />
- <max_time_transfer />
- <nb_hits_with_time_dom_processing>0</nb_hits_with_time_dom_processing>
- <min_time_dom_processing />
- <max_time_dom_processing />
- <nb_hits_with_time_dom_completion>0</nb_hits_with_time_dom_completion>
- <min_time_dom_completion />
- <max_time_dom_completion />
- <nb_hits_with_time_on_load>0</nb_hits_with_time_on_load>
- <min_time_on_load />
- <max_time_on_load />
- <sum_bandwidth>0</sum_bandwidth>
- <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
- <min_bandwidth />
- <max_bandwidth />
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
- <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <url>http://hello.example.com/hello/world/6,681965</url>
- <segment>entryPageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Fworld%252F6%252C681965</segment>
- </row>
- </subtable>
- </row>
</subtable>
</row>
<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_month.xml
index c93a95de7c..ead9d18eb8 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_month.xml
@@ -556,8 +556,37 @@
</subtable>
</row>
<row>
+ <label>/index</label>
+ <nb_visits>3</nb_visits>
+ <nb_hits>3</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_server>1</nb_hits_with_time_server>
+ <min_time_server>0.001</min_time_server>
+ <max_time_server>0.001</max_time_server>
+ <sum_bandwidth>8063</sum_bandwidth>
+ <nb_hits_with_bandwidth>3</nb_hits_with_bandwidth>
+ <min_bandwidth>8063</min_bandwidth>
+ <max_bandwidth>8063</max_bandwidth>
+ <entry_nb_visits>3</entry_nb_visits>
+ <entry_nb_actions>3</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
+ <entry_bounce_count>3</entry_bounce_count>
+ <exit_nb_visits>3</exit_nb_visits>
+ <sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
+ <sum_daily_entry_nb_uniq_visitors>3</sum_daily_entry_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>2687</avg_bandwidth>
+ <avg_time_server>0.001</avg_time_server>
+ <avg_page_load_time>0.001</avg_page_load_time>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>100%</bounce_rate>
+ <exit_rate>100%</exit_rate>
+ <url>http://piwik.net/</url>
+ <segment>exitPageUrl==http%253A%252F%252Fpiwik.net%252F</segment>
+ </row>
+ <row>
<label>hello</label>
- <nb_visits>4</nb_visits>
+ <nb_visits>3</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>4</nb_hits_with_time_server>
@@ -567,21 +596,21 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>3</entry_nb_visits>
+ <entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>2</entry_bounce_count>
- <exit_nb_visits>3</exit_nb_visits>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>2</exit_nb_visits>
<avg_bandwidth>0</avg_bandwidth>
<avg_time_server>0.359</avg_time_server>
<avg_page_load_time>0.359</avg_page_load_time>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>67%</bounce_rate>
- <exit_rate>75%</exit_rate>
+ <bounce_rate>50%</bounce_rate>
+ <exit_rate>67%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello</segment>
<subtable>
<row>
- <label>from</label>
+ <label>world</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
@@ -592,19 +621,69 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>2</entry_sum_visit_length>
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
+ <bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
+ <segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Fworld</segment>
+ <subtable>
+ <row>
+ <label>/6,681965</label>
+ <nb_visits>2</nb_visits>
+ <nb_hits>2</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_server>2</nb_hits_with_time_server>
+ <min_time_server>0.3590</min_time_server>
+ <max_time_server>0.3590</max_time_server>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>100%</bounce_rate>
+ <exit_rate>50%</exit_rate>
+ <url>http://hello.example.com/hello/world/6,681965</url>
+ <segment>exitPageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Fworld%252F6%252C681965</segment>
+ </row>
+ </subtable>
+ </row>
+ <row>
+ <label>from</label>
+ <nb_visits>1</nb_visits>
+ <nb_hits>2</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_server>2</nb_hits_with_time_server>
+ <min_time_server>0.359</min_time_server>
+ <max_time_server>0.359</max_time_server>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>3</entry_nb_actions>
+ <entry_sum_visit_length>2</entry_sum_visit_length>
+ <entry_bounce_count>0</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom</segment>
<subtable>
<row>
<label>another</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>2</nb_hits_with_time_server>
@@ -614,19 +693,19 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom%252Fanother</segment>
<subtable>
<row>
<label>world</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>2</nb_hits_with_time_server>
@@ -636,19 +715,19 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom%252Fanother%252Fworld</segment>
<subtable>
<row>
<label>/6,681965</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>2</nb_hits_with_time_server>
@@ -658,17 +737,17 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<url>http://hello.example.com/hello/from/another/world/6,681965</url>
<segment>exitPageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Ffrom%252Fanother%252Fworld%252F6%252C681965</segment>
</row>
@@ -678,88 +757,9 @@
</row>
</subtable>
</row>
- <row>
- <label>world</label>
- <nb_visits>2</nb_visits>
- <nb_hits>2</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_server>2</nb_hits_with_time_server>
- <min_time_server>0.359</min_time_server>
- <max_time_server>0.359</max_time_server>
- <sum_bandwidth>0</sum_bandwidth>
- <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
- <min_bandwidth />
- <max_bandwidth />
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Fworld</segment>
- <subtable>
- <row>
- <label>/6,681965</label>
- <nb_visits>2</nb_visits>
- <nb_hits>2</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_server>2</nb_hits_with_time_server>
- <min_time_server>0.3590</min_time_server>
- <max_time_server>0.3590</max_time_server>
- <sum_bandwidth>0</sum_bandwidth>
- <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
- <min_bandwidth />
- <max_bandwidth />
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
- <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <url>http://hello.example.com/hello/world/6,681965</url>
- <segment>exitPageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Fworld%252F6%252C681965</segment>
- </row>
- </subtable>
- </row>
</subtable>
</row>
<row>
- <label>/index</label>
- <nb_visits>3</nb_visits>
- <nb_hits>3</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_server>1</nb_hits_with_time_server>
- <min_time_server>0.001</min_time_server>
- <max_time_server>0.001</max_time_server>
- <sum_bandwidth>8063</sum_bandwidth>
- <nb_hits_with_bandwidth>3</nb_hits_with_bandwidth>
- <min_bandwidth>8063</min_bandwidth>
- <max_bandwidth>8063</max_bandwidth>
- <entry_nb_visits>3</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>3</entry_bounce_count>
- <exit_nb_visits>3</exit_nb_visits>
- <sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>3</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
- <avg_bandwidth>2687</avg_bandwidth>
- <avg_time_server>0.001</avg_time_server>
- <avg_page_load_time>0.001</avg_page_load_time>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <url>http://piwik.net/</url>
- <segment>exitPageUrl==http%253A%252F%252Fpiwik.net%252F</segment>
- </row>
- <row>
<label>Citrix</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml
index 9fd1140f34..2e283afb6e 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getExitPageUrls_range.xml
@@ -4,7 +4,7 @@
<label>blog</label>
<nb_visits>15</nb_visits>
<nb_hits>18</nb_hits>
- <sum_time_spent>166</sum_time_spent>
+ <sum_time_spent>60</sum_time_spent>
<nb_hits_with_time_network>1</nb_hits_with_time_network>
<min_time_network>0.01</min_time_network>
<max_time_network>0.01</max_time_network>
@@ -40,7 +40,7 @@
<avg_time_dom_completion>0.255</avg_time_dom_completion>
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>1.194</avg_page_load_time>
- <avg_time_on_page>9</avg_time_on_page>
+ <avg_time_on_page>3</avg_time_on_page>
<bounce_rate>93%</bounce_rate>
<exit_rate>87%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog</segment>
@@ -49,7 +49,7 @@
<label>category</label>
<nb_visits>12</nb_visits>
<nb_hits>15</nb_hits>
- <sum_time_spent>166</sum_time_spent>
+ <sum_time_spent>60</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -77,7 +77,7 @@
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>10</entry_bounce_count>
<exit_nb_visits>10</exit_nb_visits>
- <avg_time_on_page>11</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>91%</bounce_rate>
<exit_rate>83%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog%252Fcategory</segment>
@@ -86,7 +86,7 @@
<label>meta</label>
<nb_visits>10</nb_visits>
<nb_hits>12</nb_hits>
- <sum_time_spent>151</sum_time_spent>
+ <sum_time_spent>52</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -114,7 +114,7 @@
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>9</entry_bounce_count>
<exit_nb_visits>9</exit_nb_visits>
- <avg_time_on_page>13</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>90%</bounce_rate>
<exit_rate>90%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog%252Fcategory%252Fmeta</segment>
@@ -123,7 +123,7 @@
<label>/index</label>
<nb_visits>10</nb_visits>
<nb_hits>12</nb_hits>
- <sum_time_spent>151</sum_time_spent>
+ <sum_time_spent>52</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -154,7 +154,7 @@
<sum_daily_nb_uniq_visitors>10</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>10</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>9</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>13</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>90%</bounce_rate>
<exit_rate>90%</exit_rate>
<url>http://included1.com/blog/category/meta/</url>
@@ -166,7 +166,7 @@
<label>community</label>
<nb_visits>2</nb_visits>
<nb_hits>3</nb_hits>
- <sum_time_spent>15</sum_time_spent>
+ <sum_time_spent>8</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -194,7 +194,7 @@
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>5</avg_time_on_page>
+ <avg_time_on_page>3</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog%252Fcategory%252Fcommunity</segment>
@@ -203,7 +203,7 @@
<label>/index</label>
<nb_visits>2</nb_visits>
<nb_hits>3</nb_hits>
- <sum_time_spent>15</sum_time_spent>
+ <sum_time_spent>8</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -234,7 +234,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>5</avg_time_on_page>
+ <avg_time_on_page>3</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
<url>http://piwik.net/blog/category/community/</url>
@@ -1062,7 +1062,7 @@
<label>faq</label>
<nb_visits>5</nb_visits>
<nb_hits>7</nb_hits>
- <sum_time_spent>52</sum_time_spent>
+ <sum_time_spent>26</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -1098,7 +1098,7 @@
<avg_time_dom_completion>0</avg_time_dom_completion>
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>0.255</avg_page_load_time>
- <avg_time_on_page>7</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Ffaq</segment>
@@ -1107,7 +1107,7 @@
<label>/index</label>
<nb_visits>3</nb_visits>
<nb_hits>5</nb_hits>
- <sum_time_spent>52</sum_time_spent>
+ <sum_time_spent>26</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -1138,7 +1138,7 @@
<sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>10</avg_time_on_page>
+ <avg_time_on_page>5</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<url>http://piwik.net/faq/</url>
@@ -1308,7 +1308,7 @@
</row>
<row>
<label>hello</label>
- <nb_visits>4</nb_visits>
+ <nb_visits>3</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
@@ -1333,11 +1333,11 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>3</entry_nb_visits>
+ <entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>2</entry_bounce_count>
- <exit_nb_visits>3</exit_nb_visits>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>2</exit_nb_visits>
<avg_bandwidth>0</avg_bandwidth>
<avg_time_network>0</avg_time_network>
<avg_time_server>0.359</avg_time_server>
@@ -1347,12 +1347,12 @@
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>0.359</avg_page_load_time>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>67%</bounce_rate>
- <exit_rate>75%</exit_rate>
+ <bounce_rate>50%</bounce_rate>
+ <exit_rate>67%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello</segment>
<subtable>
<row>
- <label>from</label>
+ <label>world</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
@@ -1378,19 +1378,99 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>2</entry_sum_visit_length>
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
+ <bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
+ <segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Fworld</segment>
+ <subtable>
+ <row>
+ <label>/6,681965</label>
+ <nb_visits>2</nb_visits>
+ <nb_hits>2</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_network>0</nb_hits_with_time_network>
+ <min_time_network />
+ <max_time_network />
+ <nb_hits_with_time_server>2</nb_hits_with_time_server>
+ <min_time_server>0.3590</min_time_server>
+ <max_time_server>0.3590</max_time_server>
+ <nb_hits_with_time_transfer>0</nb_hits_with_time_transfer>
+ <min_time_transfer />
+ <max_time_transfer />
+ <nb_hits_with_time_dom_processing>0</nb_hits_with_time_dom_processing>
+ <min_time_dom_processing />
+ <max_time_dom_processing />
+ <nb_hits_with_time_dom_completion>0</nb_hits_with_time_dom_completion>
+ <min_time_dom_completion />
+ <max_time_dom_completion />
+ <nb_hits_with_time_on_load>0</nb_hits_with_time_on_load>
+ <min_time_on_load />
+ <max_time_on_load />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>100%</bounce_rate>
+ <exit_rate>50%</exit_rate>
+ <url>http://hello.example.com/hello/world/6,681965</url>
+ <segment>exitPageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Fworld%252F6%252C681965</segment>
+ </row>
+ </subtable>
+ </row>
+ <row>
+ <label>from</label>
+ <nb_visits>1</nb_visits>
+ <nb_hits>2</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_network>0</nb_hits_with_time_network>
+ <min_time_network />
+ <max_time_network />
+ <nb_hits_with_time_server>2</nb_hits_with_time_server>
+ <min_time_server>0.359</min_time_server>
+ <max_time_server>0.359</max_time_server>
+ <nb_hits_with_time_transfer>0</nb_hits_with_time_transfer>
+ <min_time_transfer />
+ <max_time_transfer />
+ <nb_hits_with_time_dom_processing>0</nb_hits_with_time_dom_processing>
+ <min_time_dom_processing />
+ <max_time_dom_processing />
+ <nb_hits_with_time_dom_completion>0</nb_hits_with_time_dom_completion>
+ <min_time_dom_completion />
+ <max_time_dom_completion />
+ <nb_hits_with_time_on_load>0</nb_hits_with_time_on_load>
+ <min_time_on_load />
+ <max_time_on_load />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>3</entry_nb_actions>
+ <entry_sum_visit_length>2</entry_sum_visit_length>
+ <entry_bounce_count>0</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom</segment>
<subtable>
<row>
<label>another</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
@@ -1415,19 +1495,19 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom%252Fanother</segment>
<subtable>
<row>
<label>world</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
@@ -1452,19 +1532,19 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom%252Fanother%252Fworld</segment>
<subtable>
<row>
<label>/6,681965</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
@@ -1489,17 +1569,17 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<url>http://hello.example.com/hello/from/another/world/6,681965</url>
<segment>exitPageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Ffrom%252Fanother%252Fworld%252F6%252C681965</segment>
</row>
@@ -1509,86 +1589,6 @@
</row>
</subtable>
</row>
- <row>
- <label>world</label>
- <nb_visits>2</nb_visits>
- <nb_hits>2</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_network>0</nb_hits_with_time_network>
- <min_time_network />
- <max_time_network />
- <nb_hits_with_time_server>2</nb_hits_with_time_server>
- <min_time_server>0.359</min_time_server>
- <max_time_server>0.359</max_time_server>
- <nb_hits_with_time_transfer>0</nb_hits_with_time_transfer>
- <min_time_transfer />
- <max_time_transfer />
- <nb_hits_with_time_dom_processing>0</nb_hits_with_time_dom_processing>
- <min_time_dom_processing />
- <max_time_dom_processing />
- <nb_hits_with_time_dom_completion>0</nb_hits_with_time_dom_completion>
- <min_time_dom_completion />
- <max_time_dom_completion />
- <nb_hits_with_time_on_load>0</nb_hits_with_time_on_load>
- <min_time_on_load />
- <max_time_on_load />
- <sum_bandwidth>0</sum_bandwidth>
- <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
- <min_bandwidth />
- <max_bandwidth />
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Fworld</segment>
- <subtable>
- <row>
- <label>/6,681965</label>
- <nb_visits>2</nb_visits>
- <nb_hits>2</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_network>0</nb_hits_with_time_network>
- <min_time_network />
- <max_time_network />
- <nb_hits_with_time_server>2</nb_hits_with_time_server>
- <min_time_server>0.3590</min_time_server>
- <max_time_server>0.3590</max_time_server>
- <nb_hits_with_time_transfer>0</nb_hits_with_time_transfer>
- <min_time_transfer />
- <max_time_transfer />
- <nb_hits_with_time_dom_processing>0</nb_hits_with_time_dom_processing>
- <min_time_dom_processing />
- <max_time_dom_processing />
- <nb_hits_with_time_dom_completion>0</nb_hits_with_time_dom_completion>
- <min_time_dom_completion />
- <max_time_dom_completion />
- <nb_hits_with_time_on_load>0</nb_hits_with_time_on_load>
- <min_time_on_load />
- <max_time_on_load />
- <sum_bandwidth>0</sum_bandwidth>
- <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
- <min_bandwidth />
- <max_bandwidth />
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
- <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <url>http://hello.example.com/hello/world/6,681965</url>
- <segment>exitPageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Fworld%252F6%252C681965</segment>
- </row>
- </subtable>
- </row>
</subtable>
</row>
<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_month.xml
index 67d82638b8..77d3f256e9 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_month.xml
@@ -2,7 +2,7 @@
<result>
<row>
<label> Page Name not defined</label>
- <nb_visits>33</nb_visits>
+ <nb_visits>32</nb_visits>
<nb_hits>34</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>7</nb_hits_with_time_server>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_range.xml
index a0f71bc829..d1534f9ecf 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageTitles_range.xml
@@ -2,7 +2,7 @@
<result>
<row>
<label> Page Name not defined</label>
- <nb_visits>34</nb_visits>
+ <nb_visits>33</nb_visits>
<nb_hits>44</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_day.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_day.xml
index 0f6d9a9916..b63c71979d 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_day.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_day.xml
@@ -4,7 +4,7 @@
<label>blog</label>
<nb_visits>2</nb_visits>
<nb_hits>5</nb_hits>
- <sum_time_spent>166</sum_time_spent>
+ <sum_time_spent>60</sum_time_spent>
<nb_hits_with_time_server>5</nb_hits_with_time_server>
<min_time_server>0.647</min_time_server>
<max_time_server>1.447</max_time_server>
@@ -19,7 +19,7 @@
<avg_bandwidth>0</avg_bandwidth>
<avg_time_server>0.443</avg_time_server>
<avg_page_load_time>0.443</avg_page_load_time>
- <avg_time_on_page>33</avg_time_on_page>
+ <avg_time_on_page>12</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog</segment>
@@ -28,7 +28,7 @@
<label>category</label>
<nb_visits>2</nb_visits>
<nb_hits>5</nb_hits>
- <sum_time_spent>166</sum_time_spent>
+ <sum_time_spent>60</sum_time_spent>
<nb_hits_with_time_server>5</nb_hits_with_time_server>
<min_time_server>0.647</min_time_server>
<max_time_server>1.447</max_time_server>
@@ -40,7 +40,7 @@
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>33</avg_time_on_page>
+ <avg_time_on_page>12</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog%252Fcategory</segment>
@@ -49,7 +49,7 @@
<label>community</label>
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>15</sum_time_spent>
+ <sum_time_spent>8</sum_time_spent>
<nb_hits_with_time_server>2</nb_hits_with_time_server>
<min_time_server>0.624</min_time_server>
<max_time_server>1.324</max_time_server>
@@ -57,7 +57,7 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <avg_time_on_page>8</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog%252Fcategory%252Fcommunity</segment>
@@ -67,7 +67,7 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>15</sum_time_spent>
+ <sum_time_spent>8</sum_time_spent>
<nb_hits_with_time_server>2</nb_hits_with_time_server>
<min_time_server>0.6240</min_time_server>
<max_time_server>1.3240</max_time_server>
@@ -75,7 +75,7 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <avg_time_on_page>8</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<url>http://piwik.net/blog/category/community/</url>
@@ -87,7 +87,7 @@
<label>meta</label>
<nb_visits>1</nb_visits>
<nb_hits>3</nb_hits>
- <sum_time_spent>151</sum_time_spent>
+ <sum_time_spent>52</sum_time_spent>
<nb_hits_with_time_server>3</nb_hits_with_time_server>
<min_time_server>0.023</min_time_server>
<max_time_server>0.123</max_time_server>
@@ -99,7 +99,7 @@
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>50</avg_time_on_page>
+ <avg_time_on_page>17</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog%252Fcategory%252Fmeta</segment>
@@ -109,7 +109,7 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>3</nb_hits>
- <sum_time_spent>151</sum_time_spent>
+ <sum_time_spent>52</sum_time_spent>
<nb_hits_with_time_server>3</nb_hits_with_time_server>
<min_time_server>0.0230</min_time_server>
<max_time_server>0.1230</max_time_server>
@@ -122,7 +122,7 @@
<entry_nb_actions>10</entry_nb_actions>
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>50</avg_time_on_page>
+ <avg_time_on_page>17</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<url>http://piwik.net/blog/category/meta/</url>
@@ -198,7 +198,7 @@
<label>faq</label>
<nb_visits>1</nb_visits>
<nb_hits>3</nb_hits>
- <sum_time_spent>52</sum_time_spent>
+ <sum_time_spent>26</sum_time_spent>
<nb_hits_with_time_server>3</nb_hits_with_time_server>
<min_time_server>0.234</min_time_server>
<max_time_server>0.294</max_time_server>
@@ -210,7 +210,7 @@
<avg_bandwidth>0</avg_bandwidth>
<avg_time_server>0.255</avg_time_server>
<avg_page_load_time>0.255</avg_page_load_time>
- <avg_time_on_page>17</avg_time_on_page>
+ <avg_time_on_page>9</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Ffaq</segment>
@@ -220,7 +220,7 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>3</nb_hits>
- <sum_time_spent>52</sum_time_spent>
+ <sum_time_spent>26</sum_time_spent>
<nb_hits_with_time_server>3</nb_hits_with_time_server>
<min_time_server>0.2340</min_time_server>
<max_time_server>0.2940</max_time_server>
@@ -230,7 +230,7 @@
<max_bandwidth />
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>17</avg_time_on_page>
+ <avg_time_on_page>9</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>100%</exit_rate>
<url>http://piwik.net/faq/</url>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_month.xml
index c4b8cdb73f..70fea4b274 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_month.xml
@@ -556,8 +556,37 @@
</subtable>
</row>
<row>
+ <label>/index</label>
+ <nb_visits>3</nb_visits>
+ <nb_hits>3</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_server>1</nb_hits_with_time_server>
+ <min_time_server>0.001</min_time_server>
+ <max_time_server>0.001</max_time_server>
+ <sum_bandwidth>8063</sum_bandwidth>
+ <nb_hits_with_bandwidth>3</nb_hits_with_bandwidth>
+ <min_bandwidth>8063</min_bandwidth>
+ <max_bandwidth>8063</max_bandwidth>
+ <entry_nb_visits>3</entry_nb_visits>
+ <entry_nb_actions>3</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
+ <entry_bounce_count>3</entry_bounce_count>
+ <exit_nb_visits>3</exit_nb_visits>
+ <sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
+ <sum_daily_entry_nb_uniq_visitors>3</sum_daily_entry_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
+ <avg_bandwidth>2687</avg_bandwidth>
+ <avg_time_server>0.001</avg_time_server>
+ <avg_page_load_time>0.001</avg_page_load_time>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>100%</bounce_rate>
+ <exit_rate>100%</exit_rate>
+ <url>http://piwik.net/</url>
+ <segment>pageUrl==http%253A%252F%252Fpiwik.net%252F</segment>
+ </row>
+ <row>
<label>hello</label>
- <nb_visits>4</nb_visits>
+ <nb_visits>3</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>4</nb_hits_with_time_server>
@@ -567,21 +596,21 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>3</entry_nb_visits>
+ <entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>2</entry_bounce_count>
- <exit_nb_visits>3</exit_nb_visits>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>2</exit_nb_visits>
<avg_bandwidth>0</avg_bandwidth>
<avg_time_server>0.359</avg_time_server>
<avg_page_load_time>0.359</avg_page_load_time>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>67%</bounce_rate>
- <exit_rate>75%</exit_rate>
+ <bounce_rate>50%</bounce_rate>
+ <exit_rate>67%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello</segment>
<subtable>
<row>
- <label>from</label>
+ <label>world</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
@@ -592,19 +621,69 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>2</entry_sum_visit_length>
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
+ <bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
+ <segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Fworld</segment>
+ <subtable>
+ <row>
+ <label>/6,681965</label>
+ <nb_visits>2</nb_visits>
+ <nb_hits>2</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_server>2</nb_hits_with_time_server>
+ <min_time_server>0.3590</min_time_server>
+ <max_time_server>0.3590</max_time_server>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>100%</bounce_rate>
+ <exit_rate>50%</exit_rate>
+ <url>http://hello.example.com/hello/world/6,681965</url>
+ <segment>pageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Fworld%252F6%252C681965</segment>
+ </row>
+ </subtable>
+ </row>
+ <row>
+ <label>from</label>
+ <nb_visits>1</nb_visits>
+ <nb_hits>2</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_server>2</nb_hits_with_time_server>
+ <min_time_server>0.359</min_time_server>
+ <max_time_server>0.359</max_time_server>
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>3</entry_nb_actions>
+ <entry_sum_visit_length>2</entry_sum_visit_length>
+ <entry_bounce_count>0</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom</segment>
<subtable>
<row>
<label>another</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>2</nb_hits_with_time_server>
@@ -614,19 +693,19 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom%252Fanother</segment>
<subtable>
<row>
<label>world</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>2</nb_hits_with_time_server>
@@ -636,19 +715,19 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom%252Fanother%252Fworld</segment>
<subtable>
<row>
<label>/6,681965</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_server>2</nb_hits_with_time_server>
@@ -658,17 +737,17 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<url>http://hello.example.com/hello/from/another/world/6,681965</url>
<segment>pageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Ffrom%252Fanother%252Fworld%252F6%252C681965</segment>
</row>
@@ -678,88 +757,9 @@
</row>
</subtable>
</row>
- <row>
- <label>world</label>
- <nb_visits>2</nb_visits>
- <nb_hits>2</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_server>2</nb_hits_with_time_server>
- <min_time_server>0.359</min_time_server>
- <max_time_server>0.359</max_time_server>
- <sum_bandwidth>0</sum_bandwidth>
- <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
- <min_bandwidth />
- <max_bandwidth />
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Fworld</segment>
- <subtable>
- <row>
- <label>/6,681965</label>
- <nb_visits>2</nb_visits>
- <nb_hits>2</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_server>2</nb_hits_with_time_server>
- <min_time_server>0.3590</min_time_server>
- <max_time_server>0.3590</max_time_server>
- <sum_bandwidth>0</sum_bandwidth>
- <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
- <min_bandwidth />
- <max_bandwidth />
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
- <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <url>http://hello.example.com/hello/world/6,681965</url>
- <segment>pageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Fworld%252F6%252C681965</segment>
- </row>
- </subtable>
- </row>
</subtable>
</row>
<row>
- <label>/index</label>
- <nb_visits>3</nb_visits>
- <nb_hits>3</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_server>1</nb_hits_with_time_server>
- <min_time_server>0.001</min_time_server>
- <max_time_server>0.001</max_time_server>
- <sum_bandwidth>8063</sum_bandwidth>
- <nb_hits_with_bandwidth>3</nb_hits_with_bandwidth>
- <min_bandwidth>8063</min_bandwidth>
- <max_bandwidth>8063</max_bandwidth>
- <entry_nb_visits>3</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>3</entry_bounce_count>
- <exit_nb_visits>3</exit_nb_visits>
- <sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>3</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
- <avg_bandwidth>2687</avg_bandwidth>
- <avg_time_server>0.001</avg_time_server>
- <avg_page_load_time>0.001</avg_page_load_time>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <url>http://piwik.net/</url>
- <segment>pageUrl==http%253A%252F%252Fpiwik.net%252F</segment>
- </row>
- <row>
<label>Citrix</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml
index 008cca4d72..8dae7cc0a6 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.getPageUrls_range.xml
@@ -4,7 +4,7 @@
<label>blog</label>
<nb_visits>15</nb_visits>
<nb_hits>18</nb_hits>
- <sum_time_spent>166</sum_time_spent>
+ <sum_time_spent>60</sum_time_spent>
<nb_hits_with_time_network>1</nb_hits_with_time_network>
<min_time_network>0.01</min_time_network>
<max_time_network>0.01</max_time_network>
@@ -40,7 +40,7 @@
<avg_time_dom_completion>0.255</avg_time_dom_completion>
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>1.194</avg_page_load_time>
- <avg_time_on_page>9</avg_time_on_page>
+ <avg_time_on_page>3</avg_time_on_page>
<bounce_rate>93%</bounce_rate>
<exit_rate>87%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog</segment>
@@ -49,7 +49,7 @@
<label>category</label>
<nb_visits>12</nb_visits>
<nb_hits>15</nb_hits>
- <sum_time_spent>166</sum_time_spent>
+ <sum_time_spent>60</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -77,7 +77,7 @@
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>10</entry_bounce_count>
<exit_nb_visits>10</exit_nb_visits>
- <avg_time_on_page>11</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>91%</bounce_rate>
<exit_rate>83%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog%252Fcategory</segment>
@@ -86,7 +86,7 @@
<label>meta</label>
<nb_visits>10</nb_visits>
<nb_hits>12</nb_hits>
- <sum_time_spent>151</sum_time_spent>
+ <sum_time_spent>52</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -114,7 +114,7 @@
<entry_sum_visit_length>54</entry_sum_visit_length>
<entry_bounce_count>9</entry_bounce_count>
<exit_nb_visits>9</exit_nb_visits>
- <avg_time_on_page>13</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>90%</bounce_rate>
<exit_rate>90%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog%252Fcategory%252Fmeta</segment>
@@ -123,7 +123,7 @@
<label>/index</label>
<nb_visits>10</nb_visits>
<nb_hits>12</nb_hits>
- <sum_time_spent>151</sum_time_spent>
+ <sum_time_spent>52</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -154,7 +154,7 @@
<sum_daily_nb_uniq_visitors>10</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>10</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>9</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>13</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>90%</bounce_rate>
<exit_rate>90%</exit_rate>
<url>http://included1.com/blog/category/meta/</url>
@@ -166,7 +166,7 @@
<label>community</label>
<nb_visits>2</nb_visits>
<nb_hits>3</nb_hits>
- <sum_time_spent>15</sum_time_spent>
+ <sum_time_spent>8</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -194,7 +194,7 @@
<entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
- <avg_time_on_page>5</avg_time_on_page>
+ <avg_time_on_page>3</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fblog%252Fcategory%252Fcommunity</segment>
@@ -203,7 +203,7 @@
<label>/index</label>
<nb_visits>2</nb_visits>
<nb_hits>3</nb_hits>
- <sum_time_spent>15</sum_time_spent>
+ <sum_time_spent>8</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -234,7 +234,7 @@
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>5</avg_time_on_page>
+ <avg_time_on_page>3</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
<url>http://piwik.net/blog/category/community/</url>
@@ -1062,7 +1062,7 @@
<label>faq</label>
<nb_visits>5</nb_visits>
<nb_hits>7</nb_hits>
- <sum_time_spent>52</sum_time_spent>
+ <sum_time_spent>26</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -1098,7 +1098,7 @@
<avg_time_dom_completion>0</avg_time_dom_completion>
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>0.255</avg_page_load_time>
- <avg_time_on_page>7</avg_time_on_page>
+ <avg_time_on_page>4</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Ffaq</segment>
@@ -1107,7 +1107,7 @@
<label>/index</label>
<nb_visits>3</nb_visits>
<nb_hits>5</nb_hits>
- <sum_time_spent>52</sum_time_spent>
+ <sum_time_spent>26</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
<min_time_network />
<max_time_network />
@@ -1138,7 +1138,7 @@
<sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>2</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>3</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>10</avg_time_on_page>
+ <avg_time_on_page>5</avg_time_on_page>
<bounce_rate>100%</bounce_rate>
<exit_rate>100%</exit_rate>
<url>http://piwik.net/faq/</url>
@@ -1308,7 +1308,7 @@
</row>
<row>
<label>hello</label>
- <nb_visits>4</nb_visits>
+ <nb_visits>3</nb_visits>
<nb_hits>4</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
@@ -1333,11 +1333,11 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>3</entry_nb_visits>
+ <entry_nb_visits>2</entry_nb_visits>
<entry_nb_actions>4</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>2</entry_bounce_count>
- <exit_nb_visits>3</exit_nb_visits>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>2</exit_nb_visits>
<avg_bandwidth>0</avg_bandwidth>
<avg_time_network>0</avg_time_network>
<avg_time_server>0.359</avg_time_server>
@@ -1347,12 +1347,12 @@
<avg_time_on_load>0</avg_time_on_load>
<avg_page_load_time>0.359</avg_page_load_time>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>67%</bounce_rate>
- <exit_rate>75%</exit_rate>
+ <bounce_rate>50%</bounce_rate>
+ <exit_rate>67%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello</segment>
<subtable>
<row>
- <label>from</label>
+ <label>world</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
@@ -1378,19 +1378,99 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
- <entry_nb_actions>3</entry_nb_actions>
- <entry_sum_visit_length>2</entry_sum_visit_length>
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
<entry_bounce_count>1</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
+ <bounce_rate>100%</bounce_rate>
<exit_rate>50%</exit_rate>
+ <segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Fworld</segment>
+ <subtable>
+ <row>
+ <label>/6,681965</label>
+ <nb_visits>2</nb_visits>
+ <nb_hits>2</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_network>0</nb_hits_with_time_network>
+ <min_time_network />
+ <max_time_network />
+ <nb_hits_with_time_server>2</nb_hits_with_time_server>
+ <min_time_server>0.3590</min_time_server>
+ <max_time_server>0.3590</max_time_server>
+ <nb_hits_with_time_transfer>0</nb_hits_with_time_transfer>
+ <min_time_transfer />
+ <max_time_transfer />
+ <nb_hits_with_time_dom_processing>0</nb_hits_with_time_dom_processing>
+ <min_time_dom_processing />
+ <max_time_dom_processing />
+ <nb_hits_with_time_dom_completion>0</nb_hits_with_time_dom_completion>
+ <min_time_dom_completion />
+ <max_time_dom_completion />
+ <nb_hits_with_time_on_load>0</nb_hits_with_time_on_load>
+ <min_time_on_load />
+ <max_time_on_load />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>1</entry_nb_actions>
+ <entry_sum_visit_length>0</entry_sum_visit_length>
+ <entry_bounce_count>1</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>100%</bounce_rate>
+ <exit_rate>50%</exit_rate>
+ <url>http://hello.example.com/hello/world/6,681965</url>
+ <segment>pageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Fworld%252F6%252C681965</segment>
+ </row>
+ </subtable>
+ </row>
+ <row>
+ <label>from</label>
+ <nb_visits>1</nb_visits>
+ <nb_hits>2</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_with_time_network>0</nb_hits_with_time_network>
+ <min_time_network />
+ <max_time_network />
+ <nb_hits_with_time_server>2</nb_hits_with_time_server>
+ <min_time_server>0.359</min_time_server>
+ <max_time_server>0.359</max_time_server>
+ <nb_hits_with_time_transfer>0</nb_hits_with_time_transfer>
+ <min_time_transfer />
+ <max_time_transfer />
+ <nb_hits_with_time_dom_processing>0</nb_hits_with_time_dom_processing>
+ <min_time_dom_processing />
+ <max_time_dom_processing />
+ <nb_hits_with_time_dom_completion>0</nb_hits_with_time_dom_completion>
+ <min_time_dom_completion />
+ <max_time_dom_completion />
+ <nb_hits_with_time_on_load>0</nb_hits_with_time_on_load>
+ <min_time_on_load />
+ <max_time_on_load />
+ <sum_bandwidth>0</sum_bandwidth>
+ <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
+ <min_bandwidth />
+ <max_bandwidth />
+ <entry_nb_visits>1</entry_nb_visits>
+ <entry_nb_actions>3</entry_nb_actions>
+ <entry_sum_visit_length>2</entry_sum_visit_length>
+ <entry_bounce_count>0</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom</segment>
<subtable>
<row>
<label>another</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
@@ -1415,19 +1495,19 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom%252Fanother</segment>
<subtable>
<row>
<label>world</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
@@ -1452,19 +1532,19 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Ffrom%252Fanother%252Fworld</segment>
<subtable>
<row>
<label>/6,681965</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
<sum_time_spent>0</sum_time_spent>
<nb_hits_with_time_network>0</nb_hits_with_time_network>
@@ -1489,17 +1569,17 @@
<nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
<min_bandwidth />
<max_bandwidth />
- <entry_nb_visits>2</entry_nb_visits>
+ <entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>3</entry_nb_actions>
<entry_sum_visit_length>2</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
+ <entry_bounce_count>0</entry_bounce_count>
<exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
<sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>50%</bounce_rate>
- <exit_rate>50%</exit_rate>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
<url>http://hello.example.com/hello/from/another/world/6,681965</url>
<segment>pageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Ffrom%252Fanother%252Fworld%252F6%252C681965</segment>
</row>
@@ -1509,86 +1589,6 @@
</row>
</subtable>
</row>
- <row>
- <label>world</label>
- <nb_visits>2</nb_visits>
- <nb_hits>2</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_network>0</nb_hits_with_time_network>
- <min_time_network />
- <max_time_network />
- <nb_hits_with_time_server>2</nb_hits_with_time_server>
- <min_time_server>0.359</min_time_server>
- <max_time_server>0.359</max_time_server>
- <nb_hits_with_time_transfer>0</nb_hits_with_time_transfer>
- <min_time_transfer />
- <max_time_transfer />
- <nb_hits_with_time_dom_processing>0</nb_hits_with_time_dom_processing>
- <min_time_dom_processing />
- <max_time_dom_processing />
- <nb_hits_with_time_dom_completion>0</nb_hits_with_time_dom_completion>
- <min_time_dom_completion />
- <max_time_dom_completion />
- <nb_hits_with_time_on_load>0</nb_hits_with_time_on_load>
- <min_time_on_load />
- <max_time_on_load />
- <sum_bandwidth>0</sum_bandwidth>
- <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
- <min_bandwidth />
- <max_bandwidth />
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <segment>pageUrl=^http%253A%252F%252Fpiwik.net%252Fhello%252Fworld</segment>
- <subtable>
- <row>
- <label>/6,681965</label>
- <nb_visits>2</nb_visits>
- <nb_hits>2</nb_hits>
- <sum_time_spent>0</sum_time_spent>
- <nb_hits_with_time_network>0</nb_hits_with_time_network>
- <min_time_network />
- <max_time_network />
- <nb_hits_with_time_server>2</nb_hits_with_time_server>
- <min_time_server>0.3590</min_time_server>
- <max_time_server>0.3590</max_time_server>
- <nb_hits_with_time_transfer>0</nb_hits_with_time_transfer>
- <min_time_transfer />
- <max_time_transfer />
- <nb_hits_with_time_dom_processing>0</nb_hits_with_time_dom_processing>
- <min_time_dom_processing />
- <max_time_dom_processing />
- <nb_hits_with_time_dom_completion>0</nb_hits_with_time_dom_completion>
- <min_time_dom_completion />
- <max_time_dom_completion />
- <nb_hits_with_time_on_load>0</nb_hits_with_time_on_load>
- <min_time_on_load />
- <max_time_on_load />
- <sum_bandwidth>0</sum_bandwidth>
- <nb_hits_with_bandwidth>0</nb_hits_with_bandwidth>
- <min_bandwidth />
- <max_bandwidth />
- <entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>1</entry_nb_actions>
- <entry_sum_visit_length>0</entry_sum_visit_length>
- <entry_bounce_count>1</entry_bounce_count>
- <exit_nb_visits>2</exit_nb_visits>
- <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
- <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
- <avg_time_on_page>0</avg_time_on_page>
- <bounce_rate>100%</bounce_rate>
- <exit_rate>100%</exit_rate>
- <url>http://hello.example.com/hello/world/6,681965</url>
- <segment>pageUrl==http%253A%252F%252Fhello.example.com%252Fhello%252Fworld%252F6%252C681965</segment>
- </row>
- </subtable>
- </row>
</subtable>
</row>
<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.get_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.get_month.xml
index e42b6bfd5e..efaab5cb0c 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.get_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.get_month.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<nb_pageviews>45</nb_pageviews>
- <nb_uniq_pageviews>43</nb_uniq_pageviews>
+ <nb_uniq_pageviews>42</nb_uniq_pageviews>
<nb_downloads>4</nb_downloads>
<nb_uniq_downloads>4</nb_uniq_downloads>
<nb_outlinks>0</nb_outlinks>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.get_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.get_range.xml
index 9a71fc7e43..0ea842f740 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Actions.get_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Actions.get_range.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<nb_pageviews>69</nb_pageviews>
- <nb_uniq_pageviews>61</nb_uniq_pageviews>
+ <nb_uniq_pageviews>60</nb_uniq_pageviews>
<nb_downloads>5</nb_downloads>
<nb_uniq_downloads>5</nb_uniq_downloads>
<nb_outlinks>1</nb_outlinks>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__CustomVariables.getCustomVariables_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__CustomVariables.getCustomVariables_month.xml
index c4b0cacda8..8b06eb1295 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__CustomVariables.getCustomVariables_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__CustomVariables.getCustomVariables_month.xml
@@ -156,22 +156,13 @@
<row>
<label>User Name</label>
<nb_visits>3</nb_visits>
- <nb_actions>5</nb_actions>
- <max_actions>2</max_actions>
- <sum_visit_length>5</sum_visit_length>
- <bounce_count>1</bounce_count>
+ <nb_actions>7</nb_actions>
+ <max_actions>3</max_actions>
+ <sum_visit_length>6</sum_visit_length>
+ <bounce_count>0</bounce_count>
<nb_visits_converted>3</nb_visits_converted>
- <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>3</sum_daily_nb_uniq_visitors>
- <sum_daily_nb_users>1</sum_daily_nb_users>
+ <sum_daily_nb_users>2</sum_daily_nb_users>
<slots>
<row>
<scope>visit</scope>
@@ -194,22 +185,13 @@
<row>
<label>user2</label>
<nb_visits>1</nb_visits>
- <nb_actions>1</nb_actions>
- <max_actions>1</max_actions>
- <sum_visit_length>1</sum_visit_length>
- <bounce_count>1</bounce_count>
+ <nb_actions>3</nb_actions>
+ <max_actions>3</max_actions>
+ <sum_visit_length>2</sum_visit_length>
+ <bounce_count>0</bounce_count>
<nb_visits_converted>1</nb_visits_converted>
- <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>
- <sum_daily_nb_users>0</sum_daily_nb_users>
+ <sum_daily_nb_users>1</sum_daily_nb_users>
</row>
</subtable>
</row>
@@ -226,7 +208,7 @@
<subtable>
<row>
<label>359</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<nb_actions>2</nb_actions>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
</row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__CustomVariables.getUsagesOfSlots.xml b/tests/PHPUnit/System/expected/test_ImportLogs__CustomVariables.getUsagesOfSlots.xml
index 8f81585e8d..28ec275d90 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__CustomVariables.getUsagesOfSlots.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__CustomVariables.getUsagesOfSlots.xml
@@ -17,7 +17,7 @@
<row>
<name>User Name</name>
<nb_visits>3</nb_visits>
- <nb_actions>5</nb_actions>
+ <nb_actions>7</nb_actions>
</row>
<row>
<name>Bot</name>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicePlugins.getPlugin_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicePlugins.getPlugin_month.xml
index 41b8bcdaf0..94a694cef6 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicePlugins.getPlugin_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicePlugins.getPlugin_month.xml
@@ -3,19 +3,19 @@
<row>
<label>Cookie</label>
<nb_visits>2</nb_visits>
- <nb_visits_percentage>5%</nb_visits_percentage>
+ <nb_visits_percentage>6%</nb_visits_percentage>
<logo>plugins/Morpheus/icons/dist/plugins/cookie.png</logo>
</row>
<row>
<label>Flash</label>
<nb_visits>2</nb_visits>
- <nb_visits_percentage>5%</nb_visits_percentage>
+ <nb_visits_percentage>6%</nb_visits_percentage>
<logo>plugins/Morpheus/icons/dist/plugins/flash.png</logo>
</row>
<row>
<label>Java</label>
<nb_visits>2</nb_visits>
- <nb_visits_percentage>5%</nb_visits_percentage>
+ <nb_visits_percentage>6%</nb_visits_percentage>
<logo>plugins/Morpheus/icons/dist/plugins/java.png</logo>
</row>
<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrand_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrand_month.xml
index 5d10bbb81e..692fb0da97 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrand_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrand_month.xml
@@ -24,21 +24,21 @@
</row>
<row>
<label>Apple</label>
- <nb_visits>18</nb_visits>
+ <nb_visits>17</nb_visits>
<nb_actions>23</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>309</sum_visit_length>
- <bounce_count>14</bounce_count>
- <nb_visits_converted>17</nb_visits_converted>
+ <bounce_count>13</bounce_count>
+ <nb_visits_converted>16</nb_visits_converted>
<goals>
<row idgoal='1'>
- <nb_conversions>17</nb_conversions>
- <nb_visits_converted>17</nb_visits_converted>
- <revenue>85</revenue>
+ <nb_conversions>16</nb_conversions>
+ <nb_visits_converted>16</nb_visits_converted>
+ <revenue>80</revenue>
</row>
</goals>
- <nb_conversions>17</nb_conversions>
- <revenue>85</revenue>
+ <nb_conversions>16</nb_conversions>
+ <revenue>80</revenue>
<sum_daily_nb_uniq_visitors>16</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>2</sum_daily_nb_users>
<logo>plugins/Morpheus/icons/dist/brand/Apple.png</logo>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserEngines_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserEngines_month.xml
index d53a0dfeab..2c7a839cd5 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserEngines_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserEngines_month.xml
@@ -26,12 +26,12 @@
</row>
<row>
<label>Blink (Chrome, Opera)</label>
- <nb_visits>6</nb_visits>
+ <nb_visits>5</nb_visits>
<nb_actions>9</nb_actions>
- <max_actions>2</max_actions>
+ <max_actions>3</max_actions>
<sum_visit_length>6</sum_visit_length>
- <bounce_count>3</bounce_count>
- <nb_visits_converted>6</nb_visits_converted>
+ <bounce_count>2</bounce_count>
+ <nb_visits_converted>5</nb_visits_converted>
<sum_daily_nb_uniq_visitors>4</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>2</sum_daily_nb_users>
<segment>browserEngine==Blink</segment>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserFamilies_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserFamilies_month.xml
index c2920295b9..548db04c7d 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserFamilies_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserFamilies_month.xml
@@ -23,21 +23,21 @@
</row>
<row>
<label>Chrome</label>
- <nb_visits>10</nb_visits>
+ <nb_visits>9</nb_visits>
<nb_actions>12</nb_actions>
- <max_actions>2</max_actions>
+ <max_actions>3</max_actions>
<sum_visit_length>4</sum_visit_length>
- <bounce_count>8</bounce_count>
- <nb_visits_converted>10</nb_visits_converted>
+ <bounce_count>7</bounce_count>
+ <nb_visits_converted>9</nb_visits_converted>
<goals>
<row idgoal='1'>
- <nb_conversions>10</nb_conversions>
- <nb_visits_converted>10</nb_visits_converted>
- <revenue>50</revenue>
+ <nb_conversions>9</nb_conversions>
+ <nb_visits_converted>9</nb_visits_converted>
+ <revenue>45</revenue>
</row>
</goals>
- <nb_conversions>10</nb_conversions>
- <revenue>50</revenue>
+ <nb_conversions>9</nb_conversions>
+ <revenue>45</revenue>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>3</sum_daily_nb_users>
<logo>plugins/Morpheus/icons/dist/browsers/CH.png</logo>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml
index 68ab3e527b..a1080be166 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml
@@ -53,19 +53,6 @@
<logo>plugins/Morpheus/icons/dist/browsers/UNK.png</logo>
</row>
<row>
- <label>Chrome 37.0</label>
- <nb_visits>3</nb_visits>
- <nb_actions>4</nb_actions>
- <max_actions>2</max_actions>
- <sum_visit_length>2</sum_visit_length>
- <bounce_count>2</bounce_count>
- <nb_visits_converted>3</nb_visits_converted>
- <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_nb_users>1</sum_daily_nb_users>
- <segment>browserCode==CH;browserVersion==37.0</segment>
- <logo>plugins/Morpheus/icons/dist/browsers/CH.png</logo>
- </row>
- <row>
<label>Android Browser</label>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
@@ -105,6 +92,19 @@
<logo>plugins/Morpheus/icons/dist/browsers/CH.png</logo>
</row>
<row>
+ <label>Chrome 37.0</label>
+ <nb_visits>2</nb_visits>
+ <nb_actions>4</nb_actions>
+ <max_actions>3</max_actions>
+ <sum_visit_length>2</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>2</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>1</sum_daily_nb_users>
+ <segment>browserCode==CH;browserVersion==37.0</segment>
+ <logo>plugins/Morpheus/icons/dist/browsers/CH.png</logo>
+ </row>
+ <row>
<label>Firefox 6.0</label>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml
index 1eebfd78fb..b4a267119f 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml
@@ -24,21 +24,21 @@
</row>
<row>
<label>Chrome</label>
- <nb_visits>10</nb_visits>
+ <nb_visits>9</nb_visits>
<nb_actions>12</nb_actions>
- <max_actions>2</max_actions>
+ <max_actions>3</max_actions>
<sum_visit_length>4</sum_visit_length>
- <bounce_count>8</bounce_count>
- <nb_visits_converted>10</nb_visits_converted>
+ <bounce_count>7</bounce_count>
+ <nb_visits_converted>9</nb_visits_converted>
<goals>
<row idgoal='1'>
- <nb_conversions>10</nb_conversions>
- <nb_visits_converted>10</nb_visits_converted>
- <revenue>50</revenue>
+ <nb_conversions>9</nb_conversions>
+ <nb_visits_converted>9</nb_visits_converted>
+ <revenue>45</revenue>
</row>
</goals>
- <nb_conversions>10</nb_conversions>
- <revenue>50</revenue>
+ <nb_conversions>9</nb_conversions>
+ <revenue>45</revenue>
<sum_daily_nb_uniq_visitors>8</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>3</sum_daily_nb_users>
<logo>plugins/Morpheus/icons/dist/browsers/CH.png</logo>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getModel_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getModel_month.xml
index 1daf9d2766..a4ca2396cf 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getModel_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getModel_month.xml
@@ -23,21 +23,21 @@
</row>
<row>
<label>Apple - Generic Desktop</label>
- <nb_visits>17</nb_visits>
+ <nb_visits>16</nb_visits>
<nb_actions>22</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>309</sum_visit_length>
- <bounce_count>13</bounce_count>
- <nb_visits_converted>16</nb_visits_converted>
+ <bounce_count>12</bounce_count>
+ <nb_visits_converted>15</nb_visits_converted>
<goals>
<row idgoal='1'>
- <nb_conversions>16</nb_conversions>
- <nb_visits_converted>16</nb_visits_converted>
- <revenue>80</revenue>
+ <nb_conversions>15</nb_conversions>
+ <nb_visits_converted>15</nb_visits_converted>
+ <revenue>75</revenue>
</row>
</goals>
- <nb_conversions>16</nb_conversions>
- <revenue>80</revenue>
+ <nb_conversions>15</nb_conversions>
+ <revenue>75</revenue>
<sum_daily_nb_uniq_visitors>15</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>2</sum_daily_nb_users>
<segment>deviceBrand==Apple;deviceModel==generic+desktop</segment>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getOsFamilies_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getOsFamilies_month.xml
index 4376e34ff3..ef45d527fe 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getOsFamilies_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getOsFamilies_month.xml
@@ -2,12 +2,12 @@
<result>
<row>
<label>Mac</label>
- <nb_visits>17</nb_visits>
+ <nb_visits>16</nb_visits>
<nb_actions>22</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>309</sum_visit_length>
- <bounce_count>13</bounce_count>
- <nb_visits_converted>16</nb_visits_converted>
+ <bounce_count>12</bounce_count>
+ <nb_visits_converted>15</nb_visits_converted>
<sum_daily_nb_uniq_visitors>15</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>2</sum_daily_nb_users>
<logo>plugins/Morpheus/icons/dist/os/MAC.png</logo>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getOsVersions_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getOsVersions_month.xml
index da83acba74..72c55f1f48 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getOsVersions_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getOsVersions_month.xml
@@ -41,12 +41,12 @@
</row>
<row>
<label>Mac 10.10</label>
- <nb_visits>4</nb_visits>
+ <nb_visits>3</nb_visits>
<nb_actions>6</nb_actions>
- <max_actions>2</max_actions>
+ <max_actions>3</max_actions>
<sum_visit_length>4</sum_visit_length>
- <bounce_count>2</bounce_count>
- <nb_visits_converted>4</nb_visits_converted>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>3</nb_visits_converted>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>2</sum_daily_nb_users>
<segment>operatingSystemCode==MAC;operatingSystemVersion==10.10</segment>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getType_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getType_month.xml
index 4895b203ae..c2aa063957 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getType_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getType_month.xml
@@ -2,21 +2,21 @@
<result>
<row>
<label>Desktop</label>
- <nb_visits>36</nb_visits>
+ <nb_visits>35</nb_visits>
<nb_actions>42</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>551</sum_visit_length>
- <bounce_count>31</bounce_count>
- <nb_visits_converted>35</nb_visits_converted>
+ <bounce_count>30</bounce_count>
+ <nb_visits_converted>34</nb_visits_converted>
<goals>
<row idgoal='1'>
- <nb_conversions>35</nb_conversions>
- <nb_visits_converted>35</nb_visits_converted>
- <revenue>175</revenue>
+ <nb_conversions>34</nb_conversions>
+ <nb_visits_converted>34</nb_visits_converted>
+ <revenue>170</revenue>
</row>
</goals>
- <nb_conversions>35</nb_conversions>
- <revenue>175</revenue>
+ <nb_conversions>34</nb_conversions>
+ <revenue>170</revenue>
<sum_daily_nb_uniq_visitors>34</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>3</sum_daily_nb_users>
<segment>deviceType==desktop</segment>
@@ -125,4 +125,10 @@
<segment>deviceType==tv</segment>
<logo>plugins/Morpheus/icons/dist/devices/tv.png</logo>
</row>
+ <row>
+ <label>Wearable</label>
+ <nb_visits>0</nb_visits>
+ <segment>deviceType==wearable</segment>
+ <logo>plugins/Morpheus/icons/dist/devices/wearable.png</logo>
+ </row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Goals.getDaysToConversion_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Goals.getDaysToConversion_month.xml
index b0b23db829..16e08f290e 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Goals.getDaysToConversion_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Goals.getDaysToConversion_month.xml
@@ -2,7 +2,7 @@
<result>
<row>
<label>0 days</label>
- <nb_conversions>40</nb_conversions>
+ <nb_conversions>39</nb_conversions>
</row>
<row>
<label>1 day</label>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Goals.getMetrics_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Goals.getMetrics_month.xml
index 1df782d8d8..40616d9afb 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Goals.getMetrics_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Goals.getMetrics_month.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
- <nb_conversions>40</nb_conversions>
- <nb_visits_converted>40</nb_visits_converted>
- <revenue>200</revenue>
- <conversion_rate>90.91%</conversion_rate>
+ <nb_conversions>39</nb_conversions>
+ <nb_visits_converted>39</nb_visits_converted>
+ <revenue>195</revenue>
+ <conversion_rate>90.7%</conversion_rate>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Goals.getVisitsUntilConversion_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Goals.getVisitsUntilConversion_month.xml
index cca7f6ab94..d5443afb52 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Goals.getVisitsUntilConversion_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Goals.getVisitsUntilConversion_month.xml
@@ -2,7 +2,7 @@
<result>
<row>
<label>1 visit</label>
- <nb_conversions>40</nb_conversions>
+ <nb_conversions>39</nb_conversions>
</row>
<row>
<label>2 visits</label>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Goals.get_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Goals.get_month.xml
index d7f6fab345..5ae831a4dc 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Goals.get_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Goals.get_month.xml
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
- <nb_conversions>40</nb_conversions>
- <nb_visits_converted>40</nb_visits_converted>
- <revenue>200</revenue>
- <conversion_rate>90.91%</conversion_rate>
+ <nb_conversions>39</nb_conversions>
+ <nb_visits_converted>39</nb_visits_converted>
+ <revenue>195</revenue>
+ <conversion_rate>90.7%</conversion_rate>
<nb_conversions_new_visit>37</nb_conversions_new_visit>
<nb_visits_converted_new_visit>37</nb_visits_converted_new_visit>
<revenue_new_visit>185</revenue_new_visit>
<conversion_rate_new_visit>90.24%</conversion_rate_new_visit>
- <nb_conversions_returning_visit>3</nb_conversions_returning_visit>
- <nb_visits_converted_returning_visit>3</nb_visits_converted_returning_visit>
- <revenue_returning_visit>15</revenue_returning_visit>
+ <nb_conversions_returning_visit>2</nb_conversions_returning_visit>
+ <nb_visits_converted_returning_visit>2</nb_visits_converted_returning_visit>
+ <revenue_returning_visit>10</revenue_returning_visit>
<conversion_rate_returning_visit>100%</conversion_rate_returning_visit>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml
index 8b48960e60..2b57dac4af 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml
@@ -580,7 +580,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>Keyword not defined</referrerKeyword>
<referrerKeywordPosition>1</referrerKeywordPosition>
- <referrerUrl>http://www.google.com/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;ved=0CCcQFjAA&amp;url=http%3A%2F%2Fpiwik.org%2F&amp;ei=8vwgU8TYDZTI2wWTi4CQCA&amp;usg=AFQjCNF_MGJRqKPvaKuUokHtZ3VvNG9ALw&amp;bvm=bv.62922401,d.b2I</referrerUrl>
+ <referrerUrl>http://www.google.com/url?rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;url=http%3A%2F%2Fpiwik.org%2F</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
@@ -1038,7 +1038,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>Keyword not defined</referrerKeyword>
<referrerKeywordPosition>2</referrerKeywordPosition>
- <referrerUrl>https://www.google.co.jp/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=2&amp;ved=0CDAQFjAB&amp;url=https%3A%2F%2Fpiwik.org%2Flog-analytics%2F&amp;ei=rogdU5OuK43pkgXZmYGICA&amp;usg=AFQjCNH4nR8bKYaliCj2egiJ0H_CX4sFJg&amp;bvm=bv.62578216,d.dGI</referrerUrl>
+ <referrerUrl>https://www.google.co.jp/url?rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=2&amp;url=https%3A%2F%2Fpiwik.org%2Flog-analytics%2F</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
@@ -1549,7 +1549,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>Keyword not defined</referrerKeyword>
<referrerKeywordPosition>1</referrerKeywordPosition>
- <referrerUrl>http://www.google.ru/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;ved=0CCoQFjAA&amp;url=http%3A%2F%2Fpiwik.org%2F&amp;ei=ffwgU57VGuf44QT3-oCQCw&amp;usg=AFQjCNF_MGJRqKPvaKuUokHtZ3VvNG9ALw&amp;bvm=bv.62922401,d.bGE&amp;cad=rjt</referrerUrl>
+ <referrerUrl>http://www.google.ru/url?rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;url=http%3A%2F%2Fpiwik.org%2F&amp;cad=rjt</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
@@ -2036,8 +2036,8 @@
<pageId>71</pageId>
<bandwidth />
- <timeSpent>50</timeSpent>
- <timeSpentPretty>50s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>2</pageviewPosition>
<title />
<subtitle>http://piwik.net/faq/</subtitle>
@@ -2061,8 +2061,8 @@
<pageId>75</pageId>
<bandwidth />
- <timeSpent>49</timeSpent>
- <timeSpentPretty>49s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>6</pageviewPosition>
<title />
<subtitle>http://piwik.net/faq/</subtitle>
@@ -2111,8 +2111,8 @@
<pageId>72</pageId>
<bandwidth />
- <timeSpent>26</timeSpent>
- <timeSpentPretty>26s</timeSpentPretty>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
<pageviewPosition>3</pageviewPosition>
<title />
<subtitle>http://piwik.net/blog/category/community/</subtitle>
@@ -2161,8 +2161,8 @@
<pageId>73</pageId>
<bandwidth />
- <timeSpent>8</timeSpent>
- <timeSpentPretty>8s</timeSpentPretty>
+ <timeSpent>1</timeSpent>
+ <timeSpentPretty>1s</timeSpentPretty>
<pageviewPosition>4</pageviewPosition>
<title />
<subtitle>http://piwik.net/docs/manage-websites/</subtitle>
@@ -2417,7 +2417,7 @@
</row>
<row>
<idSite>1</idSite>
- <idVisit>73</idVisit>
+ <idVisit>72</idVisit>
<visitIp>175.41.191.47</visitIp>
@@ -2702,23 +2702,25 @@
</row>
<row>
<idSite>1</idSite>
- <idVisit>68</idVisit>
+ <idVisit>61</idVisit>
<visitIp>173.5.0.0</visitIp>
<actionDetails>
<row>
<type>action</type>
- <url>http://hello.example.com/hello/from/another/world/6,681965</url>
- <pageTitle />
- <pageIdAction>61</pageIdAction>
+ <url>http://hello.example.com/hello/world/6,681965</url>
+ <pageTitle>404/URL = http%3A%2F%2Fhello.example.com%2Fhello%2Fworld%2F6%2C681965</pageTitle>
+ <pageIdAction>60</pageIdAction>
- <pageId>94</pageId>
+ <pageId>93</pageId>
<bandwidth />
- <pageviewPosition>1</pageviewPosition>
- <title />
- <subtitle>http://hello.example.com/hello/from/another/world/6,681965</subtitle>
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
+ <pageviewPosition>2</pageviewPosition>
+ <title>404/URL = http%3A%2F%2Fhello.example.com%2Fhello%2Fworld%2F6%2C681965</title>
+ <subtitle>http://hello.example.com/hello/world/6,681965</subtitle>
<icon />
<iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
@@ -2729,11 +2731,36 @@
</row>
<row>
<customVariablePageName2>Windows Status Code</customVariablePageName2>
- <customVariablePageValue2>96</customVariablePageValue2>
+ <customVariablePageValue2>24</customVariablePageValue2>
</row>
<row>
<customVariablePageName3>HTTP-code</customVariablePageName3>
- <customVariablePageValue3>200</customVariablePageValue3>
+ <customVariablePageValue3>404</customVariablePageValue3>
+ </row>
+ </customVariables>
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://hello.example.com/hello/from/another/world/6,681965</url>
+ <pageTitle />
+ <pageIdAction>61</pageIdAction>
+
+
+ <pageId>83</pageId>
+ <bandwidth />
+ <timeSpent>0</timeSpent>
+ <timeSpentPretty>0s</timeSpentPretty>
+ <pageviewPosition>1</pageviewPosition>
+ <title />
+ <subtitle>http://hello.example.com/hello/from/another/world/6,681965</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <customVariables>
+ <row>
+ <customVariablePageName1>HTTP-code</customVariablePageName1>
+ <customVariablePageValue1>200</customVariablePageValue1>
</row>
</customVariables>
<bandwidth_pretty>0 M</bandwidth_pretty>
@@ -2744,7 +2771,7 @@
<goalId>1</goalId>
<revenue>5</revenue>
- <goalPageId>94</goalPageId>
+ <goalPageId>83</goalPageId>
<url>http://hello.example.com/hello/from/another/world/6,681965</url>
<icon>plugins/Morpheus/images/goal.png</icon>
@@ -2753,6 +2780,37 @@
<subtitle>all ($5 revenue)</subtitle>
</row>
+ <row>
+ <type>action</type>
+ <url>http://hello.example.com/hello/from/another/world/6,681965</url>
+ <pageTitle />
+ <pageIdAction>61</pageIdAction>
+
+
+ <pageId>94</pageId>
+ <bandwidth />
+ <pageviewPosition>3</pageviewPosition>
+ <title />
+ <subtitle>http://hello.example.com/hello/from/another/world/6,681965</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <customVariables>
+ <row>
+ <customVariablePageName1>Generation Time</customVariablePageName1>
+ <customVariablePageValue1>359</customVariablePageValue1>
+ </row>
+ <row>
+ <customVariablePageName2>Windows Status Code</customVariablePageName2>
+ <customVariablePageValue2>96</customVariablePageValue2>
+ </row>
+ <row>
+ <customVariablePageName3>HTTP-code</customVariablePageName3>
+ <customVariablePageValue3>200</customVariablePageValue3>
+ </row>
+ </customVariables>
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
</actionDetails>
<goalConversions>1</goalConversions>
<siteCurrency>USD</siteCurrency>
@@ -2768,7 +2826,7 @@
- <userId />
+ <userId>user2</userId>
<visitorType>returning</visitorType>
<visitorTypeIcon>plugins/Live/images/returningVisitor.png</visitorTypeIcon>
<visitConverted>1</visitConverted>
@@ -2778,11 +2836,11 @@
<visitEcommerceStatusIcon />
<daysSinceFirstVisit>0</daysSinceFirstVisit>
<daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder>
- <visitDuration>1</visitDuration>
- <visitDurationPretty>1s</visitDurationPretty>
+ <visitDuration>2</visitDuration>
+ <visitDurationPretty>2s</visitDurationPretty>
<searches>0</searches>
- <actions>1</actions>
- <interactions>1</interactions>
+ <actions>3</actions>
+ <interactions>3</interactions>
<referrerType>direct</referrerType>
<referrerTypeName>Direct Entry</referrerTypeName>
<referrerName />
@@ -3308,169 +3366,6 @@
</row>
<row>
<idSite>1</idSite>
- <idVisit>61</idVisit>
- <visitIp>173.5.0.0</visitIp>
-
-
- <actionDetails>
- <row>
- <type>action</type>
- <url>http://hello.example.com/hello/world/6,681965</url>
- <pageTitle>404/URL = http%3A%2F%2Fhello.example.com%2Fhello%2Fworld%2F6%2C681965</pageTitle>
- <pageIdAction>60</pageIdAction>
-
-
- <pageId>93</pageId>
- <bandwidth />
- <timeSpent>0</timeSpent>
- <timeSpentPretty>0s</timeSpentPretty>
- <pageviewPosition>2</pageviewPosition>
- <title>404/URL = http%3A%2F%2Fhello.example.com%2Fhello%2Fworld%2F6%2C681965</title>
- <subtitle>http://hello.example.com/hello/world/6,681965</subtitle>
- <icon />
- <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
-
- <customVariables>
- <row>
- <customVariablePageName1>Generation Time</customVariablePageName1>
- <customVariablePageValue1>359</customVariablePageValue1>
- </row>
- <row>
- <customVariablePageName2>Windows Status Code</customVariablePageName2>
- <customVariablePageValue2>24</customVariablePageValue2>
- </row>
- <row>
- <customVariablePageName3>HTTP-code</customVariablePageName3>
- <customVariablePageValue3>404</customVariablePageValue3>
- </row>
- </customVariables>
- <bandwidth_pretty>0 M</bandwidth_pretty>
- </row>
- <row>
- <type>action</type>
- <url>http://hello.example.com/hello/from/another/world/6,681965</url>
- <pageTitle />
- <pageIdAction>61</pageIdAction>
-
-
- <pageId>83</pageId>
- <bandwidth />
- <pageviewPosition>1</pageviewPosition>
- <title />
- <subtitle>http://hello.example.com/hello/from/another/world/6,681965</subtitle>
- <icon />
- <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
-
- <customVariables>
- <row>
- <customVariablePageName1>HTTP-code</customVariablePageName1>
- <customVariablePageValue1>200</customVariablePageValue1>
- </row>
- </customVariables>
- <bandwidth_pretty>0 M</bandwidth_pretty>
- </row>
- <row>
- <type>goal</type>
- <goalName>all</goalName>
- <goalId>1</goalId>
-
- <revenue>5</revenue>
- <goalPageId>83</goalPageId>
-
- <url>http://hello.example.com/hello/from/another/world/6,681965</url>
- <icon>plugins/Morpheus/images/goal.png</icon>
- <iconSVG>plugins/Morpheus/images/goal.svg</iconSVG>
- <title>Goal conversion</title>
- <subtitle>all ($5 revenue)</subtitle>
-
- </row>
- </actionDetails>
- <goalConversions>1</goalConversions>
- <siteCurrency>USD</siteCurrency>
- <siteCurrencySymbol>$</siteCurrencySymbol>
-
-
-
-
- <siteName>Piwik test</siteName>
-
-
-
-
-
-
- <userId>user2</userId>
- <visitorType>returning</visitorType>
- <visitorTypeIcon>plugins/Live/images/returningVisitor.png</visitorTypeIcon>
- <visitConverted>1</visitConverted>
- <visitConvertedIcon>plugins/Morpheus/images/goal.svg</visitConvertedIcon>
- <visitCount>1</visitCount>
- <visitEcommerceStatus>none</visitEcommerceStatus>
- <visitEcommerceStatusIcon />
- <daysSinceFirstVisit>0</daysSinceFirstVisit>
- <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder>
- <visitDuration>1</visitDuration>
- <visitDurationPretty>1s</visitDurationPretty>
- <searches>0</searches>
- <actions>2</actions>
- <interactions>2</interactions>
- <referrerType>direct</referrerType>
- <referrerTypeName>Direct Entry</referrerTypeName>
- <referrerName />
- <referrerKeyword />
- <referrerKeywordPosition />
- <referrerUrl />
- <referrerSearchEngineUrl />
- <referrerSearchEngineIcon />
- <referrerSocialNetworkUrl />
- <referrerSocialNetworkIcon />
- <languageCode />
- <language>Unknown</language>
- <deviceType>Desktop</deviceType>
- <deviceTypeIcon>plugins/Morpheus/icons/dist/devices/desktop.png</deviceTypeIcon>
- <deviceBrand>Apple</deviceBrand>
- <deviceModel>Generic Desktop</deviceModel>
- <operatingSystem>Mac 10.10</operatingSystem>
- <operatingSystemName>Mac</operatingSystemName>
- <operatingSystemIcon>plugins/Morpheus/icons/dist/os/MAC.png</operatingSystemIcon>
- <operatingSystemCode>MAC</operatingSystemCode>
- <operatingSystemVersion>10.10</operatingSystemVersion>
- <browserFamily>Blink</browserFamily>
- <browserFamilyDescription>Blink (Chrome, Opera)</browserFamilyDescription>
- <browser>Chrome 37.0</browser>
- <browserName>Chrome</browserName>
- <browserIcon>plugins/Morpheus/icons/dist/browsers/CH.png</browserIcon>
- <browserCode>CH</browserCode>
- <browserVersion>37.0</browserVersion>
- <totalEcommerceRevenue>0</totalEcommerceRevenue>
- <totalEcommerceConversions>0</totalEcommerceConversions>
- <totalEcommerceItems>0</totalEcommerceItems>
- <totalAbandonedCartsRevenue>0</totalAbandonedCartsRevenue>
- <totalAbandonedCarts>0</totalAbandonedCarts>
- <totalAbandonedCartsItems>0</totalAbandonedCartsItems>
- <events>0</events>
- <continent>North America</continent>
- <continentCode>amn</continentCode>
- <country>United States</country>
- <countryCode>us</countryCode>
- <countryFlag>plugins/Morpheus/icons/dist/flags/us.png</countryFlag>
- <region />
- <regionCode />
- <city />
- <location>United States</location>
- <latitude>38</latitude>
- <longitude>-97</longitude>
- <visitLocalTime>17:30:00</visitLocalTime>
- <visitLocalHour>17</visitLocalHour>
- <daysSinceLastVisit>0</daysSinceLastVisit>
- <customVariables>
- </customVariables>
- <resolution>unknown</resolution>
- <plugins />
- <pluginsIcons />
- </row>
- <row>
- <idSite>1</idSite>
<idVisit>27</idVisit>
<visitIp>0.0.0.0</visitIp>
@@ -6573,7 +6468,7 @@
</row>
<row>
<idSite>1</idSite>
- <idVisit>69</idVisit>
+ <idVisit>68</idVisit>
<visitIp>175.41.193.45</visitIp>
@@ -6703,7 +6598,7 @@
</row>
<row>
<idSite>1</idSite>
- <idVisit>71</idVisit>
+ <idVisit>70</idVisit>
<visitIp>175.41.191.45</visitIp>
@@ -7873,7 +7768,7 @@
</row>
<row>
<idSite>1</idSite>
- <idVisit>70</idVisit>
+ <idVisit>69</idVisit>
<visitIp>175.41.193.46</visitIp>
@@ -8003,7 +7898,7 @@
</row>
<row>
<idSite>1</idSite>
- <idVisit>72</idVisit>
+ <idVisit>71</idVisit>
<visitIp>175.41.191.46</visitIp>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getAll_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getAll_month.xml
index c219d48a6c..39ab78c6e9 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getAll_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getAll_month.xml
@@ -2,10 +2,10 @@
<result>
<row>
<label>Piwik test</label>
- <nb_visits>44</nb_visits>
+ <nb_visits>43</nb_visits>
<nb_actions>51</nb_actions>
<nb_pageviews>45</nb_pageviews>
- <revenue>200</revenue>
+ <revenue>195</revenue>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
<pageviews_evolution>100%</pageviews_evolution>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getOne_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getOne_month.xml
index d90ee5a8f6..ca2db76ca1 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getOne_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__MultiSites.getOne_month.xml
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
- <nb_visits>44</nb_visits>
+ <nb_visits>43</nb_visits>
<nb_actions>51</nb_actions>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
<pageviews_evolution>100%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<nb_pageviews>45</nb_pageviews>
- <revenue>200</revenue>
+ <revenue>195</revenue>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Referrers.getReferrerType_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Referrers.getReferrerType_month.xml
index 571e6a1029..5c14385224 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Referrers.getReferrerType_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Referrers.getReferrerType_month.xml
@@ -2,21 +2,21 @@
<result>
<row>
<label>Direct Entry</label>
- <nb_visits>40</nb_visits>
+ <nb_visits>39</nb_visits>
<nb_actions>46</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>551</sum_visit_length>
- <bounce_count>35</bounce_count>
- <nb_visits_converted>36</nb_visits_converted>
+ <bounce_count>34</bounce_count>
+ <nb_visits_converted>35</nb_visits_converted>
<goals>
<row idgoal='1'>
- <nb_conversions>36</nb_conversions>
- <nb_visits_converted>36</nb_visits_converted>
- <revenue>180</revenue>
+ <nb_conversions>35</nb_conversions>
+ <nb_visits_converted>35</nb_visits_converted>
+ <revenue>175</revenue>
</row>
</goals>
- <nb_conversions>36</nb_conversions>
- <revenue>180</revenue>
+ <nb_conversions>35</nb_conversions>
+ <revenue>175</revenue>
<sum_daily_nb_uniq_visitors>38</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>3</sum_daily_nb_users>
<segment>referrerType==direct</segment>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Referrers.get_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Referrers.get_month.xml
index 29b33a88aa..19977ad965 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Referrers.get_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Referrers.get_month.xml
@@ -2,7 +2,7 @@
<result>
<Referrers_visitorsFromSearchEngines>0</Referrers_visitorsFromSearchEngines>
<Referrers_visitorsFromSocialNetworks>0</Referrers_visitorsFromSocialNetworks>
- <Referrers_visitorsFromDirectEntry>40</Referrers_visitorsFromDirectEntry>
+ <Referrers_visitorsFromDirectEntry>39</Referrers_visitorsFromDirectEntry>
<Referrers_visitorsFromWebsites>4</Referrers_visitorsFromWebsites>
<Referrers_visitorsFromCampaigns>0</Referrers_visitorsFromCampaigns>
<Referrers_distinctSearchEngines>0</Referrers_distinctSearchEngines>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml
index 063b04c95c..a907ee446f 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml
@@ -35,12 +35,12 @@
</row>
<row>
<label>Mac / Chrome / unknown</label>
- <nb_visits>5</nb_visits>
+ <nb_visits>4</nb_visits>
<nb_actions>7</nb_actions>
- <max_actions>2</max_actions>
+ <max_actions>3</max_actions>
<sum_visit_length>4</sum_visit_length>
- <bounce_count>3</bounce_count>
- <nb_visits_converted>5</nb_visits_converted>
+ <bounce_count>2</bounce_count>
+ <nb_visits_converted>4</nb_visits_converted>
<sum_daily_nb_uniq_visitors>3</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>2</sum_daily_nb_users>
</row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getResolution_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getResolution_month.xml
index 45cff0dd1e..1b77106393 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getResolution_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getResolution_month.xml
@@ -2,12 +2,12 @@
<result>
<row>
<label>unknown</label>
- <nb_visits>42</nb_visits>
+ <nb_visits>41</nb_visits>
<nb_actions>49</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>553</sum_visit_length>
- <bounce_count>36</bounce_count>
- <nb_visits_converted>38</nb_visits_converted>
+ <bounce_count>35</bounce_count>
+ <nb_visits_converted>37</nb_visits_converted>
<sum_daily_nb_uniq_visitors>40</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>3</sum_daily_nb_users>
<segment>resolution==unknown</segment>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml
index a954714a2e..4daac6184a 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCity_month.xml
@@ -2,21 +2,21 @@
<result>
<row>
<label>Unknown</label>
- <nb_visits>33</nb_visits>
+ <nb_visits>32</nb_visits>
<nb_actions>40</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>553</sum_visit_length>
- <bounce_count>27</bounce_count>
- <nb_visits_converted>29</nb_visits_converted>
+ <bounce_count>26</bounce_count>
+ <nb_visits_converted>28</nb_visits_converted>
<goals>
<row idgoal='1'>
- <nb_conversions>29</nb_conversions>
- <nb_visits_converted>29</nb_visits_converted>
- <revenue>145</revenue>
+ <nb_conversions>28</nb_conversions>
+ <nb_visits_converted>28</nb_visits_converted>
+ <revenue>140</revenue>
</row>
</goals>
- <nb_conversions>29</nb_conversions>
- <revenue>145</revenue>
+ <nb_conversions>28</nb_conversions>
+ <revenue>140</revenue>
<sum_daily_nb_uniq_visitors>31</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>3</sum_daily_nb_users>
<city_name>Unknown</city_name>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getContinent_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getContinent_month.xml
index d44023513c..85a05944b2 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getContinent_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getContinent_month.xml
@@ -23,21 +23,21 @@
</row>
<row>
<label>North America</label>
- <nb_visits>12</nb_visits>
+ <nb_visits>11</nb_visits>
<nb_actions>15</nb_actions>
- <max_actions>2</max_actions>
+ <max_actions>3</max_actions>
<sum_visit_length>6</sum_visit_length>
- <bounce_count>9</bounce_count>
- <nb_visits_converted>12</nb_visits_converted>
+ <bounce_count>8</bounce_count>
+ <nb_visits_converted>11</nb_visits_converted>
<goals>
<row idgoal='1'>
- <nb_conversions>12</nb_conversions>
- <nb_visits_converted>12</nb_visits_converted>
- <revenue>60</revenue>
+ <nb_conversions>11</nb_conversions>
+ <nb_visits_converted>11</nb_visits_converted>
+ <revenue>55</revenue>
</row>
</goals>
- <nb_conversions>12</nb_conversions>
- <revenue>60</revenue>
+ <nb_conversions>11</nb_conversions>
+ <revenue>55</revenue>
<sum_daily_nb_uniq_visitors>10</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>2</sum_daily_nb_users>
<code>North America</code>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCountry_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCountry_month.xml
index b64a579d68..4be24663cf 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCountry_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getCountry_month.xml
@@ -26,21 +26,21 @@
</row>
<row>
<label>United States</label>
- <nb_visits>11</nb_visits>
+ <nb_visits>10</nb_visits>
<nb_actions>14</nb_actions>
- <max_actions>2</max_actions>
+ <max_actions>3</max_actions>
<sum_visit_length>6</sum_visit_length>
- <bounce_count>8</bounce_count>
- <nb_visits_converted>11</nb_visits_converted>
+ <bounce_count>7</bounce_count>
+ <nb_visits_converted>10</nb_visits_converted>
<goals>
<row idgoal='1'>
- <nb_conversions>11</nb_conversions>
- <nb_visits_converted>11</nb_visits_converted>
- <revenue>55</revenue>
+ <nb_conversions>10</nb_conversions>
+ <nb_visits_converted>10</nb_visits_converted>
+ <revenue>50</revenue>
</row>
</goals>
- <nb_conversions>11</nb_conversions>
- <revenue>55</revenue>
+ <nb_conversions>10</nb_conversions>
+ <revenue>50</revenue>
<sum_daily_nb_uniq_visitors>9</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>2</sum_daily_nb_users>
<code>us</code>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml
index 2091eab09f..290a19cac8 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserCountry.getRegion_month.xml
@@ -2,21 +2,21 @@
<result>
<row>
<label>Unknown</label>
- <nb_visits>36</nb_visits>
+ <nb_visits>35</nb_visits>
<nb_actions>43</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>553</sum_visit_length>
- <bounce_count>30</bounce_count>
- <nb_visits_converted>32</nb_visits_converted>
+ <bounce_count>29</bounce_count>
+ <nb_visits_converted>31</nb_visits_converted>
<goals>
<row idgoal='1'>
- <nb_conversions>32</nb_conversions>
- <nb_visits_converted>32</nb_visits_converted>
- <revenue>160</revenue>
+ <nb_conversions>31</nb_conversions>
+ <nb_visits_converted>31</nb_visits_converted>
+ <revenue>155</revenue>
</row>
</goals>
- <nb_conversions>32</nb_conversions>
- <revenue>160</revenue>
+ <nb_conversions>31</nb_conversions>
+ <revenue>155</revenue>
<sum_daily_nb_uniq_visitors>34</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>3</sum_daily_nb_users>
<region>xx</region>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml
index e535c0e66b..ac5f6a14be 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserId.getUsers_month.xml
@@ -29,9 +29,9 @@
<row>
<label>user2</label>
<nb_visits>1</nb_visits>
- <nb_actions>2</nb_actions>
- <max_actions>2</max_actions>
- <sum_visit_length>1</sum_visit_length>
+ <nb_actions>3</nb_actions>
+ <max_actions>3</max_actions>
+ <sum_visit_length>2</sum_visit_length>
<bounce_count>0</bounce_count>
<nb_visits_converted>1</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserLanguage.getLanguageCode_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserLanguage.getLanguageCode_month.xml
index 7c402950bf..061fe84ad2 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserLanguage.getLanguageCode_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserLanguage.getLanguageCode_month.xml
@@ -2,12 +2,12 @@
<result>
<row>
<label>Unknown (xx)</label>
- <nb_visits>44</nb_visits>
+ <nb_visits>43</nb_visits>
<nb_actions>51</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>553</sum_visit_length>
- <bounce_count>38</bounce_count>
- <nb_visits_converted>40</nb_visits_converted>
+ <bounce_count>37</bounce_count>
+ <nb_visits_converted>39</nb_visits_converted>
<sum_daily_nb_uniq_visitors>42</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>3</sum_daily_nb_users>
<segment>languageCode==xx</segment>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__UserLanguage.getLanguage_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__UserLanguage.getLanguage_month.xml
index c2696d3fc2..bbc17c5de4 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__UserLanguage.getLanguage_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__UserLanguage.getLanguage_month.xml
@@ -2,12 +2,12 @@
<result>
<row>
<label>Unknown</label>
- <nb_visits>44</nb_visits>
+ <nb_visits>43</nb_visits>
<nb_actions>51</nb_actions>
<max_actions>3</max_actions>
<sum_visit_length>553</sum_visit_length>
- <bounce_count>38</bounce_count>
- <nb_visits_converted>40</nb_visits_converted>
+ <bounce_count>37</bounce_count>
+ <nb_visits_converted>39</nb_visits_converted>
<sum_daily_nb_uniq_visitors>42</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>3</sum_daily_nb_users>
<segment>languageCode==xx</segment>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitFrequency.get_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitFrequency.get_month.xml
index 142034bc1b..2f714fa2e9 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitFrequency.get_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitFrequency.get_month.xml
@@ -13,13 +13,13 @@
<avg_time_on_site_new>13</avg_time_on_site_new>
<nb_uniq_visitors_returning>2</nb_uniq_visitors_returning>
<nb_users_returning>1</nb_users_returning>
- <nb_visits_returning>3</nb_visits_returning>
+ <nb_visits_returning>2</nb_visits_returning>
<nb_actions_returning>4</nb_actions_returning>
- <nb_visits_converted_returning>3</nb_visits_converted_returning>
- <bounce_count_returning>2</bounce_count_returning>
+ <nb_visits_converted_returning>2</nb_visits_converted_returning>
+ <bounce_count_returning>1</bounce_count_returning>
<sum_visit_length_returning>2</sum_visit_length_returning>
- <max_actions_returning>2</max_actions_returning>
- <bounce_rate_returning>67%</bounce_rate_returning>
- <nb_actions_per_visit_returning>1.3</nb_actions_per_visit_returning>
+ <max_actions_returning>3</max_actions_returning>
+ <bounce_rate_returning>50%</bounce_rate_returning>
+ <nb_actions_per_visit_returning>2</nb_actions_per_visit_returning>
<avg_time_on_site_returning>1</avg_time_on_site_returning>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitFrequency.get_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitFrequency.get_range.xml
index 3077b9fce8..f6839e0fc2 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitFrequency.get_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitFrequency.get_range.xml
@@ -9,13 +9,13 @@
<bounce_rate_new>84%</bounce_rate_new>
<nb_actions_per_visit_new>1.4</nb_actions_per_visit_new>
<avg_time_on_site_new>14</avg_time_on_site_new>
- <nb_visits_returning>12</nb_visits_returning>
+ <nb_visits_returning>11</nb_visits_returning>
<nb_actions_returning>15</nb_actions_returning>
- <nb_visits_converted_returning>11</nb_visits_converted_returning>
- <bounce_count_returning>9</bounce_count_returning>
+ <nb_visits_converted_returning>10</nb_visits_converted_returning>
+ <bounce_count_returning>8</bounce_count_returning>
<sum_visit_length_returning>117</sum_visit_length_returning>
- <max_actions_returning>2</max_actions_returning>
- <bounce_rate_returning>75%</bounce_rate_returning>
- <nb_actions_per_visit_returning>1.3</nb_actions_per_visit_returning>
- <avg_time_on_site_returning>10</avg_time_on_site_returning>
+ <max_actions_returning>3</max_actions_returning>
+ <bounce_rate_returning>73%</bounce_rate_returning>
+ <nb_actions_per_visit_returning>1.4</nb_actions_per_visit_returning>
+ <avg_time_on_site_returning>11</avg_time_on_site_returning>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getByDayOfWeek_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getByDayOfWeek_month.xml
index f16e86021a..f96b214a44 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getByDayOfWeek_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getByDayOfWeek_month.xml
@@ -18,13 +18,13 @@
</row>
<row>
<label>Wednesday</label>
- <nb_visits>7</nb_visits>
+ <nb_visits>6</nb_visits>
<nb_uniq_visitors>5</nb_uniq_visitors>
<nb_actions>10</nb_actions>
<nb_users>2</nb_users>
<sum_visit_length>6</sum_visit_length>
- <bounce_count>4</bounce_count>
- <nb_visits_converted>7</nb_visits_converted>
+ <bounce_count>3</bounce_count>
+ <nb_visits_converted>6</nb_visits_converted>
<day_of_week>3</day_of_week>
</row>
<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getVisitInformationPerLocalTime_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getVisitInformationPerLocalTime_month.xml
index 2d4d9f99c0..b3a5299faf 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getVisitInformationPerLocalTime_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getVisitInformationPerLocalTime_month.xml
@@ -206,12 +206,12 @@
</row>
<row>
<label>17</label>
- <nb_visits>8</nb_visits>
+ <nb_visits>7</nb_visits>
<nb_actions>11</nb_actions>
- <max_actions>2</max_actions>
+ <max_actions>3</max_actions>
<sum_visit_length>6</sum_visit_length>
- <bounce_count>5</bounce_count>
- <nb_visits_converted>7</nb_visits_converted>
+ <bounce_count>4</bounce_count>
+ <nb_visits_converted>6</nb_visits_converted>
<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>2</sum_daily_nb_users>
<segment>visitLocalHour==17</segment>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getVisitInformationPerServerTime_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getVisitInformationPerServerTime_month.xml
index e4cab0eb15..eb22784834 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getVisitInformationPerServerTime_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitTime.getVisitInformationPerServerTime_month.xml
@@ -287,23 +287,23 @@
</row>
<row>
<label>17</label>
- <nb_visits>8</nb_visits>
+ <nb_visits>7</nb_visits>
<nb_actions>11</nb_actions>
- <max_actions>2</max_actions>
+ <max_actions>3</max_actions>
<sum_visit_length>6</sum_visit_length>
- <bounce_count>5</bounce_count>
- <nb_visits_converted>7</nb_visits_converted>
+ <bounce_count>4</bounce_count>
+ <nb_visits_converted>6</nb_visits_converted>
<sum_daily_nb_uniq_visitors>6</sum_daily_nb_uniq_visitors>
<sum_daily_nb_users>2</sum_daily_nb_users>
<goals>
<row idgoal='1'>
- <nb_conversions>7</nb_conversions>
- <nb_visits_converted>7</nb_visits_converted>
- <revenue>35</revenue>
+ <nb_conversions>6</nb_conversions>
+ <nb_visits_converted>6</nb_visits_converted>
+ <revenue>30</revenue>
</row>
</goals>
- <nb_conversions>7</nb_conversions>
- <revenue>35</revenue>
+ <nb_conversions>6</nb_conversions>
+ <revenue>30</revenue>
<segment>visitStartServerHour==17</segment>
</row>
<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByDaysSinceLast_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByDaysSinceLast_month.xml
index f1793cadc0..bd509ac8a3 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByDaysSinceLast_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByDaysSinceLast_month.xml
@@ -7,7 +7,7 @@
</row>
<row>
<label>0 days</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>1</nb_visits>
<segment>daysSinceLastVisit==0</segment>
</row>
<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByDaysSinceLast_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByDaysSinceLast_range.xml
index 1374a671f3..d25f241887 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByDaysSinceLast_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByDaysSinceLast_range.xml
@@ -7,7 +7,7 @@
</row>
<row>
<label>0 days</label>
- <nb_visits>5</nb_visits>
+ <nb_visits>4</nb_visits>
<segment>daysSinceLastVisit==0</segment>
</row>
<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByVisitCount_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByVisitCount_month.xml
index b41ab329c6..66cb4fee08 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByVisitCount_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByVisitCount_month.xml
@@ -2,7 +2,7 @@
<result>
<row>
<label>1 visit</label>
- <nb_visits>44</nb_visits>
+ <nb_visits>43</nb_visits>
<nb_visits_percentage>100%</nb_visits_percentage>
<segment>visitCount==1</segment>
</row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByVisitCount_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByVisitCount_range.xml
index beeede00f0..e36c95afa4 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByVisitCount_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsByVisitCount_range.xml
@@ -2,7 +2,7 @@
<result>
<row>
<label>1 visit</label>
- <nb_visits>50</nb_visits>
+ <nb_visits>49</nb_visits>
<nb_visits_percentage>88%</nb_visits_percentage>
<segment>visitCount==1</segment>
</row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerPage_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerPage_month.xml
index 8827da6b88..38480fa988 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerPage_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerPage_month.xml
@@ -2,17 +2,17 @@
<result>
<row>
<label>1 page</label>
- <nb_visits>38</nb_visits>
+ <nb_visits>37</nb_visits>
<segment>actions==1</segment>
</row>
<row>
<label>2 pages</label>
- <nb_visits>5</nb_visits>
+ <nb_visits>4</nb_visits>
<segment>actions==2</segment>
</row>
<row>
<label>3 pages</label>
- <nb_visits>1</nb_visits>
+ <nb_visits>2</nb_visits>
<segment>actions==3</segment>
</row>
<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerPage_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerPage_range.xml
index 4432d4bc29..6795b68553 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerPage_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerPage_range.xml
@@ -2,17 +2,17 @@
<result>
<row>
<label>1 page</label>
- <nb_visits>47</nb_visits>
+ <nb_visits>46</nb_visits>
<segment>actions==1</segment>
</row>
<row>
<label>2 pages</label>
- <nb_visits>7</nb_visits>
+ <nb_visits>6</nb_visits>
<segment>actions==2</segment>
</row>
<row>
<label>3 pages</label>
- <nb_visits>2</nb_visits>
+ <nb_visits>3</nb_visits>
<segment>actions==3</segment>
</row>
<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerVisitDuration_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerVisitDuration_month.xml
index 9ba7d990dc..d367771a01 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerVisitDuration_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerVisitDuration_month.xml
@@ -2,7 +2,7 @@
<result>
<row>
<label>0-10s</label>
- <nb_visits>41</nb_visits>
+ <nb_visits>40</nb_visits>
<segment>visitDuration&gt;=0;visitDuration&lt;=10</segment>
</row>
<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerVisitDuration_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerVisitDuration_range.xml
index 468107d5a2..5a0ee59989 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerVisitDuration_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitorInterest.getNumberOfVisitsPerVisitDuration_range.xml
@@ -2,7 +2,7 @@
<result>
<row>
<label>0-10s</label>
- <nb_visits>51</nb_visits>
+ <nb_visits>50</nb_visits>
<segment>visitDuration&gt;=0;visitDuration&lt;=10</segment>
</row>
<row>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getBounceCount_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getBounceCount_month.xml
index 962fbe983a..51a0bb8472 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getBounceCount_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getBounceCount_month.xml
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
-<result>38</result> \ No newline at end of file
+<result>37</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getVisitsConverted_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getVisitsConverted_month.xml
index a59088da03..f24432d1a4 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getVisitsConverted_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getVisitsConverted_month.xml
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
-<result>40</result> \ No newline at end of file
+<result>39</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getVisits_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getVisits_month.xml
index 1e4ba1a5cb..4ca6db758a 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getVisits_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.getVisits_month.xml
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
-<result>44</result> \ No newline at end of file
+<result>43</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.get_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.get_month.xml
index a10316cbc6..a3f0e24e7c 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.get_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__VisitsSummary.get_month.xml
@@ -2,10 +2,10 @@
<result>
<nb_uniq_visitors>42</nb_uniq_visitors>
<nb_users>3</nb_users>
- <nb_visits>44</nb_visits>
+ <nb_visits>43</nb_visits>
<nb_actions>51</nb_actions>
- <nb_visits_converted>40</nb_visits_converted>
- <bounce_count>38</bounce_count>
+ <nb_visits_converted>39</nb_visits_converted>
+ <bounce_count>37</bounce_count>
<sum_visit_length>553</sum_visit_length>
<max_actions>3</max_actions>
<bounce_rate>86%</bounce_rate>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Live.getLastVisitsDetails_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Live.getLastVisitsDetails_range.xml
index 4b67d22c23..f3f467dc7a 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Live.getLastVisitsDetails_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_siteIdThree_TrackedUsingLogReplayWithFixedSiteId__Live.getLastVisitsDetails_range.xml
@@ -520,7 +520,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>Keyword not defined</referrerKeyword>
<referrerKeywordPosition>1</referrerKeywordPosition>
- <referrerUrl>http://www.google.com/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;ved=0CCcQFjAA&amp;url=http%3A%2F%2Fpiwik.org%2F&amp;ei=8vwgU8TYDZTI2wWTi4CQCA&amp;usg=AFQjCNF_MGJRqKPvaKuUokHtZ3VvNG9ALw&amp;bvm=bv.62922401,d.b2I</referrerUrl>
+ <referrerUrl>http://www.google.com/url?rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;url=http%3A%2F%2Fpiwik.org%2F</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
@@ -948,7 +948,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>Keyword not defined</referrerKeyword>
<referrerKeywordPosition>2</referrerKeywordPosition>
- <referrerUrl>https://www.google.co.jp/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=2&amp;ved=0CDAQFjAB&amp;url=https%3A%2F%2Fpiwik.org%2Flog-analytics%2F&amp;ei=rogdU5OuK43pkgXZmYGICA&amp;usg=AFQjCNH4nR8bKYaliCj2egiJ0H_CX4sFJg&amp;bvm=bv.62578216,d.dGI</referrerUrl>
+ <referrerUrl>https://www.google.co.jp/url?rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=2&amp;url=https%3A%2F%2Fpiwik.org%2Flog-analytics%2F</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
@@ -1414,7 +1414,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>Keyword not defined</referrerKeyword>
<referrerKeywordPosition>1</referrerKeywordPosition>
- <referrerUrl>http://www.google.ru/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;ved=0CCoQFjAA&amp;url=http%3A%2F%2Fpiwik.org%2F&amp;ei=ffwgU57VGuf44QT3-oCQCw&amp;usg=AFQjCNF_MGJRqKPvaKuUokHtZ3VvNG9ALw&amp;bvm=bv.62922401,d.bGE&amp;cad=rjt</referrerUrl>
+ <referrerUrl>http://www.google.ru/url?rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;url=http%3A%2F%2Fpiwik.org%2F&amp;cad=rjt</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs_withEnhancedAndLast7__MultiSites.getAll_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs_withEnhancedAndLast7__MultiSites.getAll_month.xml
index 9014e713e1..1a70f3db7c 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs_withEnhancedAndLast7__MultiSites.getAll_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs_withEnhancedAndLast7__MultiSites.getAll_month.xml
@@ -3,11 +3,11 @@
<result date="2012-08">
<row>
<label>Piwik test</label>
- <nb_visits>44</nb_visits>
+ <nb_visits>43</nb_visits>
<nb_actions>51</nb_actions>
<nb_pageviews>45</nb_pageviews>
- <revenue>200</revenue>
- <nb_conversions>40</nb_conversions>
+ <revenue>195</revenue>
+ <nb_conversions>39</nb_conversions>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
<pageviews_evolution>100%</pageviews_evolution>
@@ -61,8 +61,8 @@
<visits_evolution>-97.7%</visits_evolution>
<actions_evolution>-80.4%</actions_evolution>
<pageviews_evolution>-77.8%</pageviews_evolution>
- <revenue_evolution>-97.5%</revenue_evolution>
- <nb_conversions_evolution>-97.5%</nb_conversions_evolution>
+ <revenue_evolution>-97.4%</revenue_evolution>
+ <nb_conversions_evolution>-97.4%</nb_conversions_evolution>
<idsite>1</idsite>
<group />
<main_url>http://piwik.net</main_url>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__DevicesDetection.getType_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__DevicesDetection.getType_day.xml
index 0deebc6539..7c63d0f381 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__DevicesDetection.getType_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits__DevicesDetection.getType_day.xml
@@ -92,4 +92,10 @@
<segment>deviceType==tv</segment>
<logo>plugins/Morpheus/icons/dist/devices/tv.png</logo>
</row>
+ <row>
+ <label>Wearable</label>
+ <nb_visits>0</nb_visits>
+ <segment>deviceType==wearable</segment>
+ <logo>plugins/Morpheus/icons/dist/devices/wearable.png</logo>
+ </row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__DevicesDetection.getType_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__DevicesDetection.getType_day.xml
index 7c638ab0f2..774e0c714b 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__DevicesDetection.getType_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_withCookieSupport__DevicesDetection.getType_day.xml
@@ -93,4 +93,10 @@
<segment>deviceType==tv</segment>
<logo>plugins/Morpheus/icons/dist/devices/tv.png</logo>
</row>
+ <row>
+ <label>Wearable</label>
+ <nb_visits>0</nb_visits>
+ <segment>deviceType==wearable</segment>
+ <logo>plugins/Morpheus/icons/dist/devices/wearable.png</logo>
+ </row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_OneVisitor_NoKeywordSpecified__Live.getLastVisitsDetails_day.xml b/tests/PHPUnit/System/expected/test_OneVisitor_NoKeywordSpecified__Live.getLastVisitsDetails_day.xml
index 86d99c41c8..ebb4f49bce 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitor_NoKeywordSpecified__Live.getLastVisitsDetails_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitor_NoKeywordSpecified__Live.getLastVisitsDetails_day.xml
@@ -59,7 +59,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>&lt;&gt;&amp;\&quot;the pdo extension is required for this adapter but the extension is not loaded</referrerKeyword>
<referrerKeywordPosition>4</referrerKeywordPosition>
- <referrerUrl>http://www.google.com.vn/url?sa=t&amp;rct=j&amp;q=%3C%3E%26%5C%22the%20pdo%20extension%20is%20required%20for%20this%20adapter%20but%20the%20extension%20is%20not%20loaded&amp;source=web&amp;cd=4&amp;ved=0FjAD&amp;url=http%3A%2F%2Fforum.piwik.org%2Fread.php%3F2%2C1011&amp;ei=y-HHAQ&amp;usg=AFQjCN2-nt5_GgDeg&amp;cad=rja</referrerUrl>
+ <referrerUrl>http://www.google.com.vn/url?rct=j&amp;q=%3C%3E%26%5C%22the%20pdo%20extension%20is%20required%20for%20this%20adapter%20but%20the%20extension%20is%20not%20loaded&amp;source=web&amp;cd=4&amp;url=http%3A%2F%2Fforum.piwik.org%2Fread.php%3F2%2C1011&amp;cad=rja</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
@@ -198,7 +198,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>Mot clef indéfini</referrerKeyword>
<referrerKeywordPosition>1</referrerKeywordPosition>
- <referrerUrl>http://www.google.com/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;ved=0CC&amp;url=http%3A%2F%2Fpiwik.org%2F&amp;ei=&amp;usg=</referrerUrl>
+ <referrerUrl>http://www.google.com/url?rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;url=http%3A%2F%2Fpiwik.org%2F</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
diff --git a/tests/PHPUnit/System/expected/test_PiwikTracker_trackForceUsingVisitId_insteadOfHeuristics_alsoTestsCampaignTracking__Live.getLastVisitsDetails_day.xml b/tests/PHPUnit/System/expected/test_PiwikTracker_trackForceUsingVisitId_insteadOfHeuristics_alsoTestsCampaignTracking__Live.getLastVisitsDetails_day.xml
index 49ccd6b0d8..d611cbf3c1 100644
--- a/tests/PHPUnit/System/expected/test_PiwikTracker_trackForceUsingVisitId_insteadOfHeuristics_alsoTestsCampaignTracking__Live.getLastVisitsDetails_day.xml
+++ b/tests/PHPUnit/System/expected/test_PiwikTracker_trackForceUsingVisitId_insteadOfHeuristics_alsoTestsCampaignTracking__Live.getLastVisitsDetails_day.xml
@@ -707,7 +707,7 @@
<referrerName>adwords (text)</referrerName>
<referrerKeyword>(adwords) www.example.com</referrerKeyword>
<referrerKeywordPosition />
- <referrerUrl>http://googleads.g.doubleclick.net/pagead/ads?lient=ca-pub-x&amp;output=html&amp;h=15&amp;slotname=4299800108&amp;adk=2258396486&amp;w=728&amp;lmt=1381746604&amp;flash=11.9.900.117&amp;url=http%3A%2F%2Fwww.example.com%2Fphotofilters%2F%26section_id%3D%26p%3D4&amp;dt=1381746604865&amp;bpp=5&amp;bdt=83&amp;shv=r20131008&amp;cbv=r20130906&amp;saldr=sa&amp;correlator=1381746604888&amp;frm=20&amp;ga_vid=1273315809.1372079408&amp;ga_sid=1381744659&amp;ga_hid=2064025848&amp;ga_fc=1&amp;u_tz=120&amp;u_his=17&amp;u_java=1&amp;u_h=864&amp;u_w=1536&amp;u_ah=826&amp;u_aw=1536&amp;u_cd=24&amp;u_nplug=0&amp;u_nmime=0&amp;dff=times%20new%20roman&amp;dfs=12&amp;adx=404&amp;ady=159&amp;biw=1536&amp;bih=770&amp;oid=3&amp;ref=http%3A%2F%2Fwww.example.com%2Fphotofilters%2F%26section_id%3D%26p%3D3&amp;vis=0&amp;fu=0&amp;ifi=1&amp;pfi=0&amp;dtd=51&amp;xpc=Pn2WpF35Mu&amp;p=http%3A//www.example.com&amp;rl_rc=false&amp;adsense_enabled=true&amp;ad_type=text&amp;ui=rc:0&amp;oe=utf8&amp;height=15&amp;width=728&amp;format=fpkc_al_lp&amp;kw_type=radlink&amp;prev_fmts=728x15_0ads_al&amp;rt=ChBSW8euAAeWTgrCYs_kAEUQEhBQaG90byBCYWNrZ3JvdW5kGgjieib00mVdpSgBUhMIy7OEnY-WugIVoZDCCh0qUgC-&amp;hl=en&amp;kw0=Photo+Shop+Image&amp;kw1=Photo+Background&amp;kw2=Photo+to+Painting&amp;kw3=Photo+Digital&amp;okw=Photo+Background</referrerUrl>
+ <referrerUrl>http://googleads.g.doubleclick.net/pagead/ads?lient=ca-pub-x&amp;output=html&amp;h=15&amp;slotname=4299800108&amp;adk=2258396486&amp;w=728&amp;lmt=1381746604&amp;flash=11.9.900.117&amp;url=http%3A%2F%2Fwww.example.com%2Fphotofilters%2F%26section_id%3D%26p%3D4&amp;dt=1381746604865&amp;bpp=5&amp;bdt=83&amp;shv=r20131008&amp;cbv=r20130906&amp;saldr=sa&amp;correlator=1381746604888&amp;frm=20&amp;ga_vid=1273315809.1372079408&amp;ga_sid=1381744659&amp;ga_hid=2064025848&amp;ga_fc=1&amp;u_tz=120&amp;u_his=17&amp;u_java=1&amp;u_h=864&amp;u_w=1536&amp;u_ah=826&amp;u_aw=1536&amp;u_cd=24&amp;u_nplug=0&amp;u_nmime=0&amp;dff=times%20new%20roman&amp;dfs=12&amp;adx=404&amp;ady=159&amp;biw=1536&amp;bih=770&amp;oid=3&amp;ref=http%3A%2F%2Fwww.example.com%2Fphotofilters%2F%26section_id%3D%26p%3D3&amp;vis=0&amp;fu=0&amp;ifi=1&amp;pfi=0&amp;dtd=51&amp;xpc=Pn2WpF35Mu&amp;p=http%3A//www.example.com&amp;rl_rc=false&amp;adsense_enabled=true&amp;ad_type=text&amp;ui=rc:0&amp;oe=utf8&amp;height=15&amp;width=728&amp;format=fpkc_al_lp&amp;kw_type=radlink&amp;prev_fmts=728x15_0ads_al&amp;rt=ChBSW8euAAeWTgrCYs_kAEUQEhBQaG90byBCYWNrZ3JvdW5kGgjieib00mVdpSgBUhMIy7OEnY-WugIVoZDCCh0qUgC-&amp;hl=en&amp;kw0=Photo+Shop+Image&amp;kw1=Photo+Background&amp;kw2=Photo+to+Painting&amp;kw3=Photo</referrerUrl>
<referrerSearchEngineUrl />
<referrerSearchEngineIcon />
<referrerSocialNetworkUrl />
@@ -829,7 +829,7 @@
<referrerName>adwords (text_image)</referrerName>
<referrerKeyword>(adwords) example.com</referrerKeyword>
<referrerKeywordPosition />
- <referrerUrl>http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-x&amp;output=html&amp;h=15&amp;slotname=2973049897&amp;adk=3777420323&amp;w=728&amp;lmt=1381755030&amp;flash=11.9.900.117&amp;url=http%3A%2F%2Fexample.com%2F&amp;dt=1381755030169&amp;bpp=8&amp;bdt=2592&amp;shv=r20131008&amp;cbv=r20130906&amp;saldr=sa&amp;correlator=1381755030200&amp;frm=20&amp;ga_vid=1659309719.1381755030&amp;ga_sid=1381755030&amp;ga_hid=1569070879&amp;ga_fc=0&amp;u_tz=660&amp;u_his=3&amp;u_java=1&amp;u_h=768&amp;u_w=1366&amp;u_ah=728&amp;u_aw=1366&amp;u_cd=24&amp;u_nplug=0&amp;u_nmime=0&amp;dff=times%20new%20roman&amp;dfs=13&amp;adx=311&amp;ady=107&amp;biw=1349&amp;bih=673&amp;oid=2&amp;ref=http%3A%2F%2Fwww.google.com.au%2Furl%3Fsa%3Dt%26rct%3Dj%26q%3D%26esrc%3Ds%26frm%3D1%26source%3Dweb%26cd%3D10%26ved%3D0CGcQFjAJ%26url%3Dhttp%253A%252F%252Fexample.com%252F%26ei%3DXNtbUvrJPKXOiAfw1IH4Bw%26usg%3DAFQjCNE66zRf2zaUw8FKf0JWxiM1FiXHVg&amp;vis=1&amp;fu=0&amp;ifi=1&amp;pfi=32&amp;dtd=122&amp;xpc=tBekiCZTWM&amp;p=http%3A//example.com&amp;rl_rc=true&amp;adsense_enabled=true&amp;ad_type=text_image&amp;oe=utf8&amp;height=15&amp;width=728&amp;format=fp_al_lp&amp;kw_type=radlink&amp;prev_fmts=728x15_0ads_al&amp;rt=ChBSW-iYAADltAqmmOfZAA2SEg1BbmltYXRlZCBUZXh0Ggj019wBciBqgSgBUhMI8OHhzq6WugIVhJOmCh2NYQBO&amp;hl=en&amp;kw0=Animated+Text&amp;kw1=Animated+GIF&amp;kw2=Animated+Graphics&amp;kw3=Fonts&amp;okw=Animated+Text</referrerUrl>
+ <referrerUrl>http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-x&amp;output=html&amp;h=15&amp;slotname=2973049897&amp;adk=3777420323&amp;w=728&amp;lmt=1381755030&amp;flash=11.9.900.117&amp;url=http%3A%2F%2Fexample.com%2F&amp;dt=1381755030169&amp;bpp=8&amp;bdt=2592&amp;shv=r20131008&amp;cbv=r20130906&amp;saldr=sa&amp;correlator=1381755030200&amp;frm=20&amp;ga_vid=1659309719.1381755030&amp;ga_sid=1381755030&amp;ga_hid=1569070879&amp;ga_fc=0&amp;u_tz=660&amp;u_his=3&amp;u_java=1&amp;u_h=768&amp;u_w=1366&amp;u_ah=728&amp;u_aw=1366&amp;u_cd=24&amp;u_nplug=0&amp;u_nmime=0&amp;dff=times%20new%20roman&amp;dfs=13&amp;adx=311&amp;ady=107&amp;biw=1349&amp;bih=673&amp;oid=2&amp;ref=http%3A%2F%2Fwww.google.com.au%2Furl%3Fsa%3Dt%26rct%3Dj%26q%3D%26esrc%3Ds%26frm%3D1%26source%3Dweb%26cd%3D10%26ved%3D0CGcQFjAJ%26url%3Dhttp%253A%252F%252Fexample.com%252F%26ei%3DXNtbUvrJPKXOiAfw1IH4Bw%26usg%3DAFQjCNE66zRf2zaUw8FKf0JWxiM1FiXHVg&amp;vis=1&amp;fu=0&amp;ifi=1&amp;pfi=32&amp;dtd=122&amp;xpc=tBekiCZTWM&amp;p=http%3A//example.com&amp;rl_rc=true&amp;adsense_enabled=true&amp;ad_type=text_image&amp;oe=utf8&amp;height=15&amp;width=728&amp;format=fp_al_lp&amp;kw_type=radlink&amp;prev_fmts=728x15_0ads_al&amp;rt=ChBSW-iYAADltAqmmOfZAA2SEg1BbmltYXRlZCBUZXh0Ggj</referrerUrl>
<referrerSearchEngineUrl />
<referrerSearchEngineIcon />
<referrerSocialNetworkUrl />
@@ -951,7 +951,7 @@
<referrerName>adwords campaign</referrerName>
<referrerKeyword>nintendo consoles second hand</referrerKeyword>
<referrerKeywordPosition />
- <referrerUrl>http://www.google.co.nz/aclk?sa=L&amp;ai=uYmFyiZgAf0oO0J&amp;num=3&amp;sig=EpOCR4xQ&amp;ved=ENEM&amp;adurl=http://pixel.everesttech.net/3163/cq%3Fev_sid%3D3%26ev_cmpid%3D33%26ev_ln%3Dused%2520wii%2520consoles%26ev_crx%528386%26ev_mt%3Db%26ev_n%3Dg%26ev_ltx%3D%26ev_pl%3D%26ev_pos%3D1s2%26url%3Dhttp%253A//au.shopping.com/used%2520wii%2520consoles/products%253Flinkin_id%253D8077872&amp;rct=j&amp;q=nintendo+consoles+second+hand</referrerUrl>
+ <referrerUrl>http://www.google.co.nz/aclk?ai=uYmFyiZgAf0oO0J&amp;num=3&amp;sig=EpOCR4xQ&amp;adurl=http://pixel.everesttech.net/3163/cq%3Fev_sid%3D3%26ev_cmpid%3D33%26ev_ln%3Dused%2520wii%2520consoles%26ev_crx%528386%26ev_mt%3Db%26ev_n%3Dg%26ev_ltx%3D%26ev_pl%3D%26ev_pos%3D1s2%26url%3Dhttp%253A//au.shopping.com/used%2520wii%2520consoles/products%253Flinkin_id%253D8077872&amp;rct=j&amp;q=nintendo+consoles+second+hand</referrerUrl>
<referrerSearchEngineUrl />
<referrerSearchEngineIcon />
<referrerSocialNetworkUrl />
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
index d9884a28d7..d0776af521 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
@@ -106,7 +106,7 @@
<category>Visitors</category>
<name>Device brand</name>
<segment>deviceBrand</segment>
- <acceptedValues>3Q, 4Good, Ace, Acer, Advan, Advance, AGM, Ainol, Airness, Airties, AIS, Aiwa, Akai, Alba, Alcatel, Aligator, AllCall, AllDocube, Allview, Allwinner, Altech UEC, altron, Amazon, AMGOO, Amoi, ANS, Apple, Archos, Arian Space, Ark, Arnova, ARRIS, Ask, Assistant, Asus, Atom, Audiovox, AVH, Avvio, Axxion, Azumi Mobile, BangOlufsen, Barnes &amp; Noble, BBK, BDF, Becker, Beeline, Beetel, BenQ, BenQ-Siemens, Bezkam, BGH, Bird, Bitel, Black Fox, Blackview, Blaupunkt, Blu, Bluboo, Bluegood, Bmobile, bogo, Boway, bq, Bravis, Brondi, Bush, CAGI, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Celkon, Changhong, Cherry Mobile, China Mobile, Chuwi, Clarmin, CnM, Coby Kyros, Comio, Compal, Compaq, ComTrade Tesla, Concord, ConCorde, Condor, Coolpad, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crosscall, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datang, Datsun, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, Dialog, Dicam, Digi, Digicel, Digiland, Digma, Divisat, DMM, DNS, DoCoMo, Doogee, Doov, Dopod, Doro, Dune HD, E-Boda, E-tel, Easypix, EBEST, Echo Mobiles, ECS, EE, EKO, Eks Mobility, Elenberg, Elephone, Energizer, Energy Sistem, Ergo, Ericsson, Ericy, Essential, Essentielb, Eton, eTouch, Etuline, Eurostar, Evercoss, Evertek, Evolio, Evolveo, EvroMedia, Explay, Extrem, Ezio, Ezze, Fairphone, Famoco, Fengxiang, FiGO, FinePower, Fly, FNB, Fondi, FORME, Forstar, Foxconn, Freetel, Fujitsu, G-TiDE, Garmin-Asus, Gateway, Gemini, General Mobile, Geotel, Ghia, Ghong, Gigabyte, Gigaset, Ginzzu, Gionee, Globex, GOCLEVER, Goly, GoMobile, Google, Gradiente, Grape, Grundig, Hafury, Haier, HannSpree, Hasee, Hi-Level, Highscreen, Hisense, Hoffmann, Homtom, Hoozo, Hosin, HP, HTC, Huawei, Humax, Hyrican, Hyundai, i-Joy, i-mate, i-mobile, iBall, iBerry, IconBIT, iHunt, Ikea, iKoMo, iLA, IMO Mobile, Impression, iNew, Infinix, InFocus, Inkti, InnJoo, Innostream, Inoi, INQ, Insignia, Intek, Intex, Inverto, iOcean, iPro, Irbis, iRola, iRulu, iTel, iView, iZotron, JAY-Tech, Jiayu, Jolla, Just5, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, KATV1, Kazam, KDDI, Kempler &amp; Strauss, Keneksi, Kiano, Kingsun, Kivi, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, KOPO, Koridy, KRONO, Krüger&amp;Matz, KT-Tech, Kumai, Kyocera, LAIQ, Land Rover, Landvo, Lanix, Lark, Lava, LCT, Leagoo, Ledstar, LeEco, Lemhoov, Lenco, Lenovo, Leotec, Le Pan, Lephone, Lexand, Lexibook, LG, Lingwin, Loewe, Logicom, Lumus, Luna, LYF, M.T.T., M4tel, Majestic, Mann, Manta Multimedia, Masstel, Maxcom, Maxwest, Maze, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Memup, Metz, MEU, MicroMax, Microsoft, Mio, Miray, Mitsubishi, MIXC, MLLED, Mobicel, Mobiistar, Mobiola, Mobistel, Modecom, Mofut, Motorola, Movic, Mpman, MSI, MTC, MTN, MYFON, MyPhone, Myria, Mystery, MyWigo, National, Navon, NEC, Neffos, Netgear, NeuImage, Newgen, NewsMy, NEXBOX, Nexian, Nextbit, NextBook, NGM, NG Optics, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, Nokia, Nomi, Nous, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Obi, Odys, Onda, OnePlus, OPPO, Opsson, Orange, Ordissimo, Ouki, Oukitel, OUYA, Overmax, Oysters, Palm, Panacom, Panasonic, Pantech, PCBOX, PCD, PCD Argentina, PEAQ, Pentagram, Philips, phoneOne, Pioneer, Pixus, Ployer, Plum, Point of View, Polaroid, PolyPad, Polytron, Pomp, Positivo, PPTV, Prestigio, Primepad, Proline, ProScan, PULID, Q-Touch, Qilive, QMobile, Qtek, Quantum, Quechua, Qumo, R-TV, Ramos, RCA Tablets, Readboy, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Roadrover, Rokit, Roku, Rombica, Ross&amp;Moor, Rover, RoverPad, RT Project, RugGear, Runbo, Safaricom, Sagem, Samsung, Sanei, Santin, Sanyo, Savio, Sega, Selevision, Selfix, Sencor, Sendo, Senseit, Senwa, SFR, Sharp, Shift Phones, Shuttle, Siemens, Sigma, Silent Circle, Simbans, Sky, Skyworth, Smart, Smartfren, Smartisan, Softbank, Sonim, Sony, Sony Ericsson, Spectrum, Spice, Star, Starway, STF Mobile, STK, Stonex, Storex, Sumvision, SunVan, Sunvell, SuperSonic, Supra, SWISSMOBILITY, Symphony, Syrox, T-Mobile, TB Touch, TCL, TechniSat, TechnoTrend, TechPad, Teclast, Tecno Mobile, Telefunken, Telego, Telenor, Telit, Tesco, Tesla, teXet, ThL, Thomson, TIANYU, Timovi, TiPhone, Tolino, Tooky, Top House, Toplux, Toshiba, Touchmate, TrekStor, Trevi, True, Tunisie Telecom, Turbo, Turbo-X, TVC, U.S. Cellular, Ugoos, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, Unknown, Unnecto, Unonu, Unowhy, UTOK, UTStarcom, Vastking, Venso, Verizon, Vernee, Vertex, Vertu, Verykool, Vesta, Vestel, VGO TEL, Videocon, Videoweb, ViewSonic, Vinga, Vinsoc, Vitelcom, Vivax, Vivo, Vizio, VK Mobile, Vodafone, Vonino, Vorago, Voto, Voxtel, Vsun, Vulcan, Walton, Web TV, Weimei, WellcoM, Wexler, Wieppo, Wiko, Wileyfox, Wink, Wolder, Wolfgang, Wonu, Woo, Woxter, X-TIGI, X-View, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Yandex, Yarvik, Yes, Yezz, Yota, Ytone, Yu, Yuandao, Yusun, Yxtel, Zeemi, Zen, Zenek, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, öwn</acceptedValues>
+ <acceptedValues>3Q, 4Good, Ace, Acer, Advan, Advance, AGM, Ainol, Airness, Airties, AIS, Aiwa, Akai, Alba, Alcatel, Aligator, AllCall, AllDocube, Allview, Allwinner, Altech UEC, altron, Amazon, AMGOO, Amoi, ANS, Apple, Archos, Arian Space, Ark, ArmPhone, Arnova, ARRIS, Ask, Assistant, Asus, Atom, Audiovox, AVH, Avvio, Axxion, Azumi Mobile, BangOlufsen, Barnes &amp; Noble, BBK, BDF, Becker, Beeline, Beetel, BenQ, BenQ-Siemens, Bezkam, BGH, Bird, Bitel, Black Fox, Blackview, Blaupunkt, Blu, Bluboo, Bluegood, Bmobile, bogo, Boway, bq, Bravis, Brondi, Bush, CAGI, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Celkon, Changhong, Cherry Mobile, China Mobile, Chuwi, Clarmin, CnM, Coby Kyros, Comio, Compal, Compaq, ComTrade Tesla, Concord, ConCorde, Condor, Coolpad, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crosscall, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datang, Datsun, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, Dialog, Dicam, Digi, Digicel, Digiland, Digma, Divisat, DMM, DNS, DoCoMo, Doogee, Doov, Dopod, Doro, Dune HD, E-Boda, E-tel, Easypix, EBEST, Echo Mobiles, ECS, EE, EKO, Eks Mobility, Element, Elenberg, Elephone, Energizer, Energy Sistem, Ergo, Ericsson, Ericy, Essential, Essentielb, Eton, eTouch, Etuline, Eurostar, Evercoss, Evertek, Evolio, Evolveo, EvroMedia, Explay, Extrem, Ezio, Ezze, Fairphone, Famoco, Fengxiang, FiGO, FinePower, Fly, FNB, Fondi, FORME, Forstar, Foxconn, Freetel, Fujitsu, G-TiDE, Garmin-Asus, Gateway, Gemini, General Mobile, Geotel, Ghia, Ghong, Gigabyte, Gigaset, Ginzzu, Gionee, Globex, GOCLEVER, Goly, Gome, GoMobile, Google, Gradiente, Grape, Grundig, Hafury, Haier, HannSpree, Hasee, Hi-Level, Highscreen, Hisense, Hoffmann, Homtom, Hoozo, Hosin, HP, HTC, Huadoo, Huawei, Humax, Hyrican, Hyundai, i-Joy, i-mate, i-mobile, iBall, iBerry, IconBIT, iGet, iHunt, Ikea, iKoMo, iLA, IMO Mobile, Impression, iNew, Infinix, InFocus, Inkti, InnJoo, Innostream, Inoi, INQ, Insignia, Intek, Intex, Inverto, iOcean, iPro, Irbis, iRola, iRulu, iTel, iVA, iView, iZotron, JAY-Tech, JFone, Jiayu, Jolla, Just5, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, KATV1, Kazam, KDDI, Kempler &amp; Strauss, Keneksi, Kiano, Kingsun, Kivi, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, KOPO, Koridy, KRONO, Krüger&amp;Matz, KT-Tech, Kumai, Kyocera, LAIQ, Land Rover, Landvo, Lanix, Lark, Lava, LCT, Leagoo, Ledstar, LeEco, Lemhoov, Lenco, Lenovo, Leotec, Le Pan, Lephone, Lexand, Lexibook, LG, Lingwin, Loewe, Logicom, Lumus, Luna, LYF, M.T.T., M4tel, Majestic, Mann, Manta Multimedia, Masstel, Maxcom, Maxwest, Maze, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Memup, Metz, MEU, MicroMax, Microsoft, Mio, Miray, Mitsubishi, MIXC, MLLED, Mobicel, Mobiistar, Mobiola, Mobistel, Modecom, Mofut, Motorola, Movic, Mpman, MSI, MTC, MTN, MYFON, MyPhone, Myria, Mystery, MyWigo, National, Navon, NEC, Neffos, Netgear, NeuImage, Newgen, NewsMy, NEXBOX, Nexian, Nextbit, NextBook, NGM, NG Optics, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, Nokia, Nomi, Nous, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Obi, Odys, Onda, OnePlus, OPPO, Opsson, Orange, Ordissimo, Ouki, Oukitel, OUYA, Overmax, Oysters, Palm, Panacom, Panasonic, Pantech, PCBOX, PCD, PCD Argentina, PEAQ, Pentagram, Phicomm, Philips, phoneOne, Pioneer, Pixus, Ployer, Plum, Point of View, Polaroid, PolyPad, Polytron, Pomp, Positivo, PPTV, Prestigio, Primepad, Proline, ProScan, Protruly, PULID, Q-Touch, Qilive, QMobile, Qtek, Quantum, Quechua, Qumo, R-TV, Ramos, Razer, RCA Tablets, Readboy, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Roadrover, Rokit, Roku, Rombica, Ross&amp;Moor, Rover, RoverPad, RT Project, RugGear, Runbo, Ryte, Safaricom, Sagem, Samsung, Sanei, Santin, Sanyo, Savio, Sega, Selevision, Selfix, Sencor, Sendo, Senseit, Senwa, SFR, Sharp, Shift Phones, Shuttle, Siemens, Sigma, Silent Circle, Simbans, Sky, Skyworth, Smart, Smartfren, Smartisan, Softbank, Sonim, Sony, Sony Ericsson, Soyes, Spectrum, Spice, Star, Starway, STF Mobile, STK, Stonex, Storex, Sumvision, SunVan, Sunvell, SuperSonic, Supra, SWISSMOBILITY, Symphony, Syrox, T-Mobile, TB Touch, TCL, TechniSat, TechnoTrend, TechPad, Teclast, Tecno Mobile, Telefunken, Telego, Telenor, Telit, Tesco, Tesla, teXet, ThL, Thomson, TIANYU, Timovi, TiPhone, Tolino, Tooky, Top House, Toplux, Toshiba, Touchmate, TrekStor, Trevi, True, Tunisie Telecom, Turbo, Turbo-X, TVC, U.S. Cellular, Ugoos, Uhans, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, Unknown, Unnecto, Unonu, Unowhy, UTOK, UTStarcom, Vastking, Venso, Verizon, Vernee, Vertex, Vertu, Verykool, Vesta, Vestel, VGO TEL, Videocon, Videoweb, ViewSonic, Vinga, Vinsoc, Vitelcom, Vivax, Vivo, Vizio, VK Mobile, Vodafone, Vonino, Vontar, Vorago, Vorke, Voto, Voxtel, Voyo, Vsun, Vulcan, Walton, Web TV, Weimei, WellcoM, Wexler, Wieppo, Wigor, Wiko, Wileyfox, Wink, Wolder, Wolfgang, Wonu, Woo, Woxter, X-TIGI, X-View, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Yandex, Yarvik, Yes, Yezz, Yota, Ytone, Yu, Yuandao, Yusun, Yxtel, Zeemi, Zen, Zenek, Zfiner, Zidoo, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, öwn</acceptedValues>
</row>
<row>
<type>dimension</type>
@@ -120,7 +120,7 @@
<category>Visitors</category>
<name>Device type</name>
<segment>deviceType</segment>
- <acceptedValues>desktop, smartphone, tablet, feature phone, console, tv, car browser, smart display, camera, portable media player, phablet, smart speaker</acceptedValues>
+ <acceptedValues>desktop, smartphone, tablet, feature phone, console, tv, car browser, smart display, camera, portable media player, phablet, smart speaker, wearable</acceptedValues>
</row>
<row>
<type>dimension</type>
diff --git a/tests/PHPUnit/System/expected/test_csvExport__Live.getLastVisitsDetails_day.csv b/tests/PHPUnit/System/expected/test_csvExport__Live.getLastVisitsDetails_day.csv
index 842df3498b..d069caa210 100644
--- a/tests/PHPUnit/System/expected/test_csvExport__Live.getLastVisitsDetails_day.csv
+++ b/tests/PHPUnit/System/expected/test_csvExport__Live.getLastVisitsDetails_day.csv
Binary files differ
diff --git a/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisits.xml b/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisits.xml
index 4ec551d90a..cdc49204a4 100644
--- a/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisits.xml
+++ b/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisits.xml
@@ -399,7 +399,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>this keyword should be ranked</referrerKeyword>
<referrerKeywordPosition>1</referrerKeywordPosition>
- <referrerUrl>http://www.google.com/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CB4QFjAA&amp;url=http://piwik.org/&amp;rct=j&amp;q=this keyword should be ranked&amp;ei=V8WfTePkKKLfiALrpZWGAw&amp;usg=AFQjCNF_MGJRqKPvaKuUokHtZ3VvNG9ALw&amp;sig2=BvKAdCtNixsmfNWXjsNyMw</referrerUrl>
+ <referrerUrl>http://www.google.com/url?source=web&amp;cd=1&amp;url=http://piwik.org/&amp;rct=j&amp;q=this keyword should be ranked&amp;sig2=BvKAdCtNixsmfNWXjsNyMw</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
diff --git a/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisitsDetails_range.xml b/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisitsDetails_range.xml
index 4ec551d90a..cdc49204a4 100644
--- a/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisitsDetails_range.xml
+++ b/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI__Live.getLastVisitsDetails_range.xml
@@ -399,7 +399,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>this keyword should be ranked</referrerKeyword>
<referrerKeywordPosition>1</referrerKeywordPosition>
- <referrerUrl>http://www.google.com/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CB4QFjAA&amp;url=http://piwik.org/&amp;rct=j&amp;q=this keyword should be ranked&amp;ei=V8WfTePkKKLfiALrpZWGAw&amp;usg=AFQjCNF_MGJRqKPvaKuUokHtZ3VvNG9ALw&amp;sig2=BvKAdCtNixsmfNWXjsNyMw</referrerUrl>
+ <referrerUrl>http://www.google.com/url?source=web&amp;cd=1&amp;url=http://piwik.org/&amp;rct=j&amp;q=this keyword should be ranked&amp;sig2=BvKAdCtNixsmfNWXjsNyMw</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
diff --git a/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Live.getLastVisits.xml b/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Live.getLastVisits.xml
index 4ec551d90a..cdc49204a4 100644
--- a/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Live.getLastVisits.xml
+++ b/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Live.getLastVisits.xml
@@ -399,7 +399,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>this keyword should be ranked</referrerKeyword>
<referrerKeywordPosition>1</referrerKeywordPosition>
- <referrerUrl>http://www.google.com/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CB4QFjAA&amp;url=http://piwik.org/&amp;rct=j&amp;q=this keyword should be ranked&amp;ei=V8WfTePkKKLfiALrpZWGAw&amp;usg=AFQjCNF_MGJRqKPvaKuUokHtZ3VvNG9ALw&amp;sig2=BvKAdCtNixsmfNWXjsNyMw</referrerUrl>
+ <referrerUrl>http://www.google.com/url?source=web&amp;cd=1&amp;url=http://piwik.org/&amp;rct=j&amp;q=this keyword should be ranked&amp;sig2=BvKAdCtNixsmfNWXjsNyMw</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
diff --git a/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Live.getLastVisitsDetails_range.xml b/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Live.getLastVisitsDetails_range.xml
index 4ec551d90a..cdc49204a4 100644
--- a/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Live.getLastVisitsDetails_range.xml
+++ b/tests/PHPUnit/System/expected/test_periodIsRange_dateIsLastN_MetadataAndNormalAPI_pagesegment__Live.getLastVisitsDetails_range.xml
@@ -399,7 +399,7 @@
<referrerName>Google</referrerName>
<referrerKeyword>this keyword should be ranked</referrerKeyword>
<referrerKeywordPosition>1</referrerKeywordPosition>
- <referrerUrl>http://www.google.com/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CB4QFjAA&amp;url=http://piwik.org/&amp;rct=j&amp;q=this keyword should be ranked&amp;ei=V8WfTePkKKLfiALrpZWGAw&amp;usg=AFQjCNF_MGJRqKPvaKuUokHtZ3VvNG9ALw&amp;sig2=BvKAdCtNixsmfNWXjsNyMw</referrerUrl>
+ <referrerUrl>http://www.google.com/url?source=web&amp;cd=1&amp;url=http://piwik.org/&amp;rct=j&amp;q=this keyword should be ranked&amp;sig2=BvKAdCtNixsmfNWXjsNyMw</referrerUrl>
<referrerSearchEngineUrl>http://google.com</referrerSearchEngineUrl>
<referrerSearchEngineIcon>plugins/Morpheus/icons/dist/searchEngines/google.com.png</referrerSearchEngineIcon>
<referrerSocialNetworkUrl />
diff --git a/tests/UI/expected-screenshots/EmptySite_emptySiteDashboard.png b/tests/UI/expected-screenshots/EmptySite_emptySiteDashboard.png
index f80961ddab..a3692da1ab 100644
--- a/tests/UI/expected-screenshots/EmptySite_emptySiteDashboard.png
+++ b/tests/UI/expected-screenshots/EmptySite_emptySiteDashboard.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:882eef814d870ca08780f93e4419b72a64a1d8a17a314402a590668b128f9263
-size 299912
+oid sha256:9f92837c2c03c051ff1c60a8b564a6c63eae319a9cee1ba6c3a66bbefe517c7d
+size 301240
diff --git a/tests/UI/expected-screenshots/OneClickUpdate_login.png b/tests/UI/expected-screenshots/OneClickUpdate_login.png
index 915bab1cb3..8e06f526d5 100644
--- a/tests/UI/expected-screenshots/OneClickUpdate_login.png
+++ b/tests/UI/expected-screenshots/OneClickUpdate_login.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bd758c0b8a5e888a1fa10a6294124a777300d4446310b9462159436d9b2f003a
-size 267909
+oid sha256:512206d08d6f5acb4421b31bcef9cc7fe69d7f398e1f376aa97da8081de72b75
+size 268796
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png
index c4163f0f00..b83a7fed58 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a55b55617bdf39b6f3fec23e4d7a6e73c53af24f54058ad72043d9302f7da6c1
-size 1565116
+oid sha256:b43df5917ef5025fb008519305627b58eb09ac5379d1adda4dfcd8479b1981e1
+size 1564993
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_devices.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_devices.png
index f467e34ab3..d8e355b991 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_devices.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_devices.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f87674538449d8d362a0d2f62c116782a0b3020a7b1c64af58f9c27088586fcf
-size 86523
+oid sha256:9d8cfd5c706bc482828d00fa31fa3ce2afde5b8ad9b3132a81972fa43e75b9c5
+size 86469
diff --git a/tests/javascript/index.php b/tests/javascript/index.php
index c634bc3f55..59b1c9d181 100644
--- a/tests/javascript/index.php
+++ b/tests/javascript/index.php
@@ -4299,6 +4299,7 @@ if ($mysql) {
function resetTracker(track, token, replace)
{
+ tracker.getRequestQueue().sendRequests(); // make sure to send any remaining queued requests
tracker.clearTrackedContentImpressions();
tracker.clearEnableTrackOnlyVisibleContent();
tracker.setCustomData('token', token);
@@ -4371,7 +4372,7 @@ if ($mysql) {
tracker.trackAllContentImpressions();
strictEqual(tracker.getTrackedContentImpressions().length, 7, 'should mark 7 content blocks as tracked');
- wait(300);
+ wait(3000);
var token2 = '2' + token;
resetTracker(tracker, token2);
@@ -4383,7 +4384,7 @@ if ($mysql) {
tracker.trackContentImpressionsWithinNode(_e('click1'));
strictEqual(tracker.getTrackedContentImpressions().length, 0, 'should not track anything as does not contain content block');
- wait(300);
+ wait(3000);
var token3 = '3' + token;
resetTracker(tracker, token3);
@@ -4393,17 +4394,17 @@ if ($mysql) {
tracker.trackContentImpression('Any://Name', 'AnyPiece?', 'http://www.example.com');
strictEqual(tracker.getTrackedContentImpressions().length, 0, 'manual impression call should not be marked as already tracked');
- wait(300);
+ wait(3000);
var token4 = '4' + token;
resetTracker(tracker, token4);
tracker.trackContentInteraction(); // should not track anything as interaction and name is required
tracker.trackContentInteraction('Clicki'); // should not track anything as interaction and name is required
tracker.trackContentInteraction('Clicke', 'IntName'); // should use default for piece and ignore target as it is not set
- wait(500);
+ wait(300);
tracker.trackContentInteraction('Clicki', 'IntN:/ame', 'IntPiece?', 'http://int.example.com');
- wait(300);
+ wait(3000);
setupContentTrackingFixture('trackingContent', document.body);
@@ -4411,7 +4412,7 @@ if ($mysql) {
resetTracker(tracker, token5);
tracker.trackContentInteractionNode(_s('#ex5'), 'Clicki?iii');
- wait(300);
+ wait(3000);
var token6 = '6' + token;
resetTracker(tracker, token6);
@@ -4420,6 +4421,8 @@ if ($mysql) {
expected = [contentBlocks[7], contentBlocks[6], contentBlocks[5], contentBlocks[1], contentBlocks[4], contentBlocks[3], contentBlocks[2]];
propEqual(tracker.getTrackedContentImpressions().length, 7, 'should still track all impressions even if visible enabled');
+ wait(3000);
+
var token7 = '7' + token;
resetTracker(tracker, token7);
tracker.enableTrackOnlyVisibleContent(false, 0);
@@ -4431,8 +4434,7 @@ if ($mysql) {
expected = [contentBlocks[6], contentBlocks[5]];
propEqual(tracker.getTrackedContentImpressions(), expected, 'should track the two visible ones');
-
- wait(300);
+ wait(3000);
var token8 = '8' + token;
resetTracker(tracker, token8);
@@ -4440,8 +4442,7 @@ if ($mysql) {
expected = [contentBlocks[6], contentBlocks[5], contentBlocks[1]];
propEqual(tracker.getTrackedContentImpressions(), expected, 'should only track all visible impressions');
-
- wait(300);
+ wait(3000);
// test detection of content via interval
var token9 = '9' + token;
@@ -4496,6 +4497,7 @@ if ($mysql) {
// trackAllContentImpressions()
var results = fetchTrackedRequests(token);
+
equal( (/<span\>([0-9]+)\<\/span\>/.exec(results))[1], "7", "count trackAllContentImpressions requests. all content blocks should be tracked" );
var requests = results.match(/<span\>(.*?)\<\/span\>/g);
@@ -4615,7 +4617,7 @@ if ($mysql) {
equal( (/<span\>([0-9]+)\<\/span\>/.exec(results))[1], "6", "count automatically tracked requests, via scroll. " );
start();
- }, 7000);
+ }, 13000);
expected =
[
@@ -4733,6 +4735,7 @@ if ($mysql) {
function resetTracker(track, token)
{
+ tracker.getRequestQueue().sendRequests(); // make sure to send any remaining queued requests
tracker.clearTrackedContentImpressions();
tracker.clearEnableTrackOnlyVisibleContent();
tracker.setCustomData('token', token);