diff options
author | Peter Zhang <peter@innocraft.com> | 2022-10-14 14:28:11 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-14 14:28:11 +0300 |
commit | 13c828a21b510d6ca46a1d16dc7968faaf8e1913 (patch) | |
tree | 03c9771665aa94a96d9955d7381e731f9e5a963b | |
parent | e504e67687ba0481c53e72e0f8759bbcfc0076cf (diff) |
allow empty excludedReferrers on the global setting (#19834)
* allow emply excludedReferrers
allow emply excludedReferrers
* add some tests for set refer and update isLookLikeUrl function
add some tests for set refer and update isLookLikeUrl function
* update phpcs
update phpcs
* revert Urlhelper, implement in api
revert Urlhelper, implement in api
* remove filter_var tests
remove filter_var tests
* fix code indent
Co-authored-by: sgiehl <stefan@matomo.org>
-rw-r--r-- | core/UrlHelper.php | 2 | ||||
-rw-r--r-- | plugins/SitesManager/API.php | 10 | ||||
-rw-r--r-- | plugins/SitesManager/tests/Integration/ApiTest.php | 29 |
3 files changed, 35 insertions, 6 deletions
diff --git a/core/UrlHelper.php b/core/UrlHelper.php index 94c8ff9d55..1e51828977 100644 --- a/core/UrlHelper.php +++ b/core/UrlHelper.php @@ -50,7 +50,7 @@ class UrlHelper } return false; } - + /** * Converts an array of query parameter name/value mappings into a query string. * Parameters that are in `$parametersToExclude` will not appear in the result. diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php index 77d080b241..493d6656cc 100644 --- a/plugins/SitesManager/API.php +++ b/plugins/SitesManager/API.php @@ -12,22 +12,23 @@ namespace Piwik\Plugins\SitesManager; use DateTimeZone; use Exception; +use Matomo\Network\IPUtils; use Piwik\Access; use Piwik\Common; use Piwik\Container\StaticContainer; +use Piwik\DataAccess\Model as CoreModel; use Piwik\Date; use Piwik\Exception\UnexpectedWebsiteFoundException; use Piwik\Intl\Data\Provider\CurrencyDataProvider; -use Matomo\Network\IPUtils; use Piwik\Option; use Piwik\Piwik; use Piwik\Plugin\SettingsProvider; use Piwik\Plugins\CorePluginsAdmin\SettingsMetadata; use Piwik\Plugins\WebsiteMeasurable\Settings\Urls; -use Piwik\Settings\Measurable\MeasurableProperty; -use Piwik\Settings\Measurable\MeasurableSettings; use Piwik\ProxyHttp; use Piwik\Scheduler\Scheduler; +use Piwik\Settings\Measurable\MeasurableProperty; +use Piwik\Settings\Measurable\MeasurableSettings; use Piwik\SettingsPiwik; use Piwik\SettingsServer; use Piwik\Site; @@ -36,7 +37,6 @@ use Piwik\Tracker\TrackerCodeGenerator; use Piwik\Translation\Translator; use Piwik\Url; use Piwik\UrlHelper; -use Piwik\DataAccess\Model as CoreModel; /** * The SitesManager API gives you full control on Websites in Matomo (create, update and delete), and many methods to retrieve websites based on various attributes. @@ -1155,7 +1155,7 @@ class API extends \Piwik\Plugin\API $excludedUrls = $this->checkAndReturnCommaSeparatedStringList($excludedReferrers); - foreach (explode(',', $excludedUrls) ?: [] as $url) { + foreach (!empty($excludedUrls) ? explode(',', $excludedUrls) : [] as $url) { // We allow urls to be provided: // - fully qualified like http://example.url/path // - without protocol like example.url/path diff --git a/plugins/SitesManager/tests/Integration/ApiTest.php b/plugins/SitesManager/tests/Integration/ApiTest.php index 1d324a2a33..083132f1e9 100644 --- a/plugins/SitesManager/tests/Integration/ApiTest.php +++ b/plugins/SitesManager/tests/Integration/ApiTest.php @@ -10,6 +10,7 @@ namespace Piwik\Plugins\SitesManager\tests\Integration; use Piwik\Container\StaticContainer; +use Piwik\Option; use Piwik\Piwik; use Piwik\Plugin; use Piwik\Plugins\MobileAppMeasurable; @@ -1527,6 +1528,34 @@ class ApiTest extends IntegrationTestCase $this->assertEquals($resultWanted, $sites); } + + public function testSetGlobalExcludedReferrersWithEmptyValue() + { + API::getInstance()->setGlobalExcludedReferrers(''); + $excludedReferrers = Option::get('SitesManager_ExcludedReferrersGlobal'); + $this->assertEquals('', $excludedReferrers); + } + + public function testSetGlobalExcludedReferrersWithValidValue() + { + API::getInstance()->setGlobalExcludedReferrers('example.com'); + $excludedReferrers = Option::get('SitesManager_ExcludedReferrersGlobal'); + $this->assertEquals('example.com', $excludedReferrers); + + + API::getInstance()->setGlobalExcludedReferrers('.example.com'); + $excludedReferrers = Option::get('SitesManager_ExcludedReferrersGlobal'); + $this->assertEquals('.example.com', $excludedReferrers); + + + API::getInstance()->setGlobalExcludedReferrers('http://example.com/path'); + $excludedReferrers = Option::get('SitesManager_ExcludedReferrersGlobal'); + $this->assertEquals('http://example.com/path', $excludedReferrers); + + } + + + public function provideContainerConfig() { return [ |