diff --git a/js/piwik.js b/js/piwik.js index 4b0a598d038..ba32a1843d4 100644 --- a/js/piwik.js +++ b/js/piwik.js @@ -71,7 +71,7 @@ setIgnoreCampaignsForReferrers, getIgnoreCampaignsForReferrers, setDownloadClasses, setLinkClasses, setCampaignNameKey, setCampaignKeywordKey, - getConsentRequestsQueue, requireConsent, getRememberedConsent, hasRememberedConsent, isConsentRequired, + getConsentRequestsQueue, requireConsent, unrequireConsent, getRememberedConsent, hasRememberedConsent, isConsentRequired, setConsentGiven, rememberConsentGiven, forgetConsentGiven, unload, hasConsent, discardHashTag, alwaysUseSendBeacon, disableAlwaysUseSendBeacon, isUsingAlwaysUseSendBeacon, setCookieNamePrefix, setCookieDomain, setCookiePath, setSecureCookie, setVisitorIdCookie, getCookieDomain, hasCookies, setSessionCookie, @@ -7358,6 +7358,25 @@ if (typeof window.Matomo !== 'object') { }; }; + /** + * When `_paq.push(['requireConsent'])` is called, it is possible to revoke this with + * `_paq.push(['unrequireConsent'])`. So no `_paq.push(['setConsentGiven']);` is required. + * This will cause all tracking requests from this page view to be sent. + */ + this.unrequireConsent = function () { + configConsentRequired = false; + var i, requestType; + for (i = 0; i < consentRequestsQueue.length; i++) { + requestType = typeof consentRequestsQueue[i][0]; + if (requestType === 'string') { + sendRequest(consentRequestsQueue[i][0], configTrackerPause, consentRequestsQueue[i][1]); + } else if (requestType === 'object') { + sendBulkRequest(consentRequestsQueue[i][0], configTrackerPause); + } + } + consentRequestsQueue = []; + }; + /** * Call this method once the user has given consent. This will cause all tracking requests from this * page view to be sent. Please note that the given consent won't be remembered across page views. If you @@ -7563,7 +7582,7 @@ if (typeof window.Matomo !== 'object') { * Constructor ************************************************************/ - var applyFirst = ['addTracker', 'enableFileTracking', 'forgetCookieConsentGiven', 'requireCookieConsent', 'disableBrowserFeatureDetection', 'disableCampaignParameters', 'disableCookies', 'setTrackerUrl', 'setAPIUrl', 'enableCrossDomainLinking', 'setCrossDomainLinkingTimeout', 'setSessionCookieTimeout', 'setVisitorCookieTimeout', 'setCookieNamePrefix', 'setCookieSameSite', 'setSecureCookie', 'setCookiePath', 'setCookieDomain', 'setDomains', 'setUserId', 'setVisitorId', 'setSiteId', 'alwaysUseSendBeacon', 'disableAlwaysUseSendBeacon', 'enableLinkTracking', 'setCookieConsentGiven', 'requireConsent', 'setConsentGiven', 'disablePerformanceTracking', 'setPagePerformanceTiming', 'setExcludedQueryParams', 'setExcludedReferrers']; + var applyFirst = ['addTracker', 'enableFileTracking', 'forgetCookieConsentGiven', 'requireCookieConsent', 'disableBrowserFeatureDetection', 'disableCampaignParameters', 'disableCookies', 'setTrackerUrl', 'setAPIUrl', 'enableCrossDomainLinking', 'setCrossDomainLinkingTimeout', 'setSessionCookieTimeout', 'setVisitorCookieTimeout', 'setCookieNamePrefix', 'setCookieSameSite', 'setSecureCookie', 'setCookiePath', 'setCookieDomain', 'setDomains', 'setUserId', 'setVisitorId', 'setSiteId', 'alwaysUseSendBeacon', 'disableAlwaysUseSendBeacon', 'enableLinkTracking', 'setCookieConsentGiven', 'requireConsent', 'unrequireConsent', 'setConsentGiven', 'disablePerformanceTracking', 'setPagePerformanceTiming', 'setExcludedQueryParams', 'setExcludedReferrers']; function createFirstTracker(matomoUrl, siteId) {