this.relay_url_params = '';
this.lastTCHash = '';
this.gaqueue = [];
+ this.baseURL = trim((window.location.origin + window.location.pathname).replace("index.html", ""), '/');
+
+ this.matomoServers = [];
+ if (this.fluidbook.settings.statsMatomo) {
+ if (this.fluidbook.settings.statsMatomoServer === undefined || this.fluidbook.settings.statsMatomoServer === null) {
+ this.fluidbook.settings.statsMatomoServer = '3';
+ }
+ this.matomoServers.push({
+ server: 'stats' + this.fluidbook.settings.statsMatomoServer + '.fluidbook.com',
+ siteId: this.fluidbook.settings.statsMatomo,
+ lastURL: '',
+ referer: '',
+ fullURL: false,
+ });
+ }
+ if (this.fluidbook.settings.matomoServer && this.fluidbook.settings.matomoSiteId) {
+ this.matomoServers.push({
+ server: this.fluidbook.settings.matomoServer,
+ siteId: this.fluidbook.settings.matomoSiteId,
+ lastURL: '',
+ referer: '',
+ fullURL: true
+ });
+ }
if ($_GET['puppeteer'] !== undefined) {
this.fluidbook.settings.stats = false;
this.fluidbook.settings.tagcommander_id = '';
this.fluidbook.settings.xiti = '';
this.fluidbook.settings.tagcommander_plan_type = '';
+ this.matomoServers = [];
}
-
if (this.fluidbook.settings.tagcommander_plan_type === 'esm') {
this.esm = new FluidbookStatsEsm(this.fluidbook);
}
if (this.fluidbook.settings.stats) {
this.worker = new Worker('js/libs/fluidbook/workers/stats.js');
}
- if (this.fluidbook.settings.statsMatomo) {
- if (this.fluidbook.settings.statsMatomoServer === undefined || this.fluidbook.settings.statsMatomoServer === null) {
- this.fluidbook.settings.statsMatomoServer = '3';
- }
+ if (this.matomoServers.length > 0) {
+ let u = 'https://' + this.matomoServers[0].server + '/';
window._paq = window._paq || [];
window._paq.push(["setDoNotTrack", true]);
window._paq.push(['enableHeartBeatTimer']);
window._paq.push(['enableLinkTracking']);
- (function (siteId, server) {
- var u = "https://stats" + server + ".fluidbook.com/";
- window._paq.push(['setTrackerUrl', u + 'matomo.php']);
- window._paq.push(['setSiteId', siteId]);
- var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
- g.async = true;
- g.src = u + 'matomo.js';
- s.parentNode.insertBefore(g, s);
- })(this.fluidbook.settings.statsMatomo, this.fluidbook.settings.statsMatomoServer.toString());
+ if (this.matomoServers.length === 1) {
+ window._paq.push(['setTrackerUrl', 'https://' + this.matomoServers[0].server + '/matomo.php']);
+ window._paq.push(['setSiteId', this.matomoServers[0].siteId]);
+ }
+ var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
+ g.async = true;
+ g.src = u + 'matomo.js';
+ s.parentNode.insertBefore(g, s);
}
if (this.fluidbook.settings.googleTagManager !== undefined && this.fluidbook.settings.googleTagManager !== '') {
this.ga = 'gtm';
return true;
});
- if (this.fluidbook.settings.tagcommander_id && this.fluidbook.settings.tagcommander_plan_type==='file') {
+ if (this.fluidbook.settings.tagcommander_id && this.fluidbook.settings.tagcommander_plan_type === 'file') {
this.initTagCommander();
}
if (this.fluidbook.settings.xiti) {
}
}
- if (this.fluidbook.settings.statsMatomo) {
+ if (this.matomoServers.length > 0) {
try {
- this.trackMatomo(type, page, extra);
+ this.matomoTrack(type, page, extra);
} catch (e) {
-
+ console.log(e);
}
}
try {
}
},
- trackMatomo(type, page, extra, url) {
+ matomoTrack(type, page, extra, url) {
if (url === undefined) {
url = window.location;
}
switch (type) {
case 0: // Change page
- window._paq.push(['setCustomUrl', '/page/' + page]);
- window._paq.push(['trackPageView', 'View page ' + page]);
- break;
- case 10: // Open Book
- window._paq.push(['setCustomUrl', '/']); // Note: this shows as "/index" in the Matomo page URL reports (unless in flat view)
- window._paq.push(['trackPageView', 'Open fluidbook']);
+ this.matomoViewPage(page);
break;
case 14: // Open chapters menu
- window._paq.push(['trackEvent', 'menu', 'click', 'chapters']);
+ this.matomoPush(['trackEvent', 'menu', 'click', 'chapters']);
break;
case 6: // Click a link in a page
- window._paq.push(['trackEvent', 'link', 'click', extra]);
- window._paq.push(['trackLink', extra]);
+ this.matomoPush(['trackEvent', 'link', 'click', extra]);
+ this.matomoPush(['trackLink', extra]);
break;
case 1: // Search
- window._paq.push(['trackSiteSearch', extra]);
+ this.matomoPush(['trackSiteSearch', extra]);
break;
case 3: // Print
- window._paq.push(['trackEvent', 'menu', 'click', 'print']);
+ this.matomoPush(['trackEvent', 'menu', 'click', 'print']);
break;
case 5: // Share
case 12: // Facebook
case 13: // Twitter
- window._paq.push(['trackEvent', 'share', 'send', extra]);
+ this.matomoPush(['trackEvent', 'share', 'send', extra]);
break;
case 7: // PDF
case 8: // Partial PDF
- window._paq.push(['trackEvent', 'menu', 'click', 'download']);
+ this.matomoPush(['trackEvent', 'menu', 'click', 'download']);
break;
case 4: // Bookmarks
- window._paq.push(['trackEvent', 'bookmark', 'page', 'page ' + page]);
+ this.matomoPush(['trackEvent', 'bookmark', 'page', 'page ' + page]);
break;
case 9: // Extras
- window._paq.push(['trackEvent', 'extra', 'click', extra]);
+ this.matomoPush(['trackEvent', 'extra', 'click', extra]);
break;
case 2:// Zoom
- window._paq.push(['trackEvent', 'zoom', 'page', page]);
+ this.matomoPush(['trackEvent', 'zoom', 'page', page]);
break;
case 15://
- window._paq.push(['trackEvent', 'cart', 'addproduct', extra]);
+ this.matomoPush(['trackEvent', 'cart', 'addproduct', extra]);
+ }
+ },
+
+ matomoViewPage: function (page) {
+ for (var i in this.matomoServers) {
+ let s = this.matomoServers[i];
+ let url = s.fullURL ? this.baseURL : 'http://fluidbook.' + s.siteId;
+ url += '/page/' + page;
+ s.referer = this.matomoServers[i].lastURL = s.lastURL;
+ s.lastURL = this.matomoServers[i].lastURL = url;
+ this.matomoPushToServer(['trackPageView', 'View page ' + page], s);
+ }
+ },
+
+ matomoPushToServer: function (data, server) {
+ if (this.matomoServers.length > 1) {
+ window._paq.push(['setTrackerUrl', 'https://' + server.server + '/matomo.php']);
+ window._paq.push(['setSiteId', server.siteId]);
+ if (server.referer !== '' && server.referer !== server.lastURL) {
+ _paq.push(['setReferrerUrl', server.referer]);
+ }
+ window._paq.push(['setCustomUrl', server.lastURL]);
+ } else if (data[0] === 'trackPageView') {
+ window._paq.push(['setCustomUrl', server.lastURL]);
+ }
+ console.log('push', data, server);
+ window._paq.push(data);
+ },
+
+ matomoPush(data) {
+ for (let i in this.matomoServers) {
+ let dataCopy = data.slice(0);
+ this.matomoPushToServer(dataCopy, this.matomoServers[i]);
}
},