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--core/Tracker/Request.php34
-rw-r--r--core/Tracker/TrackerConfig.php12
-rw-r--r--core/Tracker/Visit.php2
-rw-r--r--core/Tracker/VisitorRecognizer.php2
-rw-r--r--plugins/CoreHome/Tracker/VisitRequestProcessor.php4
-rw-r--r--plugins/Referrers/Columns/Campaign.php8
-rw-r--r--plugins/Referrers/Columns/Website.php15
-rw-r--r--tests/PHPUnit/Unit/Tracker/RequestSetTest.php3
-rw-r--r--tests/PHPUnit/Unit/Tracker/TrackerConfigTest.php32
9 files changed, 73 insertions, 39 deletions
diff --git a/core/Tracker/Request.php b/core/Tracker/Request.php
index 954ca042de..2dd8be5579 100644
--- a/core/Tracker/Request.php
+++ b/core/Tracker/Request.php
@@ -73,7 +73,6 @@ class Request
$this->tokenAuth = $tokenAuth;
$this->timestamp = time();
$this->isEmptyRequest = empty($params);
- $this->customTimestampDoesNotRequireTokenauthWhenNewerThan = (int) TrackerConfig::getConfigValue('tracking_requests_require_authentication_when_custom_timestamp_newer_than');
// When the 'url' and referrer url parameter are not given, we might be in the 'Simple Image Tracker' mode.
// The URL can default to the Referrer, which will be in this case
@@ -90,6 +89,9 @@ class Request
// check for 4byte utf8 characters in all tracking params and replace them with � if not support by database
$this->params = $this->replaceUnsupportedUtf8Chars($this->params);
+
+ $this->customTimestampDoesNotRequireTokenauthWhenNewerThan = (int) TrackerConfig::getConfigValue('tracking_requests_require_authentication_when_custom_timestamp_newer_than',
+ $this->getIdSiteIfExists());
}
protected function replaceUnsupportedUtf8Chars($value, $key=false)
@@ -148,7 +150,7 @@ class Request
*/
protected function authenticateTrackingApi($tokenAuth)
{
- $shouldAuthenticate = TrackerConfig::getConfigValue('tracking_requests_require_authentication');
+ $shouldAuthenticate = TrackerConfig::getConfigValue('tracking_requests_require_authentication', $this->getIdSiteIfExists());
if ($shouldAuthenticate) {
try {
@@ -238,11 +240,10 @@ class Request
public function isRequestExcluded()
{
- $config = Config::getInstance();
- $tracker = $config->Tracker;
+ $excludedRequests = TrackerConfig::getConfigValue('exclude_requests', $this->getIdSiteIfExists());
- if (!empty($tracker['exclude_requests'])) {
- $excludedRequests = explode(',', $tracker['exclude_requests']);
+ if (!empty($excludedRequests)) {
+ $excludedRequests = explode(',', $excludedRequests);
$pattern = '/^(.+?)('.SegmentExpression::MATCH_EQUAL.'|'
.SegmentExpression::MATCH_NOT_EQUAL.'|'
.SegmentExpression::MATCH_CONTAINS.'|'
@@ -587,6 +588,15 @@ class Request
return $idSite;
}
+ public function getIdSiteIfExists()
+ {
+ try {
+ return $this->getIdSite();
+ } catch (UnexpectedWebsiteFoundException $ex) {
+ return null;
+ }
+ }
+
public function getIdSite()
{
if (isset($this->idSiteCache)) {
@@ -625,7 +635,7 @@ class Request
public function shouldUseThirdPartyCookie()
{
- return (bool)Config::getInstance()->Tracker['use_third_party_id_cookie'];
+ return TrackerConfig::getConfigValue('use_third_party_id_cookie', $this->getIdSiteIfExists());
}
public function getThirdPartyCookieVisitorId()
@@ -685,22 +695,22 @@ class Request
protected function getCookieName()
{
- return TrackerConfig::getConfigValue('cookie_name');
+ return TrackerConfig::getConfigValue('cookie_name', $this->getIdSiteIfExists());
}
protected function getCookieExpire()
{
- return $this->getCurrentTimestamp() + TrackerConfig::getConfigValue('cookie_expire');
+ return $this->getCurrentTimestamp() + TrackerConfig::getConfigValue('cookie_expire', $this->getIdSiteIfExists());
}
protected function getCookiePath()
{
- return TrackerConfig::getConfigValue('cookie_path');
+ return TrackerConfig::getConfigValue('cookie_path', $this->getIdSiteIfExists());
}
protected function getCookieDomain()
{
- return TrackerConfig::getConfigValue('cookie_domain');
+ return TrackerConfig::getConfigValue('cookie_domain', $this->getIdSiteIfExists());
}
/**
@@ -716,7 +726,7 @@ class Request
{
$found = false;
- if (TrackerConfig::getConfigValue('enable_userid_overwrites_visitorid')) {
+ if (TrackerConfig::getConfigValue('enable_userid_overwrites_visitorid', $this->getIdSiteIfExists())) {
// If User ID is set it takes precedence
$userId = $this->getForcedUserId();
if ($userId) {
diff --git a/core/Tracker/TrackerConfig.php b/core/Tracker/TrackerConfig.php
index 3c998405f1..3647bc7b87 100644
--- a/core/Tracker/TrackerConfig.php
+++ b/core/Tracker/TrackerConfig.php
@@ -25,9 +25,13 @@ class TrackerConfig
Config::getInstance()->Tracker = $section;
}
- public static function getConfigValue($name)
+ public static function getConfigValue($name, $idSite = null)
{
$config = self::getConfig();
+ if (!empty($idSite)) {
+ $siteSpecificConfig = self::getSiteSpecificConfig($idSite);
+ $config = array_merge($config, $siteSpecificConfig);
+ }
return $config[$name];
}
@@ -35,4 +39,10 @@ class TrackerConfig
{
return Config::getInstance()->Tracker;
}
+
+ private static function getSiteSpecificConfig($idSite)
+ {
+ $key = 'Tracker_' . $idSite;
+ return Config::getInstance()->$key;
+ }
}
diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php
index cfc2a4830f..1b8d9aefd4 100644
--- a/core/Tracker/Visit.php
+++ b/core/Tracker/Visit.php
@@ -586,7 +586,7 @@ class Visit implements VisitInterface
$valuesToUpdate['idvisitor'] = $this->request->getVisitorId();
}
- if (TrackerConfig::getConfigValue('enable_userid_overwrites_visitorid')) {
+ if (TrackerConfig::getConfigValue('enable_userid_overwrites_visitorid', $this->request->getIdSiteIfExists())) {
// User ID takes precedence and overwrites idvisitor value
$userId = $this->request->getForcedUserId();
if ($userId) {
diff --git a/core/Tracker/VisitorRecognizer.php b/core/Tracker/VisitorRecognizer.php
index 3c670d0050..89e159a9ef 100644
--- a/core/Tracker/VisitorRecognizer.php
+++ b/core/Tracker/VisitorRecognizer.php
@@ -104,7 +104,7 @@ class VisitorRecognizer
$shouldMatchOneFieldOnly = $this->shouldLookupOneVisitorFieldOnly($isVisitorIdToLookup, $request);
list($timeLookBack, $timeLookAhead) = $this->getWindowLookupThisVisit($request);
- $maxActions = TrackerConfig::getConfigValue('create_new_visit_after_x_actions');
+ $maxActions = TrackerConfig::getConfigValue('create_new_visit_after_x_actions', $request->getIdSiteIfExists());
$visitRow = $this->model->findVisitor($idSite, $configId, $idVisitor, $userId, $persistedVisitAttributes, $shouldMatchOneFieldOnly, $isVisitorIdToLookup, $timeLookBack, $timeLookAhead);
diff --git a/plugins/CoreHome/Tracker/VisitRequestProcessor.php b/plugins/CoreHome/Tracker/VisitRequestProcessor.php
index 1f4706f859..65906cd45e 100644
--- a/plugins/CoreHome/Tracker/VisitRequestProcessor.php
+++ b/plugins/CoreHome/Tracker/VisitRequestProcessor.php
@@ -184,7 +184,7 @@ class VisitRequestProcessor extends RequestProcessor
}
$wasLastActionYesterday = $this->wasLastActionNotToday($visitProperties, $request, $lastKnownVisit);
- $forceNewVisitAtMidnight = (bool) Config::getInstance()->Tracker['create_new_visit_after_midnight'];
+ $forceNewVisitAtMidnight = (bool) TrackerConfig::getConfigValue('create_new_visit_after_midnight', $request->getIdSiteIfExists());
if ($wasLastActionYesterday && $forceNewVisitAtMidnight) {
Common::printDebug("Visitor detected, but last action was yesterday...");
@@ -192,7 +192,7 @@ class VisitRequestProcessor extends RequestProcessor
return true;
}
- if (!TrackerConfig::getConfigValue('enable_userid_overwrites_visitorid')
+ if (!TrackerConfig::getConfigValue('enable_userid_overwrites_visitorid', $request->getIdSiteIfExists())
&& !$this->lastUserIdWasSetAndDoesMatch($visitProperties, $request)) {
Common::printDebug("Visitor detected, but last user_id does not match...");
return true;
diff --git a/plugins/Referrers/Columns/Campaign.php b/plugins/Referrers/Columns/Campaign.php
index c34daebf90..c5fd824a33 100644
--- a/plugins/Referrers/Columns/Campaign.php
+++ b/plugins/Referrers/Columns/Campaign.php
@@ -23,14 +23,8 @@ class Campaign extends Base
*
* @var bool
*/
- protected $createNewVisitWhenCampaignChanges;
protected $nameSingular = 'Referrers_ColumnCampaign';
- public function __construct()
- {
- $this->createNewVisitWhenCampaignChanges = TrackerConfig::getConfigValue('create_new_visit_when_campaign_changes') == 1;
- }
-
/**
* If we should create a new visit when the campaign changes, check if the campaign info changed and if so
* force the tracker to create a new visit.i
@@ -42,7 +36,7 @@ class Campaign extends Base
*/
public function shouldForceNewVisit(Request $request, Visitor $visitor, Action $action = null)
{
- if (!$this->createNewVisitWhenCampaignChanges) {
+ if (TrackerConfig::getConfigValue('create_new_visit_when_campaign_changes', $request->getIdSiteIfExists()) != 1) {
return false;
}
diff --git a/plugins/Referrers/Columns/Website.php b/plugins/Referrers/Columns/Website.php
index da693f1674..73aa5bcbed 100644
--- a/plugins/Referrers/Columns/Website.php
+++ b/plugins/Referrers/Columns/Website.php
@@ -20,22 +20,9 @@ class Website extends Base
protected $type = self::TYPE_TEXT;
protected $nameSingular = 'General_Website';
- /**
- * Set using the `[Tracker] create_new_visit_when_website_referrer_changes` INI config option.
- * If true, will force new visits if the referrer website changes.
- *
- * @var bool
- */
- protected $createNewVisitWhenWebsiteReferrerChanges;
-
- public function __construct()
- {
- $this->createNewVisitWhenWebsiteReferrerChanges = TrackerConfig::getConfigValue('create_new_visit_when_website_referrer_changes') == 1;
- }
-
public function shouldForceNewVisit(Request $request, Visitor $visitor, Action $action = null)
{
- if (!$this->createNewVisitWhenWebsiteReferrerChanges) {
+ if (TrackerConfig::getConfigValue('create_new_visit_when_website_referrer_changes', $request->getIdSiteIfExists()) != 1) {
return false;
}
diff --git a/tests/PHPUnit/Unit/Tracker/RequestSetTest.php b/tests/PHPUnit/Unit/Tracker/RequestSetTest.php
index 43bcecee4e..4773478b64 100644
--- a/tests/PHPUnit/Unit/Tracker/RequestSetTest.php
+++ b/tests/PHPUnit/Unit/Tracker/RequestSetTest.php
@@ -8,6 +8,7 @@
namespace Piwik\Tests\Unit\Tracker;
+use Piwik\Tests\Framework\TestCase\UnitTestCase;
use Piwik\Tracker\Request;
use Piwik\Tracker\RequestSet;
@@ -15,7 +16,7 @@ use Piwik\Tracker\RequestSet;
* @group RequestSetTest
* @group Tracker
*/
-class RequestSetTest extends \PHPUnit\Framework\TestCase
+class RequestSetTest extends UnitTestCase
{
/**
* @var TestRequestSet
diff --git a/tests/PHPUnit/Unit/Tracker/TrackerConfigTest.php b/tests/PHPUnit/Unit/Tracker/TrackerConfigTest.php
new file mode 100644
index 0000000000..e2ac9fe363
--- /dev/null
+++ b/tests/PHPUnit/Unit/Tracker/TrackerConfigTest.php
@@ -0,0 +1,32 @@
+<?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\Tests\Unit\Tracker;
+
+use Piwik\Config;
+use Piwik\Tests\Framework\TestCase\UnitTestCase;
+use Piwik\Tracker\TrackerConfig;
+
+class TrackerConfigTest extends UnitTestCase
+{
+ public function test_getConfigValue_returnsTrackerConfigValue_ifNoSiteSpecificValue()
+ {
+ Config::getInstance()->Tracker['setting'] = 1;
+ Config::getInstance()->Tracker_10['setting'] = 0;
+
+ $this->assertEquals(1, TrackerConfig::getConfigValue('setting', 5));
+ }
+
+ public function test_getConfigValue_returnsSiteSpecificConfigValue_ifOneIsSpecified()
+ {
+ Config::getInstance()->Tracker['setting'] = 1;
+ Config::getInstance()->Tracker_10['setting'] = 0;
+
+ $this->assertEquals(0, TrackerConfig::getConfigValue('setting', 10));
+ }
+} \ No newline at end of file