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:
authorStefan Giehl <stefan@matomo.org>2022-06-30 12:58:26 +0300
committerGitHub <noreply@github.com>2022-06-30 12:58:26 +0300
commit92896ae6d1814d8d084238e554c84836cfbb1b98 (patch)
treecefe9f6003e1b591cef2d5647a69b577daa2ee12 /plugins
parentd563063fe39b3275f7dba9a3bd194f3b8b44a056 (diff)
Provide possibility to configure referrer exclusion list (#19302)
* Adds database column to store referrer exclusion * Adds global setting for referrer exclusion * Adds measurable setting to configure excluded referrers * adjust SitesManager tests * Implement referrer exclusion * Make referrer exclusion code easier to understand * fix tests * Adds validation for referrer exclusion * fix test * Implement referrer exclusion in tracker js * rebuilt tracker js * Adds some javascript tests * ensure setIgnoredReferrers is executed before tracking * adjust wording to excluded referrers (instead of ignored) * ignore www subdomain in javascript * Included excluded referrer in tracking code generator * Don't require protocol for excluded referrers and add better description * built vue files * update expected test files * updates expected UI files * add changelog * removes unused variable * Allow wildcard subdomains * updates expected test files * apply review feedback * Fix typo Co-authored-by: sgiehl <sgiehl@users.noreply.github.com> Co-authored-by: Ben Burgess <88810029+bx80@users.noreply.github.com>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js76
-rw-r--r--plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js10
-rw-r--r--plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue24
-rw-r--r--plugins/IntranetMeasurable/tests/UI/expected-screenshots/IntranetMeasurable_intranet_create.png4
-rw-r--r--plugins/Referrers/Columns/Base.php100
-rw-r--r--plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php104
-rw-r--r--plugins/Referrers/tests/System/expected/test_phpSerialized8__Referrers.getReferrerType_year.original2
-rw-r--r--plugins/Referrers/tests/System/expected/test_phpSerialized__Referrers.getReferrerType_year.originalbin3718 -> 3751 bytes
-rw-r--r--plugins/SitesManager/API.php340
-rw-r--r--plugins/SitesManager/Controller.php13
-rw-r--r--plugins/SitesManager/SiteUrls.php61
-rw-r--r--plugins/SitesManager/SitesManager.php24
-rw-r--r--plugins/SitesManager/lang/en.json7
-rw-r--r--plugins/SitesManager/tests/Fixtures/ManySites.php20
-rw-r--r--plugins/SitesManager/tests/Integration/ApiTest.php649
-rw-r--r--plugins/SitesManager/tests/Integration/ModelTest.php62
-rw-r--r--plugins/SitesManager/tests/Integration/SiteUrlsTest.php289
-rw-r--r--plugins/SitesManager/tests/Integration/SitesManagerTest.php29
-rw-r--r--plugins/SitesManager/tests/Integration/TrackingTest.php13
-rw-r--r--plugins/SitesManager/tests/System/ApiTest.php70
-rw-r--r--plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getPatternMatchSites.xml11
-rw-r--r--plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getSiteSettings.xml20
-rw-r--r--plugins/SitesManager/tests/System/expected/test_SitesManagerwithLimit__SitesManager.getPatternMatchSites.xml2
-rw-r--r--plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_global_settings.png4
-rw-r--r--plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png4
-rw-r--r--plugins/SitesManager/tests/Unit/APITest.php25
-rw-r--r--plugins/SitesManager/tests/Unit/GuessSiteTypeAndGtmTest.php11
-rw-r--r--plugins/SitesManager/vue/dist/SitesManager.umd.js100
-rw-r--r--plugins/SitesManager/vue/dist/SitesManager.umd.min.js16
-rw-r--r--plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettings.ts1
-rw-r--r--plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts3
-rw-r--r--plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue40
-rw-r--r--plugins/WebsiteMeasurable/MeasurableSettings.php139
33 files changed, 1442 insertions, 831 deletions
diff --git a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js
index d8162b2447..cf2e6107c0 100644
--- a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js
+++ b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js
@@ -1018,58 +1018,58 @@ SmtpSettingsvue_type_script_lang_ts.render = SmtpSettingsvue_type_template_id_a9
},
directiveName: 'matomoSmtpSettings'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=589b17b8
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=ab152b6e
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_1 = {
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_1 = {
id: "js-code-options"
};
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_4 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_5 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_4 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_5 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_8 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_8 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_10 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_10 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_11 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_11 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_13 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_13 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/",
target: "_blank",
rel: "noopener"
}, "WordPress", -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/",
target: "_blank",
rel: "noopener"
}, "Squarespace", -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/",
target: "_blank",
rel: "noopener"
}, "Wix", -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
var _hoisted_20 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/how-to-install/faq_19424/",
@@ -1195,7 +1195,7 @@ var _hoisted_58 = {
var _hoisted_59 = {
class: "col s12"
};
-function JsTrackingCodeGeneratorvue_type_template_id_589b17b8_render(_ctx, _cache, $props, $setup, $data, $options) {
+function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
@@ -1207,15 +1207,15 @@ function JsTrackingCodeGeneratorvue_type_template_id_589b17b8_render(_ctx, _cach
"content-title": _ctx.translate('CoreAdminHome_JavaScriptTracking')
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro1')) + " ", 1), JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_2, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro2')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro1')) + " ", 1), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_2, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro2')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.jsTrackingIntro3a)
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(' ' + _ctx.jsTrackingIntro3b)
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_5), JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_6, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_5), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_6, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.jsTrackingIntro4a)
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_8), JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_9, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_8), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_9, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.jsTrackingIntro5)
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_11), JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_12, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_InstallationGuides')) + " : ", 1), JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_14, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_15, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_16, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_17, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_18, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_19, _hoisted_20, _hoisted_21, _hoisted_22, _hoisted_23, _hoisted_24, _hoisted_25, _hoisted_26]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_11), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_12, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_InstallationGuides')) + " : ", 1), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_14, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_15, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_16, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_17, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_18, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_19, _hoisted_20, _hoisted_21, _hoisted_22, _hoisted_23, _hoisted_24, _hoisted_25, _hoisted_26]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "site",
name: "js-tracker-website",
class: "jsTrackingCodeWebsite",
@@ -1414,7 +1414,7 @@ function JsTrackingCodeGeneratorvue_type_template_id_589b17b8_render(_ctx, _cach
_: 1
}, 8, ["content-title"]);
}
-// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=589b17b8
+// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=ab152b6e
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=script&lang=ts
@@ -1454,6 +1454,7 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
isLoading: false,
siteUrls: {},
siteExcludedQueryParams: {},
+ siteExcludedReferrers: {},
crossDomain: false,
groupByDomain: false,
trackAllAliases: false,
@@ -1523,6 +1524,21 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
}));
}
+ if (!this.siteExcludedReferrers[idSite]) {
+ this.isLoading = true;
+ promises.push(external_CoreHome_["AjaxHelper"].fetch({
+ module: 'API',
+ method: 'SitesManager.getExcludedReferrers',
+ idSite: idSite,
+ filter_limit: '-1'
+ }).then(function (data) {
+ _this.siteExcludedReferrers[idSite] = [];
+ Object.values(data || []).forEach(function (referrer) {
+ _this.siteExcludedReferrers[idSite].push(referrer.replace(/^https?:\/\//, ''));
+ });
+ }));
+ }
+
Promise.all(promises).then(function () {
_this.isLoading = false;
@@ -1570,6 +1586,10 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
params.excludedQueryParams = this.siteExcludedQueryParams[site.id];
}
+ if (this.siteExcludedReferrers[site.id]) {
+ params.excludedReferrers = this.siteExcludedReferrers[site.id];
+ }
+
if (this.useCustomCampaignParams) {
params.customCampaignNameQueryParam = this.customCampaignName;
params.customCampaignKeywordParam = this.customCampaignKeyword;
@@ -1694,7 +1714,7 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
-JsTrackingCodeGeneratorvue_type_script_lang_ts.render = JsTrackingCodeGeneratorvue_type_template_id_589b17b8_render
+JsTrackingCodeGeneratorvue_type_script_lang_ts.render = JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render
/* harmony default export */ var JsTrackingCodeGenerator = (JsTrackingCodeGeneratorvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.adapter.ts
diff --git a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js
index 43ed78a9bb..ca6d66fbb6 100644
--- a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js
+++ b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js
@@ -1,28 +1,28 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CoreAdminHome"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CoreAdminHome"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(o,a,function(t){return e[t]}.bind(null,a));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CoreAdminHome/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ArchivingSettings",(function(){return E})),n.d(t,"BrandingSettings",(function(){return Y})),n.d(t,"SmtpSettings",(function(){return te})),n.d(t,"JsTrackingCodeGenerator",(function(){return bt})),n.d(t,"ImageTrackingCodeGenerator",(function(){return Gt})),n.d(t,"TrackingFailures",(function(){return bn})),"undefined"!==typeof window){var o=window.document.currentScript,a=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}var r=n("19dc"),i=n("8bbf"),l={class:"form-group row"},c={class:"col s12"},s={class:"col s12 m6"},d={class:"form-description",style:{"margin-left":"4px"}},u={for:"enableBrowserTriggerArchiving2"},m=["innerHTML"],g={class:"col s12 m6"},p=["innerHTML"],b={class:"form-group row"},h={class:"col s12"},j={class:"input-field col s12 m6"},v=["disabled"],f={class:"form-description"},O={class:"col s12 m6"},C={key:0,class:"form-help"},k={key:0},V=Object(i["createElementVNode"])("br",null,null,-1),S=Object(i["createElementVNode"])("br",null,null,-1),N=Object(i["createElementVNode"])("br",null,null,-1);function y(e,t,n,o,a,r){var y=Object(i["resolveComponent"])("SaveButton"),T=Object(i["resolveComponent"])("ContentBlock");return Object(i["openBlock"])(),Object(i["createBlock"])(T,{"content-title":e.translate("CoreAdminHome_ArchivingSettings"),anchor:"archivingSettings",class:"matomo-archiving-settings"},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("div",l,[Object(i["createElementVNode"])("h3",c,Object(i["toDisplayString"])(e.translate("General_AllowPiwikArchivingToTriggerBrowser")),1),Object(i["createElementVNode"])("div",s,[Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving1",name:"enableBrowserTriggerArchiving",value:"1","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_Yes")),1),Object(i["createElementVNode"])("span",d,Object(i["toDisplayString"])(e.translate("General_Default")),1)])]),Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",u,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving2",name:"enableBrowserTriggerArchiving",value:"0","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_No")),1),Object(i["createElementVNode"])("span",{class:"form-description",innerHTML:e.$sanitize(e.archivingTriggerDesc),style:{"margin-left":"4px"}},null,8,m)])])]),Object(i["createElementVNode"])("div",g,[Object(i["createElementVNode"])("div",{class:"form-help",innerHTML:e.$sanitize(e.archivingInlineHelp)},null,8,p)])]),Object(i["createElementVNode"])("div",b,[Object(i["createElementVNode"])("h3",h,Object(i["toDisplayString"])(e.translate("General_ReportsContainingTodayWillBeProcessedAtMostEvery")),1),Object(i["createElementVNode"])("div",j,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.todayArchiveTimeToLiveValue=t}),id:"todayArchiveTimeToLive",disabled:!e.isGeneralSettingsAdminEnabled},null,8,v),[[i["vModelText"],e.todayArchiveTimeToLiveValue]]),Object(i["createElementVNode"])("span",f,Object(i["toDisplayString"])(e.translate("General_RearchiveTimeIntervalOnlyForTodayReports")),1)]),Object(i["createElementVNode"])("div",O,[e.isGeneralSettingsAdminEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",C,[e.showWarningCron?(Object(i["openBlock"])(),Object(i["createElementBlock"])("strong",k,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("General_NewReportsWillBeProcessedByCron")),1),V,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_ReportsWillBeProcessedAtMostEveryHour"))+" "+Object(i["toDisplayString"])(e.translate("General_IfArchivingIsFastYouCanSetupCronRunMoreOften")),1),S])):Object(i["createCommentVNode"])("",!0),Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_SmallTrafficYouCanLeaveDefault",e.todayArchiveTimeToLiveDefault))+" ",1),N,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_MediumToHighTrafficItIsRecommendedTo",1800,3600)),1)])):Object(i["createCommentVNode"])("",!0)])]),Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(y,{saving:e.isLoading,onConfirm:t[3]||(t[3]=function(t){return e.save()})},null,8,["saving"])])])]})),_:1},8,["content-title"])}var T=n("a5a2"),A=Object(i["defineComponent"])({props:{enableBrowserTriggerArchiving:Boolean,showSegmentArchiveTriggerInfo:Boolean,isGeneralSettingsAdminEnabled:Boolean,showWarningCron:Boolean,todayArchiveTimeToLive:Number,todayArchiveTimeToLiveDefault:Number},components:{ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},data:function(){return{isLoading:!1,enableBrowserTriggerArchivingValue:this.enableBrowserTriggerArchiving?1:0,todayArchiveTimeToLiveValue:this.todayArchiveTimeToLive}},watch:{enableBrowserTriggerArchiving:function(e){this.enableBrowserTriggerArchivingValue=e?1:0},todayArchiveTimeToLive:function(e){this.todayArchiveTimeToLiveValue=e}},computed:{archivingTriggerDesc:function(){var e="";return e+=Object(r["translate"])("General_ArchivingTriggerDescription",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),this.showSegmentArchiveTriggerInfo&&(e+=Object(r["translate"])("General_ArchivingTriggerSegment")),e},archivingInlineHelp:function(){var e=Object(r["translate"])("General_ArchivingInlineHelp");return e+="<br/>",e+=Object(r["translate"])("General_SeeTheOfficialDocumentationForMoreInformation",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),e}},methods:{save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setArchiveSettings"},{enableBrowserTriggerArchiving:this.enableBrowserTriggerArchivingValue,todayArchiveTimeToLive:this.todayArchiveTimeToLiveValue}).then((function(){e.isLoading=!1;var t=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(t)})).finally((function(){e.isLoading=!1}))}}});A.render=y;var E=A,w=(Object(r["createAngularJsAdapter"])({component:E,scope:{enableBrowserTriggerArchiving:{angularJsBind:"<"},showSegmentArchiveTriggerInfo:{angularJsBind:"<"},isGeneralSettingsAdminEnabled:{angularJsBind:"<"},showWarningCron:{angularJsBind:"<"},todayArchiveTimeToLive:{angularJsBind:"<"},todayArchiveTimeToLiveDefault:{angularJsBind:"<"}},directiveName:"matomoArchivingSettings"}),{id:"logoSettings"}),_={id:"logoUploadForm",ref:"logoUploadForm",method:"post",enctype:"multipart/form-data",action:"index.php?module=CoreAdminHome&format=json&action=uploadCustomLogo"},H={key:0},D=["value"],B=Object(i["createElementVNode"])("input",{type:"hidden",name:"force_api_session",value:"1"},null,-1),L={key:0},U={key:0,class:"alert alert-warning uploaderror"},x={class:"row"},F={class:"col s12"},I=["src"],G={class:"row"},P={class:"col s12"},M=["src"],J={key:1},q=["innerHTML"],R={key:1},W={class:"alert alert-warning"};
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CoreAdminHome"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CoreAdminHome"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(o,a,function(t){return e[t]}.bind(null,a));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CoreAdminHome/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ArchivingSettings",(function(){return E})),n.d(t,"BrandingSettings",(function(){return Y})),n.d(t,"SmtpSettings",(function(){return te})),n.d(t,"JsTrackingCodeGenerator",(function(){return bt})),n.d(t,"ImageTrackingCodeGenerator",(function(){return Gt})),n.d(t,"TrackingFailures",(function(){return bn})),"undefined"!==typeof window){var o=window.document.currentScript,a=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}var r=n("19dc"),i=n("8bbf"),l={class:"form-group row"},c={class:"col s12"},s={class:"col s12 m6"},d={class:"form-description",style:{"margin-left":"4px"}},u={for:"enableBrowserTriggerArchiving2"},m=["innerHTML"],g={class:"col s12 m6"},p=["innerHTML"],b={class:"form-group row"},h={class:"col s12"},j={class:"input-field col s12 m6"},v=["disabled"],f={class:"form-description"},O={class:"col s12 m6"},C={key:0,class:"form-help"},k={key:0},V=Object(i["createElementVNode"])("br",null,null,-1),S=Object(i["createElementVNode"])("br",null,null,-1),N=Object(i["createElementVNode"])("br",null,null,-1);function y(e,t,n,o,a,r){var y=Object(i["resolveComponent"])("SaveButton"),T=Object(i["resolveComponent"])("ContentBlock");return Object(i["openBlock"])(),Object(i["createBlock"])(T,{"content-title":e.translate("CoreAdminHome_ArchivingSettings"),anchor:"archivingSettings",class:"matomo-archiving-settings"},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("div",l,[Object(i["createElementVNode"])("h3",c,Object(i["toDisplayString"])(e.translate("General_AllowPiwikArchivingToTriggerBrowser")),1),Object(i["createElementVNode"])("div",s,[Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving1",name:"enableBrowserTriggerArchiving",value:"1","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_Yes")),1),Object(i["createElementVNode"])("span",d,Object(i["toDisplayString"])(e.translate("General_Default")),1)])]),Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",u,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving2",name:"enableBrowserTriggerArchiving",value:"0","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_No")),1),Object(i["createElementVNode"])("span",{class:"form-description",innerHTML:e.$sanitize(e.archivingTriggerDesc),style:{"margin-left":"4px"}},null,8,m)])])]),Object(i["createElementVNode"])("div",g,[Object(i["createElementVNode"])("div",{class:"form-help",innerHTML:e.$sanitize(e.archivingInlineHelp)},null,8,p)])]),Object(i["createElementVNode"])("div",b,[Object(i["createElementVNode"])("h3",h,Object(i["toDisplayString"])(e.translate("General_ReportsContainingTodayWillBeProcessedAtMostEvery")),1),Object(i["createElementVNode"])("div",j,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.todayArchiveTimeToLiveValue=t}),id:"todayArchiveTimeToLive",disabled:!e.isGeneralSettingsAdminEnabled},null,8,v),[[i["vModelText"],e.todayArchiveTimeToLiveValue]]),Object(i["createElementVNode"])("span",f,Object(i["toDisplayString"])(e.translate("General_RearchiveTimeIntervalOnlyForTodayReports")),1)]),Object(i["createElementVNode"])("div",O,[e.isGeneralSettingsAdminEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",C,[e.showWarningCron?(Object(i["openBlock"])(),Object(i["createElementBlock"])("strong",k,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("General_NewReportsWillBeProcessedByCron")),1),V,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_ReportsWillBeProcessedAtMostEveryHour"))+" "+Object(i["toDisplayString"])(e.translate("General_IfArchivingIsFastYouCanSetupCronRunMoreOften")),1),S])):Object(i["createCommentVNode"])("",!0),Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_SmallTrafficYouCanLeaveDefault",e.todayArchiveTimeToLiveDefault))+" ",1),N,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_MediumToHighTrafficItIsRecommendedTo",1800,3600)),1)])):Object(i["createCommentVNode"])("",!0)])]),Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(y,{saving:e.isLoading,onConfirm:t[3]||(t[3]=function(t){return e.save()})},null,8,["saving"])])])]})),_:1},8,["content-title"])}var T=n("a5a2"),A=Object(i["defineComponent"])({props:{enableBrowserTriggerArchiving:Boolean,showSegmentArchiveTriggerInfo:Boolean,isGeneralSettingsAdminEnabled:Boolean,showWarningCron:Boolean,todayArchiveTimeToLive:Number,todayArchiveTimeToLiveDefault:Number},components:{ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},data:function(){return{isLoading:!1,enableBrowserTriggerArchivingValue:this.enableBrowserTriggerArchiving?1:0,todayArchiveTimeToLiveValue:this.todayArchiveTimeToLive}},watch:{enableBrowserTriggerArchiving:function(e){this.enableBrowserTriggerArchivingValue=e?1:0},todayArchiveTimeToLive:function(e){this.todayArchiveTimeToLiveValue=e}},computed:{archivingTriggerDesc:function(){var e="";return e+=Object(r["translate"])("General_ArchivingTriggerDescription",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),this.showSegmentArchiveTriggerInfo&&(e+=Object(r["translate"])("General_ArchivingTriggerSegment")),e},archivingInlineHelp:function(){var e=Object(r["translate"])("General_ArchivingInlineHelp");return e+="<br/>",e+=Object(r["translate"])("General_SeeTheOfficialDocumentationForMoreInformation",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),e}},methods:{save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setArchiveSettings"},{enableBrowserTriggerArchiving:this.enableBrowserTriggerArchivingValue,todayArchiveTimeToLive:this.todayArchiveTimeToLiveValue}).then((function(){e.isLoading=!1;var t=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(t)})).finally((function(){e.isLoading=!1}))}}});A.render=y;var E=A,w=(Object(r["createAngularJsAdapter"])({component:E,scope:{enableBrowserTriggerArchiving:{angularJsBind:"<"},showSegmentArchiveTriggerInfo:{angularJsBind:"<"},isGeneralSettingsAdminEnabled:{angularJsBind:"<"},showWarningCron:{angularJsBind:"<"},todayArchiveTimeToLive:{angularJsBind:"<"},todayArchiveTimeToLiveDefault:{angularJsBind:"<"}},directiveName:"matomoArchivingSettings"}),{id:"logoSettings"}),_={id:"logoUploadForm",ref:"logoUploadForm",method:"post",enctype:"multipart/form-data",action:"index.php?module=CoreAdminHome&format=json&action=uploadCustomLogo"},H={key:0},D=["value"],B=Object(i["createElementVNode"])("input",{type:"hidden",name:"force_api_session",value:"1"},null,-1),L={key:0},x={key:0,class:"alert alert-warning uploaderror"},U={class:"row"},F={class:"col s12"},I=["src"],G={class:"row"},P={class:"col s12"},M=["src"],J={key:1},q=["innerHTML"],R={key:1},W={class:"alert alert-warning"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function $(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_BrandingSettings"),anchor:"brandingSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_CustomLogoHelpText")),1),Object(i["createVNode"])(l,{name:"useCustomLogo",uicontrol:"checkbox","model-value":e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onUseCustomLogoChange(t)}),title:e.translate("CoreAdminHome_UseCustomLogo"),"inline-help":e.help},null,8,["model-value","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",w,[Object(i["createElementVNode"])("form",_,[e.fileUploadEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",H,[Object(i["createElementVNode"])("input",{type:"hidden",name:"token_auth",value:e.tokenAuth},null,8,D),B,e.logosWriteable?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",L,[Object(i["createVNode"])(i["Transition"],{name:"fade-out"},{default:Object(i["withCtx"])((function(){return[e.showUploadError?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",U,Object(i["toDisplayString"])(e.translate("CoreAdminHome_LogoUploadFailed")),1)):Object(i["createCommentVNode"])("",!0)]})),_:1}),Object(i["createVNode"])(l,{uicontrol:"file",name:"customLogo","model-value":e.customLogo,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onCustomLogoChange(t)}),title:e.translate("CoreAdminHome_LogoUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","110")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",x,[Object(i["createElementVNode"])("div",F,[Object(i["createElementVNode"])("img",{src:e.pathUserLogoWithBuster,id:"currentLogo",style:{"max-height":"150px"},ref:"currentLogo"},null,8,I)])]),Object(i["createVNode"])(l,{uicontrol:"file",name:"customFavicon","model-value":e.customFavicon,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.onFaviconChange(t)}),title:e.translate("CoreAdminHome_FaviconUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","16")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",G,[Object(i["createElementVNode"])("div",P,[Object(i["createElementVNode"])("img",{src:e.pathUserFaviconWithBuster,id:"currentFavicon",width:"16",height:"16",ref:"currentFavicon"},null,8,M)])])])):Object(i["createCommentVNode"])("",!0),e.logosWriteable?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",J,[Object(i["createElementVNode"])("div",{class:"alert alert-warning",innerHTML:e.$sanitize(e.logosNotWriteableWarning)},null,8,q)]))])):Object(i["createCommentVNode"])("",!0),e.fileUploadEnabled?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",R,[Object(i["createElementVNode"])("div",W,Object(i["toDisplayString"])(e.translate("CoreAdminHome_FileUploadDisabled","file_uploads=1")),1)]))],512)],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[3]||(t[3]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var K=window,z=K.$,Q=Object(i["defineComponent"])({props:{fileUploadEnabled:{type:Boolean,required:!0},logosWriteable:{type:Boolean,required:!0},useCustomLogo:{type:Boolean,required:!0},pathUserLogoDirectory:{type:String,required:!0},pathUserLogo:{type:String,required:!0},pathUserLogoSmall:{type:String,required:!0},pathUserLogoSvg:{type:String,required:!0},hasUserLogo:{type:Boolean,required:!0},pathUserFavicon:{type:String,required:!0},hasUserFavicon:{type:Boolean,required:!0},isPluginsAdminEnabled:{type:Boolean,required:!0}},components:{Field:T["Field"],ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},data:function(){return{isLoading:!1,enabled:this.useCustomLogo,customLogo:this.pathUserLogo,customFavicon:this.pathUserFavicon,showUploadError:!1,currentLogoSrcExists:this.hasUserLogo,currentFaviconSrcExists:this.hasUserFavicon,currentLogoCacheBuster:(new Date).getTime(),currentFaviconCacheBuster:(new Date).getTime()}},computed:{tokenAuth:function(){return r["Matomo"].token_auth},logosNotWriteableWarning:function(){return Object(r["translate"])("CoreAdminHome_LogoNotWriteableInstruction","<code>".concat(this.pathUserLogoDirectory,"</code><br/>"),"".concat(this.pathUserLogo,", ").concat(this.pathUserLogoSmall,", ").concat(this.pathUserLogoSvg))},help:function(){if(this.isPluginsAdminEnabled){var e='"'.concat(Object(r["translate"])("General_GiveUsYourFeedback"),'"'),t='<a href="?module=CorePluginsAdmin&action=plugins" rel="noreferrer noopener" target="_blank">';return Object(r["translate"])("CoreAdminHome_CustomLogoFeedbackInfo",e,t,"</a>")}},pathUserLogoWithBuster:function(){return this.currentLogoSrcExists&&this.pathUserLogo?"".concat(this.pathUserLogo,"?").concat(this.currentLogoCacheBuster):""},pathUserFaviconWithBuster:function(){return this.currentFaviconSrcExists&&this.pathUserFavicon?"".concat(this.pathUserFavicon,"?").concat(this.currentFaviconCacheBuster):""}},methods:{onUseCustomLogoChange:function(e){this.enabled=e},onCustomLogoChange:function(e){this.customLogo=e,this.updateLogo()},onFaviconChange:function(e){this.customFavicon=e,this.updateLogo()},save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setBrandingSettings"},{useCustomLogo:this.enabled?"1":"0"}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))},updateLogo:function(){var e=this,t=!!this.customLogo,n=!!this.customFavicon;if(t||n){this.showUploadError=!1;var o="upload".concat((new Date).getTime()),a=z('<iframe name="'.concat(o,'" />'));a.css("display","none"),a.on("load",(function(){setTimeout((function(){var o=(z(a.contents()).find("body").html()||"").trim();"0"===o?e.showUploadError=!0:(t&&(e.currentLogoSrcExists=!0,e.currentLogoCacheBuster=(new Date).getTime()),n&&(e.currentFaviconSrcExists=!0,e.currentFaviconCacheBuster=(new Date).getTime())),"1"!==o&&"0"!==o||a.remove()}),1e3)})),z("body:first").append(a);var r=z(this.$refs.logoUploadForm);r.attr("target",o),r.submit(),this.customLogo="",this.customFavicon=""}}}});Q.render=$;var Y=Q,X=(Object(r["createAngularJsAdapter"])({component:Y,scope:{fileUploadEnabled:{angularJsBind:"<"},logosWriteable:{angularJsBind:"<"},useCustomLogo:{angularJsBind:"<"},pathUserLogoDirectory:{angularJsBind:"<"},pathUserLogo:{angularJsBind:"<"},pathUserLogoSmall:{angularJsBind:"<"},pathUserLogoSvg:{angularJsBind:"<"},hasUserLogo:{angularJsBind:"<"},pathUserFavicon:{angularJsBind:"<"},hasUserFavicon:{angularJsBind:"<"},isPluginsAdminEnabled:{angularJsBind:"<"}},directiveName:"matomoBrandingSettings"}),{id:"smtpSettings"});
+ */function $(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_BrandingSettings"),anchor:"brandingSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_CustomLogoHelpText")),1),Object(i["createVNode"])(l,{name:"useCustomLogo",uicontrol:"checkbox","model-value":e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onUseCustomLogoChange(t)}),title:e.translate("CoreAdminHome_UseCustomLogo"),"inline-help":e.help},null,8,["model-value","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",w,[Object(i["createElementVNode"])("form",_,[e.fileUploadEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",H,[Object(i["createElementVNode"])("input",{type:"hidden",name:"token_auth",value:e.tokenAuth},null,8,D),B,e.logosWriteable?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",L,[Object(i["createVNode"])(i["Transition"],{name:"fade-out"},{default:Object(i["withCtx"])((function(){return[e.showUploadError?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",x,Object(i["toDisplayString"])(e.translate("CoreAdminHome_LogoUploadFailed")),1)):Object(i["createCommentVNode"])("",!0)]})),_:1}),Object(i["createVNode"])(l,{uicontrol:"file",name:"customLogo","model-value":e.customLogo,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onCustomLogoChange(t)}),title:e.translate("CoreAdminHome_LogoUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","110")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",U,[Object(i["createElementVNode"])("div",F,[Object(i["createElementVNode"])("img",{src:e.pathUserLogoWithBuster,id:"currentLogo",style:{"max-height":"150px"},ref:"currentLogo"},null,8,I)])]),Object(i["createVNode"])(l,{uicontrol:"file",name:"customFavicon","model-value":e.customFavicon,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.onFaviconChange(t)}),title:e.translate("CoreAdminHome_FaviconUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","16")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",G,[Object(i["createElementVNode"])("div",P,[Object(i["createElementVNode"])("img",{src:e.pathUserFaviconWithBuster,id:"currentFavicon",width:"16",height:"16",ref:"currentFavicon"},null,8,M)])])])):Object(i["createCommentVNode"])("",!0),e.logosWriteable?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",J,[Object(i["createElementVNode"])("div",{class:"alert alert-warning",innerHTML:e.$sanitize(e.logosNotWriteableWarning)},null,8,q)]))])):Object(i["createCommentVNode"])("",!0),e.fileUploadEnabled?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",R,[Object(i["createElementVNode"])("div",W,Object(i["toDisplayString"])(e.translate("CoreAdminHome_FileUploadDisabled","file_uploads=1")),1)]))],512)],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[3]||(t[3]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var K=window,z=K.$,Q=Object(i["defineComponent"])({props:{fileUploadEnabled:{type:Boolean,required:!0},logosWriteable:{type:Boolean,required:!0},useCustomLogo:{type:Boolean,required:!0},pathUserLogoDirectory:{type:String,required:!0},pathUserLogo:{type:String,required:!0},pathUserLogoSmall:{type:String,required:!0},pathUserLogoSvg:{type:String,required:!0},hasUserLogo:{type:Boolean,required:!0},pathUserFavicon:{type:String,required:!0},hasUserFavicon:{type:Boolean,required:!0},isPluginsAdminEnabled:{type:Boolean,required:!0}},components:{Field:T["Field"],ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},data:function(){return{isLoading:!1,enabled:this.useCustomLogo,customLogo:this.pathUserLogo,customFavicon:this.pathUserFavicon,showUploadError:!1,currentLogoSrcExists:this.hasUserLogo,currentFaviconSrcExists:this.hasUserFavicon,currentLogoCacheBuster:(new Date).getTime(),currentFaviconCacheBuster:(new Date).getTime()}},computed:{tokenAuth:function(){return r["Matomo"].token_auth},logosNotWriteableWarning:function(){return Object(r["translate"])("CoreAdminHome_LogoNotWriteableInstruction","<code>".concat(this.pathUserLogoDirectory,"</code><br/>"),"".concat(this.pathUserLogo,", ").concat(this.pathUserLogoSmall,", ").concat(this.pathUserLogoSvg))},help:function(){if(this.isPluginsAdminEnabled){var e='"'.concat(Object(r["translate"])("General_GiveUsYourFeedback"),'"'),t='<a href="?module=CorePluginsAdmin&action=plugins" rel="noreferrer noopener" target="_blank">';return Object(r["translate"])("CoreAdminHome_CustomLogoFeedbackInfo",e,t,"</a>")}},pathUserLogoWithBuster:function(){return this.currentLogoSrcExists&&this.pathUserLogo?"".concat(this.pathUserLogo,"?").concat(this.currentLogoCacheBuster):""},pathUserFaviconWithBuster:function(){return this.currentFaviconSrcExists&&this.pathUserFavicon?"".concat(this.pathUserFavicon,"?").concat(this.currentFaviconCacheBuster):""}},methods:{onUseCustomLogoChange:function(e){this.enabled=e},onCustomLogoChange:function(e){this.customLogo=e,this.updateLogo()},onFaviconChange:function(e){this.customFavicon=e,this.updateLogo()},save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setBrandingSettings"},{useCustomLogo:this.enabled?"1":"0"}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))},updateLogo:function(){var e=this,t=!!this.customLogo,n=!!this.customFavicon;if(t||n){this.showUploadError=!1;var o="upload".concat((new Date).getTime()),a=z('<iframe name="'.concat(o,'" />'));a.css("display","none"),a.on("load",(function(){setTimeout((function(){var o=(z(a.contents()).find("body").html()||"").trim();"0"===o?e.showUploadError=!0:(t&&(e.currentLogoSrcExists=!0,e.currentLogoCacheBuster=(new Date).getTime()),n&&(e.currentFaviconSrcExists=!0,e.currentFaviconCacheBuster=(new Date).getTime())),"1"!==o&&"0"!==o||a.remove()}),1e3)})),z("body:first").append(a);var r=z(this.$refs.logoUploadForm);r.attr("target",o),r.submit(),this.customLogo="",this.customFavicon=""}}}});Q.render=$;var Y=Q,X=(Object(r["createAngularJsAdapter"])({component:Y,scope:{fileUploadEnabled:{angularJsBind:"<"},logosWriteable:{angularJsBind:"<"},useCustomLogo:{angularJsBind:"<"},pathUserLogoDirectory:{angularJsBind:"<"},pathUserLogo:{angularJsBind:"<"},pathUserLogoSmall:{angularJsBind:"<"},pathUserLogoSvg:{angularJsBind:"<"},hasUserLogo:{angularJsBind:"<"},pathUserFavicon:{angularJsBind:"<"},hasUserFavicon:{angularJsBind:"<"},isPluginsAdminEnabled:{angularJsBind:"<"}},directiveName:"matomoBrandingSettings"}),{id:"smtpSettings"});
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Z(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_EmailServerSettings"),anchor:"mailSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"mailUseSmtp",modelValue:e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enabled=t}),title:e.translate("General_UseSMTPServerForEmail"),"inline-help":e.translate("General_SelectYesIfYouWantToSendEmailsViaServer")},null,8,["modelValue","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",X,[Object(i["createVNode"])(l,{uicontrol:"text",name:"mailHost","model-value":e.mailHost,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onUpdateMailHost(t)}),title:e.translate("General_SmtpServerAddress")},null,8,["model-value","title"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailPort",modelValue:e.mailPort,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.mailPort=t}),title:e.translate("General_SmtpPort"),"inline-help":e.translate("General_OptionalSmtpPort")},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailType",modelValue:e.mailType,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.mailType=t}),title:e.translate("General_AuthenticationMethodSmtp"),options:e.mailTypes,"inline-help":e.translate("General_OnlyUsedIfUserPwdIsSet")},null,8,["modelValue","title","options","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailUsername",modelValue:e.mailUsername,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.mailUsername=t}),title:e.translate("General_SmtpUsername"),"inline-help":e.translate("General_OnlyEnterIfRequired"),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"password",name:"mailPassword","model-value":e.mailPassword,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.onMailPasswordChange(t)}),onClick:t[6]||(t[6]=function(t){!e.passwordChanged&&t.target.select()}),title:e.translate("General_SmtpPassword"),"inline-help":e.passwordHelp,autocomplete:!1},null,8,["model-value","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromAddress",modelValue:e.mailFromAddress,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.mailFromAddress=t}),title:e.translate("General_SmtpFromAddress"),"inline-help":e.translate("General_SmtpFromEmailHelp",e.mailHost),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromName",modelValue:e.mailFromName,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.mailFromName=t}),title:e.translate("General_SmtpFromName"),"inline-help":e.translate("General_NameShownInTheSenderColumn"),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailEncryption",modelValue:e.mailEncryption,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.mailEncryption=t}),title:e.translate("General_SmtpEncryption"),options:e.mailEncryptions,"inline-help":e.translate("General_EncryptedSmtpTransport")},null,8,["modelValue","title","options","inline-help"])],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[10]||(t[10]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var ee=Object(i["defineComponent"])({props:{mail:{type:Object,required:!0},mailTypes:{type:Object,required:!0},mailEncryptions:{type:Object,required:!0}},data:function(){var e=this.mail;return{isLoading:!1,enabled:"smtp"===e.transport,mailHost:e.host,passwordChanged:!1,mailPort:e.port,mailType:e.type,mailUsername:e.username,mailPassword:e.password?"******":"",mailFromAddress:e.noreply_email_address,mailFromName:e.noreply_email_name,mailEncryption:e.encryption}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},computed:{passwordHelp:function(){var e="".concat(Object(r["translate"])("General_OnlyEnterIfRequiredPassword"),"<br/>"),t="".concat(Object(r["translate"])("General_WarningPasswordStored","<strong>","</strong>"),"<br/>");return"".concat(e,"\n").concat(t)}},methods:{onUpdateMailHost:function(e){this.mailHost=e,this.passwordChanged||(this.mailPassword="",this.passwordChanged=!0)},onMailPasswordChange:function(e){this.mailPassword=e,this.passwordChanged=!0},save:function(){var e=this;this.isLoading=!0;var t={mailUseSmtp:this.enabled?"1":"0",mailPort:this.mailPort,mailHost:this.mailHost,mailType:this.mailType,mailUsername:this.mailUsername,mailFromAddress:this.mailFromAddress,mailFromName:this.mailFromName,mailEncryption:this.mailEncryption};this.passwordChanged&&(t.mailPassword=this.mailPassword),r["AjaxHelper"].post({module:"CoreAdminHome",action:"setMailSettings"},t,{withTokenInUrl:!0}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))}}});ee.render=Z;var te=ee,ne=(Object(r["createAngularJsAdapter"])({component:te,scope:{mail:{angularJsBind:"<"},mailTypes:{angularJsBind:"<"},mailEncryptions:{angularJsBind:"<"}},directiveName:"matomoSmtpSettings"}),{id:"js-code-options"}),oe=Object(i["createElementVNode"])("br",null,null,-1),ae=Object(i["createElementVNode"])("br",null,null,-1),re=["innerHTML"],ie=["innerHTML"],le=Object(i["createElementVNode"])("br",null,null,-1),ce=Object(i["createElementVNode"])("br",null,null,-1),se=["innerHTML"],de=Object(i["createElementVNode"])("br",null,null,-1),ue=Object(i["createElementVNode"])("br",null,null,-1),me=["innerHTML"],ge=Object(i["createElementVNode"])("br",null,null,-1),pe=Object(i["createElementVNode"])("br",null,null,-1),be=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/",target:"_blank",rel:"noopener"},"WordPress",-1),he=Object(i["createTextVNode"])(" | "),je=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/",target:"_blank",rel:"noopener"},"Squarespace",-1),ve=Object(i["createTextVNode"])(" | "),fe=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/",target:"_blank",rel:"noopener"},"Wix",-1),Oe=Object(i["createTextVNode"])(" | "),Ce=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/how-to-install/faq_19424/",target:"_blank",rel:"noopener"},"SharePoint",-1),ke=Object(i["createTextVNode"])(" | "),Ve=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-joomla/",target:"_blank",rel:"noopener"},"Joomla",-1),Se=Object(i["createTextVNode"])(" | "),Ne=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-my-shopify-store/",target:"_blank",rel:"noopener"},"Shopify",-1),ye=Object(i["createTextVNode"])(" | "),Te=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-use-matomo-analytics-within-gtm-google-tag-manager/",target:"_blank",rel:"noopener"},"Google Tag Manager",-1),Ae={id:"javascript-output-section"},Ee={class:"valign-wrapper trackingHelpHeader matchWidth"},we={id:"javascript-text"},_e=["textContent"],He={id:"optional-js-tracking-options"},De={id:"jsTrackAllSubdomainsInlineHelp",class:"inline-help-node"},Be=["innerHTML"],Le=["innerHTML"],Ue={id:"jsTrackGroupByDomainInlineHelp",class:"inline-help-node"},xe={id:"jsTrackAllAliasesInlineHelp",class:"inline-help-node"},Fe={id:"javascript-advanced-options"},Ie={id:"javascript-tracking-visitor-cv"},Ge={class:"row"},Pe={class:"col s12 m3"},Me={class:"col s12 m3"},Je={class:"col s12 m6 l3"},qe=["onKeydown"],Re={class:"col s12 m6 l3"},We=["onKeydown"],$e={class:"row"},Ke={class:"col s12"},ze=Object(i["createElementVNode"])("span",{class:"icon-add"},null,-1),Qe={id:"jsCrossDomain",class:"inline-help-node"},Ye=Object(i["createElementVNode"])("br",null,null,-1),Xe={id:"jsDoNotTrackInlineHelp",class:"inline-help-node"},Ze={key:0},et=Object(i["createElementVNode"])("br",null,null,-1),tt=["innerHTML"],nt={id:"js-campaign-query-param-extra"},ot={class:"row"},at={class:"col s12"},rt={class:"row"},it={class:"col s12"};
+ */function Z(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_EmailServerSettings"),anchor:"mailSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"mailUseSmtp",modelValue:e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enabled=t}),title:e.translate("General_UseSMTPServerForEmail"),"inline-help":e.translate("General_SelectYesIfYouWantToSendEmailsViaServer")},null,8,["modelValue","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",X,[Object(i["createVNode"])(l,{uicontrol:"text",name:"mailHost","model-value":e.mailHost,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onUpdateMailHost(t)}),title:e.translate("General_SmtpServerAddress")},null,8,["model-value","title"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailPort",modelValue:e.mailPort,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.mailPort=t}),title:e.translate("General_SmtpPort"),"inline-help":e.translate("General_OptionalSmtpPort")},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailType",modelValue:e.mailType,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.mailType=t}),title:e.translate("General_AuthenticationMethodSmtp"),options:e.mailTypes,"inline-help":e.translate("General_OnlyUsedIfUserPwdIsSet")},null,8,["modelValue","title","options","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailUsername",modelValue:e.mailUsername,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.mailUsername=t}),title:e.translate("General_SmtpUsername"),"inline-help":e.translate("General_OnlyEnterIfRequired"),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"password",name:"mailPassword","model-value":e.mailPassword,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.onMailPasswordChange(t)}),onClick:t[6]||(t[6]=function(t){!e.passwordChanged&&t.target.select()}),title:e.translate("General_SmtpPassword"),"inline-help":e.passwordHelp,autocomplete:!1},null,8,["model-value","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromAddress",modelValue:e.mailFromAddress,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.mailFromAddress=t}),title:e.translate("General_SmtpFromAddress"),"inline-help":e.translate("General_SmtpFromEmailHelp",e.mailHost),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromName",modelValue:e.mailFromName,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.mailFromName=t}),title:e.translate("General_SmtpFromName"),"inline-help":e.translate("General_NameShownInTheSenderColumn"),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailEncryption",modelValue:e.mailEncryption,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.mailEncryption=t}),title:e.translate("General_SmtpEncryption"),options:e.mailEncryptions,"inline-help":e.translate("General_EncryptedSmtpTransport")},null,8,["modelValue","title","options","inline-help"])],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[10]||(t[10]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var ee=Object(i["defineComponent"])({props:{mail:{type:Object,required:!0},mailTypes:{type:Object,required:!0},mailEncryptions:{type:Object,required:!0}},data:function(){var e=this.mail;return{isLoading:!1,enabled:"smtp"===e.transport,mailHost:e.host,passwordChanged:!1,mailPort:e.port,mailType:e.type,mailUsername:e.username,mailPassword:e.password?"******":"",mailFromAddress:e.noreply_email_address,mailFromName:e.noreply_email_name,mailEncryption:e.encryption}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},computed:{passwordHelp:function(){var e="".concat(Object(r["translate"])("General_OnlyEnterIfRequiredPassword"),"<br/>"),t="".concat(Object(r["translate"])("General_WarningPasswordStored","<strong>","</strong>"),"<br/>");return"".concat(e,"\n").concat(t)}},methods:{onUpdateMailHost:function(e){this.mailHost=e,this.passwordChanged||(this.mailPassword="",this.passwordChanged=!0)},onMailPasswordChange:function(e){this.mailPassword=e,this.passwordChanged=!0},save:function(){var e=this;this.isLoading=!0;var t={mailUseSmtp:this.enabled?"1":"0",mailPort:this.mailPort,mailHost:this.mailHost,mailType:this.mailType,mailUsername:this.mailUsername,mailFromAddress:this.mailFromAddress,mailFromName:this.mailFromName,mailEncryption:this.mailEncryption};this.passwordChanged&&(t.mailPassword=this.mailPassword),r["AjaxHelper"].post({module:"CoreAdminHome",action:"setMailSettings"},t,{withTokenInUrl:!0}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))}}});ee.render=Z;var te=ee,ne=(Object(r["createAngularJsAdapter"])({component:te,scope:{mail:{angularJsBind:"<"},mailTypes:{angularJsBind:"<"},mailEncryptions:{angularJsBind:"<"}},directiveName:"matomoSmtpSettings"}),{id:"js-code-options"}),oe=Object(i["createElementVNode"])("br",null,null,-1),ae=Object(i["createElementVNode"])("br",null,null,-1),re=["innerHTML"],ie=["innerHTML"],le=Object(i["createElementVNode"])("br",null,null,-1),ce=Object(i["createElementVNode"])("br",null,null,-1),se=["innerHTML"],de=Object(i["createElementVNode"])("br",null,null,-1),ue=Object(i["createElementVNode"])("br",null,null,-1),me=["innerHTML"],ge=Object(i["createElementVNode"])("br",null,null,-1),pe=Object(i["createElementVNode"])("br",null,null,-1),be=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/",target:"_blank",rel:"noopener"},"WordPress",-1),he=Object(i["createTextVNode"])(" | "),je=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/",target:"_blank",rel:"noopener"},"Squarespace",-1),ve=Object(i["createTextVNode"])(" | "),fe=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/",target:"_blank",rel:"noopener"},"Wix",-1),Oe=Object(i["createTextVNode"])(" | "),Ce=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/how-to-install/faq_19424/",target:"_blank",rel:"noopener"},"SharePoint",-1),ke=Object(i["createTextVNode"])(" | "),Ve=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-joomla/",target:"_blank",rel:"noopener"},"Joomla",-1),Se=Object(i["createTextVNode"])(" | "),Ne=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-my-shopify-store/",target:"_blank",rel:"noopener"},"Shopify",-1),ye=Object(i["createTextVNode"])(" | "),Te=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-use-matomo-analytics-within-gtm-google-tag-manager/",target:"_blank",rel:"noopener"},"Google Tag Manager",-1),Ae={id:"javascript-output-section"},Ee={class:"valign-wrapper trackingHelpHeader matchWidth"},we={id:"javascript-text"},_e=["textContent"],He={id:"optional-js-tracking-options"},De={id:"jsTrackAllSubdomainsInlineHelp",class:"inline-help-node"},Be=["innerHTML"],Le=["innerHTML"],xe={id:"jsTrackGroupByDomainInlineHelp",class:"inline-help-node"},Ue={id:"jsTrackAllAliasesInlineHelp",class:"inline-help-node"},Fe={id:"javascript-advanced-options"},Ie={id:"javascript-tracking-visitor-cv"},Ge={class:"row"},Pe={class:"col s12 m3"},Me={class:"col s12 m3"},Je={class:"col s12 m6 l3"},qe=["onKeydown"],Re={class:"col s12 m6 l3"},We=["onKeydown"],$e={class:"row"},Ke={class:"col s12"},ze=Object(i["createElementVNode"])("span",{class:"icon-add"},null,-1),Qe={id:"jsCrossDomain",class:"inline-help-node"},Ye=Object(i["createElementVNode"])("br",null,null,-1),Xe={id:"jsDoNotTrackInlineHelp",class:"inline-help-node"},Ze={key:0},et=Object(i["createElementVNode"])("br",null,null,-1),tt=["innerHTML"],nt={id:"js-campaign-query-param-extra"},ot={class:"row"},at={class:"col s12"},rt={class:"row"},it={class:"col s12"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function lt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{anchor:"javaScriptTracking","content-title":e.translate("CoreAdminHome_JavaScriptTracking")},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",ne,[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro1"))+" ",1),oe,ae,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro2"))+" ",1),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro3a)},null,8,re),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(" "+e.jsTrackingIntro3b)},null,8,ie),le,ce,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro4a)},null,8,se),de,ue,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro5)},null,8,me),ge,pe,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("SitesManager_InstallationGuides"))+" : ",1),be,he,je,ve,fe,Oe,Ce,ke,Ve,Se,Ne,ye,Te]),Object(i["createVNode"])(l,{uicontrol:"site",name:"js-tracker-website",class:"jsTrackingCodeWebsite",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createElementVNode"])("div",Ae,[Object(i["createElementVNode"])("div",Ee,[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("General_JsTrackingTag")),1),Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHead","</head>")),1)]),Object(i["createElementVNode"])("button",{class:"btn",id:"emailJsBtn",onClick:t[1]||(t[1]=function(t){return e.sendEmail()})},Object(i["toDisplayString"])(e.translate("SitesManager_EmailInstructionsButton")),1)]),Object(i["createElementVNode"])("div",we,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{class:"codeblock",textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,_e),[[s,{}]])])]),Object(i["createElementVNode"])("div",He,[Object(i["createElementVNode"])("div",De,[Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mergeSubdomainsDesc)},null,8,Be),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.learnMoreText)},null,8,Le)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-subdomains","model-value":e.trackAllSubdomains,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackAllSubdomains=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeSubdomains")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllSubdomainsInlineHelp"},null,8,["model-value","disabled","introduction","title"])]),Object(i["createElementVNode"])("div",Ue,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomainDesc1",e.currentSiteHost)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-group-by-domain","model-value":e.groupByDomain,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.groupByDomain=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomain"),"inline-help":"#jsTrackGroupByDomainInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",xe,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_MergeAliasesDesc",e.currentSiteAlias)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-aliases","model-value":e.trackAllAliases,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.trackAllAliases=t,e.updateTrackingCode()}),disabled:e.isLoading,title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeAliases")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllAliasesInlineHelp"},null,8,["model-value","disabled","title"])]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-noscript","model-value":e.trackNoScript,"onUpdate:modelValue":t[5]||(t[5]=function(t){e.trackNoScript=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_TrackNoScript")},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("Mobile_Advanced")),1),Object(i["createElementVNode"])("p",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[6]||(t[6]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!0}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Show")),513),[[i["vShow"],!e.showAdvanced]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[7]||(t[7]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!1}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Hide")),513),[[i["vShow"],e.showAdvanced]])]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Fe,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-visitor-cv-check","model-value":e.trackCustomVars,"onUpdate:modelValue":t[8]||(t[8]=function(t){e.trackCustomVars=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_VisitorCustomVars"),"inline-help":e.translate("CoreAdminHome_JSTracking_VisitorCustomVarsDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ie,[Object(i["createElementVNode"])("div",Ge,[Object(i["createElementVNode"])("div",Pe,Object(i["toDisplayString"])(e.translate("General_Name")),1),Object(i["createElementVNode"])("div",Me,Object(i["toDisplayString"])(e.translate("General_Value")),1)]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.customVars,(function(t,n){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",{class:"row",key:n},[Object(i["createElementVNode"])("div",Je,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-name",onKeydown:function(t){return e.onCustomVarNameKeydown(t,n)},placeholder:"e.g. Type"},null,40,qe)]),Object(i["createElementVNode"])("div",Re,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-value",onKeydown:function(t){return e.onCustomVarValueKeydown(t,n)},placeholder:"e.g. Customer"},null,40,We)])])})),128)),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",$e,[Object(i["createElementVNode"])("div",Ke,[Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[9]||(t[9]=function(t){return e.addCustomVar()}),class:"add-custom-variable"},[ze,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_Add")),1)])])],512),[[i["vShow"],e.canAddMoreCustomVariables]])],512),[[i["vShow"],e.trackCustomVars]]),Object(i["createElementVNode"])("div",Qe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain"))+" ",1),Ye,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain_NeedsMultipleDomains")),1)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-cross-domain","model-value":e.crossDomain,"onUpdate:modelValue":t[10]||(t[10]=function(t){e.crossDomain=t,e.updateTrackingCode(),e.onCrossDomainToggle()}),disabled:e.isLoading||!e.hasManySiteUrls,title:e.translate("CoreAdminHome_JSTracking_EnableCrossDomainLinking"),"inline-help":"#jsCrossDomain"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",Xe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrackDesc"))+" ",1),e.serverSideDoNotTrackEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",Ze,[et,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack_AlreadyEnabled")),1)])):Object(i["createCommentVNode"])("",!0)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-do-not-track","model-value":e.doNotTrack,"onUpdate:modelValue":t[11]||(t[11]=function(t){e.doNotTrack=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack"),"inline-help":"#jsDoNotTrackInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-disable-cookies","model-value":e.disableCookies,"onUpdate:modelValue":t[12]||(t[12]=function(t){e.disableCookies=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_DisableCookies"),"inline-help":e.translate("CoreAdminHome_JSTracking_DisableCookiesDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["createElementVNode"])("div",{id:"jsTrackCampaignParamsInlineHelp",class:"inline-help-node",innerHTML:e.$sanitize(e.jsTrackCampaignParamsInlineHelp)},null,8,tt),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"custom-campaign-query-params-check","model-value":e.useCustomCampaignParams,"onUpdate:modelValue":t[13]||(t[13]=function(t){e.useCustomCampaignParams=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CustomCampaignQueryParam"),"inline-help":"#jsTrackCampaignParamsInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",nt,[Object(i["createElementVNode"])("div",ot,[Object(i["createElementVNode"])("div",at,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-name-query-param","model-value":e.customCampaignName,"onUpdate:modelValue":t[14]||(t[14]=function(t){e.customCampaignName=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignNameParam")},null,8,["model-value","disabled","title"])])]),Object(i["createElementVNode"])("div",rt,[Object(i["createElementVNode"])("div",it,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-keyword-query-param","model-value":e.customCampaignKeyword,"onUpdate:modelValue":t[15]||(t[15]=function(t){e.customCampaignKeyword=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignKwdParam")},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.useCustomCampaignParams]])],512),[[i["vShow"],e.showAdvanced]])]})),_:1},8,["content-title"])}function ct(e){var t=new URL(e);return t.hostname}function st(e){return e.map((function(e){return[e.name,e.value]}))}var dt=window,ut=dt.$,mt=window.location.host,gt=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),pt=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0},maxCustomVariables:Number,serverSideDoNotTrackEnabled:Boolean},data:function(){return{showAdvanced:!1,site:this.defaultSite,trackingCode:"",trackAllSubdomains:!1,isLoading:!1,siteUrls:{},siteExcludedQueryParams:{},crossDomain:!1,groupByDomain:!1,trackAllAliases:!1,trackNoScript:!1,trackCustomVars:!1,customVars:[],canAddMoreCustomVariables:!!this.maxCustomVariables&&this.maxCustomVariables>0,doNotTrack:!1,disableCookies:!1,useCustomCampaignParams:!1,customCampaignName:"",customCampaignKeyword:"",trackingCodeAbortController:null,isHighlighting:!1}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},created:function(){this.onCustomVarNameKeydown=Object(r["debounce"])(this.onCustomVarNameKeydown,100),this.onCustomVarValueKeydown=Object(r["debounce"])(this.onCustomVarValueKeydown,100),this.addCustomVar(),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t=this,n=e.id,o=[];this.siteUrls[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteUrlsFromId",idSite:n,filter_limit:"-1"}).then((function(e){t.siteUrls[n]=e||[]})))),this.siteExcludedQueryParams[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"Overlay.getExcludedQueryParameters",idSite:n,filter_limit:"-1"}).then((function(e){t.siteExcludedQueryParams[n]=e||[]})))),Promise.all(o).then((function(){t.isLoading=!1,t.updateCurrentSiteInfo(),t.updateTrackingCode()}))},sendEmail:function(){var e=Object(r["translate"])("SitesManager_EmailInstructionsSubject");e=encodeURIComponent(e);var t=this.trackingCode;t=t.replace(/<[^>]+>/g,"");var n="".concat(Object(r["translate"])("SitesManager_JsTrackingTagHelp"),". ").concat(Object(r["translate"])("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHeadEmail","'head"),"\n").concat(t);n=encodeURIComponent(n);var o="mailto:?subject=".concat(e,"&body=").concat(n);window.location.href=o},onCrossDomainToggle:function(){this.crossDomain&&(this.trackAllAliases=!0)},updateTrackingCode:function(){var e=this,t=this.site,n={piwikUrl:"".concat(mt).concat(gt),groupPageTitlesByDomain:this.groupByDomain?1:0,mergeSubdomains:this.trackAllSubdomains?1:0,mergeAliasUrls:this.trackAllAliases?1:0,visitorCustomVariables:this.trackCustomVars?st(this.customVars):0,customCampaignNameQueryParam:null,customCampaignKeywordParam:null,doNotTrack:this.doNotTrack?1:0,disableCookies:this.disableCookies?1:0,crossDomain:this.crossDomain?1:0,trackNoScript:this.trackNoScript?1:0,forceMatomoEndpoint:1};this.siteExcludedQueryParams[t.id]&&(n.excludedQueryParams=this.siteExcludedQueryParams[t.id]),this.useCustomCampaignParams&&(n.customCampaignNameQueryParam=this.customCampaignName,n.customCampaignKeywordParam=this.customCampaignKeyword),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getJavascriptTag",idSite:t.id},n,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=ut(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))},updateCurrentSiteInfo:function(){this.hasManySiteUrls||(this.crossDomain=!1)},addCustomVar:function(){this.canAddMoreCustomVariables&&this.customVars.push({name:"",value:""}),this.canAddMoreCustomVariables=!!this.maxCustomVariables&&this.maxCustomVariables>this.customVars.length},onCustomVarNameKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].name=e.target.value,n.updateTrackingCode()}))},onCustomVarValueKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].value=e.target.value,n.updateTrackingCode()}))}},computed:{hasManySiteUrls:function(){var e=this.site;return this.siteUrls[e.id]&&this.siteUrls[e.id].length>1},currentSiteHost:function(){var e,t=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[0];return t?ct(t):""},currentSiteAlias:function(){var e,t="x.".concat(this.currentSiteHost),n=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[1];return n||t},currentSiteName:function(){return r["Matomo"].helper.htmlEntities(this.site.name)},jsTrackingIntro3a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3a",'<a href="https://matomo.org/integrate/" rel="noreferrer noopener" target="_blank">',"</a>")},jsTrackingIntro3b:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3b")},jsTrackingIntro4a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro4",'<a href="#image-tracking-link">',"</a>")},jsTrackingIntro5:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro5",'<a rel="noreferrer noopener" target="_blank" href="https://developer.matomo.org/guides/tracking-javascript-guide">',"</a>")},mergeSubdomainsDesc:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_MergeSubdomainsDesc","x.".concat(this.currentSiteHost),"y.".concat(this.currentSiteHost))},learnMoreText:function(){var e="https://developer.matomo.org/guides/tracking-javascript-guide#measuring-domains-andor-sub-domains";return Object(r["translate"])("General_LearnMore",' (<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>)")},jsTrackCampaignParamsInlineHelp:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_CustomCampaignQueryParamDesc",'<a href="https://matomo.org/faq/general/faq_119" rel="noreferrer noopener" target="_blank">',"</a>")}}});pt.render=lt;var bt=pt,ht=(Object(r["createAngularJsAdapter"])({component:bt,scope:{defaultSite:{angularJsBind:"<"},maxCustomVariables:{angularJsBind:"<"},serverSideDoNotTrackEnabled:{angularJsBind:"<"}},directiveName:"matomoJsTrackingCodeGenerator"}),Object(i["createElementVNode"])("a",{name:"image-tracking-link"},null,-1)),jt={id:"image-tracking-code-options"},vt=["innerHTML"],ft=["innerHTML"],Ot={id:"image-tracking-goal-sub"},Ct={class:"row"},kt={class:"col s12 m6"},Vt={class:"col s12 m6"},St={id:"image-link-output-section"},Nt={id:"image-tracking-text"},yt=["textContent"];
+ */function lt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{anchor:"javaScriptTracking","content-title":e.translate("CoreAdminHome_JavaScriptTracking")},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",ne,[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro1"))+" ",1),oe,ae,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro2"))+" ",1),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro3a)},null,8,re),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(" "+e.jsTrackingIntro3b)},null,8,ie),le,ce,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro4a)},null,8,se),de,ue,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro5)},null,8,me),ge,pe,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("SitesManager_InstallationGuides"))+" : ",1),be,he,je,ve,fe,Oe,Ce,ke,Ve,Se,Ne,ye,Te]),Object(i["createVNode"])(l,{uicontrol:"site",name:"js-tracker-website",class:"jsTrackingCodeWebsite",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createElementVNode"])("div",Ae,[Object(i["createElementVNode"])("div",Ee,[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("General_JsTrackingTag")),1),Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHead","</head>")),1)]),Object(i["createElementVNode"])("button",{class:"btn",id:"emailJsBtn",onClick:t[1]||(t[1]=function(t){return e.sendEmail()})},Object(i["toDisplayString"])(e.translate("SitesManager_EmailInstructionsButton")),1)]),Object(i["createElementVNode"])("div",we,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{class:"codeblock",textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,_e),[[s,{}]])])]),Object(i["createElementVNode"])("div",He,[Object(i["createElementVNode"])("div",De,[Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mergeSubdomainsDesc)},null,8,Be),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.learnMoreText)},null,8,Le)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-subdomains","model-value":e.trackAllSubdomains,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackAllSubdomains=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeSubdomains")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllSubdomainsInlineHelp"},null,8,["model-value","disabled","introduction","title"])]),Object(i["createElementVNode"])("div",xe,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomainDesc1",e.currentSiteHost)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-group-by-domain","model-value":e.groupByDomain,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.groupByDomain=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomain"),"inline-help":"#jsTrackGroupByDomainInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",Ue,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_MergeAliasesDesc",e.currentSiteAlias)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-aliases","model-value":e.trackAllAliases,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.trackAllAliases=t,e.updateTrackingCode()}),disabled:e.isLoading,title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeAliases")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllAliasesInlineHelp"},null,8,["model-value","disabled","title"])]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-noscript","model-value":e.trackNoScript,"onUpdate:modelValue":t[5]||(t[5]=function(t){e.trackNoScript=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_TrackNoScript")},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("Mobile_Advanced")),1),Object(i["createElementVNode"])("p",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[6]||(t[6]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!0}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Show")),513),[[i["vShow"],!e.showAdvanced]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[7]||(t[7]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!1}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Hide")),513),[[i["vShow"],e.showAdvanced]])]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Fe,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-visitor-cv-check","model-value":e.trackCustomVars,"onUpdate:modelValue":t[8]||(t[8]=function(t){e.trackCustomVars=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_VisitorCustomVars"),"inline-help":e.translate("CoreAdminHome_JSTracking_VisitorCustomVarsDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ie,[Object(i["createElementVNode"])("div",Ge,[Object(i["createElementVNode"])("div",Pe,Object(i["toDisplayString"])(e.translate("General_Name")),1),Object(i["createElementVNode"])("div",Me,Object(i["toDisplayString"])(e.translate("General_Value")),1)]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.customVars,(function(t,n){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",{class:"row",key:n},[Object(i["createElementVNode"])("div",Je,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-name",onKeydown:function(t){return e.onCustomVarNameKeydown(t,n)},placeholder:"e.g. Type"},null,40,qe)]),Object(i["createElementVNode"])("div",Re,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-value",onKeydown:function(t){return e.onCustomVarValueKeydown(t,n)},placeholder:"e.g. Customer"},null,40,We)])])})),128)),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",$e,[Object(i["createElementVNode"])("div",Ke,[Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[9]||(t[9]=function(t){return e.addCustomVar()}),class:"add-custom-variable"},[ze,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_Add")),1)])])],512),[[i["vShow"],e.canAddMoreCustomVariables]])],512),[[i["vShow"],e.trackCustomVars]]),Object(i["createElementVNode"])("div",Qe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain"))+" ",1),Ye,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain_NeedsMultipleDomains")),1)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-cross-domain","model-value":e.crossDomain,"onUpdate:modelValue":t[10]||(t[10]=function(t){e.crossDomain=t,e.updateTrackingCode(),e.onCrossDomainToggle()}),disabled:e.isLoading||!e.hasManySiteUrls,title:e.translate("CoreAdminHome_JSTracking_EnableCrossDomainLinking"),"inline-help":"#jsCrossDomain"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",Xe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrackDesc"))+" ",1),e.serverSideDoNotTrackEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",Ze,[et,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack_AlreadyEnabled")),1)])):Object(i["createCommentVNode"])("",!0)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-do-not-track","model-value":e.doNotTrack,"onUpdate:modelValue":t[11]||(t[11]=function(t){e.doNotTrack=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack"),"inline-help":"#jsDoNotTrackInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-disable-cookies","model-value":e.disableCookies,"onUpdate:modelValue":t[12]||(t[12]=function(t){e.disableCookies=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_DisableCookies"),"inline-help":e.translate("CoreAdminHome_JSTracking_DisableCookiesDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["createElementVNode"])("div",{id:"jsTrackCampaignParamsInlineHelp",class:"inline-help-node",innerHTML:e.$sanitize(e.jsTrackCampaignParamsInlineHelp)},null,8,tt),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"custom-campaign-query-params-check","model-value":e.useCustomCampaignParams,"onUpdate:modelValue":t[13]||(t[13]=function(t){e.useCustomCampaignParams=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CustomCampaignQueryParam"),"inline-help":"#jsTrackCampaignParamsInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",nt,[Object(i["createElementVNode"])("div",ot,[Object(i["createElementVNode"])("div",at,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-name-query-param","model-value":e.customCampaignName,"onUpdate:modelValue":t[14]||(t[14]=function(t){e.customCampaignName=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignNameParam")},null,8,["model-value","disabled","title"])])]),Object(i["createElementVNode"])("div",rt,[Object(i["createElementVNode"])("div",it,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-keyword-query-param","model-value":e.customCampaignKeyword,"onUpdate:modelValue":t[15]||(t[15]=function(t){e.customCampaignKeyword=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignKwdParam")},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.useCustomCampaignParams]])],512),[[i["vShow"],e.showAdvanced]])]})),_:1},8,["content-title"])}function ct(e){var t=new URL(e);return t.hostname}function st(e){return e.map((function(e){return[e.name,e.value]}))}var dt=window,ut=dt.$,mt=window.location.host,gt=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),pt=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0},maxCustomVariables:Number,serverSideDoNotTrackEnabled:Boolean},data:function(){return{showAdvanced:!1,site:this.defaultSite,trackingCode:"",trackAllSubdomains:!1,isLoading:!1,siteUrls:{},siteExcludedQueryParams:{},siteExcludedReferrers:{},crossDomain:!1,groupByDomain:!1,trackAllAliases:!1,trackNoScript:!1,trackCustomVars:!1,customVars:[],canAddMoreCustomVariables:!!this.maxCustomVariables&&this.maxCustomVariables>0,doNotTrack:!1,disableCookies:!1,useCustomCampaignParams:!1,customCampaignName:"",customCampaignKeyword:"",trackingCodeAbortController:null,isHighlighting:!1}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},created:function(){this.onCustomVarNameKeydown=Object(r["debounce"])(this.onCustomVarNameKeydown,100),this.onCustomVarValueKeydown=Object(r["debounce"])(this.onCustomVarValueKeydown,100),this.addCustomVar(),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t=this,n=e.id,o=[];this.siteUrls[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteUrlsFromId",idSite:n,filter_limit:"-1"}).then((function(e){t.siteUrls[n]=e||[]})))),this.siteExcludedQueryParams[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"Overlay.getExcludedQueryParameters",idSite:n,filter_limit:"-1"}).then((function(e){t.siteExcludedQueryParams[n]=e||[]})))),this.siteExcludedReferrers[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getExcludedReferrers",idSite:n,filter_limit:"-1"}).then((function(e){t.siteExcludedReferrers[n]=[],Object.values(e||[]).forEach((function(e){t.siteExcludedReferrers[n].push(e.replace(/^https?:\/\//,""))}))})))),Promise.all(o).then((function(){t.isLoading=!1,t.updateCurrentSiteInfo(),t.updateTrackingCode()}))},sendEmail:function(){var e=Object(r["translate"])("SitesManager_EmailInstructionsSubject");e=encodeURIComponent(e);var t=this.trackingCode;t=t.replace(/<[^>]+>/g,"");var n="".concat(Object(r["translate"])("SitesManager_JsTrackingTagHelp"),". ").concat(Object(r["translate"])("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHeadEmail","'head"),"\n").concat(t);n=encodeURIComponent(n);var o="mailto:?subject=".concat(e,"&body=").concat(n);window.location.href=o},onCrossDomainToggle:function(){this.crossDomain&&(this.trackAllAliases=!0)},updateTrackingCode:function(){var e=this,t=this.site,n={piwikUrl:"".concat(mt).concat(gt),groupPageTitlesByDomain:this.groupByDomain?1:0,mergeSubdomains:this.trackAllSubdomains?1:0,mergeAliasUrls:this.trackAllAliases?1:0,visitorCustomVariables:this.trackCustomVars?st(this.customVars):0,customCampaignNameQueryParam:null,customCampaignKeywordParam:null,doNotTrack:this.doNotTrack?1:0,disableCookies:this.disableCookies?1:0,crossDomain:this.crossDomain?1:0,trackNoScript:this.trackNoScript?1:0,forceMatomoEndpoint:1};this.siteExcludedQueryParams[t.id]&&(n.excludedQueryParams=this.siteExcludedQueryParams[t.id]),this.siteExcludedReferrers[t.id]&&(n.excludedReferrers=this.siteExcludedReferrers[t.id]),this.useCustomCampaignParams&&(n.customCampaignNameQueryParam=this.customCampaignName,n.customCampaignKeywordParam=this.customCampaignKeyword),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getJavascriptTag",idSite:t.id},n,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=ut(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))},updateCurrentSiteInfo:function(){this.hasManySiteUrls||(this.crossDomain=!1)},addCustomVar:function(){this.canAddMoreCustomVariables&&this.customVars.push({name:"",value:""}),this.canAddMoreCustomVariables=!!this.maxCustomVariables&&this.maxCustomVariables>this.customVars.length},onCustomVarNameKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].name=e.target.value,n.updateTrackingCode()}))},onCustomVarValueKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].value=e.target.value,n.updateTrackingCode()}))}},computed:{hasManySiteUrls:function(){var e=this.site;return this.siteUrls[e.id]&&this.siteUrls[e.id].length>1},currentSiteHost:function(){var e,t=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[0];return t?ct(t):""},currentSiteAlias:function(){var e,t="x.".concat(this.currentSiteHost),n=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[1];return n||t},currentSiteName:function(){return r["Matomo"].helper.htmlEntities(this.site.name)},jsTrackingIntro3a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3a",'<a href="https://matomo.org/integrate/" rel="noreferrer noopener" target="_blank">',"</a>")},jsTrackingIntro3b:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3b")},jsTrackingIntro4a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro4",'<a href="#image-tracking-link">',"</a>")},jsTrackingIntro5:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro5",'<a rel="noreferrer noopener" target="_blank" href="https://developer.matomo.org/guides/tracking-javascript-guide">',"</a>")},mergeSubdomainsDesc:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_MergeSubdomainsDesc","x.".concat(this.currentSiteHost),"y.".concat(this.currentSiteHost))},learnMoreText:function(){var e="https://developer.matomo.org/guides/tracking-javascript-guide#measuring-domains-andor-sub-domains";return Object(r["translate"])("General_LearnMore",' (<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>)")},jsTrackCampaignParamsInlineHelp:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_CustomCampaignQueryParamDesc",'<a href="https://matomo.org/faq/general/faq_119" rel="noreferrer noopener" target="_blank">',"</a>")}}});pt.render=lt;var bt=pt,ht=(Object(r["createAngularJsAdapter"])({component:bt,scope:{defaultSite:{angularJsBind:"<"},maxCustomVariables:{angularJsBind:"<"},serverSideDoNotTrackEnabled:{angularJsBind:"<"}},directiveName:"matomoJsTrackingCodeGenerator"}),Object(i["createElementVNode"])("a",{name:"image-tracking-link"},null,-1)),jt={id:"image-tracking-code-options"},vt=["innerHTML"],ft=["innerHTML"],Ot={id:"image-tracking-goal-sub"},Ct={class:"row"},kt={class:"col s12 m6"},Vt={class:"col s12 m6"},St={id:"image-link-output-section"},Nt={id:"image-tracking-text"},yt=["textContent"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Tt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{"content-title":e.translate("CoreAdminHome_ImageTracking"),anchor:"imageTracking"},{default:Object(i["withCtx"])((function(){return[ht,Object(i["createElementVNode"])("div",jt,[Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro)},null,8,vt),Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro3)},null,8,ft),Object(i["createVNode"])(l,{uicontrol:"site",name:"image-tracker-website",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"image-tracker-action-name","model-value":e.pageName,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.pageName=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:e.translate("Actions_ColumnPageName")},null,8,["model-value","disabled","introduction","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"image-tracking-goal-check","model-value":e.trackGoal,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackGoal=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_TrackAGoal")},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ot,[Object(i["createElementVNode"])("div",Ct,[Object(i["createElementVNode"])("div",kt,[Object(i["createVNode"])(l,{uicontrol:"select",name:"image-tracker-goal",options:e.siteGoals,disabled:e.isLoading,"model-value":e.trackIdGoal,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.trackIdGoal=t,e.updateTrackingCode()})},null,8,["options","disabled","model-value"])]),Object(i["createElementVNode"])("div",Vt,[Object(i["createVNode"])(l,{uicontrol:"text",name:"image-revenue","model-value":e.revenue,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.revenue=t,e.updateTrackingCode()}),disabled:e.isLoading,"full-width":!0,title:"".concat(e.translate("CoreAdminHome_WithOptionalRevenue")," ").concat(e.currentSiteCurrency)},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.trackGoal]]),Object(i["createElementVNode"])("div",St,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ImageTrackingLink")),1),Object(i["createElementVNode"])("div",Nt,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,yt),[[s,{}]])])])])]})),_:1},8,["content-title"])}function At(e,t){return Dt(e)||Ht(e,t)||wt(e,t)||Et()}function Et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function wt(e,t){if(e){if("string"===typeof e)return _t(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_t(e,t):void 0}}function _t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Ht(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,a,r=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(o=n.next()).done);i=!0)if(r.push(o.value),t&&r.length===t)break}catch(c){l=!0,a=c}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return r}}function Dt(e){if(Array.isArray(e))return e}var Bt=null,Lt=window,Ut=Lt.$,xt=window.location.host,Ft=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),It=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},data:function(){return{isLoading:!1,site:this.defaultSite,pageName:"",trackGoal:!1,trackIdGoal:null,revenue:"",trackingCode:"",sites:{},goals:{},trackingCodeAbortController:null,isHighlighting:!1}},created:function(){this.updateTrackingCode=Object(r["debounce"])(this.updateTrackingCode),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t,n,o,a=this;return this.trackIdGoal=null,Bt?t=Promise.resolve(Bt):(this.isLoading=!0,t=r["AjaxHelper"].fetch({method:"SitesManager.getCurrencySymbols",filter_limit:"-1"})),this.sites[e.id]?n=Promise.resolve(this.sites[e.id]):(this.isLoading=!0,n=r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteFromId",idSite:e.id})),this.goals[e.id]?o=Promise.resolve(this.goals[e.id]):(this.isLoading=!0,o=r["AjaxHelper"].fetch({module:"API",method:"Goals.getGoals",filter_limit:"-1",idSite:e.id})),Promise.all([t,n,o]).then((function(t){var n=At(t,3),o=n[0],r=n[1],i=n[2];a.isLoading=!1,Bt=o,a.sites[e.id]=r,a.goals[e.id]=i,a.updateTrackingCode()}))},updateTrackingCode:function(){var e=this,t={piwikUrl:"".concat(xt).concat(Ft),actionName:this.pageName,forceMatomoEndpoint:1};this.trackGoal&&this.trackIdGoal&&(t.idGoal=this.trackIdGoal,t.revenue=this.revenue),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getImageTrackingCode",idSite:this.site.id},t,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=Ut(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))}},computed:{currentSiteCurrency:function(){return Bt?Bt[(this.sites[this.site.id].currency||"").toUpperCase()]:""},siteGoals:function(){var e=this.goals[this.site.id];return[{key:"",value:Object(r["translate"])("UserCountryMap_None")}].concat(Object.values(e||[]).map((function(e){return{key:"".concat(e.idgoal),value:e.name}})))},imageTrackingIntro:function(){var e=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro1"),t=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro2","<code>&lt;noscript&gt;&lt;/noscript&gt;</code>");return"".concat(e," ").concat(t)},imageTrackingIntro3:function(){var e="https://matomo.org/docs/tracking-api/reference/";return Object(r["translate"])("CoreAdminHome_ImageTrackingIntro3",'<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>")}}});It.render=Tt;var Gt=It,Pt=(Object(r["createAngularJsAdapter"])({component:Gt,scope:{defaultSite:{angularJsBind:"<"}},directiveName:"matomoImageTrackingCodeGenerator"}),Object(i["createElementVNode"])("br",null,null,-1)),Mt=Object(i["createElementVNode"])("br",null,null,-1),Jt=["value"],qt={class:"action"},Rt={colspan:"7"},Wt=Object(i["createElementVNode"])("span",{class:"icon-ok"},null,-1),$t={class:"ui-confirm",id:"confirmDeleteAllTrackingFailures"},Kt=["value"],zt=["value"],Qt={class:"ui-confirm",id:"confirmDeleteThisTrackingFailure"},Yt=["value"],Xt=["value"];
+ */function Tt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{"content-title":e.translate("CoreAdminHome_ImageTracking"),anchor:"imageTracking"},{default:Object(i["withCtx"])((function(){return[ht,Object(i["createElementVNode"])("div",jt,[Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro)},null,8,vt),Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro3)},null,8,ft),Object(i["createVNode"])(l,{uicontrol:"site",name:"image-tracker-website",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"image-tracker-action-name","model-value":e.pageName,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.pageName=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:e.translate("Actions_ColumnPageName")},null,8,["model-value","disabled","introduction","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"image-tracking-goal-check","model-value":e.trackGoal,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackGoal=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_TrackAGoal")},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ot,[Object(i["createElementVNode"])("div",Ct,[Object(i["createElementVNode"])("div",kt,[Object(i["createVNode"])(l,{uicontrol:"select",name:"image-tracker-goal",options:e.siteGoals,disabled:e.isLoading,"model-value":e.trackIdGoal,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.trackIdGoal=t,e.updateTrackingCode()})},null,8,["options","disabled","model-value"])]),Object(i["createElementVNode"])("div",Vt,[Object(i["createVNode"])(l,{uicontrol:"text",name:"image-revenue","model-value":e.revenue,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.revenue=t,e.updateTrackingCode()}),disabled:e.isLoading,"full-width":!0,title:"".concat(e.translate("CoreAdminHome_WithOptionalRevenue")," ").concat(e.currentSiteCurrency)},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.trackGoal]]),Object(i["createElementVNode"])("div",St,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ImageTrackingLink")),1),Object(i["createElementVNode"])("div",Nt,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,yt),[[s,{}]])])])])]})),_:1},8,["content-title"])}function At(e,t){return Dt(e)||Ht(e,t)||wt(e,t)||Et()}function Et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function wt(e,t){if(e){if("string"===typeof e)return _t(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_t(e,t):void 0}}function _t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Ht(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,a,r=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(o=n.next()).done);i=!0)if(r.push(o.value),t&&r.length===t)break}catch(c){l=!0,a=c}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return r}}function Dt(e){if(Array.isArray(e))return e}var Bt=null,Lt=window,xt=Lt.$,Ut=window.location.host,Ft=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),It=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},data:function(){return{isLoading:!1,site:this.defaultSite,pageName:"",trackGoal:!1,trackIdGoal:null,revenue:"",trackingCode:"",sites:{},goals:{},trackingCodeAbortController:null,isHighlighting:!1}},created:function(){this.updateTrackingCode=Object(r["debounce"])(this.updateTrackingCode),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t,n,o,a=this;return this.trackIdGoal=null,Bt?t=Promise.resolve(Bt):(this.isLoading=!0,t=r["AjaxHelper"].fetch({method:"SitesManager.getCurrencySymbols",filter_limit:"-1"})),this.sites[e.id]?n=Promise.resolve(this.sites[e.id]):(this.isLoading=!0,n=r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteFromId",idSite:e.id})),this.goals[e.id]?o=Promise.resolve(this.goals[e.id]):(this.isLoading=!0,o=r["AjaxHelper"].fetch({module:"API",method:"Goals.getGoals",filter_limit:"-1",idSite:e.id})),Promise.all([t,n,o]).then((function(t){var n=At(t,3),o=n[0],r=n[1],i=n[2];a.isLoading=!1,Bt=o,a.sites[e.id]=r,a.goals[e.id]=i,a.updateTrackingCode()}))},updateTrackingCode:function(){var e=this,t={piwikUrl:"".concat(Ut).concat(Ft),actionName:this.pageName,forceMatomoEndpoint:1};this.trackGoal&&this.trackIdGoal&&(t.idGoal=this.trackIdGoal,t.revenue=this.revenue),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getImageTrackingCode",idSite:this.site.id},t,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=xt(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))}},computed:{currentSiteCurrency:function(){return Bt?Bt[(this.sites[this.site.id].currency||"").toUpperCase()]:""},siteGoals:function(){var e=this.goals[this.site.id];return[{key:"",value:Object(r["translate"])("UserCountryMap_None")}].concat(Object.values(e||[]).map((function(e){return{key:"".concat(e.idgoal),value:e.name}})))},imageTrackingIntro:function(){var e=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro1"),t=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro2","<code>&lt;noscript&gt;&lt;/noscript&gt;</code>");return"".concat(e," ").concat(t)},imageTrackingIntro3:function(){var e="https://matomo.org/docs/tracking-api/reference/";return Object(r["translate"])("CoreAdminHome_ImageTrackingIntro3",'<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>")}}});It.render=Tt;var Gt=It,Pt=(Object(r["createAngularJsAdapter"])({component:Gt,scope:{defaultSite:{angularJsBind:"<"}},directiveName:"matomoImageTrackingCodeGenerator"}),Object(i["createElementVNode"])("br",null,null,-1)),Mt=Object(i["createElementVNode"])("br",null,null,-1),Jt=["value"],qt={class:"action"},Rt={colspan:"7"},Wt=Object(i["createElementVNode"])("span",{class:"icon-ok"},null,-1),$t={class:"ui-confirm",id:"confirmDeleteAllTrackingFailures"},Kt=["value"],zt=["value"],Qt={class:"ui-confirm",id:"confirmDeleteThisTrackingFailure"},Yt=["value"],Xt=["value"];
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue b/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue
index 5fc37e32f1..ba03040ff3 100644
--- a/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue
+++ b/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue
@@ -304,6 +304,7 @@ interface JsTrackingCodeGeneratorState {
isLoading: boolean;
siteUrls: Record<string, string[]>;
siteExcludedQueryParams: Record<string, string[]>,
+ siteExcludedReferrers: Record<string, string[]>,
crossDomain: boolean;
groupByDomain: boolean;
trackAllAliases: boolean;
@@ -356,6 +357,7 @@ export default defineComponent({
isLoading: false,
siteUrls: {},
siteExcludedQueryParams: {},
+ siteExcludedReferrers: {},
crossDomain: false,
groupByDomain: false,
trackAllAliases: false,
@@ -431,6 +433,24 @@ export default defineComponent({
);
}
+ if (!this.siteExcludedReferrers[idSite]) {
+ this.isLoading = true;
+
+ promises.push(
+ AjaxHelper.fetch({
+ module: 'API',
+ method: 'SitesManager.getExcludedReferrers',
+ idSite,
+ filter_limit: '-1',
+ }).then((data) => {
+ this.siteExcludedReferrers[idSite] = [];
+ Object.values(data || []).forEach((referrer: unknown) => {
+ this.siteExcludedReferrers[idSite].push((referrer as string).replace(/^https?:\/\//, ''));
+ });
+ }),
+ );
+ }
+
Promise.all(promises).then(() => {
this.isLoading = false;
this.updateCurrentSiteInfo();
@@ -481,6 +501,10 @@ export default defineComponent({
params.excludedQueryParams = this.siteExcludedQueryParams[site.id];
}
+ if (this.siteExcludedReferrers[site.id]) {
+ params.excludedReferrers = this.siteExcludedReferrers[site.id];
+ }
+
if (this.useCustomCampaignParams) {
params.customCampaignNameQueryParam = this.customCampaignName;
params.customCampaignKeywordParam = this.customCampaignKeyword;
diff --git a/plugins/IntranetMeasurable/tests/UI/expected-screenshots/IntranetMeasurable_intranet_create.png b/plugins/IntranetMeasurable/tests/UI/expected-screenshots/IntranetMeasurable_intranet_create.png
index 0376c5bc8c..86e25d3d79 100644
--- a/plugins/IntranetMeasurable/tests/UI/expected-screenshots/IntranetMeasurable_intranet_create.png
+++ b/plugins/IntranetMeasurable/tests/UI/expected-screenshots/IntranetMeasurable_intranet_create.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d6a1a763044d093551dfa0ce23175812cb07f8a2c488d15423e0e435416fb9e5
-size 301789
+oid sha256:531fb5e2454ea22c51dc0abb2858953c826cec073069b033cae2e0507c1f6824
+size 363130
diff --git a/plugins/Referrers/Columns/Base.php b/plugins/Referrers/Columns/Base.php
index a27aa925e2..0d9a658f79 100644
--- a/plugins/Referrers/Columns/Base.php
+++ b/plugins/Referrers/Columns/Base.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -6,9 +7,11 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
+
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Common;
+use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Plugins\Referrers\SearchEngine as SearchEngineDetection;
@@ -18,12 +21,10 @@ use Piwik\Tracker\Cache;
use Piwik\Tracker\PageUrl;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
-use Piwik\Tracker\Action;
use Piwik\UrlHelper;
abstract class Base extends VisitDimension
{
-
// @see detect*() referrer methods
protected $typeReferrerAnalyzed;
protected $nameReferrerAnalyzed;
@@ -71,16 +72,22 @@ abstract class Base extends VisitDimension
{
$this->idsite = $idSite;
- // default values for the referer_* fields
$referrerUrl = Common::unsanitizeInputValue($referrerUrl);
- if (!empty($referrerUrl)
- && !UrlHelper::isLookLikeUrl($referrerUrl)
+
+ // Ignore referrer url if it doesn't look like a URL or is excluded in settings
+ if (
+ !empty($referrerUrl)
+ && (
+ !UrlHelper::isLookLikeUrl($referrerUrl)
+ || $this->isReferrerExcluded($referrerUrl)
+ )
) {
$referrerUrl = '';
}
$currentUrl = PageUrl::cleanupUrl($currentUrl);
+ // default values for the referer_* fields
$this->referrerUrl = $referrerUrl;
$this->referrerUrlParse = @parse_url($this->referrerUrl);
$this->currentUrlParse = @parse_url($currentUrl);
@@ -96,7 +103,8 @@ abstract class Base extends VisitDimension
$referrerDetected = $this->detectReferrerCampaign($request, $visitor);
if (!$referrerDetected) {
- if ($this->detectReferrerDirectEntry($request)
+ if (
+ $this->detectReferrerDirectEntry($request)
|| $this->detectReferrerSearchEngine()
|| $this->detectReferrerSocialNetwork()
) {
@@ -121,12 +129,12 @@ abstract class Base extends VisitDimension
$this->excludeQueryParamsFromReferrerUrl();
- $referrerInformation = array(
+ $referrerInformation = [
'referer_type' => $this->typeReferrerAnalyzed,
'referer_name' => $this->nameReferrerAnalyzed,
'referer_keyword' => $this->keywordReferrerAnalyzed,
'referer_url' => $this->referrerUrl,
- );
+ ];
if (!empty($referrerInformation['referer_name'])) {
$referrerInformation['referer_name'] = $this->truncateReferrerName($referrerInformation['referer_name']);
@@ -139,6 +147,46 @@ abstract class Base extends VisitDimension
return $referrerInformation;
}
+ protected function getExcludedReferrers($idSite): array
+ {
+ try {
+ $attributes = Cache::getCacheWebsiteAttributes($idSite);
+
+ if (isset($attributes['excluded_referrers'])) {
+ return $attributes['excluded_referrers'];
+ }
+ } catch (UnexpectedWebsiteFoundException $e) {
+ $cached = Cache::getCacheGeneral();
+ if (isset($cached['global_excluded_referrers'])) {
+ return $cached['global_excluded_referrers'];
+ }
+ }
+
+ return [];
+ }
+
+ protected function isReferrerExcluded(string $referrerUrl): bool
+ {
+ $urlsByHost = [];
+ $parsedReferrer = @parse_url($referrerUrl);
+
+ $excludedUrls = new SiteUrls();
+ $excludedReferrers = $this->getExcludedReferrers($this->idsite);
+ foreach ($excludedReferrers as $excludedReferrer) {
+ // ensure referrer is prefixed with protocol, so a parse_url works
+ $excludedReferrer = 'https://' . preg_replace('/^https?:\/\//', '', $excludedReferrer);
+ $excludedUrls->addUrlByHost($urlsByHost, $this->idsite, $excludedReferrer);
+ }
+
+ $matchingSites = $excludedUrls->getIdSitesMatchingUrl($parsedReferrer, $urlsByHost);
+
+ if (is_array($matchingSites) && in_array($this->idsite, $matchingSites)) {
+ return true;
+ }
+
+ return false;
+ }
+
protected function excludeQueryParamsFromReferrerUrl()
{
$parametersToExclude = [];
@@ -236,7 +284,7 @@ abstract class Base extends VisitDimension
* logic.
* @param string referrerUrl The referrer URL from the tracking request.
*/
- Piwik::postEvent('Tracker.detectReferrerSearchEngine', array(&$searchEngineInformation, $this->referrerUrl));
+ Piwik::postEvent('Tracker.detectReferrerSearchEngine', [&$searchEngineInformation, $this->referrerUrl]);
$cachedReferrerSearchEngine[$this->referrerUrl] = $searchEngineInformation;
$cache->save($cacheKey, $cachedReferrerSearchEngine);
@@ -287,7 +335,7 @@ abstract class Base extends VisitDimension
* logic.
* @param string referrerUrl The referrer URL from the tracking request.
*/
- Piwik::postEvent('Tracker.detectReferrerSocialNetwork', array(&$socialNetworkName, $this->referrerUrl));
+ Piwik::postEvent('Tracker.detectReferrerSocialNetwork', [&$socialNetworkName, $this->referrerUrl]);
$cachedReferrerSocialNetworks[$this->referrerUrl] = $socialNetworkName;
$cache->save($cacheKey, $cachedReferrerSocialNetworks);
@@ -334,7 +382,8 @@ abstract class Base extends VisitDimension
protected function detectReferrerCampaignFromLandingUrl()
{
- if (!isset($this->currentUrlParse['query'])
+ if (
+ !isset($this->currentUrlParse['query'])
&& !isset($this->currentUrlParse['fragment'])
) {
return false;
@@ -351,7 +400,8 @@ abstract class Base extends VisitDimension
}
// 2) Detect from fragment #hash
- if (!$found
+ if (
+ !$found
&& isset($this->currentUrlParse['fragment'])
) {
$this->detectCampaignFromString($this->currentUrlParse['fragment']);
@@ -385,7 +435,7 @@ abstract class Base extends VisitDimension
return $cache['allUrlsByHostAndIdSite'];
}
- return array();
+ return [];
}
/**
@@ -433,8 +483,10 @@ abstract class Base extends VisitDimension
protected function detectCampaignKeywordFromReferrerUrl()
{
- if (!empty($this->nameReferrerAnalyzed)
- && !empty($this->keywordReferrerAnalyzed)) {
+ if (
+ !empty($this->nameReferrerAnalyzed)
+ && !empty($this->keywordReferrerAnalyzed)
+ ) {
// keyword is already set, we skip
return true;
}
@@ -448,7 +500,8 @@ abstract class Base extends VisitDimension
}
// Set the keyword, to the hostname found, in a Adsense Referrer URL '&url=' parameter
- if (empty($this->keywordReferrerAnalyzed)
+ if (
+ empty($this->keywordReferrerAnalyzed)
&& !empty($this->referrerUrlParse['query'])
&& !empty($this->referrerHost)
&& (strpos($this->referrerHost, 'googleads') !== false || strpos($this->referrerHost, 'doubleclick') !== false)
@@ -458,7 +511,6 @@ abstract class Base extends VisitDimension
if (!empty($value)) {
$parsedAdsenseReferrerUrl = parse_url($value);
if (!empty($parsedAdsenseReferrerUrl['host'])) {
-
if (empty($this->nameReferrerAnalyzed)) {
$type = $this->getParameterValueFromReferrerUrl('ad_type');
$type = $type ? " ($type)" : '';
@@ -469,7 +521,6 @@ abstract class Base extends VisitDimension
}
}
}
-
}
/**
@@ -530,7 +581,6 @@ abstract class Base extends VisitDimension
/**
* @param Request $request
* @param Visitor $visitor
- * @param Action|null $action
* @return mixed
*/
public function getValueForRecordGoal(Request $request, Visitor $visitor)
@@ -556,7 +606,8 @@ abstract class Base extends VisitDimension
// 0) In some (unknown!?) cases the campaign is not found in the attribution cookie, but the URL ref was found.
// In this case we look up if the current visit is credited to a campaign and will credit this campaign rather than the URL ref (since campaigns have higher priority)
- if (empty($referrerCampaignName)
+ if (
+ empty($referrerCampaignName)
&& $type == Common::REFERRER_TYPE_CAMPAIGN
&& !empty($name)
) {
@@ -570,12 +621,11 @@ abstract class Base extends VisitDimension
Common::printDebug("Campaign information from 1st party cookie is used.");
} // 2) Referrer URL parsing
elseif (!empty($referrerUrl)) {
-
$idSite = $request->getIdSite();
$referrer = $this->getReferrerInformation($referrerUrl, $currentUrl = '', $idSite, $request, $visitor);
// if the parsed referrer is interesting enough, ie. website, social network or search engine
- if (in_array($referrer['referer_type'], array(Common::REFERRER_TYPE_SEARCH_ENGINE, Common::REFERRER_TYPE_WEBSITE, Common::REFERRER_TYPE_SOCIAL_NETWORK))) {
+ if (in_array($referrer['referer_type'], [Common::REFERRER_TYPE_SEARCH_ENGINE, Common::REFERRER_TYPE_WEBSITE, Common::REFERRER_TYPE_SOCIAL_NETWORK])) {
$type = $referrer['referer_type'];
$name = $referrer['referer_name'];
$keyword = $referrer['referer_keyword'];
@@ -590,11 +640,11 @@ abstract class Base extends VisitDimension
$this->setCampaignValuesToLowercase($type, $name, $keyword);
- $fields = array(
+ $fields = [
'referer_type' => $type,
'referer_name' => $name,
'referer_keyword' => $keyword,
- );
+ ];
if (array_key_exists($this->columnName, $fields)) {
return $fields[$this->columnName];
@@ -622,7 +672,7 @@ abstract class Base extends VisitDimension
protected function isReferrerInformationNew(Visitor $visitor, $information)
{
- foreach (array('referer_keyword', 'referer_name', 'referer_type') as $infoName) {
+ foreach (['referer_keyword', 'referer_name', 'referer_type'] as $infoName) {
if ($this->hasReferrerColumnChanged($visitor, $information, $infoName)) {
return true;
}
diff --git a/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php b/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php
index a31044a807..1394eb0e25 100644
--- a/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php
+++ b/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -34,6 +35,7 @@ class ReferrerTypeTest extends IntegrationTestCase
private $idSite3 = 3;
private $idSite4 = 4;
private $idSite5 = 5;
+ private $idSite6 = 6;
public function setUp(): void
{
@@ -41,16 +43,20 @@ class ReferrerTypeTest extends IntegrationTestCase
Cache::clearCacheGeneral();
+ $this->referrerType = new ReferrerType();
+ }
+
+ protected static function beforeTableDataCached()
+ {
$date = '2012-01-01 00:00:00';
$ecommerce = false;
- Fixture::createWebsite($date, $ecommerce, $name = 'test1', $url = 'http://piwik.org/foo/bar');
- Fixture::createWebsite($date, $ecommerce, $name = 'test2', $url = 'http://piwik.org/');
- Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.xyz/');
- Fixture::createWebsite($date, $ecommerce, $name = 'test4', $url = 'http://google.com/subdir/', 1, null, null, null, null, $excludeUnknownUrls = 1);
- Fixture::createWebsite($date, $ecommerce, $name = 'test5', $url = null);
-
- $this->referrerType = new ReferrerType();
+ Fixture::createWebsite($date, $ecommerce, 'test1', 'http://piwik.org/foo/bar');
+ Fixture::createWebsite($date, $ecommerce, 'test2', 'http://piwik.org/');
+ Fixture::createWebsite($date, $ecommerce, 'test3', 'http://piwik.xyz/');
+ Fixture::createWebsite($date, $ecommerce, 'test4', 'http://google.com/subdir/', 1, null, null, null, null, $excludeUnknownUrls = 1);
+ Fixture::createWebsite($date, $ecommerce, 'test5', null);
+ Fixture::createWebsite($date, $ecommerce, 'test6', 'http://matomo.org/', 1, null, null, null, null, null, null, 'http://paypal.com,http://payments.amazon.com/proceed/,.payment.provider');
}
public function tearDown(): void
@@ -64,9 +70,9 @@ class ReferrerTypeTest extends IntegrationTestCase
/**
* @dataProvider getReferrerUrls
*/
- public function test_onNewVisit_shouldDetectCorrectReferrerType($expectedType, $idSite, $url, $referrerUrl)
+ public function testOnNewVisitShouldDetectCorrectReferrerType($expectedType, $idSite, $url, $referrerUrl)
{
- $request = $this->getRequest(array('idsite' => $idSite, 'url' => $url, 'urlref' => $referrerUrl));
+ $request = $this->getRequest(['idsite' => $idSite, 'url' => $url, 'urlref' => $referrerUrl]);
$type = $this->referrerType->onNewVisit($request, $this->getNewVisitor(), $action = null);
$this->assertSame($expectedType, $type);
@@ -78,71 +84,80 @@ class ReferrerTypeTest extends IntegrationTestCase
$referrer = 'http://piwik.org';
// $expectedType, $idSite, $url, $referrerUrl
- return array(
+ return [
// domain matches but path does not match for idsite1
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/'),
- // idSite2 matches any piwik.org path so this is a direct entry for it
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite2, $url, $referrer),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite2, $url, $referrer . '/'),
- // idSite3 has different domain so it is coming from different website
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, $url, $referrer),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, $url, $referrer . '/'),
-
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/foo/bar/baz'),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/foo/bar/baz/'),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/foo/bar/baz?x=5'),
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/'],
+ // idSite2 matches any piwik.org path, so this is a direct entry for it
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite2, $url, $referrer],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite2, $url, $referrer . '/'],
+ // idSite3 has different domain, so it is coming from different website
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, $url, $referrer],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, $url, $referrer . '/'],
+
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/foo/bar/baz'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/foo/bar/baz/'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/foo/bar/baz?x=5'],
// /not/xyz belongs to different website
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/not/xyz'),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite2, $url, $referrer . '/not/xyz'),
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/not/xyz'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite2, $url, $referrer . '/not/xyz'],
// /foo/bar/baz belongs to different website
- array(Common::REFERRER_TYPE_WEBSITE, $this->idSite2, $url, $referrer . '/foo/bar/baz'),
+ [Common::REFERRER_TYPE_WEBSITE, $this->idSite2, $url, $referrer . '/foo/bar/baz'],
// website as it is from different domain anyway
- array(Common::REFERRER_TYPE_WEBSITE, $this->idSite3, $url, $referrer . '/foo/bar/baz'),
+ [Common::REFERRER_TYPE_WEBSITE, $this->idSite3, $url, $referrer . '/foo/bar/baz'],
// should detect campaign independent of domain / path
- array(Common::REFERRER_TYPE_CAMPAIGN, $this->idSite1, $url . '?pk_campaign=test', $referrer),
- array(Common::REFERRER_TYPE_CAMPAIGN, $this->idSite2, $url . '?pk_campaign=test', $referrer),
- array(Common::REFERRER_TYPE_CAMPAIGN, $this->idSite3, $url . '?pk_campaign=test', $referrer),
+ [Common::REFERRER_TYPE_CAMPAIGN, $this->idSite1, $url . '?pk_campaign=test', $referrer],
+ [Common::REFERRER_TYPE_CAMPAIGN, $this->idSite2, $url . '?pk_campaign=test', $referrer],
+ [Common::REFERRER_TYPE_CAMPAIGN, $this->idSite3, $url . '?pk_campaign=test', $referrer],
- array(Common::REFERRER_TYPE_SEARCH_ENGINE, $this->idSite3, $url, 'http://google.com/search?q=piwik'),
+ [Common::REFERRER_TYPE_SEARCH_ENGINE, $this->idSite3, $url, 'http://google.com/search?q=piwik'],
- array(Common::REFERRER_TYPE_SOCIAL_NETWORK, $this->idSite3, $url, 'https://twitter.com/matomo_org'),
+ [Common::REFERRER_TYPE_SOCIAL_NETWORK, $this->idSite3, $url, 'https://twitter.com/matomo_org'],
// testing case for backwards compatibility where url has same domain as urlref but the domain is not known to any website
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, 'http://example.com/foo', 'http://example.com/bar'),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, 'http://example.com/foo', 'http://example.com'),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, 'http://example.com', 'http://example.com/bar'),
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, 'http://example.com/foo', 'http://example.com/bar'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, 'http://example.com/foo', 'http://example.com'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, 'http://example.com', 'http://example.com/bar'],
// testing case where domain of referrer is not known to any site but neither is the URL, url != urlref
- array(Common::REFERRER_TYPE_WEBSITE, $this->idSite3, 'http://example.org', 'http://example.com/bar'),
+ [Common::REFERRER_TYPE_WEBSITE, $this->idSite3, 'http://example.org', 'http://example.com/bar'],
####### testing specific case:
## - ignore unknown urls is activated for idSite4
// referrer comes from another subdir, but same host => direct entry
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/site', 'http://google.com/base'),
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/site', 'http://google.com/base'],
// referrer comes from same subdir and host => direct entry
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/page', 'http://google.com/subdir/x'),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/', 'http://google.com/subdir/?q=test'),
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/page', 'http://google.com/subdir/x'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/', 'http://google.com/subdir/?q=test'],
// referrer comes from another subdir, but same host, query matches search engine definition => search engine
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/index.html', 'http://google.com/search?q=test'),
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/index.html', 'http://google.com/search?q=test'],
// referrer comes from search engine not matching site
- array(Common::REFERRER_TYPE_SEARCH_ENGINE, $this->idSite4, 'http://google.com/subdir/index.html', 'http://google.fr/search?q=test'),
+ [Common::REFERRER_TYPE_SEARCH_ENGINE, $this->idSite4, 'http://google.com/subdir/index.html', 'http://google.fr/search?q=test'],
// site w/o url
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite5, $url, $referrer . '/'),
- );
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite5, $url, $referrer . '/'],
+
+ ##### testing referrer exclusion
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite6, 'https://matomo.org/faq', 'http://www.paypal.com/subdir/site'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite6, 'https://matomo.org/faq', 'https://paypal.com/subdir/site'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite6, 'https://matomo.org/faq', 'https://payment.provider/subdir/site'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite6, 'https://matomo.org/faq', 'https://custom.payment.provider/'],
+ [Common::REFERRER_TYPE_WEBSITE, $this->idSite6, 'https://matomo.org/faq', 'http://shop.paypal.com/subdir/site'],
+ [Common::REFERRER_TYPE_WEBSITE, $this->idSite6, 'https://matomo.org/faq', 'http://payments.amazon.com/'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite6, 'https://matomo.org/faq', 'https://payments.amazon.com/proceed/with/payment'],
+ ];
}
/**
* @dataProvider getTestDataForOnExistingVisit
*/
- public function test_onExistingVisit_shouldSometimesOverwriteReferrerInfo($expectedType, $idSite, $url, $referrerUrl, $existingType)
+ public function testOnExistingVisitShouldSometimesOverwriteReferrerInfo($expectedType, $idSite, $url, $referrerUrl, $existingType)
{
- $request = $this->getRequest(array('idsite' => $idSite, 'url' => $url, 'urlref' => $referrerUrl));
+ $request = $this->getRequest(['idsite' => $idSite, 'url' => $url, 'urlref' => $referrerUrl]);
$visitor = $this->getNewVisitor();
$visitor->setVisitorColumn('referer_type', $existingType);
$type = $this->referrerType->onExistingVisit($request, $visitor, $action = null);
@@ -188,5 +203,4 @@ class ReferrerTypeTest extends IntegrationTestCase
{
return new Visitor(new VisitProperties());
}
-
}
diff --git a/plugins/Referrers/tests/System/expected/test_phpSerialized8__Referrers.getReferrerType_year.original b/plugins/Referrers/tests/System/expected/test_phpSerialized8__Referrers.getReferrerType_year.original
index 1a7eac1d06..5f28f88728 100644
--- a/plugins/Referrers/tests/System/expected/test_phpSerialized8__Referrers.getReferrerType_year.original
+++ b/plugins/Referrers/tests/System/expected/test_phpSerialized8__Referrers.getReferrerType_year.original
@@ -1 +1 @@
-O:15:"Piwik\DataTable":4:{s:7:"*rows";a:2:{i:0;O:19:"Piwik\DataTable\Row":4:{i:0;i:0;i:1;a:9:{s:5:"label";s:14:"Search Engines";s:9:"nb_visits";i:31;s:10:"nb_actions";i:31;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:0;s:12:"bounce_count";i:31;s:19:"nb_visits_converted";i:0;s:26:"sum_daily_nb_uniq_visitors";i:31;s:18:"sum_daily_nb_users";i:0;}i:2;a:5:{s:15:"maxVisitsSummed";i:0;s:29:"Piwik\DataTable\Rowmetadata";a:2:{s:7:"segment";s:20:"referrerType==search";s:13:"referrer_type";i:2;}s:37:"Piwik\DataTable\RowisSubtableLoaded";b:0;s:10:"subtableId";N;s:33:"Piwik\DataTable\RowisSummaryRow";b:0;}i:3;N;}i:1;O:19:"Piwik\DataTable\Row":4:{i:0;i:0;i:1;a:12:{s:5:"label";s:8:"Websites";s:9:"nb_visits";i:31;s:10:"nb_actions";i:31;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:11315;s:12:"bounce_count";i:31;s:19:"nb_visits_converted";i:31;s:5:"goals";a:2:{s:8:"idgoal=1";a:3:{s:14:"nb_conversions";i:31;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}s:8:"idgoal=2";a:3:{s:14:"nb_conversions";i:62;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}}s:14:"nb_conversions";i:93;s:7:"revenue";d:0;s:26:"sum_daily_nb_uniq_visitors";i:31;s:18:"sum_daily_nb_users";i:0;}i:2;a:5:{s:15:"maxVisitsSummed";i:0;s:29:"Piwik\DataTable\Rowmetadata";a:2:{s:7:"segment";s:21:"referrerType==website";s:13:"referrer_type";i:3;}s:37:"Piwik\DataTable\RowisSubtableLoaded";b:0;s:10:"subtableId";N;s:33:"Piwik\DataTable\RowisSummaryRow";b:0;}i:3;N;}}s:13:"*summaryRow";N;s:11:"*metadata";a:7:{s:11:"ts_archived";s:19:"today-date-removed-in-tests";s:4:"site";O:10:"Piwik\Site":2:{s:5:"*id";i:1;s:16:"Piwik\Sitesite";a:20:{s:6:"idsite";i:1;s:4:"name";s:10:"Piwik test";s:8:"main_url";s:16:"http://piwik.net";s:10:"ts_created";s:19:"2010-01-31 11:22:33";s:9:"ecommerce";i:0;s:10:"sitesearch";i:1;s:29:"sitesearch_keyword_parameters";s:0:"";s:30:"sitesearch_category_parameters";s:0:"";s:8:"timezone";s:3:"UTC";s:8:"currency";s:3:"USD";s:20:"exclude_unknown_urls";i:0;s:12:"excluded_ips";s:0:"";s:19:"excluded_parameters";s:0:"";s:20:"excluded_user_agents";s:0:"";s:5:"group";s:0:"";s:4:"type";s:7:"website";s:17:"keep_url_fragment";i:0;s:13:"creator_login";s:14:"superUserLogin";s:13:"timezone_name";s:3:"UTC";s:13:"currency_name";s:9:"US Dollar";}}s:6:"period";O:17:"Piwik\Period\Year":1:{s:7:"*date";O:10:"Piwik\Date":2:{s:12:"*timestamp";i:1262304000;s:11:"*timezone";s:3:"UTC";}}s:7:"segment";s:0:"";s:13:"segmentPretty";s:10:"All visits";s:6:"totals";a:15:{s:9:"nb_visits";i:62;s:10:"nb_actions";i:62;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:11315;s:12:"bounce_count";i:62;s:19:"nb_visits_converted";i:31;s:26:"sum_daily_nb_uniq_visitors";i:62;s:18:"sum_daily_nb_users";i:0;s:5:"goals";a:2:{s:8:"idgoal=1";a:3:{s:14:"nb_conversions";i:31;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}s:8:"idgoal=2";a:3:{s:14:"nb_conversions";i:62;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}}s:14:"nb_conversions";i:93;s:7:"revenue";d:0;s:15:"conversion_rate";s:3:"50%";s:20:"nb_actions_per_visit";d:1;s:16:"avg_time_on_site";d:183;s:11:"bounce_rate";s:4:"100%";}s:17:"totalsUnformatted";a:15:{s:9:"nb_visits";i:62;s:10:"nb_actions";i:62;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:11315;s:12:"bounce_count";i:62;s:19:"nb_visits_converted";i:31;s:26:"sum_daily_nb_uniq_visitors";i:62;s:18:"sum_daily_nb_users";i:0;s:5:"goals";a:2:{s:8:"idgoal=1";a:3:{s:14:"nb_conversions";i:31;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}s:8:"idgoal=2";a:3:{s:14:"nb_conversions";i:62;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}}s:14:"nb_conversions";i:93;s:7:"revenue";d:0;s:15:"conversion_rate";d:0.5;s:20:"nb_actions_per_visit";d:1;s:16:"avg_time_on_site";d:183;s:11:"bounce_rate";d:1;}}s:12:"*totalsRow";N;} \ No newline at end of file
+O:15:"Piwik\DataTable":4:{s:7:"*rows";a:2:{i:0;O:19:"Piwik\DataTable\Row":4:{i:0;i:0;i:1;a:9:{s:5:"label";s:14:"Search Engines";s:9:"nb_visits";i:31;s:10:"nb_actions";i:31;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:0;s:12:"bounce_count";i:31;s:19:"nb_visits_converted";i:0;s:26:"sum_daily_nb_uniq_visitors";i:31;s:18:"sum_daily_nb_users";i:0;}i:2;a:5:{s:15:"maxVisitsSummed";i:0;s:29:"Piwik\DataTable\Rowmetadata";a:2:{s:7:"segment";s:20:"referrerType==search";s:13:"referrer_type";i:2;}s:37:"Piwik\DataTable\RowisSubtableLoaded";b:0;s:10:"subtableId";N;s:33:"Piwik\DataTable\RowisSummaryRow";b:0;}i:3;N;}i:1;O:19:"Piwik\DataTable\Row":4:{i:0;i:0;i:1;a:12:{s:5:"label";s:8:"Websites";s:9:"nb_visits";i:31;s:10:"nb_actions";i:31;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:11315;s:12:"bounce_count";i:31;s:19:"nb_visits_converted";i:31;s:5:"goals";a:2:{s:8:"idgoal=1";a:3:{s:14:"nb_conversions";i:31;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}s:8:"idgoal=2";a:3:{s:14:"nb_conversions";i:62;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}}s:14:"nb_conversions";i:93;s:7:"revenue";d:0;s:26:"sum_daily_nb_uniq_visitors";i:31;s:18:"sum_daily_nb_users";i:0;}i:2;a:5:{s:15:"maxVisitsSummed";i:0;s:29:"Piwik\DataTable\Rowmetadata";a:2:{s:7:"segment";s:21:"referrerType==website";s:13:"referrer_type";i:3;}s:37:"Piwik\DataTable\RowisSubtableLoaded";b:0;s:10:"subtableId";N;s:33:"Piwik\DataTable\RowisSummaryRow";b:0;}i:3;N;}}s:13:"*summaryRow";N;s:11:"*metadata";a:7:{s:11:"ts_archived";s:19:"today-date-removed-in-tests";s:4:"site";O:10:"Piwik\Site":2:{s:5:"*id";i:1;s:16:"Piwik\Sitesite";a:21:{s:6:"idsite";i:1;s:4:"name";s:10:"Piwik test";s:8:"main_url";s:16:"http://piwik.net";s:10:"ts_created";s:19:"2010-01-31 11:22:33";s:9:"ecommerce";i:0;s:10:"sitesearch";i:1;s:29:"sitesearch_keyword_parameters";s:0:"";s:30:"sitesearch_category_parameters";s:0:"";s:8:"timezone";s:3:"UTC";s:8:"currency";s:3:"USD";s:20:"exclude_unknown_urls";i:0;s:12:"excluded_ips";s:0:"";s:19:"excluded_parameters";s:0:"";s:20:"excluded_user_agents";s:0:"";s:18:"excluded_referrers";s:0:"";s:5:"group";s:0:"";s:4:"type";s:7:"website";s:17:"keep_url_fragment";i:0;s:13:"creator_login";s:14:"superUserLogin";s:13:"timezone_name";s:3:"UTC";s:13:"currency_name";s:9:"US Dollar";}}s:6:"period";O:17:"Piwik\Period\Year":1:{s:7:"*date";O:10:"Piwik\Date":2:{s:12:"*timestamp";i:1262304000;s:11:"*timezone";s:3:"UTC";}}s:7:"segment";s:0:"";s:13:"segmentPretty";s:10:"All visits";s:6:"totals";a:15:{s:9:"nb_visits";i:62;s:10:"nb_actions";i:62;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:11315;s:12:"bounce_count";i:62;s:19:"nb_visits_converted";i:31;s:26:"sum_daily_nb_uniq_visitors";i:62;s:18:"sum_daily_nb_users";i:0;s:5:"goals";a:2:{s:8:"idgoal=1";a:3:{s:14:"nb_conversions";i:31;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}s:8:"idgoal=2";a:3:{s:14:"nb_conversions";i:62;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}}s:14:"nb_conversions";i:93;s:7:"revenue";d:0;s:15:"conversion_rate";s:3:"50%";s:20:"nb_actions_per_visit";d:1;s:16:"avg_time_on_site";d:183;s:11:"bounce_rate";s:4:"100%";}s:17:"totalsUnformatted";a:15:{s:9:"nb_visits";i:62;s:10:"nb_actions";i:62;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:11315;s:12:"bounce_count";i:62;s:19:"nb_visits_converted";i:31;s:26:"sum_daily_nb_uniq_visitors";i:62;s:18:"sum_daily_nb_users";i:0;s:5:"goals";a:2:{s:8:"idgoal=1";a:3:{s:14:"nb_conversions";i:31;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}s:8:"idgoal=2";a:3:{s:14:"nb_conversions";i:62;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}}s:14:"nb_conversions";i:93;s:7:"revenue";d:0;s:15:"conversion_rate";d:0.5;s:20:"nb_actions_per_visit";d:1;s:16:"avg_time_on_site";d:183;s:11:"bounce_rate";d:1;}}s:12:"*totalsRow";N;} \ No newline at end of file
diff --git a/plugins/Referrers/tests/System/expected/test_phpSerialized__Referrers.getReferrerType_year.original b/plugins/Referrers/tests/System/expected/test_phpSerialized__Referrers.getReferrerType_year.original
index fa9d34832c..2c278cd091 100644
--- a/plugins/Referrers/tests/System/expected/test_phpSerialized__Referrers.getReferrerType_year.original
+++ b/plugins/Referrers/tests/System/expected/test_phpSerialized__Referrers.getReferrerType_year.original
Binary files differ
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index e213ff1c96..4b4b6c6175 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -6,6 +7,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
+
namespace Piwik\Plugins\SitesManager;
use DateTimeZone;
@@ -14,6 +16,7 @@ use Piwik\Access;
use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Date;
+use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Intl\Data\Provider\CurrencyDataProvider;
use Matomo\Network\IPUtils;
use Piwik\Option;
@@ -61,6 +64,7 @@ class API extends \Piwik\Plugin\API
const OPTION_SEARCH_KEYWORD_QUERY_PARAMETERS_GLOBAL = 'SitesManager_SearchKeywordParameters';
const OPTION_SEARCH_CATEGORY_QUERY_PARAMETERS_GLOBAL = 'SitesManager_SearchCategoryParameters';
const OPTION_EXCLUDED_USER_AGENTS_GLOBAL = 'SitesManager_ExcludedUserAgentsGlobal';
+ const OPTION_EXCLUDED_REFERRERS_GLOBAL = 'SitesManager_ExcludedReferrersGlobal';
const OPTION_KEEP_URL_FRAGMENTS_GLOBAL = 'SitesManager_KeepURLFragmentsGlobal';
/**
@@ -106,16 +110,29 @@ class API extends \Piwik\Plugin\API
* @param bool $crossDomain
* @param bool $forceMatomoEndpoint Whether the Matomo endpoint should be forced if Matomo was installed prior 3.7.0.
* @param bool $excludedQueryParams
+ * @param mixed $excludedReferrers array or comma separated string of ignored referrers. Defaults to configured ignored referrers
*
* @return string The Javascript tag ready to be included on the HTML pages
* @throws Exception
*/
- public function getJavascriptTag($idSite, $piwikUrl = '', $mergeSubdomains = false, $groupPageTitlesByDomain = false,
- $mergeAliasUrls = false, $visitorCustomVariables = false, $pageCustomVariables = false,
- $customCampaignNameQueryParam = false, $customCampaignKeywordParam = false,
- $doNotTrack = false, $disableCookies = false, $trackNoScript = false,
- $crossDomain = false, $forceMatomoEndpoint = false, $excludedQueryParams = false)
- {
+ public function getJavascriptTag(
+ $idSite,
+ $piwikUrl = '',
+ $mergeSubdomains = false,
+ $groupPageTitlesByDomain = false,
+ $mergeAliasUrls = false,
+ $visitorCustomVariables = false,
+ $pageCustomVariables = false,
+ $customCampaignNameQueryParam = false,
+ $customCampaignKeywordParam = false,
+ $doNotTrack = false,
+ $disableCookies = false,
+ $trackNoScript = false,
+ $crossDomain = false,
+ $forceMatomoEndpoint = false,
+ $excludedQueryParams = false,
+ $excludedReferrers = false
+ ) {
Piwik::checkUserHasViewAccess($idSite);
if (empty($piwikUrl)) {
@@ -140,13 +157,25 @@ class API extends \Piwik\Plugin\API
$generator->forceMatomoEndpoint();
}
- $code = $generator->generate($idSite, $piwikUrl, $mergeSubdomains, $groupPageTitlesByDomain,
- $mergeAliasUrls, $visitorCustomVariables, $pageCustomVariables,
- $customCampaignNameQueryParam, $customCampaignKeywordParam,
- $doNotTrack, $disableCookies, $trackNoScript, $crossDomain,
- $excludedQueryParams);
- $code = str_replace(array('<br>', '<br />', '<br/>'), '', $code);
- return $code;
+ $code = $generator->generate(
+ $idSite,
+ $piwikUrl,
+ $mergeSubdomains,
+ $groupPageTitlesByDomain,
+ $mergeAliasUrls,
+ $visitorCustomVariables,
+ $pageCustomVariables,
+ $customCampaignNameQueryParam,
+ $customCampaignKeywordParam,
+ $doNotTrack,
+ $disableCookies,
+ $trackNoScript,
+ $crossDomain,
+ $excludedQueryParams,
+ $excludedReferrers
+ );
+
+ return str_replace(['<br>', '<br />', '<br/>'], '', $code);
}
/**
@@ -159,9 +188,15 @@ class API extends \Piwik\Plugin\API
* @param bool $forceMatomoEndpoint Whether the Matomo endpoint should be forced if Matomo was installed prior 3.7.0.
* @return string The HTML tracking code.
*/
- public function getImageTrackingCode($idSite, $piwikUrl = '', $actionName = false, $idGoal = false, $revenue = false, $forceMatomoEndpoint = false)
- {
- $urlParams = array('idsite' => $idSite, 'rec' => 1);
+ public function getImageTrackingCode(
+ $idSite,
+ $piwikUrl = '',
+ $actionName = false,
+ $idGoal = false,
+ $revenue = false,
+ $forceMatomoEndpoint = false
+ ) {
+ $urlParams = ['idsite' => $idSite, 'rec' => 1];
if ($actionName !== false) {
$urlParams['action_name'] = urlencode(Common::unsanitizeInputValue($actionName));
@@ -184,7 +219,7 @@ class API extends \Piwik\Plugin\API
* @param array &$urlParams The query parameters used in the <img> element's src
* URL. See Matomo's image tracking docs for more info.
*/
- Piwik::postEvent('SitesManager.getImageTrackingCode', array(&$piwikUrl, &$urlParams));
+ Piwik::postEvent('SitesManager.getImageTrackingCode', [&$piwikUrl, &$urlParams]);
$trackerCodeGenerator = new TrackerCodeGenerator();
if ($forceMatomoEndpoint) {
@@ -192,7 +227,7 @@ class API extends \Piwik\Plugin\API
}
$matomoPhp = $trackerCodeGenerator->getPhpTrackerEndpoint();
- $url = (ProxyHttp::isHttps() ? "https://" : "http://") . rtrim($piwikUrl, '/') . '/'.$matomoPhp.'?' . Url::getQueryStringFromParameters($urlParams);
+ $url = (ProxyHttp::isHttps() ? "https://" : "http://") . rtrim($piwikUrl, '/') . '/' . $matomoPhp . '?' . Url::getQueryStringFromParameters($urlParams);
$html = "<!-- Matomo Image Tracker-->
<img referrerpolicy=\"no-referrer-when-downgrade\" src=\"" . htmlspecialchars($url, ENT_COMPAT, 'UTF-8') . "\" style=\"border:0\" alt=\"\" />
<!-- End Matomo -->";
@@ -290,7 +325,7 @@ class API extends \Piwik\Plugin\API
Piwik::checkUserHasSuperUserAccess();
$sites = $this->getModel()->getAllSites();
- $return = array();
+ $return = [];
foreach ($sites as $site) {
$this->enrichSite($site);
$return[$site['idsite']] = $site;
@@ -314,7 +349,7 @@ class API extends \Piwik\Plugin\API
return $this->getSitesId();
} catch (Exception $e) {
// can be called before Matomo tables are created so return empty
- return array();
+ return [];
}
}
@@ -428,20 +463,20 @@ class API extends \Piwik\Plugin\API
return Access::getInstance()->getSitesIdWithAtLeastViewAccess();
}
- if (!empty($_restrictSitesToLogin)
+ if (
+ !empty($_restrictSitesToLogin)
// Only Super User or logged in user can see viewable sites for a specific login,
// but during scheduled task execution, we sometimes want to restrict sites to
// a different login than the superuser.
&& (Piwik::hasUserSuperUserAccessOrIsTheUser($_restrictSitesToLogin)
|| $scheduler->isRunningTask())
) {
-
if (Piwik::hasTheUserSuperUserAccess($_restrictSitesToLogin)) {
return Access::getInstance()->getSitesIdWithAtLeastViewAccess();
}
$accessRaw = Access::getInstance()->getRawSitesWithSomeViewAccess($_restrictSitesToLogin);
- $sitesId = array();
+ $sitesId = [];
foreach ($accessRaw as $access) {
$sitesId[] = $access['idsite'];
@@ -482,13 +517,13 @@ class API extends \Piwik\Plugin\API
$hostname = str_replace('https://', '', $hostname);
// return all variations of the URL
- return array(
+ return [
$url,
"http://" . $hostname,
"http://www." . $hostname,
"https://" . $hostname,
"https://www." . $hostname
- );
+ ];
}
/**
@@ -528,7 +563,7 @@ class API extends \Piwik\Plugin\API
$ids = $this->getModel()->getSitesFromTimezones($timezones);
- $return = array();
+ $return = [];
foreach ($ids as $id) {
$return[] = $id['idsite'];
}
@@ -583,37 +618,40 @@ class API extends \Piwik\Plugin\API
* @see getKeepURLFragmentsGlobal.
* @param string $type The website type, defaults to "website" if not set.
* @param bool|null $excludeUnknownUrls Track only URL matching one of website URLs
+ * @param string|null $excludedReferrers Comma separated list of hosts/urls to exclude from referrer detection
*
* @return int the website ID created
*/
- public function addSite($siteName,
- $urls = null,
- $ecommerce = null,
- $siteSearch = null,
- $searchKeywordParameters = null,
- $searchCategoryParameters = null,
- $excludedIps = null,
- $excludedQueryParameters = null,
- $timezone = null,
- $currency = null,
- $group = null,
- $startDate = null,
- $excludedUserAgents = null,
- $keepURLFragments = null,
- $type = null,
- $settingValues = null,
- $excludeUnknownUrls = null)
- {
+ public function addSite(
+ $siteName,
+ $urls = null,
+ $ecommerce = null,
+ $siteSearch = null,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timezone = null,
+ $currency = null,
+ $group = null,
+ $startDate = null,
+ $excludedUserAgents = null,
+ $keepURLFragments = null,
+ $type = null,
+ $settingValues = null,
+ $excludeUnknownUrls = null,
+ $excludedReferrers = null
+ ) {
Piwik::checkUserHasSuperUserAccess();
SitesManager::dieIfSitesAdminIsDisabled();
$this->checkName($siteName);
if (!isset($settingValues)) {
- $settingValues = array();
+ $settingValues = [];
}
- $coreProperties = array();
+ $coreProperties = [];
$coreProperties = $this->setSettingValue('urls', $urls, $coreProperties, $settingValues);
$coreProperties = $this->setSettingValue('ecommerce', $ecommerce, $coreProperties, $settingValues);
$coreProperties = $this->setSettingValue('group', $group, $coreProperties, $settingValues);
@@ -625,6 +663,7 @@ class API extends \Piwik\Plugin\API
$coreProperties = $this->setSettingValue('excluded_ips', explode(',', $excludedIps ?? ''), $coreProperties, $settingValues);
$coreProperties = $this->setSettingValue('excluded_parameters', explode(',', $excludedQueryParameters ?? ''), $coreProperties, $settingValues);
$coreProperties = $this->setSettingValue('excluded_user_agents', explode(',', $excludedUserAgents ?? ''), $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('excluded_referrers', explode(',', $excludedReferrers ?? ''), $coreProperties, $settingValues);
$timezone = trim($timezone ?? '');
if (empty($timezone)) {
@@ -637,7 +676,7 @@ class API extends \Piwik\Plugin\API
}
$this->checkValidCurrency($currency);
- $bind = array('name' => $siteName);
+ $bind = ['name' => $siteName];
$bind['timezone'] = $timezone;
$bind['currency'] = $currency;
$bind['main_url'] = '';
@@ -700,7 +739,7 @@ class API extends \Piwik\Plugin\API
*
* @param int $idSite The ID of the site that was added.
*/
- Piwik::postEvent('SitesManager.addSite.end', array($idSite));
+ Piwik::postEvent('SitesManager.addSite.end', [$idSite]);
return (int) $idSite;
}
@@ -710,23 +749,20 @@ class API extends \Piwik\Plugin\API
$pluginName = 'WebsiteMeasurable';
if (isset($value)) {
-
if (empty($coreProperties[$pluginName])) {
- $coreProperties[$pluginName] = array();
+ $coreProperties[$pluginName] = [];
}
- $coreProperties[$pluginName][] = array('name' => $fieldName, 'value' => $value);
-
+ $coreProperties[$pluginName][] = ['name' => $fieldName, 'value' => $value];
} elseif (!empty($settingValues[$pluginName])) {
// we check if the value is defined in the setting values instead
foreach ($settingValues[$pluginName] as $key => $setting) {
if ($setting['name'] === $fieldName) {
-
if (empty($coreProperties[$pluginName])) {
- $coreProperties[$pluginName] = array();
+ $coreProperties[$pluginName] = [];
}
- $coreProperties[$pluginName][] = array('name' => $fieldName, 'value' => $setting['value']);
+ $coreProperties[$pluginName][] = ['name' => $fieldName, 'value' => $setting['value']];
return $coreProperties;
}
}
@@ -811,7 +847,7 @@ class API extends \Piwik\Plugin\API
*
* @param int $idSite The ID of the site being deleted.
*/
- Piwik::postEvent('SitesManager.deleteSite.end', array($idSite));
+ Piwik::postEvent('SitesManager.deleteSite.end', [$idSite]);
}
private function checkValidTimezone($timezone)
@@ -824,13 +860,13 @@ class API extends \Piwik\Plugin\API
}
}
}
- throw new Exception($this->translator->translate('SitesManager_ExceptionInvalidTimezone', array($timezone)));
+ throw new Exception($this->translator->translate('SitesManager_ExceptionInvalidTimezone', [$timezone]));
}
private function checkValidCurrency($currency)
{
if (!in_array($currency, array_keys($this->getCurrencyList()))) {
- throw new Exception($this->translator->translate('SitesManager_ExceptionInvalidCurrency', array($currency, "USD, EUR, etc.")));
+ throw new Exception($this->translator->translate('SitesManager_ExceptionInvalidCurrency', [$currency, "USD, EUR, etc."]));
}
}
@@ -853,7 +889,7 @@ class API extends \Piwik\Plugin\API
*
* @param string $excludedIps Comma separated list of IP addresses
* @throws Exception
- * @return array of IPs
+ * @return string Comma separated list of IP addresses
*/
private function checkAndReturnExcludedIps($excludedIps)
{
@@ -867,12 +903,16 @@ class API extends \Piwik\Plugin\API
foreach ($ips as $ip) {
if (!$this->isValidIp($ip)) {
- throw new Exception($this->translator->translate('SitesManager_ExceptionInvalidIPFormat', array($ip, "1.2.3.4, 1.2.3.*, or 1.2.3.4/5")));
+ throw new Exception(
+ $this->translator->translate(
+ 'SitesManager_ExceptionInvalidIPFormat',
+ [$ip, "1.2.3.4, 1.2.3.*, or 1.2.3.4/5"]
+ )
+ );
}
}
- $ips = implode(',', $ips);
- return $ips;
+ return implode(',', $ips);
}
/**
@@ -894,7 +934,7 @@ class API extends \Piwik\Plugin\API
}
if (!is_array($urls)) {
- $urls = array($urls);
+ $urls = [$urls];
}
$urlsInit = $this->getSiteUrlsFromId($idSite);
@@ -919,7 +959,7 @@ class API extends \Piwik\Plugin\API
*
* @return int the number of inserted URLs
*/
- public function setSiteAliasUrls($idSite, $urls = array())
+ public function setSiteAliasUrls($idSite, $urls = [])
{
Piwik::checkUserHasAdminAccess($idSite);
@@ -950,7 +990,7 @@ class API extends \Piwik\Plugin\API
return false;
}
- return array(IPUtils::binaryToStringIP($range[0]), IPUtils::binaryToStringIP($range[1]));
+ return [IPUtils::binaryToStringIP($range[0]), IPUtils::binaryToStringIP($range[1])];
}
/**
@@ -1055,6 +1095,75 @@ class API extends \Piwik\Plugin\API
}
/**
+ * Returns the list of urls/hosts that should be ignored when detecting referrers for the given site.
+ *
+ * @return array list of urls/hosts
+ */
+ public function getExcludedReferrers($idSite)
+ {
+ try {
+ $attributes = Cache::getCacheWebsiteAttributes($idSite);
+
+ if (isset($attributes['excluded_referrers'])) {
+ return $attributes['excluded_referrers'];
+ }
+ } catch (UnexpectedWebsiteFoundException $e) {
+ $cached = Cache::getCacheGeneral();
+ if (isset($cached['global_excluded_referrers'])) {
+ return $cached['global_excluded_referrers'];
+ }
+ }
+
+ return [];
+ }
+
+ /**
+ * Returns the global list of urls/hosts that should be ignored when detecting referrers.
+ * If a visitor is coming from a site on this list, it will be treated as direct entry
+ *
+ * @return string Comma separated list of strings
+ */
+ public function getExcludedReferrersGlobal(): string
+ {
+ Piwik::checkUserHasSomeAdminAccess();
+ $exclusion = Option::get(self::OPTION_EXCLUDED_REFERRERS_GLOBAL);
+
+ return is_string($exclusion) ? $exclusion : '';
+ }
+
+ /**
+ * Sets list of urls/hosts that should be ignored when detecting referrers. For more info,
+ * @see getExcludedReferrersGlobal.
+ *
+ * @param string $excludedReferrers Comma separated list of strings. Each element is trimmed,
+ * and empty strings are removed.
+ */
+ public function setGlobalExcludedReferrers(string $excludedReferrers): void
+ {
+ Piwik::checkUserHasSuperUserAccess();
+
+ $excludedUrls = $this->checkAndReturnCommaSeparatedStringList($excludedReferrers);
+
+ foreach (explode(',', $excludedUrls) ?: [] as $url) {
+ // We allow urls to be provided:
+ // - fully qualified like http://example.url/path
+ // - without protocol like example.url/path
+ // - with subdomain wildcard like .example.url/path
+ $prefixedUrl = 'https://' . ltrim(preg_replace('/^https?:\/\//', '', $url), '.');
+ $parsedUrl = @parse_url($prefixedUrl);
+ if (false === $parsedUrl || !UrlHelper::isLookLikeUrl($prefixedUrl)) {
+ throw new Exception(Piwik::translate('SitesManager_ExceptionInvalidUrl', [$url]));
+ }
+ }
+
+ // update option
+ Option::set(self::OPTION_EXCLUDED_REFERRERS_GLOBAL, $excludedUrls);
+
+ // make sure tracker cache will reflect change
+ Cache::deleteTrackerCache();
+ }
+
+ /**
* Returns true if the default behavior is to keep URL fragments when tracking,
* false if otherwise.
*
@@ -1195,31 +1304,34 @@ class API extends \Piwik\Plugin\API
* @param string $type The Website type, default value is "website"
* @param array|null $settingValues JSON serialized settings eg {settingName: settingValue, ...}
* @param bool|null $excludeUnknownUrls Track only URL matching one of website URLs
+ * @param string|null $excludedReferrers Comma separated list of hosts/urls to exclude from referrer detection
* @throws Exception
* @see getKeepURLFragmentsGlobal. If null, the existing value will
* not be modified.
*
* @return bool true on success
*/
- public function updateSite($idSite,
- $siteName = null,
- $urls = null,
- $ecommerce = null,
- $siteSearch = null,
- $searchKeywordParameters = null,
- $searchCategoryParameters = null,
- $excludedIps = null,
- $excludedQueryParameters = null,
- $timezone = null,
- $currency = null,
- $group = null,
- $startDate = null,
- $excludedUserAgents = null,
- $keepURLFragments = null,
- $type = null,
- $settingValues = null,
- $excludeUnknownUrls = null)
- {
+ public function updateSite(
+ $idSite,
+ $siteName = null,
+ $urls = null,
+ $ecommerce = null,
+ $siteSearch = null,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timezone = null,
+ $currency = null,
+ $group = null,
+ $startDate = null,
+ $excludedUserAgents = null,
+ $keepURLFragments = null,
+ $type = null,
+ $settingValues = null,
+ $excludeUnknownUrls = null,
+ $excludedReferrers = null
+ ) {
Piwik::checkUserHasAdminAccess($idSite);
SitesManager::dieIfSitesAdminIsDisabled();
@@ -1230,7 +1342,7 @@ class API extends \Piwik\Plugin\API
}
// Build the SQL UPDATE based on specified updates to perform
- $bind = array();
+ $bind = [];
if (!is_null($siteName)) {
$this->checkName($siteName);
@@ -1238,11 +1350,11 @@ class API extends \Piwik\Plugin\API
}
if (!isset($settingValues)) {
- $settingValues = array();
+ $settingValues = [];
}
if (empty($coreProperties)) {
- $coreProperties = array();
+ $coreProperties = [];
}
$coreProperties = $this->setSettingValue('urls', $urls, $coreProperties, $settingValues);
@@ -1256,6 +1368,7 @@ class API extends \Piwik\Plugin\API
$coreProperties = $this->setSettingValue('excluded_ips', explode(',', $excludedIps ?? ''), $coreProperties, $settingValues);
$coreProperties = $this->setSettingValue('excluded_parameters', explode(',', $excludedQueryParameters ?? ''), $coreProperties, $settingValues);
$coreProperties = $this->setSettingValue('excluded_user_agents', explode(',', $excludedUserAgents ?? ''), $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('excluded_referrers', explode(',', $excludedReferrers ?? ''), $coreProperties, $settingValues);
if (isset($currency)) {
$currency = trim($currency);
@@ -1267,7 +1380,8 @@ class API extends \Piwik\Plugin\API
$this->checkValidTimezone($timezone);
$bind['timezone'] = $timezone;
}
- if (isset($group)
+ if (
+ isset($group)
&& Piwik::hasUserSuperUserAccess()
) {
$bind['group'] = trim($group);
@@ -1346,7 +1460,7 @@ class API extends \Piwik\Plugin\API
$dataProvider = StaticContainer::get('Piwik\Intl\Data\Provider\CurrencyDataProvider');
$currency = $dataProvider->getCurrencyList();
- $return = array();
+ $return = [];
foreach (array_keys($currency) as $currencyCode) {
$return[$currencyCode] = $this->translator->translate('Intl_Currency_' . $currencyCode) .
' (' . $this->translator->translate('Intl_CurrencySymbol_' . $currencyCode) . ')';
@@ -1393,13 +1507,13 @@ class API extends \Piwik\Plugin\API
public function getTimezonesList()
{
if (!SettingsServer::isTimezoneSupportEnabled()) {
- return array('UTC' => $this->getTimezonesListUTCOffsets());
+ return ['UTC' => $this->getTimezonesListUTCOffsets()];
}
$countries = StaticContainer::get('Piwik\Intl\Data\Provider\RegionDataProvider')->getCountryList();
- $return = array();
- $continents = array();
+ $return = [];
+ $continents = [];
foreach ($countries as $countryCode => $continentCode) {
$countryCode = strtoupper($countryCode);
$timezones = DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, $countryCode);
@@ -1436,7 +1550,7 @@ class API extends \Piwik\Plugin\API
public function getTimezoneName($timezone, $countryCode = null, $multipleTimezonesInCountry = null)
{
if (substr($timezone, 0, 3) === 'UTC') {
- return $this->translator->translate('SitesManager_Format_Utc', str_replace(array('.25', '.5', '.75'), array(':15', ':30', ':45'), substr($timezone, 3)));
+ return $this->translator->translate('SitesManager_Format_Utc', str_replace(['.25', '.5', '.75'], [':15', ':30', ':45'], substr($timezone, 3)));
}
if (!isset($countryCode)) {
@@ -1463,7 +1577,7 @@ class API extends \Piwik\Plugin\API
$return = $this->translator->translate('Intl_Country_' . $countryCode);
if ($multipleTimezonesInCountry) {
- $translationId = 'Intl_Timezone_' . str_replace(array('_', '/'), array('', '_'), $timezone);
+ $translationId = 'Intl_Timezone_' . str_replace(['_', '/'], ['', '_'], $timezone);
$city = $this->translator->translate($translationId);
// Fall back to English identifier, if translation is missing due to differences in tzdata in different PHP versions.
@@ -1481,10 +1595,10 @@ class API extends \Piwik\Plugin\API
private function getTimezonesListUTCOffsets()
{
// manually add the UTC offsets
- $GmtOffsets = array(-12, -11.5, -11, -10.5, -10, -9.5, -9, -8.5, -8, -7.5, -7, -6.5, -6, -5.5, -5, -4.5, -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5,
- 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 5.75, 6, 6.5, 7, 7.5, 8, 8.5, 8.75, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.75, 13, 13.75, 14);
+ $GmtOffsets = [-12, -11.5, -11, -10.5, -10, -9.5, -9, -8.5, -8, -7.5, -7, -6.5, -6, -5.5, -5, -4.5, -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5,
+ 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 5.75, 6, 6.5, 7, 7.5, 8, 8.5, 8.75, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.75, 13, 13.75, 14];
- $return = array();
+ $return = [];
foreach ($GmtOffsets as $offset) {
$offset = Common::forceDotAsSeparatorForDecimalPoint($offset);
@@ -1520,7 +1634,8 @@ class API extends \Piwik\Plugin\API
private function removeTrailingSlash($url)
{
// if there is a final slash, we take the URL without this slash (expected URL format)
- if (strlen($url) > 5
+ if (
+ strlen($url) > 5
&& $url[strlen($url) - 1] == '/'
) {
$url = substr($url, 0, strlen($url) - 1);
@@ -1576,18 +1691,20 @@ class API extends \Piwik\Plugin\API
$sitesHavingOldGroup = $this->getSitesFromGroup($oldGroupName);
foreach ($sitesHavingOldGroup as $site) {
- $this->updateSite($site['idsite'],
- $siteName = null,
- $urls = null,
- $ecommerce = null,
- $siteSearch = null,
- $searchKeywordParameters = null,
- $searchCategoryParameters = null,
- $excludedIps = null,
- $excludedQueryParameters = null,
- $timezone = null,
- $currency = null,
- $newGroupName);
+ $this->updateSite(
+ $site['idsite'],
+ $siteName = null,
+ $urls = null,
+ $ecommerce = null,
+ $siteSearch = null,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timezone = null,
+ $currency = null,
+ $newGroupName
+ );
}
return true;
@@ -1608,7 +1725,7 @@ class API extends \Piwik\Plugin\API
{
$ids = $this->getSitesIdWithAtLeastViewAccess();
if (empty($ids)) {
- return array();
+ return [];
}
$sites = $this->getModel()->getPatternMatchSites($ids, $pattern, $limit);
@@ -1637,5 +1754,4 @@ class API extends \Piwik\Plugin\API
return SettingsPiwik::getWebsitesCountToDisplay();
}
-
}
diff --git a/plugins/SitesManager/Controller.php b/plugins/SitesManager/Controller.php
index 79e671a720..197dca845e 100644
--- a/plugins/SitesManager/Controller.php
+++ b/plugins/SitesManager/Controller.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -6,6 +7,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
+
namespace Piwik\Plugins\SitesManager;
use Exception;
@@ -32,7 +34,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
/** @var Lazy */
private $cache;
- public function __construct(Lazy $cache) {
+ public function __construct(Lazy $cache)
+ {
$this->cache = $cache;
parent::__construct();
@@ -62,7 +65,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$response = new ResponseBuilder(Common::getRequestVar('format'));
- $globalSettings = array();
+ $globalSettings = [];
$globalSettings['keepURLFragmentsGlobal'] = API::getInstance()->getKeepURLFragmentsGlobal();
$globalSettings['defaultCurrency'] = API::getInstance()->getDefaultCurrency();
$globalSettings['searchKeywordParametersGlobal'] = API::getInstance()->getSearchKeywordParametersGlobal();
@@ -71,6 +74,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$globalSettings['excludedIpsGlobal'] = API::getInstance()->getExcludedIpsGlobal();
$globalSettings['excludedQueryParametersGlobal'] = API::getInstance()->getExcludedQueryParametersGlobal();
$globalSettings['excludedUserAgentsGlobal'] = API::getInstance()->getExcludedUserAgentsGlobal();
+ $globalSettings['excludedReferrersGlobal'] = API::getInstance()->getExcludedReferrersGlobal();
return $response->getResponse($globalSettings);
}
@@ -88,6 +92,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$excludedIps = Common::getRequestVar('excludedIps', false);
$excludedQueryParameters = Common::getRequestVar('excludedQueryParameters', false);
$excludedUserAgents = Common::getRequestVar('excludedUserAgents', false);
+ $excludedReferrers = Common::getRequestVar('excludedReferrers', false);
$currency = Common::getRequestVar('currency', false);
$searchKeywordParameters = Common::getRequestVar('searchKeywordParameters', $default = "");
$searchCategoryParameters = Common::getRequestVar('searchCategoryParameters', $default = "");
@@ -99,6 +104,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$api->setGlobalExcludedQueryParameters($excludedQueryParameters);
$api->setGlobalExcludedIps($excludedIps);
$api->setGlobalExcludedUserAgents($excludedUserAgents);
+ $api->setGlobalExcludedReferrers($excludedReferrers);
$api->setGlobalSearchParameters($searchKeywordParameters, $searchCategoryParameters);
$api->setKeepURLFragmentsGlobal($keepURLFragments);
@@ -159,7 +165,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
), $viewType = 'basic');
}
- public function siteWithoutDataTabs() {
+ public function siteWithoutDataTabs()
+ {
$this->checkSitePermission();
$mainUrl = $this->site->getMainUrl();
diff --git a/plugins/SitesManager/SiteUrls.php b/plugins/SitesManager/SiteUrls.php
index 530577b9ac..8880af0972 100644
--- a/plugins/SitesManager/SiteUrls.php
+++ b/plugins/SitesManager/SiteUrls.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -6,6 +7,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
+
namespace Piwik\Plugins\SitesManager;
use Piwik\Cache;
@@ -44,10 +46,10 @@ class SiteUrls
public function groupUrlsByHost($siteUrls)
{
if (empty($siteUrls)) {
- return array();
+ return [];
}
- $allUrls = array();
+ $allUrls = [];
foreach ($siteUrls as $idSite => $urls) {
$idSite = (int) $idSite;
@@ -61,7 +63,7 @@ class SiteUrls
return $allUrls;
}
- private function addUrlByHost(&$allUrls, $idSite, $url, $addPath = true)
+ public function addUrlByHost(&$allUrls, $idSite, $url, $addPath = true)
{
$urlParsed = @parse_url($url);
@@ -73,7 +75,7 @@ class SiteUrls
$path = $this->getCanonicalPathFromParsedUrl($urlParsed);
if (!isset($allUrls[$host])) {
- $allUrls[$host] = array();
+ $allUrls[$host] = [];
}
if (!$addPath) {
@@ -81,7 +83,7 @@ class SiteUrls
}
if (!isset($allUrls[$host][$path])) {
- $allUrls[$host][$path] = array();
+ $allUrls[$host][$path] = [];
}
if (!in_array($idSite, $allUrls[$host][$path])) {
@@ -92,7 +94,7 @@ class SiteUrls
private function sortUrlsByHost(&$allUrls)
{
foreach ($allUrls as $host => $paths) {
- uksort($paths, array($this, 'sortByPathDepth'));
+ uksort($paths, [$this, 'sortByPathDepth']);
$allUrls[$host] = $paths;
}
}
@@ -106,23 +108,38 @@ class SiteUrls
$urlHost = $this->toCanonicalHost($parsedUrl['host']);
$urlPath = $this->getCanonicalPathFromParsedUrl($parsedUrl);
- $matchingSites = null;
- if (isset($urlsGroupedByHost[$urlHost])) {
- $paths = $urlsGroupedByHost[$urlHost];
-
- foreach ($paths as $path => $idSites) {
- if (0 === strpos($urlPath, $path)) {
- $matchingSites = $idSites;
- break;
+ // As wildcard subdomain might be allowed, for e.g. my.sub.example.org we need to check e.g.
+ // - my.sub.example.org
+ // - .my.sub.example.org
+ // - .sub.example.org
+ // - .example.org
+ $hostsToCheck = [
+ $urlHost,
+ '.' . $urlHost,
+ ];
+
+ while (substr_count($urlHost, '.') >= 2) {
+ $urlHost = substr($urlHost, strpos($urlHost, '.') + 1);
+ $hostsToCheck[] = '.' . $urlHost;
+ }
+
+ foreach ($hostsToCheck as $host) {
+ if (isset($urlsGroupedByHost[$host])) {
+ $paths = $urlsGroupedByHost[$host];
+
+ foreach ($paths as $path => $idSites) {
+ if (0 === strpos($urlPath, $path)) {
+ return $idSites;
+ }
}
- }
- if (!isset($matchingSites) && isset($paths['/'])) {
- $matchingSites = $paths['/'];
+ if (isset($paths['/'])) {
+ return $paths['/'];
+ }
}
}
- return $matchingSites;
+ return null;
}
public function getPathMatchingUrl($parsedUrl, $urlsGroupedByHost)
@@ -134,7 +151,6 @@ class SiteUrls
$urlHost = $this->toCanonicalHost($parsedUrl['host']);
$urlPath = $this->getCanonicalPathFromParsedUrl($parsedUrl);
- $matchingSites = null;
if (isset($urlsGroupedByHost[$urlHost])) {
$paths = $urlsGroupedByHost[$urlHost];
@@ -165,15 +181,15 @@ class SiteUrls
$siteUrls = $model->getAllKnownUrlsForAllSites();
if (empty($siteUrls)) {
- return array();
+ return [];
}
- $urls = array();
+ $urls = [];
foreach ($siteUrls as $siteUrl) {
$siteId = (int) $siteUrl['idsite'];
if (!isset($urls[$siteId])) {
- $urls[$siteId] = array();
+ $urls[$siteId] = [];
}
$urls[$siteId][] = $siteUrl['url'];
@@ -231,5 +247,4 @@ class SiteUrls
return $path;
}
-
}
diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php
index 7b0b305cd0..a43ed32813 100644
--- a/plugins/SitesManager/SitesManager.php
+++ b/plugins/SitesManager/SitesManager.php
@@ -183,6 +183,7 @@ class SitesManager extends \Piwik\Plugin
$array['excluded_ips'] = $this->getTrackerExcludedIps($website);
$array['excluded_parameters'] = self::getTrackerExcludedQueryParameters($website);
$array['excluded_user_agents'] = self::getExcludedUserAgents($website);
+ $array['excluded_referrers'] = self::getExcludedReferrers($website);
$array['keep_url_fragment'] = self::shouldKeepURLFragmentsFor($website);
$array['sitesearch'] = $website['sitesearch'];
$array['sitesearch_keyword_parameters'] = $this->getTrackerSearchKeywordParameters($website);
@@ -207,6 +208,7 @@ class SitesManager extends \Piwik\Plugin
Access::doAsSuperUser(function () use (&$cache) {
$cache['global_excluded_user_agents'] = self::filterBlankFromCommaSepList(API::getInstance()->getExcludedUserAgentsGlobal());
$cache['global_excluded_ips'] = self::filterBlankFromCommaSepList(API::getInstance()->getExcludedIpsGlobal());
+ $cache['global_excluded_referrers'] = self::filterBlankFromCommaSepList(API::getInstance()->getExcludedReferrersGlobal());
});
}
@@ -296,6 +298,20 @@ class SitesManager extends \Piwik\Plugin
}
/**
+ * Returns the array of excluded referrers. Filters out
+ * any garbage data & trims each entry.
+ *
+ * @param array $website The full set of information for a site.
+ * @return array
+ */
+ private static function getExcludedReferrers($website)
+ {
+ $excludedReferrers = API::getInstance()->getExcludedReferrersGlobal();
+ $excludedReferrers .= ',' . $website['excluded_referrers'];
+ return self::filterBlankFromCommaSepList($excludedReferrers);
+ }
+
+ /**
* Returns the array of URL query parameters to exclude from URLs
*
* @param array $website
@@ -448,6 +464,12 @@ class SitesManager extends \Piwik\Plugin
$translationKeys[] = "SitesManager_JsTrackingTagHelp";
$translationKeys[] = "SitesManager_SiteWithoutDataSinglePageApplication";
$translationKeys[] = "SitesManager_SiteWithoutDataSinglePageApplicationDescription";
-
+ $translationKeys[] = "SitesManager_GlobalListExcludedReferrers";
+ $translationKeys[] = "SitesManager_GlobalListExcludedReferrersDesc";
+ $translationKeys[] = "SitesManager_ExcludedReferrers";
+ $translationKeys[] = "SitesManager_ExcludedReferrersHelp";
+ $translationKeys[] = "SitesManager_ExcludedReferrersHelpDetails";
+ $translationKeys[] = "SitesManager_ExcludedReferrersHelpExamples";
+ $translationKeys[] = "SitesManager_ExcludedReferrersHelpSubDomains";
}
}
diff --git a/plugins/SitesManager/lang/en.json b/plugins/SitesManager/lang/en.json
index 8e0decd70e..e3e4166255 100644
--- a/plugins/SitesManager/lang/en.json
+++ b/plugins/SitesManager/lang/en.json
@@ -25,6 +25,13 @@
"ExcludedIps": "Excluded IPs",
"ExcludedParameters": "Excluded Parameters",
"ExcludedUserAgents": "Excluded User Agents",
+ "ExcludedReferrers": "Excluded referrers",
+ "ExcludedReferrersHelp": "Enter the list of hostnames and URLs, one per line, you want to exclude from referrer detection.",
+ "ExcludedReferrersHelpDetails": "Each entry needs to contain the hostname and may contain a path. If a path is provided a referrer will only be excluded if the path matches as well. URLs with and without 'www' are treated the same. Provided protocols will be ignored.",
+ "ExcludedReferrersHelpExamples": "e.g. \"%1$s\" would match \"%2$s\" and \"%3$s\" but not \"%4$s\"",
+ "ExcludedReferrersHelpSubDomains": "To also exclude all subdomains of a certain hostname, prefix it with a dot. e.g. \"%1$s\" would exclude \"%2$s\", but also all its subdomains like \"%3$s\".",
+ "GlobalListExcludedReferrers": "Global list of excluded referrers",
+ "GlobalListExcludedReferrersDesc": "The hostnames and URLs below will be excluded from referrer detection.",
"Format_Utc": "UTC%s",
"GlobalExcludedUserAgentHelp1": "Enter the list of user agents to exclude from being tracked by Matomo.",
"GlobalExcludedUserAgentHelp2": "You can use this to exclude some bots from being tracked.",
diff --git a/plugins/SitesManager/tests/Fixtures/ManySites.php b/plugins/SitesManager/tests/Fixtures/ManySites.php
index f070a53174..4f30ae492f 100644
--- a/plugins/SitesManager/tests/Fixtures/ManySites.php
+++ b/plugins/SitesManager/tests/Fixtures/ManySites.php
@@ -1,10 +1,12 @@
<?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\SitesManager\tests\Fixtures;
use Piwik\Plugins\MobileAppMeasurable;
@@ -32,12 +34,18 @@ class ManySites extends Fixture
$type = MobileAppMeasurable\Type::ID;
}
- self::createWebsite($this->dateTime, $ecommerce = 0, $siteName,
- $siteUrl = false,
- $siteSearch = 1, $searchKeywordParameters = null,
- $searchCategoryParameters = null, $timezone = null, $type);
+ self::createWebsite(
+ $this->dateTime,
+ $ecommerce = 0,
+ $siteName,
+ $siteUrl = false,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $timezone = null,
+ $type
+ );
}
}
}
-
-} \ No newline at end of file
+}
diff --git a/plugins/SitesManager/tests/Integration/ApiTest.php b/plugins/SitesManager/tests/Integration/ApiTest.php
index 3966c30c76..e94fbdec16 100644
--- a/plugins/SitesManager/tests/Integration/ApiTest.php
+++ b/plugins/SitesManager/tests/Integration/ApiTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -52,11 +53,11 @@ class ApiTest extends IntegrationTestCase
/**
* empty name -> exception
*/
- public function test_addSite_WithEmptyName_ThrowsException()
+ public function testAddSiteWithEmptyNameThrowsException()
{
$this->expectException(\Exception::class);
- API::getInstance()->addSite("", array("http://piwik.net"));
+ API::getInstance()->addSite("", ["http://piwik.net"]);
}
/**
@@ -64,13 +65,13 @@ class ApiTest extends IntegrationTestCase
*/
public function getInvalidUrlData()
{
- return array(
- array(array()), // no urls
- array(array("")),
- array(""),
- array("5http://piwik.net"),
- array("???://piwik.net"),
- );
+ return [
+ [[]], // no urls
+ [[""]],
+ [""],
+ ["5http://piwik.net"],
+ ["???://piwik.net"],
+ ];
}
/**
@@ -78,7 +79,7 @@ class ApiTest extends IntegrationTestCase
*
* @dataProvider getInvalidUrlData
*/
- public function test_addSite_WithWrongUrls_ThrowsException($url)
+ public function testAddSiteWithWrongUrlsThrowsException($url)
{
$this->expectException(\Exception::class);
API::getInstance()->addSite("name", $url);
@@ -87,7 +88,7 @@ class ApiTest extends IntegrationTestCase
/**
* Test with valid IPs
*/
- public function test_addSite_WithExcludedIps_AndTimezone_AndCurrency_AndExcludedQueryParameters_SucceedsWhenParamsAreValid()
+ public function testAddSiteWithExcludedIpsAndTimezoneAndCurrencyAndExcludedQueryParametersSucceedsWhenParamsAreValid()
{
$this->addSiteTest($expectedWebsiteType = 'mobile-\'app');
}
@@ -95,7 +96,7 @@ class ApiTest extends IntegrationTestCase
/**
* @dataProvider getDifferentTypesDataProvider
*/
- public function test_addSite_WhenTypeIsKnown($expectedWebsiteType)
+ public function testAddSiteWhenTypeIsKnown($expectedWebsiteType)
{
$this->addSiteTest($expectedWebsiteType);
}
@@ -109,11 +110,28 @@ class ApiTest extends IntegrationTestCase
$expectedExcludedQueryParameters = 'p1,P2,P33333';
$excludedUserAgents = " p1,P2, \nP3333 ";
$expectedExcludedUserAgents = "p1,P2,P3333";
+ $excludedReferrers = 'http://www.paypal.com,https://amazon.com';
$keepUrlFragment = 1;
- $idsite = API::getInstance()->addSite("name", "http://piwik.net/", $ecommerce = 1,
- $siteSearch = 1, $searchKeywordParameters = 'search,param', $searchCategoryParameters = 'cat,category',
- $ips, $excludedQueryParameters, $timezone, $currency, $group = null, $startDate = null, $excludedUserAgents,
- $keepUrlFragment, $expectedWebsiteType, $settingValues);
+ $idsite = API::getInstance()->addSite(
+ "name",
+ "http://piwik.net/",
+ $ecommerce = 1,
+ $siteSearch = 1,
+ $searchKeywordParameters = 'search,param',
+ $searchCategoryParameters = 'cat,category',
+ $ips,
+ $excludedQueryParameters,
+ $timezone,
+ $currency,
+ $group = null,
+ $startDate = null,
+ $excludedUserAgents,
+ $keepUrlFragment,
+ $expectedWebsiteType,
+ $settingValues,
+ null,
+ $excludedReferrers
+ );
$siteInfo = API::getInstance()->getSiteFromId($idsite);
$this->assertEquals($ips, $siteInfo['excluded_ips']);
$this->assertEquals($timezone, $siteInfo['timezone']);
@@ -131,6 +149,7 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals($searchCategoryParameters, $siteInfo['sitesearch_category_parameters']);
$this->assertEquals($expectedExcludedQueryParameters, $siteInfo['excluded_parameters']);
$this->assertEquals($expectedExcludedUserAgents, $siteInfo['excluded_user_agents']);
+ $this->assertEquals($excludedReferrers, $siteInfo['excluded_referrers']);
return $siteInfo;
}
@@ -140,15 +159,15 @@ class ApiTest extends IntegrationTestCase
*/
public function getInvalidIPsData()
{
- return array(
- array('35817587341'),
- array('ieagieha'),
- array('1.2.3'),
- array('*.1.1.1'),
- array('*.*.1.1'),
- array('*.*.*.1'),
- array('1.1.1.1.1'),
- );
+ return [
+ ['35817587341'],
+ ['ieagieha'],
+ ['1.2.3'],
+ ['*.1.1.1'],
+ ['*.*.1.1'],
+ ['*.*.*.1'],
+ ['1.1.1.1.1'],
+ ];
}
/**
@@ -156,17 +175,24 @@ class ApiTest extends IntegrationTestCase
*
* @dataProvider getInvalidIPsData
*/
- public function test_addSite_WithInvalidExcludedIps_ThrowsException($ip)
+ public function testAddSiteWithInvalidExcludedIpsThrowsException($ip)
{
$this->expectException(\Exception::class);
- API::getInstance()->addSite("name", "http://piwik.net/", $ecommerce = 0,
- $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, $ip);
+ API::getInstance()->addSite(
+ "name",
+ "http://piwik.net/",
+ $ecommerce = 0,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $ip
+ );
}
/**
* one url -> one main_url and nothing inserted as alias urls
*/
- public function test_addSite_WithOneUrl_Succeeds_AndCreatesNoAliasUrls()
+ public function testAddSiteWithOneUrlSucceedsAndCreatesNoAliasUrls()
{
$url = "http://piwik.net/";
$urlOK = "http://piwik.net";
@@ -184,10 +210,10 @@ class ApiTest extends IntegrationTestCase
/**
* several urls -> one main_url and others as alias urls
*/
- public function test_addSite_WithSeveralUrls_Succeeds_AndCreatesAliasUrls()
+ public function testAddSiteWithSeveralUrlsSucceedsAndCreatesAliasUrls()
{
- $urls = array("http://piwik.net/", "http://piwik.com", "https://piwik.net/test/", "piwik.net/another/test");
- $urlsOK = array("http://piwik.net", "http://piwik.com", "http://piwik.net/another/test", "https://piwik.net/test");
+ $urls = ["http://piwik.net/", "http://piwik.com", "https://piwik.net/test/", "piwik.net/another/test"];
+ $urlsOK = ["http://piwik.net", "http://piwik.com", "http://piwik.net/another/test", "https://piwik.net/test"];
$idsite = API::getInstance()->addSite("super website", $urls);
self::assertIsInt($idsite);
@@ -201,7 +227,7 @@ class ApiTest extends IntegrationTestCase
/**
* strange name
*/
- public function test_addSite_WithStrangeName_Succeeds()
+ public function testAddSiteWithStrangeNameSucceeds()
{
$name = "supertest(); ~@@()''!£\$'%%^'!£ போ";
$idsite = API::getInstance()->addSite($name, "http://piwik.net");
@@ -209,34 +235,32 @@ class ApiTest extends IntegrationTestCase
$siteInfo = API::getInstance()->getSiteFromId($idsite);
$this->assertEquals($name, $siteInfo['name']);
-
}
/**
* @dataProvider getDifferentTypesDataProvider
*/
- public function test_addSite_ShouldFailAndNotCreatedASite_IfASettingIsInvalid($type)
+ public function testAddSiteShouldFailAndNotCreatedASiteIfASettingIsInvalid($type)
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('SitesManager_OnlyMatchedUrlsAllowed');
try {
- $settings = array('WebsiteMeasurable' => array(array('name' => 'exclude_unknown_urls', 'value' => 'fooBar')));
+ $settings = ['WebsiteMeasurable' => [['name' => 'exclude_unknown_urls', 'value' => 'fooBar']]];
$this->addSiteWithType($type, $settings);
} catch (Exception $e) {
-
// make sure no site created
$ids = API::getInstance()->getAllSitesId();
- $this->assertEquals(array(), $ids);
+ $this->assertEquals([], $ids);
throw $e;
}
}
- public function test_addSite_ShouldSavePassedMeasurableSettings_IfSettingsAreValid()
+ public function testAddSiteShouldSavePassedMeasurableSettingsIfSettingsAreValid()
{
$type = WebsiteType::ID;
- $settings = array('WebsiteMeasurable' => array(array('name' => 'urls', 'value' => array('http://www.piwik.org'))));
+ $settings = ['WebsiteMeasurable' => [['name' => 'urls', 'value' => ['http://www.piwik.org']]]];
$idSite = $this->addSiteWithType($type, $settings);
$this->assertSame(1, $idSite);
@@ -244,7 +268,7 @@ class ApiTest extends IntegrationTestCase
$settings = $this->getWebsiteMeasurable($idSite);
$urls = $settings->urls->getValue();
- $this->assertSame(array('http://www.piwik.org'), $urls);
+ $this->assertSame(['http://www.piwik.org'], $urls);
}
/**
@@ -260,10 +284,10 @@ class ApiTest extends IntegrationTestCase
* adds a site
* use by several other unit tests
*/
- protected function _addSite()
+ protected function addSite()
{
$name = "website ";
- $idsite = API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/"));
+ $idsite = API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]);
self::assertIsInt($idsite);
$siteInfo = API::getInstance()->getSiteFromId($idsite);
@@ -271,15 +295,20 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals("http://piwik.net", $siteInfo['main_url']);
$siteUrls = API::getInstance()->getSiteUrlsFromId($idsite);
- $this->assertEquals(array("http://piwik.net", "http://piwik.com/test"), $siteUrls);
+ $this->assertEquals(["http://piwik.net", "http://piwik.com/test"], $siteUrls);
return $idsite;
}
private function addSiteWithType($type, $settings)
{
- return API::getInstance()->addSite("name", "http://piwik.net/", $ecommerce = 0,
- $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
+ return API::getInstance()->addSite(
+ "name",
+ "http://piwik.net/",
+ $ecommerce = 0,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
$ip = null,
$excludedQueryParameters = null,
$timezone = null,
@@ -288,12 +317,15 @@ class ApiTest extends IntegrationTestCase
$startDate = null,
$excludedUserAgents = null,
$keepURLFragments = null,
- $type, $settings);
+ $type,
+ $settings
+ );
}
private function updateSiteSettings($idSite, $newSiteName, $settings)
{
- return API::getInstance()->updateSite($idSite,
+ return API::getInstance()->updateSite(
+ $idSite,
$newSiteName,
$urls = null,
$ecommerce = null,
@@ -309,33 +341,34 @@ class ApiTest extends IntegrationTestCase
$excludedUserAgents = null,
$keepURLFragments = null,
$type = null,
- $settings);
+ $settings
+ );
}
/**
* no duplicate -> all the urls are saved
*/
- public function test_addSiteAliasUrls_WithUniqueUrls_SavesAllUrls()
+ public function testAddSiteAliasUrlsWithUniqueUrlsSavesAllUrls()
{
- $idsite = $this->_addSite();
+ $idsite = $this->addSite();
$siteUrlsBefore = API::getInstance()->getSiteUrlsFromId($idsite);
- $toAdd = array("http://piwik1.net",
+ $toAdd = ["http://piwik1.net",
"http://piwik2.net",
"http://piwik3.net/test/",
"http://localhost/test",
"http://localho5.st/test",
"http://l42578gqege.f4",
"http://super.com/test/test/atqata675675/te"
- );
- $toAddValid = array("http://piwik1.net",
+ ];
+ $toAddValid = ["http://piwik1.net",
"http://piwik2.net",
"http://piwik3.net/test",
"http://localhost/test",
"http://localho5.st/test",
"http://l42578gqege.f4",
- "http://super.com/test/test/atqata675675/te");
+ "http://super.com/test/test/atqata675675/te"];
$insertedUrls = API::getInstance()->addSiteAliasUrls($idsite, $toAdd);
$this->assertEquals(count($toAdd), $insertedUrls);
@@ -353,13 +386,13 @@ class ApiTest extends IntegrationTestCase
/**
* duplicate -> don't save the already existing URLs
*/
- public function test_addSiteAliasUrls_WithDuplicateUrls_RemovesDuplicatesBeforeSaving()
+ public function testAddSiteAliasUrlsWithDuplicateUrlsRemovesDuplicatesBeforeSaving()
{
- $idsite = $this->_addSite();
+ $idsite = $this->addSite();
$siteUrlsBefore = API::getInstance()->getSiteUrlsFromId($idsite);
- $toAdd = array_merge($siteUrlsBefore, array("http://piwik1.net", "http://piwik2.net"));
+ $toAdd = array_merge($siteUrlsBefore, ["http://piwik1.net", "http://piwik2.net"]);
$insertedUrls = API::getInstance()->addSiteAliasUrls($idsite, $toAdd);
$this->assertEquals(count($toAdd) - count($siteUrlsBefore), $insertedUrls);
@@ -377,13 +410,13 @@ class ApiTest extends IntegrationTestCase
/**
* case empty array => nothing happens
*/
- public function test_addSiteAliasUrls_WithNoUrls_DoesNothing()
+ public function testAddSiteAliasUrlsWithNoUrlsDoesNothing()
{
- $idsite = $this->_addSite();
+ $idsite = $this->addSite();
$siteUrlsBefore = API::getInstance()->getSiteUrlsFromId($idsite);
- $toAdd = array();
+ $toAdd = [];
$insertedUrls = API::getInstance()->addSiteAliasUrls($idsite, $toAdd);
$this->assertEquals(count($toAdd), $insertedUrls);
@@ -401,9 +434,9 @@ class ApiTest extends IntegrationTestCase
/**
* case array only duplicate => nothing happens
*/
- public function test_addSiteAliasUrls_WithAlreadyPersistedUrls_DoesNothing()
+ public function testAddSiteAliasUrlsWithAlreadyPersistedUrlsDoesNothing()
{
- $idsite = $this->_addSite();
+ $idsite = $this->addSite();
$siteUrlsBefore = API::getInstance()->getSiteUrlsFromId($idsite);
@@ -425,41 +458,56 @@ class ApiTest extends IntegrationTestCase
/**
* wrong format urls => exception
*/
- public function test_addSiteAliasUrls_WithIncorrectFormat_ThrowsException_3()
+ public function testAddSiteAliasUrlsWithIncorrectFormatThrowsException3()
{
$this->expectException(\Exception::class);
- $idsite = $this->_addSite();
- $toAdd = array("http:mpigeq");
+ $idsite = $this->addSite();
+ $toAdd = ["http:mpigeq"];
API::getInstance()->addSiteAliasUrls($idsite, $toAdd);
}
/**
* wrong idsite => no exception because simply no access to this resource
*/
- public function test_addSiteAliasUrls_WithWrongIdSite_ThrowsException()
+ public function testAddSiteAliasUrlsWithWrongIdSiteThrowsException()
{
$this->expectException(\Exception::class);
- $toAdd = array("http://pigeq.com/test");
+ $toAdd = ["http://pigeq.com/test"];
API::getInstance()->addSiteAliasUrls(-1, $toAdd);
}
/**
* wrong idsite => exception
*/
- public function test_addSiteAliasUrls_WithWrongIdSite_ThrowsException2()
+ public function testAddSiteAliasUrlsWithWrongIdSiteThrowsException2()
{
$this->expectException(\Exception::class);
- $toAdd = array("http://pigeq.com/test");
+ $toAdd = ["http://pigeq.com/test"];
API::getInstance()->addSiteAliasUrls(155, $toAdd);
}
- public function test_addSite_CorrectlySavesExcludeUnknownUrlsSetting()
+ public function testAddSiteCorrectlySavesExcludeUnknownUrlsSetting()
{
- $idSite = API::getInstance()->addSite("site", array("http://piwik.net"), $ecommerce = null, $siteSearch = null,
- $searchKeywordParams = null, $searchCategoryParams = null, $excludedIps = null, $excludedQueryParams = null,
- $timezone = null, $currency = null, $group = null, $startDate = null, $excludedUserAgents = null,
- $keepUrlFragments = null, $type = null, $settings = null, $excludeUnknownUrls = true);
+ $idSite = API::getInstance()->addSite(
+ "site",
+ ["http://piwik.net"],
+ $ecommerce = null,
+ $siteSearch = null,
+ $searchKeywordParams = null,
+ $searchCategoryParams = null,
+ $excludedIps = null,
+ $excludedQueryParams = null,
+ $timezone = null,
+ $currency = null,
+ $group = null,
+ $startDate = null,
+ $excludedUserAgents = null,
+ $keepUrlFragments = null,
+ $type = null,
+ $settings = null,
+ $excludeUnknownUrls = true
+ );
$site = API::getInstance()->getSiteFromId($idSite);
$this->assertEquals(1, $site['exclude_unknown_urls']);
@@ -468,25 +516,25 @@ class ApiTest extends IntegrationTestCase
/**
* no Id -> empty array
*/
- public function test_getAllSitesId_ReturnsNothing_WhenNoSitesSaved()
+ public function testGetAllSitesIdReturnsNothingWhenNoSitesSaved()
{
$ids = API::getInstance()->getAllSitesId();
- $this->assertEquals(array(), $ids);
+ $this->assertEquals([], $ids);
}
/**
* several Id -> normal array
*/
- public function test_getAllSitesId_ReturnsAllIds_WhenMultipleSitesPersisted()
+ public function testGetAllSitesIdReturnsAllIdsWhenMultipleSitesPersisted()
{
$name = "tetq";
- $idsites = array(
- API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),
- API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),
- API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),
- API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),
- API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),
- );
+ $idsites = [
+ API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]),
+ API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]),
+ API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]),
+ API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]),
+ API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]),
+ ];
$ids = API::getInstance()->getAllSitesId();
$this->assertEquals($idsites, $ids);
@@ -495,7 +543,7 @@ class ApiTest extends IntegrationTestCase
/**
* wrong id => exception
*/
- public function test_getSiteFromId_WithWrongId_ThrowsException1()
+ public function testGetSiteFromIdWithWrongIdThrowsException1()
{
$this->expectException(\Exception::class);
API::getInstance()->getSiteFromId(0);
@@ -504,7 +552,7 @@ class ApiTest extends IntegrationTestCase
/**
* wrong id => exception
*/
- public function test_getSiteFromId_WithWrongId_ThrowsException2()
+ public function testGetSiteFromIdWithWrongIdThrowsException2()
{
$this->expectException(\Exception::class);
API::getInstance()->getSiteFromId("x1");
@@ -513,15 +561,15 @@ class ApiTest extends IntegrationTestCase
/**
* wrong id : no access => exception
*/
- public function test_getSiteFromId_ThrowsException_WhenTheUserDoesNotHavaAcessToTheSite()
+ public function testGetSiteFromIdThrowsExceptionWhenTheUserDoesNotHavaAcessToTheSite()
{
$this->expectException(\Exception::class);
- $idsite = API::getInstance()->addSite("site", array("http://piwik.net", "http://piwik.com/test/"));
+ $idsite = API::getInstance()->addSite("site", ["http://piwik.net", "http://piwik.com/test/"]);
$this->assertEquals(1, $idsite);
// set noaccess to site 1
- FakeAccess::setIdSitesView(array(2));
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([2]);
+ FakeAccess::setIdSitesAdmin([]);
API::getInstance()->getSiteFromId(1);
}
@@ -529,10 +577,10 @@ class ApiTest extends IntegrationTestCase
/**
* normal case
*/
- public function test_getSiteFromId_WithNormalId_ReturnsTheCorrectSite()
+ public function testGetSiteFromIdWithNormalIdReturnsTheCorrectSite()
{
$name = "website ''";
- $idsite = API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/"));
+ $idsite = API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]);
self::assertIsInt($idsite);
$siteInfo = API::getInstance()->getSiteFromId($idsite);
@@ -543,29 +591,29 @@ class ApiTest extends IntegrationTestCase
/**
* there is no admin site available -> array()
*/
- public function test_getSitesWithAdminAccess_ReturnsNothing_WhenUserHasNoAdminAccess()
+ public function testGetSitesWithAdminAccessReturnsNothingWhenUserHasNoAdminAccess()
{
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesAdmin([]);
$sites = API::getInstance()->getSitesWithAdminAccess();
- $this->assertEquals(array(), $sites);
+ $this->assertEquals([], $sites);
}
/**
* normal case, admin and view and noaccess website => return only admin
*/
- public function test_getSitesWithAdminAccess_shouldOnlyReturnSitesHavingActuallyAdminAccess()
+ public function testGetSitesWithAdminAccessShouldOnlyReturnSitesHavingActuallyAdminAccess()
{
- API::getInstance()->addSite("site1", array("http://piwik.net", "http://piwik.com/test/"));
- API::getInstance()->addSite("site2", array("http://piwik.com/test/"));
- API::getInstance()->addSite("site3", array("http://piwik.org"), null, null, null, null, null, null, 'Asia/Tokyo');
+ API::getInstance()->addSite("site1", ["http://piwik.net", "http://piwik.com/test/"]);
+ API::getInstance()->addSite("site2", ["http://piwik.com/test/"]);
+ API::getInstance()->addSite("site3", ["http://piwik.org"], null, null, null, null, null, null, 'Asia/Tokyo');
- $resultWanted = array(
- 0 => array("idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'timezone_name' => 'SitesManager_Format_Utc', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'currency_name' => 'USD'),
- 1 => array("idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'Asia/Tokyo', 'timezone_name' => 'Intl_Country_JP', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'currency_name' => 'USD'),
- );
+ $resultWanted = [
+ 0 => ["idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'excluded_referrers' => '', 'timezone' => 'UTC', 'timezone_name' => 'SitesManager_Format_Utc', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'currency_name' => 'USD'],
+ 1 => ["idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'excluded_referrers' => '', 'timezone' => 'Asia/Tokyo', 'timezone_name' => 'Intl_Country_JP', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'currency_name' => 'USD'],
+ ];
- FakeAccess::setIdSitesAdmin(array(1, 3));
+ FakeAccess::setIdSitesAdmin([1, 3]);
$sites = API::getInstance()->getSitesWithAdminAccess();
@@ -575,7 +623,7 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals($resultWanted, $sites);
}
- public function test_getSitesWithAdminAccess_shouldApplyLimit_IfSet()
+ public function testGetSitesWithAdminAccessShouldApplyLimitIfSet()
{
$this->createManySitesWithAdminAccess(40);
@@ -585,50 +633,50 @@ class ApiTest extends IntegrationTestCase
// return only 5 sites
$sites = API::getInstance()->getSitesWithAdminAccess(false, false, 5);
- $this->assertReturnedSitesContainsSiteIds(array(1, 2, 3, 4, 5), $sites);
+ $this->assertReturnedSitesContainsSiteIds([1, 2, 3, 4, 5], $sites);
// return only 10 sites
$sites = API::getInstance()->getSitesWithAdminAccess(false, false, 10);
$this->assertReturnedSitesContainsSiteIds(range(1, 10), $sites);
}
- public function test_getSitesWithAdminAccess_shouldApplyPattern_IfSetAndFindBySiteName()
+ public function testGetSitesWithAdminAccessShouldApplyPatternIfSetAndFindBySiteName()
{
$this->createManySitesWithAdminAccess(40);
// by site name
$sites = API::getInstance()->getSitesWithAdminAccess(false, 'site38');
- $this->assertReturnedSitesContainsSiteIds(array(38), $sites);
+ $this->assertReturnedSitesContainsSiteIds([38], $sites);
}
- public function test_getSitesWithAdminAccess_shouldApplyPattern_IfSetAndFindByUrl()
+ public function testGetSitesWithAdminAccessShouldApplyPatternIfSetAndFindByUrl()
{
$this->createManySitesWithAdminAccess(40);
$sites = API::getInstance()->getSitesWithAdminAccess(false, 'piwik38.o');
- $this->assertReturnedSitesContainsSiteIds(array(38), $sites);
+ $this->assertReturnedSitesContainsSiteIds([38], $sites);
}
- public function test_getSitesWithAdminAccess_shouldApplyPattern_AndFindMany()
+ public function testGetSitesWithAdminAccessShouldApplyPatternAndFindMany()
{
$this->createManySitesWithAdminAccess(40);
$sites = API::getInstance()->getSitesWithAdminAccess(false, '5');
- $this->assertReturnedSitesContainsSiteIds(array(5, 15, 25, 35), $sites);
+ $this->assertReturnedSitesContainsSiteIds([5, 15, 25, 35], $sites);
}
- public function test_getSitesWithAdminAccess_shouldApplyPatternAndLimit()
+ public function testGetSitesWithAdminAccessShouldApplyPatternAndLimit()
{
$this->createManySitesWithAdminAccess(40);
$sites = API::getInstance()->getSitesWithAdminAccess(false, '5', 2);
- $this->assertReturnedSitesContainsSiteIds(array(5, 15), $sites);
+ $this->assertReturnedSitesContainsSiteIds([5, 15], $sites);
}
private function createManySitesWithAdminAccess($numSites)
{
for ($i = 1; $i <= $numSites; $i++) {
- API::getInstance()->addSite("site" . $i, array("http://piwik$i.org"));
+ API::getInstance()->addSite("site" . $i, ["http://piwik$i.org"]);
}
FakeAccess::setIdSitesAdmin(range(1, $numSites));
@@ -651,31 +699,31 @@ class ApiTest extends IntegrationTestCase
/**
* there is no admin site available -> array()
*/
- public function test_getSitesWithViewAccess_ReturnsNothing_IfUserHasNoViewOrAdminAccess()
+ public function testGetSitesWithViewAccessReturnsNothingIfUserHasNoViewOrAdminAccess()
{
- FakeAccess::setIdSitesView(array());
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([]);
+ FakeAccess::setIdSitesAdmin([]);
$sites = API::getInstance()->getSitesWithViewAccess();
- $this->assertEquals(array(), $sites);
+ $this->assertEquals([], $sites);
}
/**
* normal case, admin and view and noaccess website => return only admin
*/
- public function test_getSitesWithViewAccess_ReturnsSitesWithViewAccess()
+ public function testGetSitesWithViewAccessReturnsSitesWithViewAccess()
{
- API::getInstance()->addSite("site1", array("http://piwik.net", "http://piwik.com/test/"));
- API::getInstance()->addSite("site2", array("http://piwik.com/test/"));
- API::getInstance()->addSite("site3", array("http://piwik.org"));
+ API::getInstance()->addSite("site1", ["http://piwik.net", "http://piwik.com/test/"]);
+ API::getInstance()->addSite("site2", ["http://piwik.com/test/"]);
+ API::getInstance()->addSite("site3", ["http://piwik.org"]);
- $resultWanted = array(
- 0 => array("idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 0, 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', "excluded_ips" => "", 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'),
- 1 => array("idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', "excluded_ips" => "", 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'),
- );
+ $resultWanted = [
+ 0 => ["idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 0, 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', "excluded_ips" => "", 'excluded_parameters' => '', 'excluded_user_agents' => '', 'excluded_referrers' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'],
+ 1 => ["idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', "excluded_ips" => "", 'excluded_parameters' => '', 'excluded_user_agents' => '', 'excluded_referrers' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'],
+ ];
- FakeAccess::setIdSitesView(array(1, 3));
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([1, 3]);
+ FakeAccess::setIdSitesAdmin([]);
$sites = API::getInstance()->getSitesWithViewAccess();
@@ -689,31 +737,31 @@ class ApiTest extends IntegrationTestCase
/**
* there is no admin site available -> array()
*/
- public function test_getSitesWithAtLeastViewAccess_ReturnsNothing_WhenUserHasNoAccess()
+ public function testGetSitesWithAtLeastViewAccessReturnsNothingWhenUserHasNoAccess()
{
- FakeAccess::setIdSitesView(array());
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([]);
+ FakeAccess::setIdSitesAdmin([]);
$sites = API::getInstance()->getSitesWithAtLeastViewAccess();
- $this->assertEquals(array(), $sites);
+ $this->assertEquals([], $sites);
}
/**
* normal case, admin and view and noaccess website => return only admin
*/
- public function test_getSitesWithAtLeastViewAccess_ReturnsSitesWithViewAccess()
+ public function testGetSitesWithAtLeastViewAccessReturnsSitesWithViewAccess()
{
- API::getInstance()->addSite("site1", array("http://piwik.net", "http://piwik.com/test/"), $ecommerce = 1);
- API::getInstance()->addSite("site2", array("http://piwik.com/test/"));
- API::getInstance()->addSite("site3", array("http://piwik.org"));
+ API::getInstance()->addSite("site1", ["http://piwik.net", "http://piwik.com/test/"], $ecommerce = 1);
+ API::getInstance()->addSite("site2", ["http://piwik.com/test/"]);
+ API::getInstance()->addSite("site3", ["http://piwik.org"]);
- $resultWanted = array(
- 0 => array("idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 1, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'),
- 1 => array("idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'),
- );
+ $resultWanted = [
+ 0 => ["idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 1, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'excluded_referrers' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'],
+ 1 => ["idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'excluded_referrers' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'],
+ ];
- FakeAccess::setIdSitesView(array(1, 3));
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([1, 3]);
+ FakeAccess::setIdSitesAdmin([]);
$sites = API::getInstance()->getSitesWithAtLeastViewAccess();
// we don't test the ts_created
@@ -725,30 +773,30 @@ class ApiTest extends IntegrationTestCase
/**
* no urls for this site => array()
*/
- public function test_getSiteUrlsFromId_ReturnsMainUrlOnly_WhenNoAliasUrls()
+ public function testGetSiteUrlsFromIdReturnsMainUrlOnlyWhenNoAliasUrls()
{
- $idsite = API::getInstance()->addSite("site1", array("http://piwik.net"));
+ $idsite = API::getInstance()->addSite("site1", ["http://piwik.net"]);
$urls = API::getInstance()->getSiteUrlsFromId($idsite);
- $this->assertEquals(array("http://piwik.net"), $urls);
+ $this->assertEquals(["http://piwik.net"], $urls);
}
/**
* normal case
*/
- public function test_getSiteUrlsFromId_ReturnsMainAndAliasUrls()
+ public function testGetSiteUrlsFromIdReturnsMainAndAliasUrls()
{
- $site = array("http://piwik.net",
+ $site = ["http://piwik.net",
"http://piwik.org",
"http://piwik.org",
- "http://piwik.com");
+ "http://piwik.com"];
sort($site);
$idsite = API::getInstance()->addSite("site1", $site);
- $siteWanted = array("http://piwik.net",
+ $siteWanted = ["http://piwik.net",
"http://piwik.org",
- "http://piwik.com");
+ "http://piwik.com"];
sort($siteWanted);
$urls = API::getInstance()->getSiteUrlsFromId($idsite);
@@ -758,23 +806,23 @@ class ApiTest extends IntegrationTestCase
/**
* wrongId => exception
*/
- public function test_getSiteUrlsFromId_ThrowsException_WhenSiteIdIsIncorrect()
+ public function testGetSiteUrlsFromIdThrowsExceptionWhenSiteIdIsIncorrect()
{
$this->expectException(\Exception::class);
- FakeAccess::setIdSitesView(array(3));
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([3]);
+ FakeAccess::setIdSitesAdmin([]);
API::getInstance()->getSiteUrlsFromId(1);
}
/**
* one url => no change to alias urls
*/
- public function test_updateSite_WithOneUrl_RemovesAliasUrls_AndUpdatesTheSiteCorrectly()
+ public function testUpdateSiteWithOneUrlRemovesAliasUrlsAndUpdatesTheSiteCorrectly()
{
- $urls = array("http://piwiknew.com",
+ $urls = ["http://piwiknew.com",
"http://piwiknew.net",
"http://piwiknew.org",
- "http://piwiknew.fr");
+ "http://piwiknew.fr"];
$idsite = API::getInstance()->addSite("site1", $urls);
$newMainUrl = "http://main.url";
@@ -811,14 +859,13 @@ class ApiTest extends IntegrationTestCase
$allUrls = API::getInstance()->getSiteUrlsFromId($idsite);
$this->assertEquals($newMainUrl, $allUrls[0]);
$aliasUrls = array_slice($allUrls, 1);
- $this->assertEquals(array(), $aliasUrls);
-
+ $this->assertEquals([], $aliasUrls);
}
/**
* strange name and NO URL => name ok, main_url not updated
*/
- public function test_updateSite_WithStrangeName_AndNoAliasUrls_UpdatesTheName_ButNoUrls()
+ public function testUpdateSiteWithStrangeNameAndNoAliasUrlsUpdatesTheNameButNoUrls()
{
$idsite = API::getInstance()->addSite("site1", "http://main.url");
$newName = "test toto@{'786'}";
@@ -836,30 +883,52 @@ class ApiTest extends IntegrationTestCase
* several urls => both main and alias are updated
* also test the update of group field
*/
- public function test_updateSite_WithSeveralUrlsAndGroup_UpdatesGroupAndUrls()
+ public function testUpdateSiteWithSeveralUrlsAndGroupUpdatesGroupAndUrls()
{
- $urls = array("http://piwiknew.com",
+ $urls = ["http://piwiknew.com",
"http://piwiknew.net",
"http://piwiknew.org",
- "http://piwiknew.fr");
+ "http://piwiknew.fr"];
$group = 'GROUP Before';
- $idsite = API::getInstance()->addSite("site1", $urls, $ecommerce = 1,
- $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
- $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group, $startDate = '2011-01-01');
+ $idsite = API::getInstance()->addSite(
+ "site1",
+ $urls,
+ $ecommerce = 1,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timezone = null,
+ $currency = null,
+ $group,
+ $startDate = '2011-01-01'
+ );
$websites = API::getInstance()->getSitesFromGroup($group);
$this->assertEquals(1, count($websites));
- $newurls = array("http://piwiknew2.com",
+ $newurls = ["http://piwiknew2.com",
"http://piwiknew2.net",
"http://piwiknew2.org",
- "http://piwiknew2.fr");
+ "http://piwiknew2.fr"];
$groupAfter = ' GROUP After';
- API::getInstance()->updateSite($idsite, "test toto@{}", $newurls, $ecommerce = 0,
- $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
- $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $groupAfter);
+ API::getInstance()->updateSite(
+ $idsite,
+ "test toto@{}",
+ $newurls,
+ $ecommerce = 0,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timezone = null,
+ $currency = null,
+ $groupAfter
+ );
// no result for the group before update
$websites = API::getInstance()->getSitesFromGroup($group);
@@ -871,7 +940,7 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals('2011-01-01', date('Y-m-d', strtotime($websites[0]['ts_created'])));
// Test fetch website groups
- $expectedGroups = array(trim($groupAfter));
+ $expectedGroups = [trim($groupAfter)];
$fetched = API::getInstance()->getSitesGroups();
$this->assertEquals($expectedGroups, $fetched);
@@ -881,18 +950,17 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals($newurls, $allUrls);
}
- public function test_updateSite_ShouldFailAndNotUpdateSite_IfASettingIsInvalid()
+ public function testUpdateSiteShouldFailAndNotUpdateSiteIfASettingIsInvalid()
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('SitesManager_OnlyMatchedUrlsAllowed');
$type = MobileAppMeasurable\Type::ID;
- $idSite = $this->addSiteWithType($type, array());
+ $idSite = $this->addSiteWithType($type, []);
try {
- $settings = array('MobileAppMeasurable' => array(array('name' => 'exclude_unknown_urls', 'value' => 'fooBar')));
+ $settings = ['MobileAppMeasurable' => [['name' => 'exclude_unknown_urls', 'value' => 'fooBar']]];
$this->updateSiteSettings($idSite, 'newSiteName', $settings);
-
} catch (Exception $e) {
// verify nothing was updated (not even the name)
$measurable = new Measurable($idSite);
@@ -902,14 +970,14 @@ class ApiTest extends IntegrationTestCase
}
}
- public function test_updateSite_ShouldSavePassedMeasurableSettings_IfSettingsAreValid()
+ public function testUpdateSiteShouldSavePassedMeasurableSettingsIfSettingsAreValid()
{
$type = WebsiteType::ID;
- $idSite = $this->addSiteWithType($type, array());
+ $idSite = $this->addSiteWithType($type, []);
$this->assertSame(1, $idSite);
- $settings = array('WebsiteMeasurable' => array(array('name' => 'urls', 'value' => array('http://www.piwik.org'))));
+ $settings = ['WebsiteMeasurable' => [['name' => 'urls', 'value' => ['http://www.piwik.org']]]];
$this->updateSiteSettings($idSite, 'newSiteName', $settings);
@@ -918,20 +986,36 @@ class ApiTest extends IntegrationTestCase
// verify it was updated
$measurable = new Measurable($idSite);
$this->assertSame('newSiteName', $measurable->getName());
- $this->assertSame(array('http://www.piwik.org'), $settings->urls->getValue());
+ $this->assertSame(['http://www.piwik.org'], $settings->urls->getValue());
}
- public function test_updateSite_CorreclySavesExcludedUnknownUrlSettings()
+ public function testUpdateSiteCorrectlySavesExcludedUnknownUrlSettings()
{
- $idSite = API::getInstance()->addSite("site1", array("http://piwik.net"));
+ $idSite = API::getInstance()->addSite("site1", ["http://piwik.net"]);
$site = API::getInstance()->getSiteFromId($idSite);
$this->assertEquals(0, $site['exclude_unknown_urls']);
- API::getInstance()->updateSite($idSite, $siteName = null, $urls = null, $ecommerce = null, $siteSearch = null,
- $searchKeywordParams = null, $searchCategoryParams = null, $excludedIps = null, $excludedQueryParameters = null,
- $timzeone = null, $currency = null, $group = null, $startDate = null, $excludedUserAgents = null,
- $keepUrlFragments = null, $type = null, $settings = null, $excludeUnknownUrls = true);
+ API::getInstance()->updateSite(
+ $idSite,
+ $siteName = null,
+ $urls = null,
+ $ecommerce = null,
+ $siteSearch = null,
+ $searchKeywordParams = null,
+ $searchCategoryParams = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timzeone = null,
+ $currency = null,
+ $group = null,
+ $startDate = null,
+ $excludedUserAgents = null,
+ $keepUrlFragments = null,
+ $type = null,
+ $settings = null,
+ $excludeUnknownUrls = true
+ );
$site = API::getInstance()->getSiteFromId($idSite);
$this->assertEquals(1, $site['exclude_unknown_urls']);
@@ -940,17 +1024,33 @@ class ApiTest extends IntegrationTestCase
/**
* @dataProvider getDifferentTypesDataProvider
*/
- public function test_updateSite_WithDifferentTypes($type)
+ public function testUpdateSiteWithDifferentTypes($type)
{
- $idSite = $this->addSiteWithType('website', array());
+ $idSite = $this->addSiteWithType('website', []);
$site = API::getInstance()->getSiteFromId($idSite);
$this->assertEquals(0, $site['exclude_unknown_urls']);
- API::getInstance()->updateSite($idSite, $siteName = 'new site name', $urls = null, $ecommerce = true, $siteSearch = false,
- $searchKeywordParams = null, $searchCategoryParams = null, $excludedIps = null, $excludedQueryParameters = null,
- $timzeone = null, $currency = 'NZD', $group = null, $startDate = null, $excludedUserAgents = null,
- $keepUrlFragments = null, $type, $settings = null, $excludeUnknownUrls = true);
+ API::getInstance()->updateSite(
+ $idSite,
+ $siteName = 'new site name',
+ $urls = null,
+ $ecommerce = true,
+ $siteSearch = false,
+ $searchKeywordParams = null,
+ $searchCategoryParams = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timzeone = null,
+ $currency = 'NZD',
+ $group = null,
+ $startDate = null,
+ $excludedUserAgents = null,
+ $keepUrlFragments = null,
+ $type,
+ $settings = null,
+ $excludeUnknownUrls = true
+ );
$site = API::getInstance()->getSiteFromId($idSite);
$this->assertEquals('new site name', $site['name']);
@@ -962,19 +1062,19 @@ class ApiTest extends IntegrationTestCase
public function getDifferentTypesDataProvider()
{
- return array(
- array('website'),
- array('mobileapp'),
- array('notexistingtype'),
- );
+ return [
+ ['website'],
+ ['mobileapp'],
+ ['notexistingtype'],
+ ];
}
- public function test_delete_ShouldNotDeleteASiteInCaseThereIsOnlyOneSite()
+ public function testDeleteShouldNotDeleteASiteInCaseThereIsOnlyOneSite()
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('SitesManager_ExceptionDeleteSite');
- $siteId1 = $this->_addSite();
+ $siteId1 = $this->addSite();
$this->assertHasSite($siteId1);
@@ -987,7 +1087,7 @@ class ApiTest extends IntegrationTestCase
}
}
- public function test_delete_ShouldTriggerException_IfGivenSiteDoesNotExist()
+ public function testDeleteShouldTriggerExceptionIfGivenSiteDoesNotExist()
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('website id = 99999498 not found');
@@ -995,11 +1095,11 @@ class ApiTest extends IntegrationTestCase
API::getInstance()->deleteSite(99999498);
}
- public function test_delete_ShouldActuallyRemoveAnExistingSiteButOnlyTheGivenSite()
+ public function testDeleteShouldActuallyRemoveAnExistingSiteButOnlyTheGivenSite()
{
- $this->_addSite();
- $siteId1 = $this->_addSite();
- $siteId2 = $this->_addSite();
+ $this->addSite();
+ $siteId1 = $this->addSite();
+ $siteId2 = $this->addSite();
$this->assertHasSite($siteId1);
$this->assertHasSite($siteId2);
@@ -1010,7 +1110,7 @@ class ApiTest extends IntegrationTestCase
$this->assertHasSite($siteId2);
}
- public function test_delete_ShouldTriggerAnEventOnceSiteWasActuallyDeleted()
+ public function testDeleteShouldTriggerAnEventOnceSiteWasActuallyDeleted()
{
$called = 0;
$deletedSiteId = null;
@@ -1020,8 +1120,8 @@ class ApiTest extends IntegrationTestCase
$deletedSiteId = $param;
});
- $this->_addSite();
- $siteId1 = $this->_addSite();
+ $this->addSite();
+ $siteId1 = $this->addSite();
API::getInstance()->deleteSite($siteId1);
@@ -1045,8 +1145,8 @@ class ApiTest extends IntegrationTestCase
public function testGetSitesGroups()
{
- $groups = array('group1', ' group1 ', '', 'group2');
- $expectedGroups = array('group1', '', 'group2');
+ $groups = ['group1', ' group1 ', '', 'group2'];
+ $expectedGroups = ['group1', '', 'group2'];
foreach ($groups as $group) {
API::getInstance()->addSite("test toto@{}", 'http://example.org', $ecommerce = 1, $siteSearch = null, $searchKeywordParameters = null, $searchCategoryParameters = null, $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group);
}
@@ -1056,34 +1156,52 @@ class ApiTest extends IntegrationTestCase
public function getInvalidTimezoneData()
{
- return array(
- array('UTC+15'),
- array('Paris'),
- );
+ return [
+ ['UTC+15'],
+ ['Paris'],
+ ];
}
/**
*
* @dataProvider getInvalidTimezoneData
*/
- public function test_addSite_WithInvalidTimezone_ThrowsException($timezone)
+ public function testAddSiteWithInvalidTimezoneThrowsException($timezone)
{
$this->expectException(\Exception::class);
- API::getInstance()->addSite("site1", array('http://example.org'), $ecommerce = 0,
- $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, $ip = '', $params = '', $timezone);
+ API::getInstance()->addSite(
+ "site1",
+ ['http://example.org'],
+ $ecommerce = 0,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $ip = '',
+ $params = '',
+ $timezone
+ );
}
- public function test_addSite_WithInvalidCurrency_ThrowsException()
+ public function testAddSiteWithInvalidCurrencyThrowsException()
{
$this->expectException(\Exception::class);
$invalidCurrency = '€';
- API::getInstance()->addSite("site1", array('http://example.org'), $ecommerce = 0,
- $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, '', 'UTC', $invalidCurrency);
+ API::getInstance()->addSite(
+ "site1",
+ ['http://example.org'],
+ $ecommerce = 0,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ '',
+ 'UTC',
+ $invalidCurrency
+ );
}
- public function test_setDefaultTimezone_AndCurrency_AndExcludedQueryParameters_AndExcludedIps_UpdatesDefaultsCorreclty()
+ public function testSetDefaultTimezoneAndCurrencyAndExcludedQueryParametersAndExcludedIpsUpdatesDefaultsCorrectly()
{
// test that they return default values
$defaultTimezone = API::getInstance()->getDefaultTimezone();
@@ -1096,7 +1214,7 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals('', $excludedQueryParameters);
// test that when not specified, defaults are set as expected
- $idsite = API::getInstance()->addSite("site1", array('http://example.org'));
+ $idsite = API::getInstance()->addSite("site1", ['http://example.org']);
$site = new Site($idsite);
$this->assertEquals('UTC', $site->getTimezone());
$this->assertEquals('USD', $site->getCurrency());
@@ -1132,9 +1250,17 @@ class ApiTest extends IntegrationTestCase
// create a website and check that default currency and default timezone are set
// however, excluded IPs and excluded query Params are not returned
- $idsite = API::getInstance()->addSite("site1", array('http://example.org'), $ecommerce = 0,
- $siteSearch = 0, $searchKeywordParameters = 'test1,test2', $searchCategoryParameters = 'test2,test1',
- '', '', $newDefaultTimezone);
+ $idsite = API::getInstance()->addSite(
+ "site1",
+ ['http://example.org'],
+ $ecommerce = 0,
+ $siteSearch = 0,
+ $searchKeywordParameters = 'test1,test2',
+ $searchCategoryParameters = 'test2,test1',
+ '',
+ '',
+ $newDefaultTimezone
+ );
$site = new Site($idsite);
$this->assertEquals($newDefaultTimezone, $site->getTimezone());
$this->assertEquals(date('Y-m-d'), $site->getCreationDate()->toString());
@@ -1149,11 +1275,11 @@ class ApiTest extends IntegrationTestCase
$this->assertFalse(Site::isEcommerceEnabledFor($idsite));
}
- public function test_getSitesIdFromSiteUrl_AsSuperUser_ReturnsTheRequestedSiteIds()
+ public function testGetSitesIdFromSiteUrlAsSuperUserReturnsTheRequestedSiteIds()
{
- API::getInstance()->addSite("site1", array("http://piwik.net", "http://piwik.com"));
- API::getInstance()->addSite("site2", array("http://piwik.com", "http://piwik.net"));
- API::getInstance()->addSite("site3", array("http://piwik.com", "http://piwik.org"));
+ API::getInstance()->addSite("site1", ["http://piwik.net", "http://piwik.com"]);
+ API::getInstance()->addSite("site2", ["http://piwik.com", "http://piwik.net"]);
+ API::getInstance()->addSite("site3", ["http://piwik.com", "http://piwik.org"]);
$idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.org');
$this->assertTrue(count($idsites) == 1);
@@ -1168,29 +1294,29 @@ class ApiTest extends IntegrationTestCase
$this->assertTrue(count($idsites) == 3);
}
- public function test_getSitesIdFromSiteUrl_MatchesBothHttpAndHttpsUrls_AsSuperUser()
+ public function testGetSitesIdFromSiteUrlMatchesBothHttpAndHttpsUrlsAsSuperUser()
{
- API::getInstance()->addSite("site1", array("https://piwik.org", "http://example.com", "fb://special-url"));
+ API::getInstance()->addSite("site1", ["https://piwik.org", "http://example.com", "fb://special-url"]);
- $this->assert_getSitesIdFromSiteUrl_matchesBothHttpAndHttpsUrls();
+ $this->assertGetSitesIdFromSiteUrlMatchesBothHttpAndHttpsUrls();
}
- public function test_getSitesIdFromSiteUrl_MatchesBothHttpAndHttpsUrls_AsUserWithViewPermission()
+ public function testGetSitesIdFromSiteUrlMatchesBothHttpAndHttpsUrlsAsUserWithViewPermission()
{
- API::getInstance()->addSite("site1", array("https://piwik.org", "http://example.com", "fb://special-url"));
+ API::getInstance()->addSite("site1", ["https://piwik.org", "http://example.com", "fb://special-url"]);
APIUsersManager::getInstance()->addUser("user1", "geqgegagae", "tegst@tesgt.com");
- APIUsersManager::getInstance()->setUserAccess("user1", "view", array(1));
+ APIUsersManager::getInstance()->setUserAccess("user1", "view", [1]);
// Make sure we're not Super user
FakeAccess::$superUser = false;
FakeAccess::$identity = 'user1';
$this->assertFalse(Piwik::hasUserSuperUserAccess());
- $this->assert_getSitesIdFromSiteUrl_matchesBothHttpAndHttpsUrls();
+ $this->assertGetSitesIdFromSiteUrlMatchesBothHttpAndHttpsUrls();
}
- private function assert_getSitesIdFromSiteUrl_matchesBothHttpAndHttpsUrls()
+ private function assertGetSitesIdFromSiteUrlMatchesBothHttpAndHttpsUrls()
{
$idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.org');
$this->assertTrue(count($idsites) == 1);
@@ -1217,27 +1343,27 @@ class ApiTest extends IntegrationTestCase
$this->assertTrue(count($idsites) == 0);
}
- public function test_getSitesIdFromSiteUrl_AsUser()
+ public function testGetSitesIdFromSiteUrlAsUser()
{
- API::getInstance()->addSite("site1", array("http://www.piwik.net", "https://piwik.com"));
- API::getInstance()->addSite("site2", array("http://piwik.com", "http://piwik.net"));
- API::getInstance()->addSite("site3", array("http://piwik.com", "http://piwik.org"));
+ API::getInstance()->addSite("site1", ["http://www.piwik.net", "https://piwik.com"]);
+ API::getInstance()->addSite("site2", ["http://piwik.com", "http://piwik.net"]);
+ API::getInstance()->addSite("site3", ["http://piwik.com", "http://piwik.org"]);
APIUsersManager::getInstance()->addUser("user1", "geqgegagae", "tegst@tesgt.com");
- APIUsersManager::getInstance()->setUserAccess("user1", "view", array(1));
+ APIUsersManager::getInstance()->setUserAccess("user1", "view", [1]);
APIUsersManager::getInstance()->addUser("user2", "geqgegagae", "tegst2@tesgt.com");
- APIUsersManager::getInstance()->setUserAccess("user2", "view", array(1));
- APIUsersManager::getInstance()->setUserAccess("user2", "admin", array(3));
+ APIUsersManager::getInstance()->setUserAccess("user2", "view", [1]);
+ APIUsersManager::getInstance()->setUserAccess("user2", "admin", [3]);
APIUsersManager::getInstance()->addUser("user3", "geqgegagae", "tegst3@tesgt.com");
- APIUsersManager::getInstance()->setUserAccess("user3", "view", array(1, 2));
- APIUsersManager::getInstance()->setUserAccess("user3", "admin", array(3));
+ APIUsersManager::getInstance()->setUserAccess("user3", "view", [1, 2]);
+ APIUsersManager::getInstance()->setUserAccess("user3", "admin", [3]);
FakeAccess::$superUser = false;
FakeAccess::$identity = 'user1';
- FakeAccess::setIdSitesView(array(1));
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([1]);
+ FakeAccess::setIdSitesAdmin([]);
$this->assertFalse(Piwik::hasUserSuperUserAccess());
$idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');
@@ -1251,16 +1377,16 @@ class ApiTest extends IntegrationTestCase
FakeAccess::$superUser = false;
FakeAccess::$identity = 'user2';
- FakeAccess::setIdSitesView(array(1));
- FakeAccess::setIdSitesAdmin(array(3));
+ FakeAccess::setIdSitesView([1]);
+ FakeAccess::setIdSitesAdmin([3]);
$idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');
$this->assertEquals(2, count($idsites));
FakeAccess::$superUser = false;
FakeAccess::$identity = 'user3';
- FakeAccess::setIdSitesView(array(1, 2));
- FakeAccess::setIdSitesAdmin(array(3));
+ FakeAccess::setIdSitesView([1, 2]);
+ FakeAccess::setIdSitesAdmin([3]);
$idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');
$this->assertEquals(3, count($idsites));
@@ -1269,21 +1395,20 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals(3, count($idsites));
}
- public function test_getSitesFromTimezones_ReturnsCorrectIdSites()
+ public function testGetSitesFromTimezonesReturnsCorrectIdSites()
{
- API::getInstance()->addSite("site3", array("http://piwik.org"), null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'UTC');
- $idsite2 = API::getInstance()->addSite("site3", array("http://piwik.org"), null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'Pacific/Auckland');
- $idsite3 = API::getInstance()->addSite("site3", array("http://piwik.org"), null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'Pacific/Auckland');
- $idsite4 = API::getInstance()->addSite("site3", array("http://piwik.org"), null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'UTC+10');
- $result = API::getInstance()->getSitesIdFromTimezones(array('UTC+10', 'Pacific/Auckland'));
- $this->assertEquals(array($idsite2, $idsite3, $idsite4), $result);
+ API::getInstance()->addSite("site3", ["http://piwik.org"], null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'UTC');
+ $idsite2 = API::getInstance()->addSite("site3", ["http://piwik.org"], null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'Pacific/Auckland');
+ $idsite3 = API::getInstance()->addSite("site3", ["http://piwik.org"], null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'Pacific/Auckland');
+ $idsite4 = API::getInstance()->addSite("site3", ["http://piwik.org"], null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'UTC+10');
+ $result = API::getInstance()->getSitesIdFromTimezones(['UTC+10', 'Pacific/Auckland']);
+ $this->assertEquals([$idsite2, $idsite3, $idsite4], $result);
}
public function provideContainerConfig()
{
- return array(
+ return [
'Piwik\Access' => new FakeAccess(),
- );
+ ];
}
-
}
diff --git a/plugins/SitesManager/tests/Integration/ModelTest.php b/plugins/SitesManager/tests/Integration/ModelTest.php
index 21ff01479c..433662dda9 100644
--- a/plugins/SitesManager/tests/Integration/ModelTest.php
+++ b/plugins/SitesManager/tests/Integration/ModelTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -31,21 +32,21 @@ class ModelTest extends IntegrationTestCase
$this->model = new Model();
}
- public function test_getUsedTypeIds_shouldReturnNoType_IfNoSitesExist()
+ public function testGetUsedTypeIdsShouldReturnNoTypeIfNoSitesExist()
{
- $this->assertSame(array(), $this->model->getUsedTypeIds());
+ $this->assertSame([], $this->model->getUsedTypeIds());
}
- public function test_getUsedTypeIds_shouldReturnOnlyOneType_IfAllSitesUseSameType()
+ public function testGetUsedTypeIdsShouldReturnOnlyOneTypeIfAllSitesUseSameType()
{
for ($i = 0; $i < 9; $i++) {
$this->createMeasurable('website');
}
- $this->assertSame(array('website'), $this->model->getUsedTypeIds());
+ $this->assertSame(['website'], $this->model->getUsedTypeIds());
}
- public function test_getUsedTypeIds_shouldReturnAnotherType_IfDifferentOnesAreUsed()
+ public function testGetUsedTypeIdsShouldReturnAnotherTypeIfDifferentOnesAreUsed()
{
for ($i = 0; $i < 9; $i++) {
$this->createMeasurable('website');
@@ -53,10 +54,10 @@ class ModelTest extends IntegrationTestCase
$this->createMeasurable('mobileapp');
}
- $this->assertSame(array('website', 'universal', 'mobileapp'), $this->model->getUsedTypeIds());
+ $this->assertSame(['website', 'universal', 'mobileapp'], $this->model->getUsedTypeIds());
}
- public function test_getAllKnownUrlsForAllSites_shouldReturnAllUrls()
+ public function testGetAllKnownUrlsForAllSitesShouldReturnAllUrls()
{
$idSite = $this->createMeasurable('website', 'http://apache.piwik');
$this->model->insertSiteUrl($idSite, 'http://example.apache.piwik');
@@ -68,45 +69,52 @@ class ModelTest extends IntegrationTestCase
$idSite3 = $this->createMeasurable('website', 'http://example.pro');
- $expected = array(
- array(
+ $expected = [
+ [
'idsite' => $idSite,
'url' => 'http://apache.piwik'
- ),
- array(
+ ],
+ [
'idsite' => $idSite2,
'url' => 'http://piwik.net'
- ),
- array(
+ ],
+ [
'idsite' => $idSite3,
'url' => 'http://example.pro'
- ),
- array(
+ ],
+ [
'idsite' => $idSite,
'url' => 'http://example.apache.piwik'
- ),
- array(
+ ],
+ [
'idsite' => $idSite,
'url' => 'http://example.org'
- ),
- array(
+ ],
+ [
'idsite' => $idSite2,
'url' => 'http://example.com'
- ),
- array(
+ ],
+ [
'idsite' => $idSite2,
'url' => 'http://example.org'
- )
+ ]
- );
+ ];
$this->assertEquals($expected, $this->model->getAllKnownUrlsForAllSites());
}
private function createMeasurable($type, $siteUrl = false)
{
- return Fixture::createWebsite('2015-01-01 00:00:00',
- $ecommerce = 0, $siteName = false, $siteUrl,
- $siteSearch = 1, $searchKeywordParameters = null,
- $searchCategoryParameters = null, $timezone = null, $type);
+ return Fixture::createWebsite(
+ '2015-01-01 00:00:00',
+ $ecommerce = 0,
+ $siteName = false,
+ $siteUrl,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $timezone = null,
+ $type
+ );
}
}
diff --git a/plugins/SitesManager/tests/Integration/SiteUrlsTest.php b/plugins/SitesManager/tests/Integration/SiteUrlsTest.php
index 69608e7cec..2232cf4e4c 100644
--- a/plugins/SitesManager/tests/Integration/SiteUrlsTest.php
+++ b/plugins/SitesManager/tests/Integration/SiteUrlsTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -7,6 +8,7 @@
*/
namespace Piwik\Plugins\SitesManager\tests\Integration;
+
use Piwik\Cache;
use Piwik\Plugins\SitesManager\API;
use Piwik\Plugins\SitesManager\SiteUrls;
@@ -39,50 +41,50 @@ class SiteUrlsTest extends IntegrationTestCase
SiteUrls::clearSitesCache();
}
- public function testGetAllSiteUrls_shouldReturnAnEmptyArray_IfThereAreNoSites()
+ public function testGetAllSiteUrlsShouldReturnAnEmptyArrayIfThereAreNoSites()
{
- $this->assertSiteUrls(array());
+ $this->assertSiteUrls([]);
}
- public function testGetAllSiteUrls_shouldReturnUrlsForEachSiteId()
+ public function testGetAllSiteUrlsShouldReturnUrlsForEachSiteId()
{
$this->addSite('http://www.example.com'); // only one main URL
- $this->assertSiteUrls(array(1 => array('http://www.example.com')));
+ $this->assertSiteUrls([1 => ['http://www.example.com']]);
$this->addSite('http://www.example.com', 'http://www.piwik.org'); // main URL and alias URL
- $this->assertSiteUrls(array(1 => array('http://www.example.com'), 2 => array('http://www.example.com', 'http://www.piwik.org')));
+ $this->assertSiteUrls([1 => ['http://www.example.com'], 2 => ['http://www.example.com', 'http://www.piwik.org']]);
$this->api->addSiteAliasUrls(2, 'http://piwik.org');
- $this->assertSiteUrls(array(1 => array('http://www.example.com'), 2 => array('http://www.example.com', 'http://piwik.org', 'http://www.piwik.org')));
+ $this->assertSiteUrls([1 => ['http://www.example.com'], 2 => ['http://www.example.com', 'http://piwik.org', 'http://www.piwik.org']]);
- $this->api->setSiteAliasUrls(2, array());
- $this->assertSiteUrls(array(1 => array('http://www.example.com'), 2 => array('http://www.example.com')));
+ $this->api->setSiteAliasUrls(2, []);
+ $this->assertSiteUrls([1 => ['http://www.example.com'], 2 => ['http://www.example.com']]);
}
- public function testGetAllCachedSiteUrls_shouldReturnAnEmptyArray_IfThereAreNoSites()
+ public function testGetAllCachedSiteUrlsShouldReturnAnEmptyArrayIfThereAreNoSites()
{
- $this->assertCachedSiteUrls(array());
+ $this->assertCachedSiteUrls([]);
}
- public function testGetAllCachedSiteUrls_ShouldReturnCorrectResultEvenIfItIsCachedAsWeClearTheCacheOnAnyChange()
+ public function testGetAllCachedSiteUrlsShouldReturnCorrectResultEvenIfItIsCachedAsWeClearTheCacheOnAnyChange()
{
$this->addSite('http://www.example.com'); // only one main URL
- $this->assertCachedSiteUrls(array(1 => array('http://www.example.com')));
+ $this->assertCachedSiteUrls([1 => ['http://www.example.com']]);
$this->addSite('http://www.example.com', 'http://www.piwik.org'); // main URL and alias URL
- $this->assertCachedSiteUrls(array(1 => array('http://www.example.com'), 2 => array('http://www.example.com', 'http://www.piwik.org')));
+ $this->assertCachedSiteUrls([1 => ['http://www.example.com'], 2 => ['http://www.example.com', 'http://www.piwik.org']]);
$this->api->addSiteAliasUrls(2, 'http://piwik.org');
- $this->assertCachedSiteUrls(array(1 => array('http://www.example.com'), 2 => array('http://www.example.com', 'http://piwik.org', 'http://www.piwik.org')));
+ $this->assertCachedSiteUrls([1 => ['http://www.example.com'], 2 => ['http://www.example.com', 'http://piwik.org', 'http://www.piwik.org']]);
- $this->api->setSiteAliasUrls(2, array());
- $this->assertCachedSiteUrls(array(1 => array('http://www.example.com'), 2 => array('http://www.example.com')));
+ $this->api->setSiteAliasUrls(2, []);
+ $this->assertCachedSiteUrls([1 => ['http://www.example.com'], 2 => ['http://www.example.com']]);
- $this->api->updateSite(1, 'siteName3', array('http://updated.example.com', 'http://2.example.com'));
- $this->assertCachedSiteUrls(array(1 => array('http://updated.example.com', 'http://2.example.com'), 2 => array('http://www.example.com')));
+ $this->api->updateSite(1, 'siteName3', ['http://updated.example.com', 'http://2.example.com']);
+ $this->assertCachedSiteUrls([1 => ['http://updated.example.com', 'http://2.example.com'], 2 => ['http://www.example.com']]);
}
- public function testGetAllCachedSiteUrls_ShouldWriteACacheFile()
+ public function testGetAllCachedSiteUrlsShouldWriteACacheFile()
{
// make sure cache is empty
$this->assertValueInCache(false);
@@ -91,16 +93,16 @@ class SiteUrlsTest extends IntegrationTestCase
$this->siteUrls->getAllCachedSiteUrls();
// make sure we have a cached result
- $this->assertValueInCache(array(1 => array('http://www.example.com')));
+ $this->assertValueInCache([1 => ['http://www.example.com']]);
}
- public function test_clearSitesCache_ShouldActuallyDeleteACache()
+ public function testClearSitesCacheShouldActuallyDeleteACache()
{
$this->addSite('http://www.example.com');
$this->siteUrls->getAllCachedSiteUrls();
// make sure we have a cached result
- $this->assertValueInCache(array(1 => array('http://www.example.com')));
+ $this->assertValueInCache([1 => ['http://www.example.com']]);
SiteUrls::clearSitesCache();
@@ -108,9 +110,9 @@ class SiteUrlsTest extends IntegrationTestCase
$this->assertValueInCache(false);
}
- public function testGetAllCachedSiteUrls_ShouldReadFromTheCacheFile()
+ public function testGetAllCachedSiteUrlsShouldReadFromTheCacheFile()
{
- $urlsToFake = array(1 => 'Whatever');
+ $urlsToFake = [1 => 'Whatever'];
$cache = $this->buildCache();
$cache->save('allSiteUrlsPerSite', $urlsToFake, 600);
@@ -119,36 +121,36 @@ class SiteUrlsTest extends IntegrationTestCase
$this->assertEquals($urlsToFake, $actual);
}
- public function test_groupUrlsByHost_shouldReturnEmptyArray_WhenNoUrlsGiven()
+ public function testGroupUrlsByHostShouldReturnEmptyArrayWhenNoUrlsGiven()
{
- $this->assertSame(array(), $this->siteUrls->groupUrlsByHost(array()));
- $this->assertSame(array(), $this->siteUrls->groupUrlsByHost(null));
+ $this->assertSame([], $this->siteUrls->groupUrlsByHost([]));
+ $this->assertSame([], $this->siteUrls->groupUrlsByHost(null));
}
- public function test_groupUrlsByHost_shouldGroupByHost_WithOneSiteAndDifferentDomains_shouldRemoveWwwAndDefaultToPathSlash()
+ public function testGroupUrlsByHostShouldGroupByHostWithOneSiteAndDifferentDomainsShouldRemoveWwwAndDefaultToPathSlash()
{
$idSite = 1;
- $oneSite = array(
- $idSite => array(
+ $oneSite = [
+ $idSite => [
'http://apache.piwik',
'http://www.example.com', // should remove www.
'https://example.org', // should handle https or other protocol
'http://apache.piwik/', // same as initial one but with slash at the end, should not add idsite twice
'http://third.www.com' // should not remove www. in the middle of a domain
- )
- );
+ ]
+ ];
- $expected = array(
- 'apache.piwik' => array('/' => array($idSite)),
- 'example.com' => array('/' => array($idSite)),
- 'example.org' => array('/' => array($idSite)),
- 'third.www.com' => array('/' => array($idSite)),
- );
+ $expected = [
+ 'apache.piwik' => ['/' => [$idSite]],
+ 'example.com' => ['/' => [$idSite]],
+ 'example.org' => ['/' => [$idSite]],
+ 'third.www.com' => ['/' => [$idSite]],
+ ];
$this->assertSame($expected, $this->siteUrls->groupUrlsByHost($oneSite));
}
- public function test_groupUrlsByHost_shouldGroupByHost_WithDifferentDomainsAndPathsShouldListPathByNumberOfDirectoriesAndConvertToLowerCase()
+ public function testGroupUrlsByHostShouldGroupByHostWithDifferentDomainsAndPathsShouldListPathByNumberOfDirectoriesAndConvertToLowerCase()
{
$idSite = 1;
$idSite2 = 2;
@@ -156,36 +158,36 @@ class SiteUrlsTest extends IntegrationTestCase
$idSite4 = 4;
$idSite5 = 5;
- $urls = array(
- $idSite => array(
+ $urls = [
+ $idSite => [
'http://apache.piwik/test', 'http://apache.piWik', 'http://apache.piwik/foo/bAr/', 'http://apache.piwik/Foo/SECOND'
- ),
- $idSite2 => array(
+ ],
+ $idSite2 => [
'http://apache.piwik/test/', 'http://example.oRg', 'http://apache.piwik/foo/secOnd'
- ),
- $idSite3 => array(
+ ],
+ $idSite3 => [
'http://apache.piwik/', 'http://apache.piwik/third', 'http://exampLe.com', 'http://example.org/foo/test/two'
- ),
- $idSite4 => array(),
- $idSite5 => array('invalidUrl', 'ftp://example.org/'),
- );
-
- $expected = array(
- 'apache.piwik' => array(
- '/foo/second/' => array($idSite, $idSite2),
- '/foo/bar/' => array($idSite),
- '/third/' => array($idSite3),
- '/test/' => array($idSite, $idSite2),
- '/' => array($idSite, $idSite3)
- ),
- 'example.org' => array(
- '/foo/test/two/' => array($idSite3),
- '/' => array($idSite2, $idSite5)
- ),
- 'example.com' => array(
- '/' => array($idSite3)
- ),
- );
+ ],
+ $idSite4 => [],
+ $idSite5 => ['invalidUrl', 'ftp://example.org/'],
+ ];
+
+ $expected = [
+ 'apache.piwik' => [
+ '/foo/second/' => [$idSite, $idSite2],
+ '/foo/bar/' => [$idSite],
+ '/third/' => [$idSite3],
+ '/test/' => [$idSite, $idSite2],
+ '/' => [$idSite, $idSite3]
+ ],
+ 'example.org' => [
+ '/foo/test/two/' => [$idSite3],
+ '/' => [$idSite2, $idSite5]
+ ],
+ 'example.com' => [
+ '/' => [$idSite3]
+ ],
+ ];
$this->assertSame($expected, $this->siteUrls->groupUrlsByHost($urls));
}
@@ -193,26 +195,32 @@ class SiteUrlsTest extends IntegrationTestCase
/**
* @dataProvider getTestIdSitesMatchingUrl
*/
- public function test_getIdSitesMatchingUrl($expectedMatchSites, $parsedUrl)
+ public function testGetIdSitesMatchingUrl($expectedMatchSites, $parsedUrl)
{
- $urlsGroupedByHost = array(
- 'apache.piwik' => array(
- '/foo/second/' => array(2),
- '/foo/sec/' => array(4),
- '/foo/bar/' => array(1),
- '/third/' => array(3),
- '/test/' => array(1, 2),
- '/' => array(1, 3)
- ),
- 'example.org' => array(
- '/foo/test/two/' => array(3),
- '/foo/second/' => array(6),
- '/' => array(2, 5)
- ),
- 'example.com' => array(
- '/' => array(3)
- ),
- );
+ $urlsGroupedByHost = [
+ 'apache.piwik' => [
+ '/foo/second/' => [2],
+ '/foo/sec/' => [4],
+ '/foo/bar/' => [1],
+ '/third/' => [3],
+ '/test/' => [1, 2],
+ '/' => [1, 3]
+ ],
+ 'example.org' => [
+ '/foo/test/two/' => [3],
+ '/foo/second/' => [6],
+ '/' => [2, 5]
+ ],
+ 'example.com' => [
+ '/' => [3]
+ ],
+ 'my.site.com' => [
+ '/path/' => [2]
+ ],
+ '.site.com' => [
+ '/' => [3]
+ ]
+ ];
$matchedSites = $this->siteUrls->getIdSitesMatchingUrl($parsedUrl, $urlsGroupedByHost);
$this->assertSame($expectedMatchSites, $matchedSites);
@@ -220,49 +228,52 @@ class SiteUrlsTest extends IntegrationTestCase
public function getTestIdSitesMatchingUrl()
{
- return array(
- array(array(1,3), array('host' => 'apache.piwik')),
- array(array(1,3), array('host' => 'apache.piwik', 'path' => '/')),
- array(array(1,3), array('host' => 'apache.piwik', 'path' => 'nomatch')), // no other URL matches a site so we fall back to domain match
- array(array(1,3), array('host' => 'apache.piwik', 'path' => '/nomatch')),
- array(array(2), array('host' => 'apache.piwik', 'path' => '/foo/second')),
- array(array(2), array('host' => 'apache.piwik', 'path' => '/foo/second/')), // it shouldn't matter if slash is at end or not
- array(array(2), array('host' => 'apache.piwik', 'path' => '/foo/second/test')), // it should find best match
- array(array(4), array('host' => 'apache.piwik', 'path' => '/foo/sec/test')), // it should not use /foo/second for these
- array(array(4), array('host' => 'apache.piwik', 'path' => '/foo/sec/')),
- array(array(4), array('host' => 'apache.piwik', 'path' => '/foo/sec')),
- array(array(1,3), array('host' => 'apache.piwik', 'path' => '/foo')),
- array(array(2,5), array('host' => 'example.org')),
- array(array(2,5), array('host' => 'example.org', 'path' => '/')),
- array(array(2,5), array('host' => 'example.org', 'path' => 'any/nonmatching/path')),
- array(array(6), array('host' => 'example.org', 'path' => '/foo/second')),
- array(array(6), array('host' => 'example.org', 'path' => '/foo/second/test')),
- array(array(3), array('host' => 'example.com')),
- array(null, array('host' => 'example.pro')),
- array(null, array('host' => 'example.pro', 'path' => '/any')),
- );
+ return [
+ [[1,3], ['host' => 'apache.piwik']],
+ [[1,3], ['host' => 'apache.piwik', 'path' => '/']],
+ [[1,3], ['host' => 'apache.piwik', 'path' => 'nomatch']], // no other URL matches a site so we fall back to domain match
+ [[1,3], ['host' => 'apache.piwik', 'path' => '/nomatch']],
+ [[2], ['host' => 'apache.piwik', 'path' => '/foo/second']],
+ [[2], ['host' => 'apache.piwik', 'path' => '/foo/second/']], // it shouldn't matter if slash is at end or not
+ [[2], ['host' => 'apache.piwik', 'path' => '/foo/second/test']], // it should find best match
+ [[4], ['host' => 'apache.piwik', 'path' => '/foo/sec/test']], // it should not use /foo/second for these
+ [[4], ['host' => 'apache.piwik', 'path' => '/foo/sec/']],
+ [[4], ['host' => 'apache.piwik', 'path' => '/foo/sec']],
+ [[1,3], ['host' => 'apache.piwik', 'path' => '/foo']],
+ [[2,5], ['host' => 'example.org']],
+ [[2,5], ['host' => 'example.org', 'path' => '/']],
+ [[2,5], ['host' => 'example.org', 'path' => 'any/nonmatching/path']],
+ [[6], ['host' => 'example.org', 'path' => '/foo/second']],
+ [[6], ['host' => 'example.org', 'path' => '/foo/second/test']],
+ [[3], ['host' => 'example.com']],
+ [null, ['host' => 'example.pro']],
+ [null, ['host' => 'example.pro', 'path' => '/any']],
+ [[2], ['host' => 'my.site.com', 'path' => '/path/sub']],
+ [[3], ['host' => 'my.site.com', 'path' => '/other/path']],
+ [[3], ['host' => 'any.site.com', 'path' => '/']],
+ ];
}
/**
* @dataProvider getTestPathMatchingUrl
*/
- public function test_getPathMatchingUrl($expectedMatchSites, $parsedUrl)
+ public function testGetPathMatchingUrl($expectedMatchSites, $parsedUrl)
{
- $urlsGroupedByHost = array(
- 'apache.piwik' => array(
- '/foo/second/' => array(2),
- '/foo/sec/' => array(4),
- '/foo/bar/' => array(1),
- '/third/' => array(3),
- '/test/' => array(1, 2),
- '/' => array(1, 3)
- ),
- 'example.org' => array(
- '/foo/test/two/' => array(3),
- '/foo/second/' => array(6),
- '/' => array(2, 5)
- ),
- );
+ $urlsGroupedByHost = [
+ 'apache.piwik' => [
+ '/foo/second/' => [2],
+ '/foo/sec/' => [4],
+ '/foo/bar/' => [1],
+ '/third/' => [3],
+ '/test/' => [1, 2],
+ '/' => [1, 3]
+ ],
+ 'example.org' => [
+ '/foo/test/two/' => [3],
+ '/foo/second/' => [6],
+ '/' => [2, 5]
+ ],
+ ];
$matchedSites = $this->siteUrls->getPathMatchingUrl($parsedUrl, $urlsGroupedByHost);
$this->assertSame($expectedMatchSites, $matchedSites);
@@ -270,23 +281,23 @@ class SiteUrlsTest extends IntegrationTestCase
public function getTestPathMatchingUrl()
{
- return array(
- array('/', array('host' => 'apache.piwik')),
- array('/', array('host' => 'apache.piwik', 'path' => '/')),
- array('/', array('host' => 'apache.piwik', 'path' => '')),
- array(null, array('host' => 'test.piwik')),
- array(null, array('host' => 'test.apache.piwik')), // we do not match subdomains, only exact domain match
-
- array('/foo/bar/', array('host' => 'apache.piwik', 'path' => '/foo/bar')),
- array('/foo/bar/', array('host' => 'apache.piwik', 'path' => '/foo/bar/')),
- array('/foo/bar/', array('host' => 'apache.piwik', 'path' => '/foo/bar/baz/')),
- array('/', array('host' => 'apache.piwik', 'path' => '/foo/baz/bar/')),
- array('/third/', array('host' => 'apache.piwik', 'path' => '/third/bar/baz/')),
-
- array('/foo/second/', array('host' => 'example.org', 'path' => '/foo/second/')),
- array('/', array('host' => 'example.org', 'path' => '/foo/secon')),
- array(null, array('host' => 'example.pro', 'path' => '/foo/second/')),
- );
+ return [
+ ['/', ['host' => 'apache.piwik']],
+ ['/', ['host' => 'apache.piwik', 'path' => '/']],
+ ['/', ['host' => 'apache.piwik', 'path' => '']],
+ [null, ['host' => 'test.piwik']],
+ [null, ['host' => 'test.apache.piwik']], // we do not match subdomains, only exact domain match
+
+ ['/foo/bar/', ['host' => 'apache.piwik', 'path' => '/foo/bar']],
+ ['/foo/bar/', ['host' => 'apache.piwik', 'path' => '/foo/bar/']],
+ ['/foo/bar/', ['host' => 'apache.piwik', 'path' => '/foo/bar/baz/']],
+ ['/', ['host' => 'apache.piwik', 'path' => '/foo/baz/bar/']],
+ ['/third/', ['host' => 'apache.piwik', 'path' => '/third/bar/baz/']],
+
+ ['/foo/second/', ['host' => 'example.org', 'path' => '/foo/second/']],
+ ['/', ['host' => 'example.org', 'path' => '/foo/secon']],
+ [null, ['host' => 'example.pro', 'path' => '/foo/second/']],
+ ];
}
private function assertSiteUrls($expectedUrls)
diff --git a/plugins/SitesManager/tests/Integration/SitesManagerTest.php b/plugins/SitesManager/tests/Integration/SitesManagerTest.php
index 2dcbba313a..20d6b959fd 100644
--- a/plugins/SitesManager/tests/Integration/SitesManagerTest.php
+++ b/plugins/SitesManager/tests/Integration/SitesManagerTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -45,7 +46,7 @@ class SitesManagerTest extends IntegrationTestCase
$this->siteId = Fixture::createWebsite('2014-03-03 00:00:00');
}
- public function test_onSiteDeleted_shouldClearSiteCache()
+ public function testOnSiteDeletedShouldClearSiteCache()
{
$cache = Cache::getLazyCache();
$cache->save($this->siteId, 'testcontent');
@@ -55,7 +56,7 @@ class SitesManagerTest extends IntegrationTestCase
$this->assertFalse($cache->contains($this->siteId));
}
- public function test_onSiteDeleted_shouldRemoveRememberedArchiveReports()
+ public function testOnSiteDeletedShouldRemoveRememberedArchiveReports()
{
$archive = StaticContainer::get('Piwik\Archive\ArchiveInvalidator');
$archive->rememberToInvalidateArchivedReportsLater($this->siteId, Date::factory('2014-04-05'));
@@ -66,23 +67,23 @@ class SitesManagerTest extends IntegrationTestCase
$this->assertCount(2, $remembered);
sort($remembered['2014-04-05']);
- $this->assertSame(array($this->siteId, 4949), $remembered['2014-04-05']);
+ $this->assertSame([$this->siteId, 4949], $remembered['2014-04-05']);
sort($remembered['2014-04-06']);
- $this->assertSame(array($this->siteId), $remembered['2014-04-06']);
+ $this->assertSame([$this->siteId], $remembered['2014-04-06']);
$this->manager->onSiteDeleted($this->siteId);
- $expected = array(
- '2014-04-05' => array(4949)
- );
+ $expected = [
+ '2014-04-05' => [4949]
+ ];
$this->assertEquals($expected, $archive->getRememberedArchivedReportsThatShouldBeInvalidated());
}
/**
* @dataProvider getTestDataForRedirectDashboard
*/
- public function test_redirectDashboardToWelcomePage_doesNothingIfModuleActionAreIncorrect($module, $action)
+ public function testRedirectDashboardToWelcomePageDoesNothingIfModuleActionAreIncorrect($module, $action)
{
$originalModule = $module;
$originalAction = $action;
@@ -102,7 +103,7 @@ class SitesManagerTest extends IntegrationTestCase
];
}
- public function test_redirectDashboardToWelcomePage_doesNothingIfThereIsNoIdSiteParam()
+ public function testRedirectDashboardToWelcomePageDoesNothingIfThereIsNoIdSiteParam()
{
$module = 'CoreHome';
$action = 'index';
@@ -114,7 +115,7 @@ class SitesManagerTest extends IntegrationTestCase
$this->assertEquals('index', $action);
}
- public function test_redirectDashboardToWelcomePage_doesNothingIfAVisitWasTrackedInThePast()
+ public function testRedirectDashboardToWelcomePageDoesNothingIfAVisitWasTrackedInThePast()
{
$module = 'CoreHome';
$action = 'index';
@@ -136,7 +137,7 @@ class SitesManagerTest extends IntegrationTestCase
$this->assertEquals('index', $action);
}
- public function test_redirectDashboardToWelcomePage_doesNothingIfAVisitWasTrackedAndWasLaterPurged()
+ public function testRedirectDashboardToWelcomePageDoesNothingIfAVisitWasTrackedAndWasLaterPurged()
{
$module = 'CoreHome';
$action = 'index';
@@ -159,7 +160,7 @@ class SitesManagerTest extends IntegrationTestCase
$this->assertEquals('index', $action);
}
- public function test_redirectDashboardToWelcomePage_redirectsIfThereIsNoDataAndAppropriateParams()
+ public function testRedirectDashboardToWelcomePageRedirectsIfThereIsNoDataAndAppropriateParams()
{
$module = 'CoreHome';
$action = 'index';
@@ -183,8 +184,8 @@ class SitesManagerTest extends IntegrationTestCase
public function provideContainerConfig()
{
- return array(
+ return [
'Piwik\Access' => new FakeAccess()
- );
+ ];
}
}
diff --git a/plugins/SitesManager/tests/Integration/TrackingTest.php b/plugins/SitesManager/tests/Integration/TrackingTest.php
index 042f44075a..623c59e27c 100644
--- a/plugins/SitesManager/tests/Integration/TrackingTest.php
+++ b/plugins/SitesManager/tests/Integration/TrackingTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -20,7 +21,7 @@ use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
*/
class TrackingTest extends IntegrationTestCase
{
- public function test_TrackingOldVisits_ResetsSiteCreatedTime_SoDataCanBeViewedInUI()
+ public function testTrackingOldVisitsResetsSiteCreatedTimeSoDataCanBeViewedInUI()
{
Fixture::createWebsite('2015-01-01 00:00:00');
@@ -35,7 +36,7 @@ class TrackingTest extends IntegrationTestCase
$this->assertEquals('2014-05-04 00:00:00', $createdTime);
}
- public function test_TrackingOldVisit_ThatIsExcluded_DoesNotResetCreatedTime()
+ public function testTrackingOldVisitThatIsExcludedDoesNotResetCreatedTime()
{
Fixture::createWebsite('2015-01-01 00:00:00');
@@ -53,7 +54,7 @@ class TrackingTest extends IntegrationTestCase
$this->assertEquals('2014-12-31 00:00:00', $createdTime);
}
- public function test_TrackingOldVisit_ForSiteWithNoTsCreatedTime_DoesNotResetCreatedTime()
+ public function testTrackingOldVisitForSiteWithNoTsCreatedTimeDoesNotResetCreatedTime()
{
Fixture::createWebsite('2015-01-01 00:00:00');
@@ -77,12 +78,12 @@ class TrackingTest extends IntegrationTestCase
private function getSiteCreatedTime($idSite)
{
- return Db::fetchOne("SELECT ts_created FROM " . Common::prefixTable('site') . " WHERE idsite = ?", array($idSite));
+ return Db::fetchOne("SELECT ts_created FROM " . Common::prefixTable('site') . " WHERE idsite = ?", [$idSite]);
}
private function unsetCreatedTime($idSite)
{
- Db::query("UPDATE " . Common::prefixTable('site') . " SET ts_created = NULL WHERE idsite = ?", array($idSite));
+ Db::query("UPDATE " . Common::prefixTable('site') . " SET ts_created = NULL WHERE idsite = ?", [$idSite]);
}
protected static function configureFixture($fixture)
@@ -91,4 +92,4 @@ class TrackingTest extends IntegrationTestCase
$fixture->createSuperUser = true;
}
-} \ No newline at end of file
+}
diff --git a/plugins/SitesManager/tests/System/ApiTest.php b/plugins/SitesManager/tests/System/ApiTest.php
index 6d7d3e0ba7..188416c700 100644
--- a/plugins/SitesManager/tests/System/ApiTest.php
+++ b/plugins/SitesManager/tests/System/ApiTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -35,67 +36,67 @@ class ApiTest extends SystemTestCase
public function getApiForTesting()
{
- $apiToTest = array();
- $apiToTest[] = array(array('SitesManager.getPatternMatchSites'),
- array(
+ $apiToTest = [];
+ $apiToTest[] = [['SitesManager.getPatternMatchSites'],
+ [
'idSite' => 1,
'date' => self::$fixture->dateTime,
- 'periods' => array('day'),
- 'otherRequestParameters' => array('pattern' => 'SiteTest1')
- )
- );
- $apiToTest[] = array(array('SitesManager.getPatternMatchSites'),
- array(
+ 'periods' => ['day'],
+ 'otherRequestParameters' => ['pattern' => 'SiteTest1']
+ ]
+ ];
+ $apiToTest[] = [['SitesManager.getPatternMatchSites'],
+ [
'idSite' => 1,
'date' => self::$fixture->dateTime,
- 'periods' => array('day'),
- 'otherRequestParameters' => array('pattern' => 'SiteTest1', 'limit' => 2),
+ 'periods' => ['day'],
+ 'otherRequestParameters' => ['pattern' => 'SiteTest1', 'limit' => 2],
'testSuffix' => 'withLimit'
- )
- );
- $apiToTest[] = array(array('SitesManager.getNumWebsitesToDisplayPerPage'),
- array(
+ ]
+ ];
+ $apiToTest[] = [['SitesManager.getNumWebsitesToDisplayPerPage'],
+ [
'idSite' => 1,
'date' => self::$fixture->dateTime,
- 'periods' => array('day'),
- 'otherRequestParameters' => array('pattern' => 'SiteTest1')
- )
- );
- $apiToTest[] = array(array('SitesManager.getSiteSettings'),
- array(
+ 'periods' => ['day'],
+ 'otherRequestParameters' => ['pattern' => 'SiteTest1']
+ ]
+ ];
+ $apiToTest[] = [['SitesManager.getSiteSettings'],
+ [
'idSite' => 1
- )
- );
+ ]
+ ];
return $apiToTest;
}
- public function test_InstalledBeforeMatomo37()
+ public function testInstalledBeforeMatomo37()
{
$this->setInstallVersion('3.6.0');
- $this->runApiTests(array('SitesManager.getJavascriptTag', 'SitesManager.getImageTrackingCode'), array(
+ $this->runApiTests(['SitesManager.getJavascriptTag', 'SitesManager.getImageTrackingCode'], [
'idSite' => 1,
'testSuffix' => '_prior3_7_0'
- ));
+ ]);
}
- public function test_InstalledBeforeMatomo37ButForced()
+ public function testInstalledBeforeMatomo37ButForced()
{
$this->setInstallVersion('3.6.0');
- $this->runApiTests(array('SitesManager.getJavascriptTag', 'SitesManager.getImageTrackingCode'), array(
+ $this->runApiTests(['SitesManager.getJavascriptTag', 'SitesManager.getImageTrackingCode'], [
'idSite' => 1,
- 'otherRequestParameters' => array('forceMatomoEndpoint' => 1),
+ 'otherRequestParameters' => ['forceMatomoEndpoint' => 1],
'testSuffix' => '_prior3_7_0_but_forced'
- ));
+ ]);
}
- public function test_InstalledAfterMatomo37()
+ public function testInstalledAfterMatomo37()
{
$this->setInstallVersion('3.7.0');
- $this->runApiTests(array('SitesManager.getJavascriptTag', 'SitesManager.getImageTrackingCode'), array(
+ $this->runApiTests(['SitesManager.getJavascriptTag', 'SitesManager.getImageTrackingCode'], [
'idSite' => 1,
'testSuffix' => '_after3_7_0'
- ));
+ ]);
}
private function setInstallVersion($installVersion)
@@ -112,7 +113,6 @@ class ApiTest extends SystemTestCase
{
return dirname(__FILE__);
}
-
}
-ApiTest::$fixture = new ManySites(); \ No newline at end of file
+ApiTest::$fixture = new ManySites();
diff --git a/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getPatternMatchSites.xml b/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getPatternMatchSites.xml
index 40a0823b76..429d57fd42 100644
--- a/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getPatternMatchSites.xml
+++ b/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getPatternMatchSites.xml
@@ -15,6 +15,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -37,6 +38,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -59,6 +61,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -81,6 +84,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -103,6 +107,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -125,6 +130,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -147,6 +153,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -169,6 +176,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -191,6 +199,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -213,6 +222,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -235,6 +245,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
diff --git a/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getSiteSettings.xml b/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getSiteSettings.xml
index 624774cb7d..0fadc11a5b 100644
--- a/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getSiteSettings.xml
+++ b/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getSiteSettings.xml
@@ -125,6 +125,26 @@ https://www.example.org/</placeholder>
<condition />
</row>
<row>
+ <name>excluded_referrers</name>
+ <title>Excluded referrers</title>
+ <value>
+ </value>
+ <defaultValue>
+ </defaultValue>
+ <type>array</type>
+ <uiControl>textarea</uiControl>
+ <uiControlAttributes>
+ <cols>20</cols>
+ <rows>4</rows>
+ </uiControlAttributes>
+ <availableValues />
+ <description />
+ <inlineHelp>Enter the list of hostnames and URLs, one per line, you want to exclude from referrer detection.&lt;br /&gt;&lt;br /&gt;Each entry needs to contain the hostname and may contain a path. If a path is provided a referrer will only be excluded if the path matches as well. URLs with and without 'www' are treated the same. Provided protocols will be ignored.&lt;br /&gt;e.g. &quot;www.example.org&quot; would match &quot;http://example.org/mypath&quot; and &quot;https://www.example.org/?param=1&quot; but not &quot;https://sub.example.org/&quot;&lt;br /&gt;&lt;br /&gt;To also exclude all subdomains of a certain hostname, prefix it with a dot. e.g. &quot;.sub.example.org&quot; would exclude &quot;http://sub.example.org/mypath&quot;, but also all its subdomains like &quot;https://new.sub.example.org/&quot;.</inlineHelp>
+ <templateFile />
+ <introduction />
+ <condition />
+ </row>
+ <row>
<name>sitesearch</name>
<title>Site Search</title>
<value>1</value>
diff --git a/plugins/SitesManager/tests/System/expected/test_SitesManagerwithLimit__SitesManager.getPatternMatchSites.xml b/plugins/SitesManager/tests/System/expected/test_SitesManagerwithLimit__SitesManager.getPatternMatchSites.xml
index ff12b972da..d24e8d2354 100644
--- a/plugins/SitesManager/tests/System/expected/test_SitesManagerwithLimit__SitesManager.getPatternMatchSites.xml
+++ b/plugins/SitesManager/tests/System/expected/test_SitesManagerwithLimit__SitesManager.getPatternMatchSites.xml
@@ -15,6 +15,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -37,6 +38,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
diff --git a/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_global_settings.png b/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_global_settings.png
index 2db69b918e..7a9b969825 100644
--- a/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_global_settings.png
+++ b/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_global_settings.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:de015ca1177509f696d12d07bfdc10c034f90d688c143d544b5fcb9fc997e8f7
-size 254454
+oid sha256:a2c8a88774382621127514bca028ecbb35ed4c45c88ad2ccca1762053c7aaba9
+size 323951
diff --git a/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png b/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png
index 891834b2c4..0cc7ff1efd 100644
--- a/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png
+++ b/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:50e9b492ac0e36727fce571beb6c4ee7fad2e4d54a3c5cebb4f41bb545af4f14
-size 330106
+oid sha256:2fda752b4a36129a30d2f31f382f62d0ef65fb8dfb5719c4a626b0299d751dc4
+size 391919
diff --git a/plugins/SitesManager/tests/Unit/APITest.php b/plugins/SitesManager/tests/Unit/APITest.php
index 15b46171ac..2d7610aca8 100644
--- a/plugins/SitesManager/tests/Unit/APITest.php
+++ b/plugins/SitesManager/tests/Unit/APITest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -47,18 +48,18 @@ class APITest extends \PHPUnit\Framework\TestCase
public function getTimezoneNameTestData()
{
- return array(
- array('Europe/Rome', 'en', 'Italy'),
- array('Europe/Rome', 'it', 'Italia'),
- array('America/New_York', 'en', 'United States - New York'),
- array('America/New_York', 'ru', 'Соединенные Штаты - Нью-Йорк'),
- array('Asia/Foo_Bar', 'en', 'Foo Bar'),
- array('Etc/UTC', 'en', 'UTC'),
- array('UTC', 'en', 'UTC'),
- array('UTC+1', 'en', 'UTC+1'),
- array('UTC+1.5', 'en', 'UTC+1:30'),
- array('UTC-1.5', 'en', 'UTC-1:30'),
- );
+ return [
+ ['Europe/Rome', 'en', 'Italy'],
+ ['Europe/Rome', 'it', 'Italia'],
+ ['America/New_York', 'en', 'United States - New York'],
+ ['America/New_York', 'ru', 'Соединенные Штаты - Нью-Йорк'],
+ ['Asia/Foo_Bar', 'en', 'Foo Bar'],
+ ['Etc/UTC', 'en', 'UTC'],
+ ['UTC', 'en', 'UTC'],
+ ['UTC+1', 'en', 'UTC+1'],
+ ['UTC+1.5', 'en', 'UTC+1:30'],
+ ['UTC-1.5', 'en', 'UTC-1:30'],
+ ];
}
/**
diff --git a/plugins/SitesManager/tests/Unit/GuessSiteTypeAndGtmTest.php b/plugins/SitesManager/tests/Unit/GuessSiteTypeAndGtmTest.php
index 66045cc909..ed85e26a55 100644
--- a/plugins/SitesManager/tests/Unit/GuessSiteTypeAndGtmTest.php
+++ b/plugins/SitesManager/tests/Unit/GuessSiteTypeAndGtmTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -16,7 +17,7 @@ use Piwik\Plugins\SitesManager\SitesManager;
* @group GtmSiteTypeGuesserTest
* @group Plugins
*/
-class GtmSiteTypeGuesserTest extends \PHPUnit\Framework\TestCase
+class GuessSiteTypeAndGtmTest extends \PHPUnit\Framework\TestCase
{
/**
* @var GtmSiteTypeGuesser
@@ -30,17 +31,17 @@ class GtmSiteTypeGuesserTest extends \PHPUnit\Framework\TestCase
$this->guesser = new GtmSiteTypeGuesser();
}
- public function test_site_type_unknown_if_response_false()
+ public function testSiteTypeUnknownIfResponseFalse()
{
$this->assertEquals(SitesManager::SITE_TYPE_UNKNOWN, $this->guesser->guessSiteTypeFromResponse(false));
}
- public function test_gtm_is_false_if_response_false()
+ public function testGtmIsFalseIfResponseFalse()
{
$this->assertFalse($this->guesser->guessGtmFromResponse(false));
}
- public function test_gtm_is_true()
+ public function testGtmIsTrue()
{
$response = [
'status' => 200,
@@ -54,7 +55,7 @@ class GtmSiteTypeGuesserTest extends \PHPUnit\Framework\TestCase
/**
* @dataProvider responseProvider
*/
- public function test_site_types_by_response($expected, $response)
+ public function testSiteTypesByResponse($expected, $response)
{
$this->assertEquals($expected, $this->guesser->guessSiteTypeFromResponse($response));
}
diff --git a/plugins/SitesManager/vue/dist/SitesManager.umd.js b/plugins/SitesManager/vue/dist/SitesManager.umd.js
index 4601a84174..aa0ff4d137 100644
--- a/plugins/SitesManager/vue/dist/SitesManager.umd.js
+++ b/plugins/SitesManager/vue/dist/SitesManager.umd.js
@@ -1442,6 +1442,7 @@ var GlobalSettingsStore_GlobalSettingsStore = /*#__PURE__*/function () {
excludedIpsGlobal: '',
excludedQueryParametersGlobal: '',
excludedUserAgentsGlobal: '',
+ excludedReferrersGlobal: '',
searchKeywordParametersGlobal: '',
searchCategoryParametersGlobal: ''
}
@@ -1492,6 +1493,7 @@ var GlobalSettingsStore_GlobalSettingsStore = /*#__PURE__*/function () {
excludedIpsGlobal: response.excludedIpsGlobal || '',
excludedQueryParametersGlobal: response.excludedQueryParametersGlobal || '',
excludedUserAgentsGlobal: response.excludedUserAgentsGlobal || '',
+ excludedReferrersGlobal: response.excludedReferrersGlobal || '',
searchKeywordParametersGlobal: response.searchKeywordParametersGlobal || '',
searchCategoryParametersGlobal: response.searchCategoryParametersGlobal || ''
});
@@ -1806,81 +1808,96 @@ SitesManagementvue_type_script_lang_ts.render = render
window.angular.module('piwikApp').factory('sitesManagerAPI', function () {
return {};
});
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=213acaec
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=5467128a
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_1 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_1 = {
class: "SitesManager"
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
name: "globalSettings",
id: "globalSettings"
}, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_3 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_3 = {
id: "excludedIpsGlobalHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_6 = ["innerHTML"];
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_7 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_6 = ["innerHTML"];
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_7 = {
id: "excludedQueryParametersGlobalHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_8 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_8 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_10 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_10 = {
id: "excludedUserAgentsGlobalHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_13 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_13 = {
+ id: "excludedReferrersGlobalHelp",
+ class: "inline-help-node"
+};
+
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_19 = {
id: "timezoneHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_14 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_20 = {
key: 0
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_21 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_22 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_17 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_23 = {
id: "keepURLFragmentsHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_18 = ["innerHTML"];
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_19 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_24 = ["innerHTML"];
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_25 = {
class: "alert alert-info"
};
-function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache, $props, $setup, $data, $options) {
+function ManageGlobalSettingsvue_type_template_id_5467128a_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
"content-title": _ctx.translate('SitesManager_GlobalWebsitesSettings')
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_HelpExcludedIpAddresses', '1.2.3.4/24', '1.2.3.*', '1.2.*.*')) + " ", 1), ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_4, ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ return [ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_HelpExcludedIpAddresses', '1.2.3.4/24', '1.2.3.*', '1.2.*.*')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_4, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.yourCurrentIpAddressIs)
- }, null, 8, ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_6)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ListOfQueryParametersToExclude', '/^sess.*|.*[dD]ate$/')) + " ", 1), ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_8, ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters', 'phpsessid, sessionid, ...')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp1')) + " ", 1), ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_11, ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalListExcludedUserAgents_Desc')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp2')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp3', '/bot|spider|crawl|scanner/i')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [!_ctx.timezoneSupportEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_AdvancedTimezoneSupportNotFound')) + " ", 1), ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_15])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_UTCTimeIs', _ctx.utcTimeDate)) + " ", 1), ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ }, null, 8, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_6)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ListOfQueryParametersToExclude', '/^sess.*|.*[dD]ate$/')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_8, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters', 'phpsessid, sessionid, ...')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp1')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_11, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalListExcludedUserAgents_Desc')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp2')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp3', '/bot|spider|crawl|scanner/i')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ExcludedReferrersHelp')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_14, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_15, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ExcludedReferrersHelpDetails')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ExcludedReferrersHelpExamples', 'www.example.org', 'http://example.org/mypath', 'https://www.example.org/?param=1', 'https://sub.example.org/')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_17, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_18, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ExcludedReferrersHelpSubDomains', '.sub.example.org', 'http://sub.example.org/mypath', 'https://new.sub.example.org/')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [!_ctx.timezoneSupportEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_AdvancedTimezoneSupportNotFound')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_21])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_UTCTimeIs', _ctx.utcTimeDate)) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_22, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_23, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
innerHTML: _ctx.$sanitize(_ctx.keepUrlFragmentHelp)
- }, null, 8, ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_18), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_KeepURLFragmentsHelp2')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_24), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_KeepURLFragmentsHelp2')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "textarea",
name: "excludedIpsGlobal",
"var-type": "array",
@@ -1917,22 +1934,34 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
"inline-help": '#excludedUserAgentsGlobalHelp',
disabled: _ctx.isLoading
}, null, 8, ["modelValue", "title", "introduction", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "textarea",
+ name: "excludedReferrersGlobal",
+ "var-type": "array",
+ modelValue: _ctx.excludedReferrersGlobal,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.excludedReferrersGlobal = $event;
+ }),
+ title: _ctx.translate('SitesManager_GlobalListExcludedReferrersDesc'),
+ introduction: _ctx.translate('SitesManager_GlobalListExcludedReferrers'),
+ "inline-help": '#excludedReferrersGlobalHelp',
+ disabled: _ctx.isLoading
+ }, null, 8, ["modelValue", "title", "introduction", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "checkbox",
name: "keepURLFragmentsGlobal",
modelValue: _ctx.keepURLFragmentsGlobal,
- "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
return _ctx.keepURLFragmentsGlobal = $event;
}),
title: _ctx.translate('SitesManager_KeepURLFragmentsLong'),
introduction: _ctx.translate('SitesManager_KeepURLFragments'),
"inline-help": '#keepURLFragmentsHelp',
disabled: _ctx.isLoading
- }, null, 8, ["modelValue", "title", "introduction", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_TrackingSiteSearch')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SiteSearchUse')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_19, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote2')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["modelValue", "title", "introduction", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_TrackingSiteSearch')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SiteSearchUse')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_25, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote2')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "text",
name: "searchKeywordParametersGlobal",
"var-type": "array",
modelValue: _ctx.searchKeywordParametersGlobal,
- "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
return _ctx.searchKeywordParametersGlobal = $event;
}),
title: _ctx.translate('SitesManager_SearchKeywordLabel'),
@@ -1943,7 +1972,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
name: "searchCategoryParametersGlobal",
"var-type": "array",
modelValue: _ctx.searchCategoryParametersGlobal,
- "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
return _ctx.searchCategoryParametersGlobal = $event;
}),
title: _ctx.translate('SitesManager_SearchCategoryLabel'),
@@ -1958,14 +1987,14 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
"inline-help": '#timezoneHelp',
disabled: _ctx.isLoading,
modelValue: _ctx.defaultTimezone,
- "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
return _ctx.defaultTimezone = $event;
})
}, null, 8, ["options", "title", "introduction", "disabled", "modelValue"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "select",
name: "defaultCurrency",
modelValue: _ctx.defaultCurrency,
- "onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = function ($event) {
return _ctx.defaultCurrency = $event;
}),
options: _ctx.currencies,
@@ -1975,7 +2004,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
disabled: _ctx.isLoading
}, null, 8, ["modelValue", "options", "title", "introduction", "inline-help", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
saving: _ctx.isSaving,
- onConfirm: _cache[8] || (_cache[8] = function ($event) {
+ onConfirm: _cache[9] || (_cache[9] = function ($event) {
return _ctx.saveGlobalSettings();
})
}, null, 8, ["saving"])];
@@ -1983,7 +2012,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
_: 1
}, 8, ["content-title"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSuperUserAccess]])]);
}
-// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=213acaec
+// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=5467128a
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=script&lang=ts
@@ -2016,6 +2045,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
excludedIpsGlobal: (settings.excludedIpsGlobal || '').split(','),
excludedQueryParametersGlobal: (settings.excludedQueryParametersGlobal || '').split(','),
excludedUserAgentsGlobal: (settings.excludedUserAgentsGlobal || '').split(','),
+ excludedReferrersGlobal: (settings.excludedReferrersGlobal || '').split(','),
searchKeywordParametersGlobal: (settings.searchKeywordParametersGlobal || '').split(','),
searchCategoryParametersGlobal: (settings.searchCategoryParametersGlobal || '').split(','),
isSaving: false
@@ -2036,6 +2066,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
_this.excludedIpsGlobal = (settings.excludedIpsGlobal || '').split(',');
_this.excludedQueryParametersGlobal = (settings.excludedQueryParametersGlobal || '').split(',');
_this.excludedUserAgentsGlobal = (settings.excludedUserAgentsGlobal || '').split(',');
+ _this.excludedReferrersGlobal = (settings.excludedReferrersGlobal || '').split(',');
_this.searchKeywordParametersGlobal = (settings.searchKeywordParametersGlobal || '').split(',');
_this.searchCategoryParametersGlobal = (settings.searchCategoryParametersGlobal || '').split(',');
});
@@ -2057,6 +2088,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
excludedIps: this.excludedIpsGlobal.join(','),
excludedQueryParameters: this.excludedQueryParametersGlobal.join(','),
excludedUserAgents: this.excludedUserAgentsGlobal.join(','),
+ excludedReferrers: this.excludedReferrersGlobal.join(','),
searchKeywordParameters: this.searchKeywordParametersGlobal.join(','),
searchCategoryParameters: this.searchCategoryParametersGlobal.join(',')
}).then(function () {
@@ -2126,7 +2158,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
-ManageGlobalSettingsvue_type_script_lang_ts.render = ManageGlobalSettingsvue_type_template_id_213acaec_render
+ManageGlobalSettingsvue_type_script_lang_ts.render = ManageGlobalSettingsvue_type_template_id_5467128a_render
/* harmony default export */ var ManageGlobalSettings = (ManageGlobalSettingsvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.adapter.ts
diff --git a/plugins/SitesManager/vue/dist/SitesManager.umd.min.js b/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
index 25fb5ddb6a..dea9ca88c0 100644
--- a/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
+++ b/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
@@ -1,45 +1,45 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["SitesManager"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["SitesManager"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var i=t[a]={i:a,l:!1,exports:{}};return e[a].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(a,i,function(t){return e[t]}.bind(null,i));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/SitesManager/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"SiteTypesStore",(function(){return h})),n.d(t,"CurrencyStore",(function(){return Xe})),n.d(t,"TimezoneStore",(function(){return Re})),n.d(t,"SitesManagement",(function(){return gt})),n.d(t,"ManageGlobalSettings",(function(){return Lt})),"undefined"!==typeof window){var a=window.document.currentScript,i=a&&a.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var r=n("19dc"),l=n("8bbf");function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function c(e,t,n){return t&&s(e.prototype,t),n&&s(e,n),e}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["SitesManager"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["SitesManager"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var i=t[a]={i:a,l:!1,exports:{}};return e[a].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(a,i,function(t){return e[t]}.bind(null,i));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/SitesManager/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"SiteTypesStore",(function(){return p})),n.d(t,"CurrencyStore",(function(){return Xe})),n.d(t,"TimezoneStore",(function(){return We})),n.d(t,"SitesManagement",(function(){return gt})),n.d(t,"ManageGlobalSettings",(function(){return Rt})),"undefined"!==typeof window){var a=window.document.currentScript,i=a&&a.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var r=n("19dc"),l=n("8bbf");function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function c(e,t,n){return t&&s(e.prototype,t),n&&s(e,n),e}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var d=window,b=d.$,m=function(){function e(){var t=this;o(this,e),u(this,"state",Object(l["reactive"])({isLoading:!1,typesById:{}})),u(this,"typesById",Object(l["computed"])((function(){return Object(l["readonly"])(t.state).typesById}))),u(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.state).isLoading}))),u(this,"types",Object(l["computed"])((function(){return Object.values(t.typesById.value)}))),u(this,"response",void 0)}return c(e,[{key:"init",value:function(){return this.fetchAvailableTypes()}},{key:"fetchAvailableTypes",value:function(){var e=this;return this.response?Promise.resolve(this.response):(this.state.isLoading=!0,this.response=r["AjaxHelper"].fetch({method:"API.getAvailableMeasurableTypes",filter_limit:"-1"}).then((function(t){return t.forEach((function(t){e.state.typesById[t.id]=t})),e.types.value})).finally((function(){e.state.isLoading=!1})),this.response)}},{key:"getEditSiteIdParameter",value:function(){var e=r["MatomoUrl"].hashQuery.value.match(/editsiteid=([0-9]+)/);if(e){var t="1"===r["MatomoUrl"].urlParsed.value.showaddsite||"true"===r["MatomoUrl"].urlParsed.value.showaddsite,n=e[1];return n&&b.isNumeric(n)&&!t?n:void 0}}},{key:"removeEditSiteIdParameterFromHash",value:function(){var e=Object.assign({},r["MatomoUrl"].hashParsed.value);delete e.editsiteid,r["MatomoUrl"].updateHash(e)}}]),e}(),h=new m;
+ */var d=window,b=d.$,m=function(){function e(){var t=this;o(this,e),u(this,"state",Object(l["reactive"])({isLoading:!1,typesById:{}})),u(this,"typesById",Object(l["computed"])((function(){return Object(l["readonly"])(t.state).typesById}))),u(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.state).isLoading}))),u(this,"types",Object(l["computed"])((function(){return Object.values(t.typesById.value)}))),u(this,"response",void 0)}return c(e,[{key:"init",value:function(){return this.fetchAvailableTypes()}},{key:"fetchAvailableTypes",value:function(){var e=this;return this.response?Promise.resolve(this.response):(this.state.isLoading=!0,this.response=r["AjaxHelper"].fetch({method:"API.getAvailableMeasurableTypes",filter_limit:"-1"}).then((function(t){return t.forEach((function(t){e.state.typesById[t.id]=t})),e.types.value})).finally((function(){e.state.isLoading=!1})),this.response)}},{key:"getEditSiteIdParameter",value:function(){var e=r["MatomoUrl"].hashQuery.value.match(/editsiteid=([0-9]+)/);if(e){var t="1"===r["MatomoUrl"].urlParsed.value.showaddsite||"true"===r["MatomoUrl"].urlParsed.value.showaddsite,n=e[1];return n&&b.isNumeric(n)&&!t?n:void 0}}},{key:"removeEditSiteIdParameterFromHash",value:function(){var e=Object.assign({},r["MatomoUrl"].hashParsed.value);delete e.editsiteid,r["MatomoUrl"].updateHash(e)}}]),e}(),p=new m;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function p(){return{get typesById(){return Object(r["clone"])(h.typesById.value)},fetchTypeById:function(e){var t=this;return h.fetchAvailableTypes().then((function(){return Object(r["cloneThenApply"])(t.typesById[e])}))},fetchAvailableTypes:function(){return h.fetchAvailableTypes().then((function(e){return Object(r["cloneThenApply"])(e)}))},hasMultipleTypes:function(){return h.fetchAvailableTypes().then((function(e){return e&&Object.keys(e).length>1}))},removeEditSiteIdParameterFromHash:h.removeEditSiteIdParameterFromHash.bind(h),getEditSiteIdParameter:h.getEditSiteIdParameter.bind(h)}}window.angular.module("piwikApp.service").factory("sitesManagerTypeModel",p);var g={class:"SitesManager",ref:"root"},f={class:"sites-manager-header"},S=["innerHTML"],v=Object(l["createElementVNode"])("br",null,null,-1),j=["innerHTML"],O={class:"loadingPiwik"},y=["alt"],E={class:"ui-confirm"},N={class:"center"},V=["title","onClick"],T={class:"ui-button-text"},x={class:"sitesManagerList"},M={key:0},w={class:"bottomButtonBar"};function A(e,t,n,a,i,r){var o=this,s=Object(l["resolveComponent"])("EnrichedHeadline"),c=Object(l["resolveComponent"])("ButtonBar"),u=Object(l["resolveComponent"])("MatomoDialog"),d=Object(l["resolveComponent"])("SiteFields"),b=Object(l["resolveDirective"])("content-intro");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",g,[Object(l["createElementVNode"])("div",f,[Object(l["withDirectives"])(Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("h2",null,[Object(l["createVNode"])(s,{"help-url":"https://matomo.org/docs/manage-websites/","feature-name":e.translate("SitesManager_WebsitesManagement")},{default:Object(l["withCtx"])((function(){return[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.headlineText),1)]})),_:1},8,["help-url","feature-name"])],512),[[l["vShow"],e.availableTypes.length]]),Object(l["createElementVNode"])("p",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_MainDescription"))+" ",1),Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mainDescription)},null,8,S),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",null,[v,Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.superUserAccessMessage)},null,8,j)],512),[[l["vShow"],e.hasSuperUserAccess]])])],512),[[b]])]),Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])({hide_only:!e.isLoading})},[Object(l["createElementVNode"])("div",O,[Object(l["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,y),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_LoadingData")),1)])],2)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[0]||(t[0]=function(t){return e.searchTerm=t}),onAdd:t[1]||(t[1]=function(t){return e.addNewEntity()}),onSearch:t[2]||(t[2]=function(t){return e.searchSites(t)}),onPrev:t[3]||(t[3]=function(t){return e.previousPage()}),onNext:t[4]||(t[4]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])]),Object(l["createVNode"])(u,{modelValue:e.showAddSiteDialog,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.showAddSiteDialog=t})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",E,[Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.translate("SitesManager_ChooseMeasurableTypeHeadline")),1),Object(l["createElementVNode"])("div",N,[Object(l["createElementVNode"])("p",null,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableTypes,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("button",{type:"button",key:t.id,title:t.description,class:"modal-close btn",style:{"margin-left":"20px"},onClick:function(n){e.addSite(t.id)},"aria-disabled":"false"},[Object(l["createElementVNode"])("span",T,Object(l["toDisplayString"])(t.name),1)],8,V)})),128))])])])])]})),_:1},8,["modelValue"]),Object(l["createElementVNode"])("div",x,[e.activeSearchTerm&&0===e.sites.length&&!e.isLoading?(Object(l["openBlock"])(),Object(l["createElementBlock"])("p",M,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_NotFound"))+" ",1),Object(l["createElementVNode"])("strong",null,Object(l["toDisplayString"])(e.activeSearchTerm),1)])):Object(l["createCommentVNode"])("",!0),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.sites,(function(n,a){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:n.idsite},[Object(l["createVNode"])(d,{site:n,"timezone-support-enabled":e.timezoneSupportEnabled,"utc-time":e.utcTime,"global-settings":e.globalSettings,onEditSite:t[6]||(t[6]=function(e){return o.isSiteBeingEdited=!0}),onCancelEditSite:t[7]||(t[7]=function(t){return e.afterCancelEdit(t)}),onDelete:t[8]||(t[8]=function(t){return e.afterDelete(t)}),onSave:function(t){return e.afterSave(t.site,t.settingValues,a,t.isNew)}},null,8,["site","timezone-support-enabled","utc-time","global-settings","onSave"])])})),128))]),Object(l["createElementVNode"])("div",w,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[9]||(t[9]=function(t){return e.searchTerm=t}),onAdd:t[10]||(t[10]=function(t){return e.addNewEntity()}),onSearch:t[11]||(t[11]=function(t){return e.searchSites(t)}),onPrev:t[12]||(t[12]=function(t){return e.previousPage()}),onNext:t[13]||(t[13]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])])],512)}var C={class:"sitesButtonBar clearfix"},_={class:"search"},P=["value","placeholder","disabled"],D=["title"],k={class:"paging"},G=["disabled"],U={style:{cursor:"pointer"}},L={class:"counter"},z=["disabled"],I={style:{cursor:"pointer"},class:"pointer"};function B(e,t,n,a,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",C,[Object(l["withDirectives"])(Object(l["createElementVNode"])("a",{class:Object(l["normalizeClass"])(["btn addSite",{disabled:e.siteIsBeingEdited}]),onClick:t[0]||(t[0]=function(t){return e.addNewEntity()}),tabindex:"1"},Object(l["toDisplayString"])(e.availableTypes.length>1?e.translate("SitesManager_AddMeasurable"):e.translate("SitesManager_AddSite")),3),[[l["vShow"],e.hasSuperUserAccess&&e.availableTypes]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",_,[Object(l["createElementVNode"])("input",{value:e.searchTerm,onKeydown:t[1]||(t[1]=function(t){return e.onKeydown(t)}),placeholder:e.translate("Actions_SubmenuSitesearch"),type:"text",disabled:e.siteIsBeingEdited},null,40,P),Object(l["createElementVNode"])("img",{onClick:t[2]||(t[2]=function(t){return e.searchSite()}),title:e.translate("General_ClickToSearch"),class:"search_ico",src:"plugins/Morpheus/images/search_ico.png"},null,8,D)],512),[[l["vShow"],e.hasPrev||e.hasNext||e.isSearching]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",k,[Object(l["createElementVNode"])("a",{class:"btn prev",disabled:!(e.hasPrev&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[3]||(t[3]=function(t){return e.previousPage()})},[Object(l["createElementVNode"])("span",U,"« "+Object(l["toDisplayString"])(e.translate("General_Previous")),1)],8,G),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",L,[Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(e.paginationText),1)],512),[[l["vShow"],e.hasPrev||e.hasNext]]),Object(l["createElementVNode"])("a",{class:"btn next",disabled:!(e.hasNext&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[4]||(t[4]=function(t){return e.nextPage()})},[Object(l["createElementVNode"])("span",I,Object(l["toDisplayString"])(e.translate("General_Next"))+" »",1)],8,z)],512),[[l["vShow"],e.hasPrev||e.hasNext]])])}var H=Object(l["defineComponent"])({props:{siteIsBeingEdited:{type:Boolean,required:!0},hasPrev:{type:Boolean,required:!0},hasNext:{type:Boolean,required:!0},offsetStart:{type:Number,required:!0},offsetEnd:{type:Number,required:!0},totalNumberOfSites:{type:Number},isLoading:{type:Boolean,required:!0},searchTerm:{type:String,required:!0},isSearching:{type:Boolean,required:!0}},emits:["add","search","prev","next","update:searchTerm"],created:function(){h.init(),this.onKeydown=Object(r["debounce"])(this.onKeydown,50)},computed:{hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},availableTypes:function(){return h.types.value},paginationText:function(){var e;return e=this.isSearching?Object(r["translate"])("General_PaginationWithoutTotal","".concat(this.offsetStart),"".concat(this.offsetEnd)):Object(r["translate"])("General_Pagination","".concat(this.offsetStart),"".concat(this.offsetEnd),null===this.totalNumberOfSites?"?":"".concat(this.totalNumberOfSites))," ".concat(e," ")}},methods:{addNewEntity:function(){this.$emit("add")},searchSite:function(){this.siteIsBeingEdited||this.$emit("search")},previousPage:function(){this.$emit("prev")},nextPage:function(){this.$emit("next")},onKeydown:function(e){var t=this;setTimeout((function(){"Enter"!==e.key?t.$emit("update:searchTerm",e.target.value):t.searchSiteOnEnter(e)}))},searchSiteOnEnter:function(e){e.preventDefault(),this.searchSite()}}});H.render=B;var F=H,K=["idsite","type"],W={class:"card-content"},R={key:0,class:"row"},Q={class:"col m3"},q={class:"title"},$={class:"title"},Y=["target","title","href"],J={class:"col m4"},X={class:"title"},Z={class:"title"},ee={class:"title"},te={class:"title"},ne={class:"col m4"},ae={class:"title"},ie=Object(l["createTextVNode"])(": "),re=["href"],le={key:0},oe={class:"title"},se={key:1},ce={class:"title"},ue={key:2},de={class:"title"},be={class:"col m1 text-right"},me=["title"],he=Object(l["createElementVNode"])("span",{class:"icon-edit"},null,-1),pe=[he],ge=["title"],fe=Object(l["createElementVNode"])("span",{class:"icon-delete"},null,-1),Se=[fe],ve={key:1},je={class:"form-group row"},Oe={class:"col s12 m6 input-field"},ye=["placeholder"],Ee=Object(l["createElementVNode"])("div",{class:"col s12 m6"},null,-1),Ne={id:"timezoneHelpText",class:"inline-help-node"},Ve={key:0},Te=Object(l["createElementVNode"])("br",null,null,-1),xe=Object(l["createElementVNode"])("br",null,null,-1),Me={class:"editingSiteFooter"},we=["value"],Ae={class:"ui-confirm"},Ce=["value"],_e=["value"];function Pe(e,t,n,a,i,r){var o,s,c,u=this,d=Object(l["resolveComponent"])("ActivityIndicator"),b=Object(l["resolveComponent"])("GroupedSettings"),m=Object(l["resolveComponent"])("Field"),h=Object(l["resolveComponent"])("MatomoDialog");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{class:Object(l["normalizeClass"])(["site card hoverable",{editingSite:!!e.editMode}]),idsite:e.theSite.idsite,type:e.theSite.type,ref:"root"},[Object(l["createElementVNode"])("div",W,[e.editMode?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",R,[Object(l["createElementVNode"])("div",Q,[Object(l["createElementVNode"])("h4",null,Object(l["toDisplayString"])(e.theSite.name),1),Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",q,Object(l["toDisplayString"])(e.translate("General_Id"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.idsite),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",$,Object(l["toDisplayString"])(e.translate("SitesManager_Type"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.currentType.name),1)],512),[[l["vShow"],e.availableTypes.length>1]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("a",{target:e.isInternalSetupUrl?"_self":"_blank",title:e.translate("SitesManager_ShowTrackingTag"),href:e.setupUrl},Object(l["toDisplayString"])(e.translate("SitesManager_ShowTrackingTag")),9,Y)],512),[[l["vShow"],e.theSite.idsite&&e.howToSetupUrl]])])]),Object(l["createElementVNode"])("div",J,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",X,Object(l["toDisplayString"])(e.translate("SitesManager_Timezone"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.timezone_name),1)]),Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",Z,Object(l["toDisplayString"])(e.translate("SitesManager_Currency"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.currency_name),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ee,Object(l["toDisplayString"])(e.translate("Goals_Ecommerce"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.ecommerce||"1"===e.theSite.ecommerce]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",te,Object(l["toDisplayString"])(e.translate("Actions_SubmenuSitesearch"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.sitesearch||"1"===e.theSite.sitesearch]])])]),Object(l["createElementVNode"])("div",ne,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ae,Object(l["toDisplayString"])(e.translate("SitesManager_Urls")),1),ie,(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.theSite.alias_urls,(function(t,n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("span",{key:t},[Object(l["createElementVNode"])("a",{target:"_blank",rel:"noreferrer noopener",href:t},Object(l["toDisplayString"])(t)+Object(l["toDisplayString"])(n===e.theSite.alias_urls.length-1?"":", "),9,re)])})),128))]),null!==(o=e.theSite.excluded_ips)&&void 0!==o&&o.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",le,[Object(l["createElementVNode"])("span",oe,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedIps"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_ips.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(s=e.theSite.excluded_parameters)&&void 0!==s&&s.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",se,[Object(l["createElementVNode"])("span",ce,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedParameters"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_parameters.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(c=e.theSite.excluded_user_agents)&&void 0!==c&&c.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",ue,[Object(l["createElementVNode"])("span",de,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedUserAgents"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_user_agents.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0)])]),Object(l["createElementVNode"])("div",be,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[0]||(t[0]=function(t){return e.editSite()}),title:e.translate("General_Edit")},pe,8,me)]),Object(l["createElementVNode"])("li",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[1]||(t[1]=function(e){return u.showRemoveDialog=!0}),title:e.translate("General_Delete")},Se,8,ge),[[l["vShow"],e.theSite.idsite]])])])])])),e.editMode?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ve,[Object(l["createElementVNode"])("div",je,[Object(l["createElementVNode"])("div",Oe,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.theSite.name=t}),maxlength:"90",placeholder:e.translate("General_Name")},null,8,ye),[[l["vModelText"],e.theSite.name]]),Object(l["createElementVNode"])("label",null,Object(l["toDisplayString"])(e.translate("General_Name")),1)]),Ee]),Object(l["createVNode"])(d,{loading:e.isLoading},null,8,["loading"]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.measurableSettings,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:t.pluginName},[Object(l["createVNode"])(b,{"group-name":t.pluginName,settings:t.settings,"all-setting-values":e.settingValues,onChange:function(n){return e.settingValues["".concat(t.pluginName,".").concat(n.name)]=n.value}},null,8,["group-name","settings","all-setting-values","onChange"])])})),128)),Object(l["createVNode"])(m,{uicontrol:"select",name:"currency",modelValue:e.theSite.currency,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.theSite.currency=t}),title:e.translate("SitesManager_Currency"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),options:e.currencies},null,8,["modelValue","title","inline-help","options"]),Object(l["createVNode"])(m,{uicontrol:"select",name:"timezone",modelValue:e.theSite.timezone,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theSite.timezone=t}),title:e.translate("SitesManager_Timezone"),"inline-help":"#timezoneHelpText",options:e.timezones},null,8,["modelValue","title","options"]),Object(l["createElementVNode"])("div",Ne,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",Ve,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Te])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.utcTimeIs)+" ",1),xe,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Me,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"submit",class:"btn",value:e.translate("General_Save"),onClick:t[5]||(t[5]=function(t){return e.saveSite()})},null,8,we),[[l["vShow"],!e.isLoading]]),Object(l["createElementVNode"])("button",{class:"btn btn-link",onClick:t[6]||(t[6]=function(t){return e.cancelEditSite(e.site)})},Object(l["toDisplayString"])(e.translate("General_Cancel","","")),1)])])):Object(l["createCommentVNode"])("",!0)]),Object(l["createVNode"])(h,{modelValue:e.showRemoveDialog,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.showRemoveDialog=t}),onYes:t[8]||(t[8]=function(t){return e.deleteSite()})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",Ae,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.removeDialogTitle),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_DeleteSiteExplanation")),1),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_Yes"),role:"yes"},null,8,Ce),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_No"),role:"no"},null,8,_e)])]})),_:1},8,["modelValue"])],10,K)}var De=n("a5a2");function ke(e,t){return Ie(e)||ze(e,t)||Ue(e,t)||Ge()}function Ge(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ue(e,t){if(e){if("string"===typeof e)return Le(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Le(e,t):void 0}}function Le(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function ze(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function Ie(e){if(Array.isArray(e))return e}function Be(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function He(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function Fe(e,t,n){return t&&He(e.prototype,t),n&&He(e,n),e}function Ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+function h(){return{get typesById(){return Object(r["clone"])(p.typesById.value)},fetchTypeById:function(e){var t=this;return p.fetchAvailableTypes().then((function(){return Object(r["cloneThenApply"])(t.typesById[e])}))},fetchAvailableTypes:function(){return p.fetchAvailableTypes().then((function(e){return Object(r["cloneThenApply"])(e)}))},hasMultipleTypes:function(){return p.fetchAvailableTypes().then((function(e){return e&&Object.keys(e).length>1}))},removeEditSiteIdParameterFromHash:p.removeEditSiteIdParameterFromHash.bind(p),getEditSiteIdParameter:p.getEditSiteIdParameter.bind(p)}}window.angular.module("piwikApp.service").factory("sitesManagerTypeModel",h);var g={class:"SitesManager",ref:"root"},f={class:"sites-manager-header"},S=["innerHTML"],j=Object(l["createElementVNode"])("br",null,null,-1),O=["innerHTML"],v={class:"loadingPiwik"},y=["alt"],E={class:"ui-confirm"},N={class:"center"},V=["title","onClick"],x={class:"ui-button-text"},T={class:"sitesManagerList"},M={key:0},w={class:"bottomButtonBar"};function A(e,t,n,a,i,r){var o=this,s=Object(l["resolveComponent"])("EnrichedHeadline"),c=Object(l["resolveComponent"])("ButtonBar"),u=Object(l["resolveComponent"])("MatomoDialog"),d=Object(l["resolveComponent"])("SiteFields"),b=Object(l["resolveDirective"])("content-intro");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",g,[Object(l["createElementVNode"])("div",f,[Object(l["withDirectives"])(Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("h2",null,[Object(l["createVNode"])(s,{"help-url":"https://matomo.org/docs/manage-websites/","feature-name":e.translate("SitesManager_WebsitesManagement")},{default:Object(l["withCtx"])((function(){return[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.headlineText),1)]})),_:1},8,["help-url","feature-name"])],512),[[l["vShow"],e.availableTypes.length]]),Object(l["createElementVNode"])("p",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_MainDescription"))+" ",1),Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mainDescription)},null,8,S),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",null,[j,Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.superUserAccessMessage)},null,8,O)],512),[[l["vShow"],e.hasSuperUserAccess]])])],512),[[b]])]),Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])({hide_only:!e.isLoading})},[Object(l["createElementVNode"])("div",v,[Object(l["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,y),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_LoadingData")),1)])],2)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[0]||(t[0]=function(t){return e.searchTerm=t}),onAdd:t[1]||(t[1]=function(t){return e.addNewEntity()}),onSearch:t[2]||(t[2]=function(t){return e.searchSites(t)}),onPrev:t[3]||(t[3]=function(t){return e.previousPage()}),onNext:t[4]||(t[4]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])]),Object(l["createVNode"])(u,{modelValue:e.showAddSiteDialog,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.showAddSiteDialog=t})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",E,[Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.translate("SitesManager_ChooseMeasurableTypeHeadline")),1),Object(l["createElementVNode"])("div",N,[Object(l["createElementVNode"])("p",null,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableTypes,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("button",{type:"button",key:t.id,title:t.description,class:"modal-close btn",style:{"margin-left":"20px"},onClick:function(n){e.addSite(t.id)},"aria-disabled":"false"},[Object(l["createElementVNode"])("span",x,Object(l["toDisplayString"])(t.name),1)],8,V)})),128))])])])])]})),_:1},8,["modelValue"]),Object(l["createElementVNode"])("div",T,[e.activeSearchTerm&&0===e.sites.length&&!e.isLoading?(Object(l["openBlock"])(),Object(l["createElementBlock"])("p",M,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_NotFound"))+" ",1),Object(l["createElementVNode"])("strong",null,Object(l["toDisplayString"])(e.activeSearchTerm),1)])):Object(l["createCommentVNode"])("",!0),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.sites,(function(n,a){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:n.idsite},[Object(l["createVNode"])(d,{site:n,"timezone-support-enabled":e.timezoneSupportEnabled,"utc-time":e.utcTime,"global-settings":e.globalSettings,onEditSite:t[6]||(t[6]=function(e){return o.isSiteBeingEdited=!0}),onCancelEditSite:t[7]||(t[7]=function(t){return e.afterCancelEdit(t)}),onDelete:t[8]||(t[8]=function(t){return e.afterDelete(t)}),onSave:function(t){return e.afterSave(t.site,t.settingValues,a,t.isNew)}},null,8,["site","timezone-support-enabled","utc-time","global-settings","onSave"])])})),128))]),Object(l["createElementVNode"])("div",w,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[9]||(t[9]=function(t){return e.searchTerm=t}),onAdd:t[10]||(t[10]=function(t){return e.addNewEntity()}),onSearch:t[11]||(t[11]=function(t){return e.searchSites(t)}),onPrev:t[12]||(t[12]=function(t){return e.previousPage()}),onNext:t[13]||(t[13]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])])],512)}var _={class:"sitesButtonBar clearfix"},C={class:"search"},G=["value","placeholder","disabled"],P=["title"],D={class:"paging"},k=["disabled"],U={style:{cursor:"pointer"}},L={class:"counter"},z=["disabled"],I={style:{cursor:"pointer"},class:"pointer"};function B(e,t,n,a,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",_,[Object(l["withDirectives"])(Object(l["createElementVNode"])("a",{class:Object(l["normalizeClass"])(["btn addSite",{disabled:e.siteIsBeingEdited}]),onClick:t[0]||(t[0]=function(t){return e.addNewEntity()}),tabindex:"1"},Object(l["toDisplayString"])(e.availableTypes.length>1?e.translate("SitesManager_AddMeasurable"):e.translate("SitesManager_AddSite")),3),[[l["vShow"],e.hasSuperUserAccess&&e.availableTypes]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",C,[Object(l["createElementVNode"])("input",{value:e.searchTerm,onKeydown:t[1]||(t[1]=function(t){return e.onKeydown(t)}),placeholder:e.translate("Actions_SubmenuSitesearch"),type:"text",disabled:e.siteIsBeingEdited},null,40,G),Object(l["createElementVNode"])("img",{onClick:t[2]||(t[2]=function(t){return e.searchSite()}),title:e.translate("General_ClickToSearch"),class:"search_ico",src:"plugins/Morpheus/images/search_ico.png"},null,8,P)],512),[[l["vShow"],e.hasPrev||e.hasNext||e.isSearching]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",D,[Object(l["createElementVNode"])("a",{class:"btn prev",disabled:!(e.hasPrev&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[3]||(t[3]=function(t){return e.previousPage()})},[Object(l["createElementVNode"])("span",U,"« "+Object(l["toDisplayString"])(e.translate("General_Previous")),1)],8,k),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",L,[Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(e.paginationText),1)],512),[[l["vShow"],e.hasPrev||e.hasNext]]),Object(l["createElementVNode"])("a",{class:"btn next",disabled:!(e.hasNext&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[4]||(t[4]=function(t){return e.nextPage()})},[Object(l["createElementVNode"])("span",I,Object(l["toDisplayString"])(e.translate("General_Next"))+" »",1)],8,z)],512),[[l["vShow"],e.hasPrev||e.hasNext]])])}var H=Object(l["defineComponent"])({props:{siteIsBeingEdited:{type:Boolean,required:!0},hasPrev:{type:Boolean,required:!0},hasNext:{type:Boolean,required:!0},offsetStart:{type:Number,required:!0},offsetEnd:{type:Number,required:!0},totalNumberOfSites:{type:Number},isLoading:{type:Boolean,required:!0},searchTerm:{type:String,required:!0},isSearching:{type:Boolean,required:!0}},emits:["add","search","prev","next","update:searchTerm"],created:function(){p.init(),this.onKeydown=Object(r["debounce"])(this.onKeydown,50)},computed:{hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},availableTypes:function(){return p.types.value},paginationText:function(){var e;return e=this.isSearching?Object(r["translate"])("General_PaginationWithoutTotal","".concat(this.offsetStart),"".concat(this.offsetEnd)):Object(r["translate"])("General_Pagination","".concat(this.offsetStart),"".concat(this.offsetEnd),null===this.totalNumberOfSites?"?":"".concat(this.totalNumberOfSites))," ".concat(e," ")}},methods:{addNewEntity:function(){this.$emit("add")},searchSite:function(){this.siteIsBeingEdited||this.$emit("search")},previousPage:function(){this.$emit("prev")},nextPage:function(){this.$emit("next")},onKeydown:function(e){var t=this;setTimeout((function(){"Enter"!==e.key?t.$emit("update:searchTerm",e.target.value):t.searchSiteOnEnter(e)}))},searchSiteOnEnter:function(e){e.preventDefault(),this.searchSite()}}});H.render=B;var F=H,R=["idsite","type"],K={class:"card-content"},W={key:0,class:"row"},Q={class:"col m3"},q={class:"title"},$={class:"title"},Y=["target","title","href"],J={class:"col m4"},X={class:"title"},Z={class:"title"},ee={class:"title"},te={class:"title"},ne={class:"col m4"},ae={class:"title"},ie=Object(l["createTextVNode"])(": "),re=["href"],le={key:0},oe={class:"title"},se={key:1},ce={class:"title"},ue={key:2},de={class:"title"},be={class:"col m1 text-right"},me=["title"],pe=Object(l["createElementVNode"])("span",{class:"icon-edit"},null,-1),he=[pe],ge=["title"],fe=Object(l["createElementVNode"])("span",{class:"icon-delete"},null,-1),Se=[fe],je={key:1},Oe={class:"form-group row"},ve={class:"col s12 m6 input-field"},ye=["placeholder"],Ee=Object(l["createElementVNode"])("div",{class:"col s12 m6"},null,-1),Ne={id:"timezoneHelpText",class:"inline-help-node"},Ve={key:0},xe=Object(l["createElementVNode"])("br",null,null,-1),Te=Object(l["createElementVNode"])("br",null,null,-1),Me={class:"editingSiteFooter"},we=["value"],Ae={class:"ui-confirm"},_e=["value"],Ce=["value"];function Ge(e,t,n,a,i,r){var o,s,c,u=this,d=Object(l["resolveComponent"])("ActivityIndicator"),b=Object(l["resolveComponent"])("GroupedSettings"),m=Object(l["resolveComponent"])("Field"),p=Object(l["resolveComponent"])("MatomoDialog");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{class:Object(l["normalizeClass"])(["site card hoverable",{editingSite:!!e.editMode}]),idsite:e.theSite.idsite,type:e.theSite.type,ref:"root"},[Object(l["createElementVNode"])("div",K,[e.editMode?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",W,[Object(l["createElementVNode"])("div",Q,[Object(l["createElementVNode"])("h4",null,Object(l["toDisplayString"])(e.theSite.name),1),Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",q,Object(l["toDisplayString"])(e.translate("General_Id"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.idsite),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",$,Object(l["toDisplayString"])(e.translate("SitesManager_Type"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.currentType.name),1)],512),[[l["vShow"],e.availableTypes.length>1]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("a",{target:e.isInternalSetupUrl?"_self":"_blank",title:e.translate("SitesManager_ShowTrackingTag"),href:e.setupUrl},Object(l["toDisplayString"])(e.translate("SitesManager_ShowTrackingTag")),9,Y)],512),[[l["vShow"],e.theSite.idsite&&e.howToSetupUrl]])])]),Object(l["createElementVNode"])("div",J,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",X,Object(l["toDisplayString"])(e.translate("SitesManager_Timezone"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.timezone_name),1)]),Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",Z,Object(l["toDisplayString"])(e.translate("SitesManager_Currency"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.currency_name),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ee,Object(l["toDisplayString"])(e.translate("Goals_Ecommerce"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.ecommerce||"1"===e.theSite.ecommerce]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",te,Object(l["toDisplayString"])(e.translate("Actions_SubmenuSitesearch"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.sitesearch||"1"===e.theSite.sitesearch]])])]),Object(l["createElementVNode"])("div",ne,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ae,Object(l["toDisplayString"])(e.translate("SitesManager_Urls")),1),ie,(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.theSite.alias_urls,(function(t,n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("span",{key:t},[Object(l["createElementVNode"])("a",{target:"_blank",rel:"noreferrer noopener",href:t},Object(l["toDisplayString"])(t)+Object(l["toDisplayString"])(n===e.theSite.alias_urls.length-1?"":", "),9,re)])})),128))]),null!==(o=e.theSite.excluded_ips)&&void 0!==o&&o.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",le,[Object(l["createElementVNode"])("span",oe,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedIps"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_ips.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(s=e.theSite.excluded_parameters)&&void 0!==s&&s.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",se,[Object(l["createElementVNode"])("span",ce,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedParameters"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_parameters.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(c=e.theSite.excluded_user_agents)&&void 0!==c&&c.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",ue,[Object(l["createElementVNode"])("span",de,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedUserAgents"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_user_agents.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0)])]),Object(l["createElementVNode"])("div",be,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[0]||(t[0]=function(t){return e.editSite()}),title:e.translate("General_Edit")},he,8,me)]),Object(l["createElementVNode"])("li",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[1]||(t[1]=function(e){return u.showRemoveDialog=!0}),title:e.translate("General_Delete")},Se,8,ge),[[l["vShow"],e.theSite.idsite]])])])])])),e.editMode?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",je,[Object(l["createElementVNode"])("div",Oe,[Object(l["createElementVNode"])("div",ve,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.theSite.name=t}),maxlength:"90",placeholder:e.translate("General_Name")},null,8,ye),[[l["vModelText"],e.theSite.name]]),Object(l["createElementVNode"])("label",null,Object(l["toDisplayString"])(e.translate("General_Name")),1)]),Ee]),Object(l["createVNode"])(d,{loading:e.isLoading},null,8,["loading"]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.measurableSettings,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:t.pluginName},[Object(l["createVNode"])(b,{"group-name":t.pluginName,settings:t.settings,"all-setting-values":e.settingValues,onChange:function(n){return e.settingValues["".concat(t.pluginName,".").concat(n.name)]=n.value}},null,8,["group-name","settings","all-setting-values","onChange"])])})),128)),Object(l["createVNode"])(m,{uicontrol:"select",name:"currency",modelValue:e.theSite.currency,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.theSite.currency=t}),title:e.translate("SitesManager_Currency"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),options:e.currencies},null,8,["modelValue","title","inline-help","options"]),Object(l["createVNode"])(m,{uicontrol:"select",name:"timezone",modelValue:e.theSite.timezone,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theSite.timezone=t}),title:e.translate("SitesManager_Timezone"),"inline-help":"#timezoneHelpText",options:e.timezones},null,8,["modelValue","title","options"]),Object(l["createElementVNode"])("div",Ne,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",Ve,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),xe])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.utcTimeIs)+" ",1),Te,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Me,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"submit",class:"btn",value:e.translate("General_Save"),onClick:t[5]||(t[5]=function(t){return e.saveSite()})},null,8,we),[[l["vShow"],!e.isLoading]]),Object(l["createElementVNode"])("button",{class:"btn btn-link",onClick:t[6]||(t[6]=function(t){return e.cancelEditSite(e.site)})},Object(l["toDisplayString"])(e.translate("General_Cancel","","")),1)])])):Object(l["createCommentVNode"])("",!0)]),Object(l["createVNode"])(p,{modelValue:e.showRemoveDialog,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.showRemoveDialog=t}),onYes:t[8]||(t[8]=function(t){return e.deleteSite()})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",Ae,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.removeDialogTitle),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_DeleteSiteExplanation")),1),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_Yes"),role:"yes"},null,8,_e),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_No"),role:"no"},null,8,Ce)])]})),_:1},8,["modelValue"])],10,R)}var Pe=n("a5a2");function De(e,t){return Ie(e)||ze(e,t)||Ue(e,t)||ke()}function ke(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ue(e,t){if(e){if("string"===typeof e)return Le(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Le(e,t):void 0}}function Le(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function ze(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function Ie(e){if(Array.isArray(e))return e}function Be(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function He(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function Fe(e,t,n){return t&&He(e.prototype,t),n&&He(e,n),e}function Re(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var We=function(){function e(){var t=this;Be(this,e),Ke(this,"privateState",Object(l["reactive"])({isLoading:!1,timezones:[],timezoneSupportEnabled:!1})),Ke(this,"state",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState)}))),Ke(this,"timezones",Object(l["computed"])((function(){return t.state.value.timezones}))),Ke(this,"timezoneSupportEnabled",Object(l["computed"])((function(){return t.state.value.timezoneSupportEnabled}))),Ke(this,"isLoading",Object(l["computed"])((function(){return t.state.value.isLoading}))),Ke(this,"initializePromise",null)}return Fe(e,[{key:"init",value:function(){var e=this;return this.initializePromise||(this.privateState.isLoading=!0,this.initializePromise=Promise.all([this.checkTimezoneSupportEnabled(),this.fetchTimezones()]).finally((function(){e.privateState.isLoading=!1}))),this.initializePromise}},{key:"fetchTimezones",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getTimezonesList"}).then((function(t){var n=[];Object.entries(t).forEach((function(e){var t=ke(e,2),a=t[0],i=t[1];Object.entries(i).forEach((function(e){var t=ke(e,2),i=t[0],r=t[1];n.push({group:a,label:i,code:r})}))})),e.privateState.timezones=n}))}},{key:"checkTimezoneSupportEnabled",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.isTimezoneSupportEnabled"}).then((function(t){e.privateState.timezoneSupportEnabled=t.value}))}}]),e}(),Re=new We;function Qe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function qe(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function $e(e,t,n){return t&&qe(e.prototype,t),n&&qe(e,n),e}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */var Ke=function(){function e(){var t=this;Be(this,e),Re(this,"privateState",Object(l["reactive"])({isLoading:!1,timezones:[],timezoneSupportEnabled:!1})),Re(this,"state",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState)}))),Re(this,"timezones",Object(l["computed"])((function(){return t.state.value.timezones}))),Re(this,"timezoneSupportEnabled",Object(l["computed"])((function(){return t.state.value.timezoneSupportEnabled}))),Re(this,"isLoading",Object(l["computed"])((function(){return t.state.value.isLoading}))),Re(this,"initializePromise",null)}return Fe(e,[{key:"init",value:function(){var e=this;return this.initializePromise||(this.privateState.isLoading=!0,this.initializePromise=Promise.all([this.checkTimezoneSupportEnabled(),this.fetchTimezones()]).finally((function(){e.privateState.isLoading=!1}))),this.initializePromise}},{key:"fetchTimezones",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getTimezonesList"}).then((function(t){var n=[];Object.entries(t).forEach((function(e){var t=De(e,2),a=t[0],i=t[1];Object.entries(i).forEach((function(e){var t=De(e,2),i=t[0],r=t[1];n.push({group:a,label:i,code:r})}))})),e.privateState.timezones=n}))}},{key:"checkTimezoneSupportEnabled",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.isTimezoneSupportEnabled"}).then((function(t){e.privateState.timezoneSupportEnabled=t.value}))}}]),e}(),We=new Ke;function Qe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function qe(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function $e(e,t,n){return t&&qe(e.prototype,t),n&&qe(e,n),e}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var Je=function(){function e(){var t=this;Qe(this,e),Ye(this,"privateState",Object(l["reactive"])({isLoading:!1,currencies:{}})),Ye(this,"currencies",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).currencies}))),Ye(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),Ye(this,"initializePromise",null)}return $e(e,[{key:"init",value:function(){return this.initializePromise||(this.initializePromise=this.fetchCurrencies()),this.initializePromise}},{key:"fetchCurrencies",value:function(){var e=this;return this.privateState.isLoading=!0,r["AjaxHelper"].fetch({method:"SitesManager.getCurrencyList"}).then((function(t){e.privateState.currencies=t})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),Xe=new Je;function Ze(e,t){return it(e)||at(e,t)||tt(e,t)||et()}function et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function tt(e,t){if(e){if("string"===typeof e)return nt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nt(e,t):void 0}}function nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function at(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function it(e){if(Array.isArray(e))return e}var rt=Object(l["computed"])((function(){return Re.timezones.value.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))}));function lt(e){return"undefined"===typeof e.idsite}var ot=Object(l["defineComponent"])({props:{site:{type:Object,required:!0},timezoneSupportEnabled:{type:Boolean},utcTime:{type:Date,required:!0},globalSettings:{type:Object,required:!0}},data:function(){return{isLoading:!1,editMode:!1,theSite:Object.assign({},this.site),measurableSettings:[],settingValues:{},showRemoveDialog:!1}},components:{MatomoDialog:r["MatomoDialog"],Field:De["Field"],GroupedSettings:De["GroupedSettings"],ActivityIndicator:r["ActivityIndicator"]},emits:["delete","editSite","cancelEditSite","save"],created:function(){Xe.init(),Re.init(),h.init(),this.onSiteChanged()},watch:{site:function(){this.onSiteChanged()},measurableSettings:function(e){if(e.length){var t={};e.forEach((function(e){e.settings.forEach((function(n){t["".concat(e.pluginName,".").concat(n.name)]=n.value}))})),this.settingValues=t}}},methods:{onSiteChanged:function(){var e=this.site;this.theSite=Object.assign({},e);var t=lt(e);if(t){var n=this.globalSettings;this.theSite.timezone=n.defaultTimezone,this.theSite.currency=n.defaultCurrency}var a=h.getEditSiteIdParameter();(t||a&&"".concat(e.idsite)===a)&&this.editSite()},editSite:function(){var e=this;if(this.editMode=!0,this.$emit("editSite",{idSite:this.theSite.idsite}),this.measurableSettings=[],lt(this.theSite)){if(!this.currentType)return;this.measurableSettings=this.currentType.settings||[]}else this.isLoading=!0,r["AjaxHelper"].fetch({method:"SitesManager.getSiteSettings",idSite:this.theSite.idsite}).then((function(t){e.measurableSettings=t})).finally((function(){e.isLoading=!1}))},saveSite:function(){var e=this,t={siteName:this.theSite.name,timezone:this.theSite.timezone,currency:this.theSite.currency,type:this.theSite.type,settingValues:{}},n=lt(this.theSite),a="SitesManager.addSite";n||(a="SitesManager.updateSite",t.idSite=this.theSite.idsite),Object.entries(this.settingValues).forEach((function(e){var n=Ze(e,2),a=n[0],i=n[1],r=a.split("."),l=Ze(r,2),o=l[0],s=l[1],c=t.settingValues;c[o]||(c[o]=[]);var u=i;!1===i?u="0":!0===i?u="1":Array.isArray(i)&&(u=i.filter((function(e){return!!e}))),c[o].push({name:s,value:u})})),r["AjaxHelper"].post({method:a},t).then((function(a){e.editMode=!1,!e.theSite.idsite&&a&&a.value&&(e.theSite.idsite="".concat(a.value));var i=Re.timezones.value.find((function(t){return t.code===e.theSite.timezone}));e.theSite.timezone_name=(null===i||void 0===i?void 0:i.label)||e.theSite.timezone,e.theSite.currency&&(e.theSite.currency_name=Xe.currencies.value[e.theSite.currency]);var l=r["NotificationsStore"].show({message:n?Object(r["translate"])("SitesManager_WebsiteCreated"):Object(r["translate"])("SitesManager_WebsiteUpdated"),context:"success",id:"websitecreated",type:"transient"});r["NotificationsStore"].scrollToNotification(l),h.removeEditSiteIdParameterFromHash(),e.$emit("save",{site:e.theSite,settingValues:t.settingValues,isNew:n})}))},cancelEditSite:function(e){this.editMode=!1,h.removeEditSiteIdParameterFromHash(),this.$emit("cancelEditSite",{site:e,element:this.$refs.root})},deleteSite:function(){var e=this;r["AjaxHelper"].fetch({idSite:this.theSite.idsite,module:"API",format:"json",method:"SitesManager.deleteSite"}).then((function(){e.$emit("delete",e.theSite)}))}},computed:{availableTypes:function(){return h.types.value},setupUrl:function(){var e=this.theSite,t="",n="";return this.isInternalSetupUrl&&(t=r["MatomoUrl"].stringify({idSite:e.idsite,period:r["MatomoUrl"].parsed.value.period,date:r["MatomoUrl"].parsed.value.date,updated:"false"}),n=-1===this.howToSetupUrl.indexOf("?")?"?":"&"),"".concat(this.howToSetupUrl).concat(n).concat(t)},utcTimeIs:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds()),l="".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i);return Object(r["translate"])("SitesManager_UTCTimeIs",l)},timezones:function(){return rt.value},currencies:function(){return Xe.currencies.value},currentType:function(){var e=this.site,t=h.typesById.value[e.type];return t||{name:e.type}},howToSetupUrl:function(){var e=this.currentType;if(e)return e.howToSetupUrl},isInternalSetupUrl:function(){var e=this.howToSetupUrl;return!!e&&"?"==="".concat(e).substring(0,1)},removeDialogTitle:function(){return Object(r["translate"])("SitesManager_DeleteConfirm",'"'.concat(this.theSite.name,'" (idSite = ').concat(this.theSite.idsite,")"))}}});ot.render=Pe;var st=ot;function ct(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ut(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function dt(e,t,n){return t&&ut(e.prototype,t),n&&ut(e,n),e}function bt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */var Je=function(){function e(){var t=this;Qe(this,e),Ye(this,"privateState",Object(l["reactive"])({isLoading:!1,currencies:{}})),Ye(this,"currencies",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).currencies}))),Ye(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),Ye(this,"initializePromise",null)}return $e(e,[{key:"init",value:function(){return this.initializePromise||(this.initializePromise=this.fetchCurrencies()),this.initializePromise}},{key:"fetchCurrencies",value:function(){var e=this;return this.privateState.isLoading=!0,r["AjaxHelper"].fetch({method:"SitesManager.getCurrencyList"}).then((function(t){e.privateState.currencies=t})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),Xe=new Je;function Ze(e,t){return it(e)||at(e,t)||tt(e,t)||et()}function et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function tt(e,t){if(e){if("string"===typeof e)return nt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nt(e,t):void 0}}function nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function at(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function it(e){if(Array.isArray(e))return e}var rt=Object(l["computed"])((function(){return We.timezones.value.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))}));function lt(e){return"undefined"===typeof e.idsite}var ot=Object(l["defineComponent"])({props:{site:{type:Object,required:!0},timezoneSupportEnabled:{type:Boolean},utcTime:{type:Date,required:!0},globalSettings:{type:Object,required:!0}},data:function(){return{isLoading:!1,editMode:!1,theSite:Object.assign({},this.site),measurableSettings:[],settingValues:{},showRemoveDialog:!1}},components:{MatomoDialog:r["MatomoDialog"],Field:Pe["Field"],GroupedSettings:Pe["GroupedSettings"],ActivityIndicator:r["ActivityIndicator"]},emits:["delete","editSite","cancelEditSite","save"],created:function(){Xe.init(),We.init(),p.init(),this.onSiteChanged()},watch:{site:function(){this.onSiteChanged()},measurableSettings:function(e){if(e.length){var t={};e.forEach((function(e){e.settings.forEach((function(n){t["".concat(e.pluginName,".").concat(n.name)]=n.value}))})),this.settingValues=t}}},methods:{onSiteChanged:function(){var e=this.site;this.theSite=Object.assign({},e);var t=lt(e);if(t){var n=this.globalSettings;this.theSite.timezone=n.defaultTimezone,this.theSite.currency=n.defaultCurrency}var a=p.getEditSiteIdParameter();(t||a&&"".concat(e.idsite)===a)&&this.editSite()},editSite:function(){var e=this;if(this.editMode=!0,this.$emit("editSite",{idSite:this.theSite.idsite}),this.measurableSettings=[],lt(this.theSite)){if(!this.currentType)return;this.measurableSettings=this.currentType.settings||[]}else this.isLoading=!0,r["AjaxHelper"].fetch({method:"SitesManager.getSiteSettings",idSite:this.theSite.idsite}).then((function(t){e.measurableSettings=t})).finally((function(){e.isLoading=!1}))},saveSite:function(){var e=this,t={siteName:this.theSite.name,timezone:this.theSite.timezone,currency:this.theSite.currency,type:this.theSite.type,settingValues:{}},n=lt(this.theSite),a="SitesManager.addSite";n||(a="SitesManager.updateSite",t.idSite=this.theSite.idsite),Object.entries(this.settingValues).forEach((function(e){var n=Ze(e,2),a=n[0],i=n[1],r=a.split("."),l=Ze(r,2),o=l[0],s=l[1],c=t.settingValues;c[o]||(c[o]=[]);var u=i;!1===i?u="0":!0===i?u="1":Array.isArray(i)&&(u=i.filter((function(e){return!!e}))),c[o].push({name:s,value:u})})),r["AjaxHelper"].post({method:a},t).then((function(a){e.editMode=!1,!e.theSite.idsite&&a&&a.value&&(e.theSite.idsite="".concat(a.value));var i=We.timezones.value.find((function(t){return t.code===e.theSite.timezone}));e.theSite.timezone_name=(null===i||void 0===i?void 0:i.label)||e.theSite.timezone,e.theSite.currency&&(e.theSite.currency_name=Xe.currencies.value[e.theSite.currency]);var l=r["NotificationsStore"].show({message:n?Object(r["translate"])("SitesManager_WebsiteCreated"):Object(r["translate"])("SitesManager_WebsiteUpdated"),context:"success",id:"websitecreated",type:"transient"});r["NotificationsStore"].scrollToNotification(l),p.removeEditSiteIdParameterFromHash(),e.$emit("save",{site:e.theSite,settingValues:t.settingValues,isNew:n})}))},cancelEditSite:function(e){this.editMode=!1,p.removeEditSiteIdParameterFromHash(),this.$emit("cancelEditSite",{site:e,element:this.$refs.root})},deleteSite:function(){var e=this;r["AjaxHelper"].fetch({idSite:this.theSite.idsite,module:"API",format:"json",method:"SitesManager.deleteSite"}).then((function(){e.$emit("delete",e.theSite)}))}},computed:{availableTypes:function(){return p.types.value},setupUrl:function(){var e=this.theSite,t="",n="";return this.isInternalSetupUrl&&(t=r["MatomoUrl"].stringify({idSite:e.idsite,period:r["MatomoUrl"].parsed.value.period,date:r["MatomoUrl"].parsed.value.date,updated:"false"}),n=-1===this.howToSetupUrl.indexOf("?")?"?":"&"),"".concat(this.howToSetupUrl).concat(n).concat(t)},utcTimeIs:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds()),l="".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i);return Object(r["translate"])("SitesManager_UTCTimeIs",l)},timezones:function(){return rt.value},currencies:function(){return Xe.currencies.value},currentType:function(){var e=this.site,t=p.typesById.value[e.type];return t||{name:e.type}},howToSetupUrl:function(){var e=this.currentType;if(e)return e.howToSetupUrl},isInternalSetupUrl:function(){var e=this.howToSetupUrl;return!!e&&"?"==="".concat(e).substring(0,1)},removeDialogTitle:function(){return Object(r["translate"])("SitesManager_DeleteConfirm",'"'.concat(this.theSite.name,'" (idSite = ').concat(this.theSite.idsite,")"))}}});ot.render=Ge;var st=ot;function ct(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ut(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function dt(e,t,n){return t&&ut(e.prototype,t),n&&ut(e,n),e}function bt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var mt=function(){function e(){var t=this;ct(this,e),bt(this,"privateState",Object(l["reactive"])({isLoading:!1,globalSettings:{keepURLFragmentsGlobal:!1,defaultCurrency:"",defaultTimezone:"",excludedIpsGlobal:"",excludedQueryParametersGlobal:"",excludedUserAgentsGlobal:"",searchKeywordParametersGlobal:"",searchCategoryParametersGlobal:""}})),bt(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),bt(this,"globalSettings",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).globalSettings})))}return dt(e,[{key:"init",value:function(){return this.fetchGlobalSettings()}},{key:"saveGlobalSettings",value:function(e){var t=this;return this.privateState.isLoading=!0,r["AjaxHelper"].post({module:"SitesManager",format:"json",action:"setGlobalSettings"},e,{withTokenInUrl:!0}).finally((function(){t.privateState.isLoading=!1}))}},{key:"fetchGlobalSettings",value:function(){var e=this;this.privateState.isLoading=!0,r["AjaxHelper"].fetch({module:"SitesManager",action:"getGlobalSettings"}).then((function(t){e.privateState.globalSettings=Object.assign(Object.assign({},t),{},{excludedIpsGlobal:t.excludedIpsGlobal||"",excludedQueryParametersGlobal:t.excludedQueryParametersGlobal||"",excludedUserAgentsGlobal:t.excludedUserAgentsGlobal||"",searchKeywordParametersGlobal:t.searchKeywordParametersGlobal||"",searchCategoryParametersGlobal:t.searchCategoryParametersGlobal||""})})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),ht=new mt,pt=Object(l["defineComponent"])({props:{dummy:String},components:{MatomoDialog:r["MatomoDialog"],ButtonBar:F,SiteFields:st,EnrichedHeadline:r["EnrichedHeadline"]},directives:{ContentIntro:r["ContentIntro"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds());return{pageSize:10,currentPage:0,showAddSiteDialog:!1,searchTerm:"",activeSearchTerm:"",fetchedSites:[],isLoadingInitialEntities:!1,utcTime:t,totalNumberOfSites:null,isSiteBeingEdited:!1,fetchLimitedSitesAbortController:null}},created:function(){var e=this;Re.init(),h.init(),ht.init(),this.isLoadingInitialEntities=!0,Promise.all([h.fetchAvailableTypes(),this.fetchLimitedSitesWithAdminAccess(),this.getTotalNumberOfSites()]).then((function(){e.triggerAddSiteIfRequested()})).finally((function(){e.isLoadingInitialEntities=!1})),Object(l["watch"])((function(){return r["MatomoUrl"].hashQuery.value}),(function(){e.checkGlobalSettingsHash()}))},computed:{sites:function(){var e=this.fetchedSites.filter((function(e){return!e.idsite})).length;return this.fetchedSites.slice(0,this.pageSize+e)},isLoading:function(){return!!this.fetchLimitedSitesAbortController||this.isLoadingInitialEntities||null===this.totalNumberOfSites||h.isLoading.value||Re.isLoading.value||ht.isLoading.value},availableTypes:function(){return h.types.value},timezoneSupportEnabled:function(){return Re.timezoneSupportEnabled.value},globalSettings:function(){return ht.globalSettings.value},headlineText:function(){return Object(r["translate"])("SitesManager_XManagement",this.availableTypes.length>1?Object(r["translate"])("General_Measurables"):Object(r["translate"])("SitesManager_Sites"))},mainDescription:function(){return Object(r["translate"])("SitesManager_YouCurrentlyHaveAccessToNWebsites","<strong>".concat(this.totalNumberOfSites,"</strong>"))},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},superUserAccessMessage:function(){return Object(r["translate"])("SitesManager_SuperUserAccessCan","<a href='#globalSettings'>","</a>")},hasPrev:function(){return this.currentPage>=1},hasNext:function(){return this.fetchedSites.filter((function(e){return!!e.idsite})).length>=this.pageSize+1},offsetStart:function(){return this.currentPage*this.pageSize+1},offsetEnd:function(){return this.offsetStart+this.sites.filter((function(e){return!!e.idsite})).length-1}},methods:{checkGlobalSettingsHash:function(){var e=r["MatomoUrl"].hashQuery.value;!r["Matomo"].hasSuperUserAccess||"globalSettings"!==e&&"/globalSettings"!==e||r["MatomoUrl"].updateLocation(Object.assign(Object.assign({},r["MatomoUrl"].urlParsed.value),{},{action:"globalSettings"}))},addNewEntity:function(){this.availableTypes.length>1?this.showAddSiteDialog=!0:1===this.availableTypes.length&&this.addSite(this.availableTypes[0].id)},addSite:function(e){var t=e,n={isAllowed:!0,measurableType:t};r["Matomo"].postEvent("SitesManager.initAddSite",n),n&&!n.isAllowed||(t||(t="website"),this.fetchedSites.unshift({type:t}),this.isSiteBeingEdited=!0)},afterCancelEdit:function(e){var t=e.site,n=e.element;this.isSiteBeingEdited=!1,t.idsite?n.scrollIntoView():this.fetchedSites=this.fetchedSites.filter((function(e){return!!e.idsite}))},fetchLimitedSitesWithAdminAccess:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.fetchLimitedSitesAbortController&&this.fetchLimitedSitesAbortController.abort(),this.fetchLimitedSitesAbortController=new AbortController;var n=this.pageSize+1,a=this.currentPage*this.pageSize,i={method:"SitesManager.getSitesWithAdminAccess",fetchAliasUrls:1,limit:n+a,filter_offset:a,filter_limit:n};return t&&(i.pattern=t),r["AjaxHelper"].fetch(i).then((function(t){e.fetchedSites=t||[]})).then((function(n){return e.activeSearchTerm=t,n})).finally((function(){e.fetchLimitedSitesAbortController=null}))},getTotalNumberOfSites:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getSitesIdWithAdminAccess",filter_limit:"-1"}).then((function(t){e.totalNumberOfSites=t.length}))},triggerAddSiteIfRequested:function(){var e=h.getEditSiteIdParameter(),t=r["MatomoUrl"].urlParsed.value.showaddsite;"1"===t?this.addNewEntity():e&&(this.searchTerm=e,this.fetchLimitedSitesWithAdminAccess(this.searchTerm))},previousPage:function(){this.currentPage=Math.max(0,this.currentPage-1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},nextPage:function(){this.currentPage=Math.max(0,this.currentPage+1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},searchSites:function(){this.currentPage=0,this.fetchLimitedSitesWithAdminAccess(this.searchTerm)},afterDelete:function(e){var t={showaddsite:0};if(r["MatomoUrl"].urlParsed.value.idSite==="".concat(e.idsite)){var n=this.sites.find((function(t){return t.idsite!==e.idsite}));n&&(t=Object.assign(Object.assign({},t),{},{idSite:n.idsite}))}r["Matomo"].helper.redirect(t)},afterSave:function(e,t,n,a){var i=["excluded_ips","excluded_parameters","excluded_user_agents","sitesearch_keyword_parameters","sitesearch_category_parameters"],r=Object.assign({},e);Object.values(t).forEach((function(e){e.forEach((function(e){"urls"===e.name?r.alias_urls=e.value:-1!==i.indexOf(e.name)?r[e.name]=e.value.join(", "):r[e.name]=e.value}))})),this.fetchedSites[n]=r,a&&null!==this.totalNumberOfSites&&(this.totalNumberOfSites+=1),this.isSiteBeingEdited=!1}}});pt.render=A;var gt=pt;
+ */var mt=function(){function e(){var t=this;ct(this,e),bt(this,"privateState",Object(l["reactive"])({isLoading:!1,globalSettings:{keepURLFragmentsGlobal:!1,defaultCurrency:"",defaultTimezone:"",excludedIpsGlobal:"",excludedQueryParametersGlobal:"",excludedUserAgentsGlobal:"",excludedReferrersGlobal:"",searchKeywordParametersGlobal:"",searchCategoryParametersGlobal:""}})),bt(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),bt(this,"globalSettings",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).globalSettings})))}return dt(e,[{key:"init",value:function(){return this.fetchGlobalSettings()}},{key:"saveGlobalSettings",value:function(e){var t=this;return this.privateState.isLoading=!0,r["AjaxHelper"].post({module:"SitesManager",format:"json",action:"setGlobalSettings"},e,{withTokenInUrl:!0}).finally((function(){t.privateState.isLoading=!1}))}},{key:"fetchGlobalSettings",value:function(){var e=this;this.privateState.isLoading=!0,r["AjaxHelper"].fetch({module:"SitesManager",action:"getGlobalSettings"}).then((function(t){e.privateState.globalSettings=Object.assign(Object.assign({},t),{},{excludedIpsGlobal:t.excludedIpsGlobal||"",excludedQueryParametersGlobal:t.excludedQueryParametersGlobal||"",excludedUserAgentsGlobal:t.excludedUserAgentsGlobal||"",excludedReferrersGlobal:t.excludedReferrersGlobal||"",searchKeywordParametersGlobal:t.searchKeywordParametersGlobal||"",searchCategoryParametersGlobal:t.searchCategoryParametersGlobal||""})})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),pt=new mt,ht=Object(l["defineComponent"])({props:{dummy:String},components:{MatomoDialog:r["MatomoDialog"],ButtonBar:F,SiteFields:st,EnrichedHeadline:r["EnrichedHeadline"]},directives:{ContentIntro:r["ContentIntro"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds());return{pageSize:10,currentPage:0,showAddSiteDialog:!1,searchTerm:"",activeSearchTerm:"",fetchedSites:[],isLoadingInitialEntities:!1,utcTime:t,totalNumberOfSites:null,isSiteBeingEdited:!1,fetchLimitedSitesAbortController:null}},created:function(){var e=this;We.init(),p.init(),pt.init(),this.isLoadingInitialEntities=!0,Promise.all([p.fetchAvailableTypes(),this.fetchLimitedSitesWithAdminAccess(),this.getTotalNumberOfSites()]).then((function(){e.triggerAddSiteIfRequested()})).finally((function(){e.isLoadingInitialEntities=!1})),Object(l["watch"])((function(){return r["MatomoUrl"].hashQuery.value}),(function(){e.checkGlobalSettingsHash()}))},computed:{sites:function(){var e=this.fetchedSites.filter((function(e){return!e.idsite})).length;return this.fetchedSites.slice(0,this.pageSize+e)},isLoading:function(){return!!this.fetchLimitedSitesAbortController||this.isLoadingInitialEntities||null===this.totalNumberOfSites||p.isLoading.value||We.isLoading.value||pt.isLoading.value},availableTypes:function(){return p.types.value},timezoneSupportEnabled:function(){return We.timezoneSupportEnabled.value},globalSettings:function(){return pt.globalSettings.value},headlineText:function(){return Object(r["translate"])("SitesManager_XManagement",this.availableTypes.length>1?Object(r["translate"])("General_Measurables"):Object(r["translate"])("SitesManager_Sites"))},mainDescription:function(){return Object(r["translate"])("SitesManager_YouCurrentlyHaveAccessToNWebsites","<strong>".concat(this.totalNumberOfSites,"</strong>"))},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},superUserAccessMessage:function(){return Object(r["translate"])("SitesManager_SuperUserAccessCan","<a href='#globalSettings'>","</a>")},hasPrev:function(){return this.currentPage>=1},hasNext:function(){return this.fetchedSites.filter((function(e){return!!e.idsite})).length>=this.pageSize+1},offsetStart:function(){return this.currentPage*this.pageSize+1},offsetEnd:function(){return this.offsetStart+this.sites.filter((function(e){return!!e.idsite})).length-1}},methods:{checkGlobalSettingsHash:function(){var e=r["MatomoUrl"].hashQuery.value;!r["Matomo"].hasSuperUserAccess||"globalSettings"!==e&&"/globalSettings"!==e||r["MatomoUrl"].updateLocation(Object.assign(Object.assign({},r["MatomoUrl"].urlParsed.value),{},{action:"globalSettings"}))},addNewEntity:function(){this.availableTypes.length>1?this.showAddSiteDialog=!0:1===this.availableTypes.length&&this.addSite(this.availableTypes[0].id)},addSite:function(e){var t=e,n={isAllowed:!0,measurableType:t};r["Matomo"].postEvent("SitesManager.initAddSite",n),n&&!n.isAllowed||(t||(t="website"),this.fetchedSites.unshift({type:t}),this.isSiteBeingEdited=!0)},afterCancelEdit:function(e){var t=e.site,n=e.element;this.isSiteBeingEdited=!1,t.idsite?n.scrollIntoView():this.fetchedSites=this.fetchedSites.filter((function(e){return!!e.idsite}))},fetchLimitedSitesWithAdminAccess:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.fetchLimitedSitesAbortController&&this.fetchLimitedSitesAbortController.abort(),this.fetchLimitedSitesAbortController=new AbortController;var n=this.pageSize+1,a=this.currentPage*this.pageSize,i={method:"SitesManager.getSitesWithAdminAccess",fetchAliasUrls:1,limit:n+a,filter_offset:a,filter_limit:n};return t&&(i.pattern=t),r["AjaxHelper"].fetch(i).then((function(t){e.fetchedSites=t||[]})).then((function(n){return e.activeSearchTerm=t,n})).finally((function(){e.fetchLimitedSitesAbortController=null}))},getTotalNumberOfSites:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getSitesIdWithAdminAccess",filter_limit:"-1"}).then((function(t){e.totalNumberOfSites=t.length}))},triggerAddSiteIfRequested:function(){var e=p.getEditSiteIdParameter(),t=r["MatomoUrl"].urlParsed.value.showaddsite;"1"===t?this.addNewEntity():e&&(this.searchTerm=e,this.fetchLimitedSitesWithAdminAccess(this.searchTerm))},previousPage:function(){this.currentPage=Math.max(0,this.currentPage-1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},nextPage:function(){this.currentPage=Math.max(0,this.currentPage+1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},searchSites:function(){this.currentPage=0,this.fetchLimitedSitesWithAdminAccess(this.searchTerm)},afterDelete:function(e){var t={showaddsite:0};if(r["MatomoUrl"].urlParsed.value.idSite==="".concat(e.idsite)){var n=this.sites.find((function(t){return t.idsite!==e.idsite}));n&&(t=Object.assign(Object.assign({},t),{},{idSite:n.idsite}))}r["Matomo"].helper.redirect(t)},afterSave:function(e,t,n,a){var i=["excluded_ips","excluded_parameters","excluded_user_agents","sitesearch_keyword_parameters","sitesearch_category_parameters"],r=Object.assign({},e);Object.values(t).forEach((function(e){e.forEach((function(e){"urls"===e.name?r.alias_urls=e.value:-1!==i.indexOf(e.name)?r[e.name]=e.value.join(", "):r[e.name]=e.value}))})),this.fetchedSites[n]=r,a&&null!==this.totalNumberOfSites&&(this.totalNumberOfSites+=1),this.isSiteBeingEdited=!1}}});ht.render=A;var gt=ht;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */Object(r["createAngularJsAdapter"])({component:gt,scope:{},directiveName:"matomoSitesManagement"});window.angular.module("piwikApp").factory("sitesManagerAPI",(function(){return{}}));var ft={class:"SitesManager"},St=Object(l["createElementVNode"])("a",{name:"globalSettings",id:"globalSettings"},null,-1),vt={id:"excludedIpsGlobalHelp",class:"inline-help-node"},jt=Object(l["createElementVNode"])("br",null,null,-1),Ot=Object(l["createElementVNode"])("br",null,null,-1),yt=["innerHTML"],Et={id:"excludedQueryParametersGlobalHelp",class:"inline-help-node"},Nt=Object(l["createElementVNode"])("br",null,null,-1),Vt=Object(l["createElementVNode"])("br",null,null,-1),Tt={id:"excludedUserAgentsGlobalHelp",class:"inline-help-node"},xt=Object(l["createElementVNode"])("br",null,null,-1),Mt=Object(l["createElementVNode"])("br",null,null,-1),wt={id:"timezoneHelp",class:"inline-help-node"},At={key:0},Ct=Object(l["createElementVNode"])("br",null,null,-1),_t=Object(l["createElementVNode"])("br",null,null,-1),Pt={id:"keepURLFragmentsHelp",class:"inline-help-node"},Dt=["innerHTML"],kt={class:"alert alert-info"};function Gt(e,t,n,a,i,r){var o=Object(l["resolveComponent"])("Field"),s=Object(l["resolveComponent"])("SaveButton"),c=Object(l["resolveComponent"])("ContentBlock");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ft,[Object(l["withDirectives"])(Object(l["createVNode"])(c,{"content-title":e.translate("SitesManager_GlobalWebsitesSettings")},{default:Object(l["withCtx"])((function(){return[St,Object(l["createElementVNode"])("div",vt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_HelpExcludedIpAddresses","1.2.3.4/24","1.2.3.*","1.2.*.*"))+" ",1),jt,Ot,Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.yourCurrentIpAddressIs)},null,8,yt)])]),Object(l["createElementVNode"])("div",Et,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_ListOfQueryParametersToExclude","/^sess.*|.*[dD]ate$/"))+" ",1),Nt,Vt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters","phpsessid, sessionid, ...")),1)])]),Object(l["createElementVNode"])("div",Tt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp1"))+" ",1),xt,Mt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp2"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp3","/bot|spider|crawl|scanner/i")),1)])]),Object(l["createElementVNode"])("div",wt,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",At,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Ct])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_UTCTimeIs",e.utcTimeDate))+" ",1),_t,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Pt,[Object(l["createElementVNode"])("div",{innerHTML:e.$sanitize(e.keepUrlFragmentHelp)},null,8,Dt),Object(l["createElementVNode"])("div",null,Object(l["toDisplayString"])(e.translate("SitesManager_KeepURLFragmentsHelp2")),1)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedIpsGlobal","var-type":"array",modelValue:e.excludedIpsGlobal,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.excludedIpsGlobal=t}),title:e.translate("SitesManager_ListOfIpsToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedIps"),"inline-help":"#excludedIpsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedQueryParametersGlobal","var-type":"array",modelValue:e.excludedQueryParametersGlobal,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.excludedQueryParametersGlobal=t}),title:e.translate("SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedQueryParameters"),"inline-help":"#excludedQueryParametersGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedUserAgentsGlobal","var-type":"array",modelValue:e.excludedUserAgentsGlobal,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.excludedUserAgentsGlobal=t}),title:e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"),introduction:e.translate("SitesManager_GlobalListExcludedUserAgents"),"inline-help":"#excludedUserAgentsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"checkbox",name:"keepURLFragmentsGlobal",modelValue:e.keepURLFragmentsGlobal,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.keepURLFragmentsGlobal=t}),title:e.translate("SitesManager_KeepURLFragmentsLong"),introduction:e.translate("SitesManager_KeepURLFragments"),"inline-help":"#keepURLFragmentsHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("h3",null,Object(l["toDisplayString"])(e.translate("SitesManager_TrackingSiteSearch")),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_SiteSearchUse")),1),Object(l["createElementVNode"])("div",kt,Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote2")),1),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchKeywordParametersGlobal","var-type":"array",modelValue:e.searchKeywordParametersGlobal,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.searchKeywordParametersGlobal=t}),title:e.translate("SitesManager_SearchKeywordLabel"),"inline-help":e.translate("SitesManager_SearchKeywordParametersDesc"),disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchCategoryParametersGlobal","var-type":"array",modelValue:e.searchCategoryParametersGlobal,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.searchCategoryParametersGlobal=t}),title:e.translate("SitesManager_SearchCategoryLabel"),"inline-help":e.searchCategoryParamsInlineHelp,disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultTimezone",options:e.timezoneOptions,title:e.translate("SitesManager_SelectDefaultTimezone"),introduction:e.translate("SitesManager_DefaultTimezoneForNewWebsites"),"inline-help":"#timezoneHelp",disabled:e.isLoading,modelValue:e.defaultTimezone,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.defaultTimezone=t})},null,8,["options","title","introduction","disabled","modelValue"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultCurrency",modelValue:e.defaultCurrency,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.defaultCurrency=t}),options:e.currencies,title:e.translate("SitesManager_SelectDefaultCurrency"),introduction:e.translate("SitesManager_DefaultCurrencyForNewWebsites"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),disabled:e.isLoading},null,8,["modelValue","options","title","introduction","inline-help","disabled"])]),Object(l["createVNode"])(s,{saving:e.isSaving,onConfirm:t[8]||(t[8]=function(t){return e.saveGlobalSettings()})},null,8,["saving"])]})),_:1},8,["content-title"]),[[l["vShow"],e.hasSuperUserAccess]])])}var Ut=Object(l["defineComponent"])({props:{dummy:String},components:{ContentBlock:r["ContentBlock"],Field:De["Field"],SaveButton:De["SaveButton"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()),n=ht.globalSettings.value;return{currentIpAddress:null,utcTime:t,keepURLFragmentsGlobal:n.keepURLFragmentsGlobal,defaultTimezone:n.defaultTimezone,defaultCurrency:n.defaultCurrency,excludedIpsGlobal:(n.excludedIpsGlobal||"").split(","),excludedQueryParametersGlobal:(n.excludedQueryParametersGlobal||"").split(","),excludedUserAgentsGlobal:(n.excludedUserAgentsGlobal||"").split(","),searchKeywordParametersGlobal:(n.searchKeywordParametersGlobal||"").split(","),searchCategoryParametersGlobal:(n.searchCategoryParametersGlobal||"").split(","),isSaving:!1}},created:function(){var e=this;Xe.init(),Re.init(),ht.init(),Object(l["watch"])((function(){return ht.globalSettings.value}),(function(t){e.keepURLFragmentsGlobal=t.keepURLFragmentsGlobal,e.defaultTimezone=t.defaultTimezone,e.defaultCurrency=t.defaultCurrency,e.excludedIpsGlobal=(t.excludedIpsGlobal||"").split(","),e.excludedQueryParametersGlobal=(t.excludedQueryParametersGlobal||"").split(","),e.excludedUserAgentsGlobal=(t.excludedUserAgentsGlobal||"").split(","),e.searchKeywordParametersGlobal=(t.searchKeywordParametersGlobal||"").split(","),e.searchCategoryParametersGlobal=(t.searchCategoryParametersGlobal||"").split(",")})),r["AjaxHelper"].fetch({method:"API.getIpFromHeader"}).then((function(t){e.currentIpAddress=t.value}))},methods:{saveGlobalSettings:function(){var e=this;this.isSaving=!0,ht.saveGlobalSettings({keepURLFragments:this.keepURLFragmentsGlobal,currency:this.defaultCurrency,timezone:this.defaultTimezone,excludedIps:this.excludedIpsGlobal.join(","),excludedQueryParameters:this.excludedQueryParametersGlobal.join(","),excludedUserAgents:this.excludedUserAgentsGlobal.join(","),searchKeywordParameters:this.searchKeywordParametersGlobal.join(","),searchCategoryParameters:this.searchCategoryParametersGlobal.join(",")}).then((function(){r["Matomo"].helper.redirect({showaddsite:!1})})).finally((function(){e.isSaving=!1}))}},computed:{isLoading:function(){return ht.isLoading.value||Re.isLoading.value||Xe.isLoading.value},timezones:function(){return Re.timezones.value},timezoneOptions:function(){return this.timezones.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))},currencies:function(){return Xe.currencies.value},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},yourCurrentIpAddressIs:function(){return Object(r["translate"])("SitesManager_YourCurrentIpAddressIs","<i>".concat(this.currentIpAddress,"</i>"))},timezoneSupportEnabled:function(){return Re.timezoneSupportEnabled.value},utcTimeDate:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds());return"".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i)},keepUrlFragmentHelp:function(){return Object(r["translate"])("SitesManager_KeepURLFragmentsHelp","<em>#</em>","<em>example.org/index.html#first_section</em>","<em>example.org/index.html</em>")},searchCategoryParamsInlineHelp:function(){var e=[Object(r["translate"])("Goals_Optional"),Object(r["translate"])("SitesManager_SearchCategoryDesc"),Object(r["translate"])("SitesManager_SearchCategoryParametersDesc")];return e.join(" ")}}});Ut.render=Gt;var Lt=Ut;
+ */Object(r["createAngularJsAdapter"])({component:gt,scope:{},directiveName:"matomoSitesManagement"});window.angular.module("piwikApp").factory("sitesManagerAPI",(function(){return{}}));var ft={class:"SitesManager"},St=Object(l["createElementVNode"])("a",{name:"globalSettings",id:"globalSettings"},null,-1),jt={id:"excludedIpsGlobalHelp",class:"inline-help-node"},Ot=Object(l["createElementVNode"])("br",null,null,-1),vt=Object(l["createElementVNode"])("br",null,null,-1),yt=["innerHTML"],Et={id:"excludedQueryParametersGlobalHelp",class:"inline-help-node"},Nt=Object(l["createElementVNode"])("br",null,null,-1),Vt=Object(l["createElementVNode"])("br",null,null,-1),xt={id:"excludedUserAgentsGlobalHelp",class:"inline-help-node"},Tt=Object(l["createElementVNode"])("br",null,null,-1),Mt=Object(l["createElementVNode"])("br",null,null,-1),wt={id:"excludedReferrersGlobalHelp",class:"inline-help-node"},At=Object(l["createElementVNode"])("br",null,null,-1),_t=Object(l["createElementVNode"])("br",null,null,-1),Ct=Object(l["createElementVNode"])("br",null,null,-1),Gt=Object(l["createElementVNode"])("br",null,null,-1),Pt=Object(l["createElementVNode"])("br",null,null,-1),Dt={id:"timezoneHelp",class:"inline-help-node"},kt={key:0},Ut=Object(l["createElementVNode"])("br",null,null,-1),Lt=Object(l["createElementVNode"])("br",null,null,-1),zt={id:"keepURLFragmentsHelp",class:"inline-help-node"},It=["innerHTML"],Bt={class:"alert alert-info"};function Ht(e,t,n,a,i,r){var o=Object(l["resolveComponent"])("Field"),s=Object(l["resolveComponent"])("SaveButton"),c=Object(l["resolveComponent"])("ContentBlock");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ft,[Object(l["withDirectives"])(Object(l["createVNode"])(c,{"content-title":e.translate("SitesManager_GlobalWebsitesSettings")},{default:Object(l["withCtx"])((function(){return[St,Object(l["createElementVNode"])("div",jt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_HelpExcludedIpAddresses","1.2.3.4/24","1.2.3.*","1.2.*.*"))+" ",1),Ot,vt,Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.yourCurrentIpAddressIs)},null,8,yt)])]),Object(l["createElementVNode"])("div",Et,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_ListOfQueryParametersToExclude","/^sess.*|.*[dD]ate$/"))+" ",1),Nt,Vt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters","phpsessid, sessionid, ...")),1)])]),Object(l["createElementVNode"])("div",xt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp1"))+" ",1),Tt,Mt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp2"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp3","/bot|spider|crawl|scanner/i")),1)])]),Object(l["createElementVNode"])("div",wt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedReferrersHelp"))+" ",1),At,_t,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedReferrersHelpDetails"))+" ",1),Ct,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedReferrersHelpExamples","www.example.org","http://example.org/mypath","https://www.example.org/?param=1","https://sub.example.org/"))+" ",1),Gt,Pt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedReferrersHelpSubDomains",".sub.example.org","http://sub.example.org/mypath","https://new.sub.example.org/")),1)])]),Object(l["createElementVNode"])("div",Dt,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",kt,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Ut])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_UTCTimeIs",e.utcTimeDate))+" ",1),Lt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",zt,[Object(l["createElementVNode"])("div",{innerHTML:e.$sanitize(e.keepUrlFragmentHelp)},null,8,It),Object(l["createElementVNode"])("div",null,Object(l["toDisplayString"])(e.translate("SitesManager_KeepURLFragmentsHelp2")),1)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedIpsGlobal","var-type":"array",modelValue:e.excludedIpsGlobal,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.excludedIpsGlobal=t}),title:e.translate("SitesManager_ListOfIpsToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedIps"),"inline-help":"#excludedIpsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedQueryParametersGlobal","var-type":"array",modelValue:e.excludedQueryParametersGlobal,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.excludedQueryParametersGlobal=t}),title:e.translate("SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedQueryParameters"),"inline-help":"#excludedQueryParametersGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedUserAgentsGlobal","var-type":"array",modelValue:e.excludedUserAgentsGlobal,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.excludedUserAgentsGlobal=t}),title:e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"),introduction:e.translate("SitesManager_GlobalListExcludedUserAgents"),"inline-help":"#excludedUserAgentsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedReferrersGlobal","var-type":"array",modelValue:e.excludedReferrersGlobal,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.excludedReferrersGlobal=t}),title:e.translate("SitesManager_GlobalListExcludedReferrersDesc"),introduction:e.translate("SitesManager_GlobalListExcludedReferrers"),"inline-help":"#excludedReferrersGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"checkbox",name:"keepURLFragmentsGlobal",modelValue:e.keepURLFragmentsGlobal,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.keepURLFragmentsGlobal=t}),title:e.translate("SitesManager_KeepURLFragmentsLong"),introduction:e.translate("SitesManager_KeepURLFragments"),"inline-help":"#keepURLFragmentsHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("h3",null,Object(l["toDisplayString"])(e.translate("SitesManager_TrackingSiteSearch")),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_SiteSearchUse")),1),Object(l["createElementVNode"])("div",Bt,Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote2")),1),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchKeywordParametersGlobal","var-type":"array",modelValue:e.searchKeywordParametersGlobal,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.searchKeywordParametersGlobal=t}),title:e.translate("SitesManager_SearchKeywordLabel"),"inline-help":e.translate("SitesManager_SearchKeywordParametersDesc"),disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchCategoryParametersGlobal","var-type":"array",modelValue:e.searchCategoryParametersGlobal,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.searchCategoryParametersGlobal=t}),title:e.translate("SitesManager_SearchCategoryLabel"),"inline-help":e.searchCategoryParamsInlineHelp,disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultTimezone",options:e.timezoneOptions,title:e.translate("SitesManager_SelectDefaultTimezone"),introduction:e.translate("SitesManager_DefaultTimezoneForNewWebsites"),"inline-help":"#timezoneHelp",disabled:e.isLoading,modelValue:e.defaultTimezone,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.defaultTimezone=t})},null,8,["options","title","introduction","disabled","modelValue"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultCurrency",modelValue:e.defaultCurrency,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.defaultCurrency=t}),options:e.currencies,title:e.translate("SitesManager_SelectDefaultCurrency"),introduction:e.translate("SitesManager_DefaultCurrencyForNewWebsites"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),disabled:e.isLoading},null,8,["modelValue","options","title","introduction","inline-help","disabled"])]),Object(l["createVNode"])(s,{saving:e.isSaving,onConfirm:t[9]||(t[9]=function(t){return e.saveGlobalSettings()})},null,8,["saving"])]})),_:1},8,["content-title"]),[[l["vShow"],e.hasSuperUserAccess]])])}var Ft=Object(l["defineComponent"])({props:{dummy:String},components:{ContentBlock:r["ContentBlock"],Field:Pe["Field"],SaveButton:Pe["SaveButton"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()),n=pt.globalSettings.value;return{currentIpAddress:null,utcTime:t,keepURLFragmentsGlobal:n.keepURLFragmentsGlobal,defaultTimezone:n.defaultTimezone,defaultCurrency:n.defaultCurrency,excludedIpsGlobal:(n.excludedIpsGlobal||"").split(","),excludedQueryParametersGlobal:(n.excludedQueryParametersGlobal||"").split(","),excludedUserAgentsGlobal:(n.excludedUserAgentsGlobal||"").split(","),excludedReferrersGlobal:(n.excludedReferrersGlobal||"").split(","),searchKeywordParametersGlobal:(n.searchKeywordParametersGlobal||"").split(","),searchCategoryParametersGlobal:(n.searchCategoryParametersGlobal||"").split(","),isSaving:!1}},created:function(){var e=this;Xe.init(),We.init(),pt.init(),Object(l["watch"])((function(){return pt.globalSettings.value}),(function(t){e.keepURLFragmentsGlobal=t.keepURLFragmentsGlobal,e.defaultTimezone=t.defaultTimezone,e.defaultCurrency=t.defaultCurrency,e.excludedIpsGlobal=(t.excludedIpsGlobal||"").split(","),e.excludedQueryParametersGlobal=(t.excludedQueryParametersGlobal||"").split(","),e.excludedUserAgentsGlobal=(t.excludedUserAgentsGlobal||"").split(","),e.excludedReferrersGlobal=(t.excludedReferrersGlobal||"").split(","),e.searchKeywordParametersGlobal=(t.searchKeywordParametersGlobal||"").split(","),e.searchCategoryParametersGlobal=(t.searchCategoryParametersGlobal||"").split(",")})),r["AjaxHelper"].fetch({method:"API.getIpFromHeader"}).then((function(t){e.currentIpAddress=t.value}))},methods:{saveGlobalSettings:function(){var e=this;this.isSaving=!0,pt.saveGlobalSettings({keepURLFragments:this.keepURLFragmentsGlobal,currency:this.defaultCurrency,timezone:this.defaultTimezone,excludedIps:this.excludedIpsGlobal.join(","),excludedQueryParameters:this.excludedQueryParametersGlobal.join(","),excludedUserAgents:this.excludedUserAgentsGlobal.join(","),excludedReferrers:this.excludedReferrersGlobal.join(","),searchKeywordParameters:this.searchKeywordParametersGlobal.join(","),searchCategoryParameters:this.searchCategoryParametersGlobal.join(",")}).then((function(){r["Matomo"].helper.redirect({showaddsite:!1})})).finally((function(){e.isSaving=!1}))}},computed:{isLoading:function(){return pt.isLoading.value||We.isLoading.value||Xe.isLoading.value},timezones:function(){return We.timezones.value},timezoneOptions:function(){return this.timezones.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))},currencies:function(){return Xe.currencies.value},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},yourCurrentIpAddressIs:function(){return Object(r["translate"])("SitesManager_YourCurrentIpAddressIs","<i>".concat(this.currentIpAddress,"</i>"))},timezoneSupportEnabled:function(){return We.timezoneSupportEnabled.value},utcTimeDate:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds());return"".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i)},keepUrlFragmentHelp:function(){return Object(r["translate"])("SitesManager_KeepURLFragmentsHelp","<em>#</em>","<em>example.org/index.html#first_section</em>","<em>example.org/index.html</em>")},searchCategoryParamsInlineHelp:function(){var e=[Object(r["translate"])("Goals_Optional"),Object(r["translate"])("SitesManager_SearchCategoryDesc"),Object(r["translate"])("SitesManager_SearchCategoryParametersDesc")];return e.join(" ")}}});Ft.render=Ht;var Rt=Ft;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */Object(r["createAngularJsAdapter"])({component:Lt,scope:{},directiveName:"matomoGlobalSettings"})}})}));
+ */Object(r["createAngularJsAdapter"])({component:Rt,scope:{},directiveName:"matomoGlobalSettings"})}})}));
//# sourceMappingURL=SitesManager.umd.min.js.map \ No newline at end of file
diff --git a/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettings.ts b/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettings.ts
index 12d2edbf1a..e7a72a946d 100644
--- a/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettings.ts
+++ b/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettings.ts
@@ -12,6 +12,7 @@ interface GlobalSettings {
excludedIpsGlobal?: string;
excludedQueryParametersGlobal?: string;
excludedUserAgentsGlobal?: string;
+ excludedReferrersGlobal?: string;
searchKeywordParametersGlobal?: string;
searchCategoryParametersGlobal?: string;
}
diff --git a/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts b/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts
index 13201e74ef..da5af703db 100644
--- a/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts
+++ b/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts
@@ -25,6 +25,7 @@ interface SaveGlobalSettingsParams {
excludedIps: string;
excludedQueryParameters: string;
excludedUserAgents: string;
+ excludedReferrers: string;
searchKeywordParameters: string;
searchCategoryParameters: string;
}
@@ -39,6 +40,7 @@ class GlobalSettingsStore {
excludedIpsGlobal: '',
excludedQueryParametersGlobal: '',
excludedUserAgentsGlobal: '',
+ excludedReferrersGlobal: '',
searchKeywordParametersGlobal: '',
searchCategoryParametersGlobal: '',
},
@@ -82,6 +84,7 @@ class GlobalSettingsStore {
excludedIpsGlobal: response.excludedIpsGlobal || '',
excludedQueryParametersGlobal: response.excludedQueryParametersGlobal || '',
excludedUserAgentsGlobal: response.excludedUserAgentsGlobal || '',
+ excludedReferrersGlobal: response.excludedReferrersGlobal || '',
searchKeywordParametersGlobal: response.searchKeywordParametersGlobal || '',
searchCategoryParametersGlobal: response.searchCategoryParametersGlobal || '',
};
diff --git a/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue b/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue
index bc0dd92187..f2a59cdffe 100644
--- a/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue
+++ b/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue
@@ -55,6 +55,29 @@
</div>
</div>
+ <div id="excludedReferrersGlobalHelp" class="inline-help-node">
+ <div>
+ {{ translate('SitesManager_ExcludedReferrersHelp') }}
+ <br/><br/>
+ {{ translate('SitesManager_ExcludedReferrersHelpDetails') }}
+ <br/>
+ {{ translate(
+ 'SitesManager_ExcludedReferrersHelpExamples',
+ 'www.example.org',
+ 'http://example.org/mypath',
+ 'https://www.example.org/?param=1',
+ 'https://sub.example.org/'
+ ) }}
+ <br/><br/>
+ {{ translate(
+ 'SitesManager_ExcludedReferrersHelpSubDomains',
+ '.sub.example.org',
+ 'http://sub.example.org/mypath',
+ 'https://new.sub.example.org/'
+ ) }}
+ </div>
+ </div>
+
<div id="timezoneHelp" class="inline-help-node">
<div>
<span v-if="!timezoneSupportEnabled">
@@ -114,6 +137,19 @@
<div>
<Field
+ uicontrol="textarea"
+ name="excludedReferrersGlobal"
+ var-type="array"
+ v-model="excludedReferrersGlobal"
+ :title="translate('SitesManager_GlobalListExcludedReferrersDesc')"
+ :introduction="translate('SitesManager_GlobalListExcludedReferrers')"
+ :inline-help="'#excludedReferrersGlobalHelp'"
+ :disabled="isLoading"
+ />
+ </div>
+
+ <div>
+ <Field
uicontrol="checkbox"
name="keepURLFragmentsGlobal"
v-model="keepURLFragmentsGlobal"
@@ -210,6 +246,7 @@ interface GlobalSettingsState {
excludedIpsGlobal: string[];
excludedQueryParametersGlobal: string[];
excludedUserAgentsGlobal: string[];
+ excludedReferrersGlobal: string[];
searchKeywordParametersGlobal: string[];
searchCategoryParametersGlobal: string[];
isSaving: boolean;
@@ -253,6 +290,7 @@ export default defineComponent({
excludedQueryParametersGlobal:
(settings.excludedQueryParametersGlobal || '').split(','),
excludedUserAgentsGlobal: (settings.excludedUserAgentsGlobal || '').split(','),
+ excludedReferrersGlobal: (settings.excludedReferrersGlobal || '').split(','),
searchKeywordParametersGlobal:
(settings.searchKeywordParametersGlobal || '').split(','),
searchCategoryParametersGlobal:
@@ -273,6 +311,7 @@ export default defineComponent({
this.excludedQueryParametersGlobal = (settings.excludedQueryParametersGlobal || '')
.split(',');
this.excludedUserAgentsGlobal = (settings.excludedUserAgentsGlobal || '').split(',');
+ this.excludedReferrersGlobal = (settings.excludedReferrersGlobal || '').split(',');
this.searchKeywordParametersGlobal = (settings.searchKeywordParametersGlobal || '')
.split(',');
this.searchCategoryParametersGlobal = (settings.searchCategoryParametersGlobal || '')
@@ -293,6 +332,7 @@ export default defineComponent({
excludedIps: this.excludedIpsGlobal.join(','),
excludedQueryParameters: this.excludedQueryParametersGlobal.join(','),
excludedUserAgents: this.excludedUserAgentsGlobal.join(','),
+ excludedReferrers: this.excludedReferrersGlobal.join(','),
searchKeywordParameters: this.searchKeywordParametersGlobal.join(','),
searchCategoryParameters: this.searchCategoryParametersGlobal.join(','),
}).then(() => {
diff --git a/plugins/WebsiteMeasurable/MeasurableSettings.php b/plugins/WebsiteMeasurable/MeasurableSettings.php
index 749a32e8a3..ddea90083d 100644
--- a/plugins/WebsiteMeasurable/MeasurableSettings.php
+++ b/plugins/WebsiteMeasurable/MeasurableSettings.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -7,16 +8,19 @@
*/
namespace Piwik\Plugins\WebsiteMeasurable;
+
use Piwik\IP;
use Piwik\Measurable\Type\TypeManager;
use Matomo\Network\IPUtils;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Plugins\WebsiteMeasurable\Settings\Urls;
+use Piwik\Settings\Measurable\MeasurableProperty;
use Piwik\Settings\Setting;
use Piwik\Settings\FieldConfig;
use Piwik\Plugins\SitesManager;
use Exception;
+use Piwik\UrlHelper;
/**
* Defines Settings for ExampleSettingsPlugin.
@@ -62,6 +66,9 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
public $excludedParameters;
/** @var Setting */
+ public $excludedReferrers;
+
+ /** @var Setting */
public $ecommerce;
/**
@@ -84,8 +91,13 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
*/
private $unsetSiteSearchKeywords = false;
- public function __construct(SitesManager\API $api, Plugin\Manager $pluginManager, TypeManager $typeManager, $idSite, $idMeasurableType)
- {
+ public function __construct(
+ SitesManager\API $api,
+ Plugin\Manager $pluginManager,
+ TypeManager $typeManager,
+ $idSite,
+ $idMeasurableType
+ ) {
$this->sitesManagerApi = $api;
$this->pluginManager = $pluginManager;
$this->typeManager = $typeManager;
@@ -119,6 +131,7 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
$this->excludedIps = $this->makeExcludeIps();
$this->excludedParameters = $this->makeExcludedParameters();
$this->excludedUserAgents = $this->makeExcludedUserAgents();
+ $this->excludedReferrers = $this->makeExcludedReferrers($this->sitesManagerApi);
/**
* SiteSearch
@@ -139,7 +152,7 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
$this->ecommerce = $this->makeEcommerce();
}
- private function makeExcludeUnknownUrls()
+ private function makeExcludeUnknownUrls(): MeasurableProperty
{
return $this->makeProperty('exclude_unknown_urls', $default = false, FieldConfig::TYPE_BOOL, function (FieldConfig $field) {
$field->title = Piwik::translate('SitesManager_OnlyMatchedUrlsAllowed');
@@ -150,7 +163,7 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
});
}
- private function makeKeepUrlFragments(SitesManager\API $sitesManagerApi)
+ private function makeKeepUrlFragments(SitesManager\API $sitesManagerApi): MeasurableProperty
{
return $this->makeProperty('keep_url_fragment', $default = '0', FieldConfig::TYPE_STRING, function (FieldConfig $field) use ($sitesManagerApi) {
$field->title = Piwik::translate('SitesManager_KeepURLFragmentsLong');
@@ -162,29 +175,29 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
$default = Piwik::translate('General_No');
}
- $field->availableValues = array(
+ $field->availableValues = [
'0' => $default . ' (' . Piwik::translate('General_Default') . ')',
'1' => Piwik::translate('General_Yes'),
'2' => Piwik::translate('General_No')
- );
+ ];
});
}
- private function makeExcludeIps()
+ private function makeExcludeIps(): MeasurableProperty
{
- return $this->makeProperty('excluded_ips', $default = array(), FieldConfig::TYPE_ARRAY, function (FieldConfig $field) {
+ return $this->makeProperty('excluded_ips', $default = [], FieldConfig::TYPE_ARRAY, function (FieldConfig $field) {
$ip = IP::getIpFromHeader();
$field->title = Piwik::translate('SitesManager_ExcludedIps');
- $field->inlineHelp = Piwik::translate('SitesManager_HelpExcludedIpAddresses', array('1.2.3.4/24', '1.2.3.*', '1.2.*.*'))
+ $field->inlineHelp = Piwik::translate('SitesManager_HelpExcludedIpAddresses', ['1.2.3.4/24', '1.2.3.*', '1.2.*.*'])
. '<br /><br />'
- . Piwik::translate('SitesManager_YourCurrentIpAddressIs', array('<i>' . $ip . '</i>'));
+ . Piwik::translate('SitesManager_YourCurrentIpAddressIs', ['<i>' . $ip . '</i>']);
$field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;
- $field->uiControlAttributes = array(
+ $field->uiControlAttributes = [
'cols' => '20',
'rows' => '4',
'placeholder' => $ip,
- );
+ ];
$field->validate = function ($value) {
if (!empty($value)) {
@@ -193,14 +206,14 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
foreach ($ips as $ip) {
if (IPUtils::getIPRangeBounds($ip) === null) {
- throw new Exception(Piwik::translate('SitesManager_ExceptionInvalidIPFormat', array($ip, "1.2.3.4, 1.2.3.*, or 1.2.3.4/5")));
+ throw new Exception(Piwik::translate('SitesManager_ExceptionInvalidIPFormat', [$ip, "1.2.3.4, 1.2.3.*, or 1.2.3.4/5"]));
}
}
}
};
$field->transform = function ($value) {
if (empty($value)) {
- return array();
+ return [];
}
$ips = array_map('trim', $value);
@@ -210,26 +223,26 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
});
}
- private function makeExcludedParameters()
+ private function makeExcludedParameters(): MeasurableProperty
{
$self = $this;
- return $this->makeProperty('excluded_parameters', $default = array(), FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($self) {
+ return $this->makeProperty('excluded_parameters', $default = [], FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($self) {
$field->title = Piwik::translate('SitesManager_ExcludedParameters');
$field->inlineHelp = Piwik::translate('SitesManager_ListOfQueryParametersToExclude', "/^sess.*|.*[dD]ate$/")
. '<br /><br />'
- . Piwik::translate('SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters', array('phpsessid, sessionid, ...'));
+ . Piwik::translate('SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters', ['phpsessid, sessionid, ...']);
$field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;
- $field->uiControlAttributes = array('cols' => '20', 'rows' => '4');
+ $field->uiControlAttributes = ['cols' => '20', 'rows' => '4'];
$field->transform = function ($value) use ($self) {
return $self->checkAndReturnCommaSeparatedStringList($value);
};
});
}
- private function makeExcludedUserAgents()
+ private function makeExcludedUserAgents(): MeasurableProperty
{
$self = $this;
- return $this->makeProperty('excluded_user_agents', $default = array(), FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($self) {
+ return $this->makeProperty('excluded_user_agents', $default = [], FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($self) {
$field->title = Piwik::translate('SitesManager_ExcludedUserAgents');
$field->inlineHelp = Piwik::translate('SitesManager_GlobalExcludedUserAgentHelp1')
. '<br /><br />'
@@ -239,23 +252,80 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
. Piwik::translate('SitesManager_GlobalExcludedUserAgentHelp3', "/bot|spider|crawl|scanner/i")
;
$field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;
- $field->uiControlAttributes = array('cols' => '20', 'rows' => '4');
+ $field->uiControlAttributes = ['cols' => '20', 'rows' => '4'];
$field->transform = function ($value) use ($self) {
return $self->checkAndReturnCommaSeparatedStringList($value);
};
});
}
- private function makeSiteSearch()
+ private function makeExcludedReferrers(SitesManager\API $sitesManagerApi): MeasurableProperty
+ {
+ $self = $this;
+ return $this->makeProperty('excluded_referrers', $default = [], FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($sitesManagerApi, $self) {
+ $field->title = Piwik::translate('SitesManager_ExcludedReferrers');
+
+ $referrersGlobal = $sitesManagerApi->getExcludedReferrersGlobal();
+
+ $field->inlineHelp = Piwik::translate('SitesManager_ExcludedReferrersHelp')
+ . '<br /><br />'
+ . Piwik::translate('SitesManager_ExcludedReferrersHelpDetails')
+ . '<br />'
+ . Piwik::translate('SitesManager_ExcludedReferrersHelpExamples', [
+ 'www.example.org',
+ 'http://example.org/mypath',
+ 'https://www.example.org/?param=1',
+ 'https://sub.example.org/'
+ ])
+ . '<br /><br />'
+ . Piwik::translate('SitesManager_ExcludedReferrersHelpSubDomains', [
+ '.sub.example.org',
+ 'http://sub.example.org/mypath',
+ 'https://new.sub.example.org/'
+ ])
+ ;
+
+ if (!empty($referrersGlobal)) {
+ $field->inlineHelp .= '<br /><br />'
+ . '<strong>' . Piwik::translate('SitesManager_GlobalListExcludedReferrers') . '</strong><br />'
+ . $referrersGlobal;
+ }
+ $field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;
+ $field->uiControlAttributes = ['cols' => '20', 'rows' => '4'];
+ $field->validate = function ($value) {
+ if (!empty($value)) {
+ $urls = array_map('trim', $value);
+ $urls = array_filter($urls, 'strlen');
+
+ foreach ($urls as $url) {
+ // We allow urls to be provided:
+ // - fully qualified like http://example.url/path
+ // - without protocol like example.url/path
+ // - with subdomain wildcard like .example.url/path
+ $prefixedUrl = 'https://' . ltrim(preg_replace('/^https?:\/\//', '', $url), '.');
+ $parsedUrl = @parse_url($prefixedUrl);
+ if (false === $parsedUrl || !UrlHelper::isLookLikeUrl($prefixedUrl)) {
+ throw new Exception(Piwik::translate('SitesManager_ExceptionInvalidUrl', [$url]));
+ }
+ }
+ }
+ };
+ $field->transform = function ($value) use ($self) {
+ return $self->checkAndReturnCommaSeparatedStringList($value);
+ };
+ });
+ }
+
+ private function makeSiteSearch(): MeasurableProperty
{
return $this->makeProperty('sitesearch', $default = 1, FieldConfig::TYPE_INT, function (FieldConfig $field) {
$field->title = Piwik::translate('Actions_SubmenuSitesearch');
$field->inlineHelp = Piwik::translate('SitesManager_SiteSearchUse');
$field->uiControl = FieldConfig::UI_CONTROL_SINGLE_SELECT;
- $field->availableValues = array(
+ $field->availableValues = [
1 => Piwik::translate('SitesManager_EnableSiteSearch'),
0 => Piwik::translate('SitesManager_DisableSiteSearch')
- );
+ ];
});
}
@@ -265,9 +335,9 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
return $this->makeSetting('use_default_site_search_params', $default = true, FieldConfig::TYPE_BOOL, function (FieldConfig $field) use ($sitesManagerApi, $settings) {
if (Piwik::hasUserSuperUserAccess()) {
- $title = Piwik::translate('SitesManager_SearchUseDefault', array("<a href='#globalSettings'>","</a>"));
+ $title = Piwik::translate('SitesManager_SearchUseDefault', ["<a href='#globalSettings'>","</a>"]);
} else {
- $title = Piwik::translate('SitesManager_SearchUseDefault', array('', ''));
+ $title = Piwik::translate('SitesManager_SearchUseDefault', ['', '']);
}
$field->title = $title;
@@ -301,7 +371,7 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
private function makeSiteSearchKeywords()
{
$settings = $this;
- return $this->makeProperty('sitesearch_keyword_parameters', $default = array(), FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($settings) {
+ return $this->makeProperty('sitesearch_keyword_parameters', $default = [], FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($settings) {
$field->title = Piwik::translate('SitesManager_SearchKeywordLabel');
$field->uiControl = FieldConfig::UI_CONTROL_TEXT;
$field->inlineHelp = Piwik::translate('SitesManager_SearchKeywordParametersDesc');
@@ -317,7 +387,7 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
private function makeSiteSearchCategory(Plugin\Manager $pluginManager)
{
- return $this->makeProperty('sitesearch_category_parameters', $default = array(), FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($pluginManager) {
+ return $this->makeProperty('sitesearch_category_parameters', $default = [], FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($pluginManager) {
$field->title = Piwik::translate('SitesManager_SearchCategoryLabel');
$field->uiControl = FieldConfig::UI_CONTROL_TEXT;
$field->inlineHelp = Piwik::translate('Goals_Optional')
@@ -334,20 +404,22 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
$field->title = Piwik::translate('Goals_Ecommerce');
$field->inlineHelp = Piwik::translate('SitesManager_EcommerceHelp')
. '<br />'
- . Piwik::translate('SitesManager_PiwikOffersEcommerceAnalytics',
- array("<a href='https://matomo.org/docs/ecommerce-analytics/' target='_blank'>", '</a>'));
+ . Piwik::translate(
+ 'SitesManager_PiwikOffersEcommerceAnalytics',
+ ["<a href='https://matomo.org/docs/ecommerce-analytics/' target='_blank'>", '</a>']
+ );
$field->uiControl = FieldConfig::UI_CONTROL_SINGLE_SELECT;
- $field->availableValues = array(
+ $field->availableValues = [
0 => Piwik::translate('SitesManager_NotAnEcommerceSite'),
1 => Piwik::translate('SitesManager_EnableEcommerce')
- );
+ ];
});
}
public function checkAndReturnCommaSeparatedStringList($parameters)
{
if (empty($parameters)) {
- return array();
+ return [];
}
$parameters = array_map('trim', $parameters);
@@ -355,5 +427,4 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
$parameters = array_unique($parameters);
return $parameters;
}
-
}