Skip to content

Commit f29b66a

Browse files
Merge pull request #41 from Jacobomara901/cookieConsentSnippets
Cookie consent snippets
2 parents 4bdfe24 + bedeec0 commit f29b66a

File tree

4 files changed

+46
-7
lines changed

4 files changed

+46
-7
lines changed

code/web/release_notes/24.05.00.MD

+1-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@
120120
//Jacob
121121
### Data Protection Updates
122122
- Fixed issue where Cookie Consent banner would not disappear while not logged in, regardless of cookie preferences. (JOM)
123-
123+
- Added the ability to only apply JS-Snippets if cookie consent is given while "Require Cookie Consent" is enabled. (JOM)
124124

125125
## This release includes code contributions from
126126
- ByWater Solutions

code/web/sys/DBMaintenance/version_updates/24.05.00.php

+9
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,15 @@ function getUpdates24_05_00(): array {
8282
]
8383
]
8484
//other
85+
//jacob - PTFS Europe
86+
'Snippet_Contains_Analytics_Cookies' => [
87+
'title' => 'JS Snippet Contains Analytics Cookies',
88+
'description' => 'Add a toggle for if a JS snippet contains analytics cookies or not.',
89+
'continueOnError' => true,
90+
'sql' => [
91+
'ALTER TABLE javascript_snippets ADD COLUMN containsAnalyticsCookies TINYINT(1)'
92+
]
93+
], //Snippet_Contains_Marketing_Cookies
8594

8695

8796
];

code/web/sys/Interface.php

+28-6
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,18 @@ function loadDisplayOptions($fromBookCoverProcessing = false) {
535535
$customJavascript = '';
536536
if (!isset($_REQUEST['noCustomJavaScript']) && !isset($_REQUEST['noCustom'])) {
537537
try {
538+
if (isset($_COOKIE["cookieConsent"])) {
539+
$cookie = json_decode(urldecode($_COOKIE["cookieConsent"]), true);
540+
if ($cookie != null) {
541+
$analyticsPref = $cookie['Analytics'];
542+
}else{
543+
$analyticsPref = 0;
544+
}
545+
}else{
546+
$cookie = null;
547+
$analyticsPref = 0;
548+
}
549+
538550
if (isset($location)) {
539551
require_once ROOT_DIR . '/sys/LocalEnrichment/JavaScriptSnippetLocation.php';
540552
$javascriptSnippetLocation = new JavaScriptSnippetLocation();
@@ -545,10 +557,15 @@ function loadDisplayOptions($fromBookCoverProcessing = false) {
545557
$javascriptSnippet = new JavaScriptSnippet();
546558
$javascriptSnippet->id = $javascriptSnippetLocation->javascriptSnippetId;
547559
if ($javascriptSnippet->find(true)) {
548-
if (strlen($customJavascript) > 0) {
549-
$customJavascript .= "\n";
560+
if (empty($library->cookieStorageConsent) ||
561+
(!empty($library->cookieStorageConsent) && empty($javascriptSnippet->containsAnalyticsCookies)) ||
562+
(!empty($library->cookieStorageConsent) && !empty($javascriptSnippet->containsAnalyticsCookies) && $analyticsPref == 1)
563+
) {
564+
if (strlen($customJavascript) > 0) {
565+
$customJavascript .= "\n";
566+
}
567+
$customJavascript .= trim($javascriptSnippet->snippet);
550568
}
551-
$customJavascript .= trim($javascriptSnippet->snippet);
552569
}
553570
}
554571
} else {
@@ -561,10 +578,15 @@ function loadDisplayOptions($fromBookCoverProcessing = false) {
561578
$javascriptSnippet = new JavaScriptSnippet();
562579
$javascriptSnippet->id = $javascriptSnippetLibrary->javascriptSnippetId;
563580
if ($javascriptSnippet->find(true)) {
564-
if (strlen($customJavascript) > 0) {
565-
$customJavascript .= "\n";
581+
if (empty($library->cookieStorageConsent) ||
582+
(!empty($library->cookieStorageConsent) && empty($javascriptSnippet->containsAnalyticsCookies)) ||
583+
(!empty($library->cookieStorageConsent) && !empty($javascriptSnippet->containsAnalyticsCookies) && $analyticsPref == 1)
584+
) {
585+
if (strlen($customJavascript) > 0) {
586+
$customJavascript .= "\n";
587+
}
588+
$customJavascript .= trim($javascriptSnippet->snippet);
566589
}
567-
$customJavascript .= trim($javascriptSnippet->snippet);
568590
}
569591
}
570592
}

code/web/sys/LocalEnrichment/JavaScriptSnippet.php

+8
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class JavaScriptSnippet extends DB_LibraryLocationLinkedObject {
99
public $id;
1010
public $name;
1111
public $snippet;
12+
public $containsAnalyticsCookies;
1213

1314
protected $_libraries;
1415
protected $_locations;
@@ -57,6 +58,13 @@ public static function getObjectStructure($context = ''): array {
5758
'values' => $locationList,
5859
'hideInLists' => true,
5960
],
61+
62+
'containsAnalyticsCookies' => [
63+
'property' => 'containsAnalyticsCookies',
64+
'type' => 'checkbox',
65+
'label' => 'Contains Analytics Cookies',
66+
'description' => 'This snippet contains analytics cookies',
67+
],
6068
];
6169
}
6270

0 commit comments

Comments
 (0)