PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 3.0.1
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v3.0.1
4.7.2 4.7.1 trunk 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 3.0.0 3.0.1 3.1.0 3.10.0 3.10.1 3.11.1 3.11.2 3.11.3 3.2.0 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.5 3.6.6 3.7.0 3.7.1 3.8.0 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.2.0 4.2.1 4.2.10 4.2.11 4.2.12 4.2.13 4.2.14 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.3.10 4.3.11 4.3.12 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.7.1 4.3.8 4.3.9 4.3.9.1 4.4.0 4.4.1 4.4.2 4.5.0 4.5.1 4.5.10 4.5.11 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8 4.5.9 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.7.0
cookiebot / addons / lib / cookie-consent.php
cookiebot / addons / lib Last commit date
buffer 6 years ago ioc 7 years ago script-loader-tag 7 years ago autoloader.php 7 years ago cookie-consent-interface.php 7 years ago cookie-consent.php 6 years ago helper.php 6 years ago settings-service-interface.php 6 years ago settings-service.php 6 years ago
cookie-consent.php
158 lines
1 <?php
2
3 namespace cookiebot_addons\lib;
4
5 class Cookie_Consent implements Cookie_Consent_Interface {
6
7 /**
8 * Array of cookiebot consent states
9 *
10 * It can have 4 items:
11 * - necessary
12 * - preferences
13 * - statistics
14 * - marketing
15 *
16 * @var array consent state
17 *
18 * @since 1.2.0
19 */
20 private $states = array();
21
22 /**
23 * @var array|null
24 */
25 private $cookie;
26
27 /**
28 * Scan cookiebot cookie
29 *
30 * @param $default_cookie
31 *
32 * @since 1.2.0
33 * @version 2.4.1
34 */
35 public function __construct($default_cookie = null) {
36 $this->cookie = ( isset( $_COOKIE['CookieConsent'] ) ) ? $_COOKIE['CookieConsent'] : $default_cookie;
37
38 $this->scan_cookie();
39 }
40
41 /**
42 * Scans cookiebot consent cookie and fills in $states with accepted consents.
43 *
44 * @since 1.2.0
45 * @version 2.4.1
46 */
47 public function scan_cookie() {
48 //default - set strictly necessary cookies
49 $this->add_state( 'necessary' );
50
51 if ( ! empty( $this->cookie ) ) {
52 switch ( $this->cookie ) {
53 case "0":
54 //The user has not accepted cookies - set strictly necessary cookies only
55 break;
56
57 case "-1":
58 //The user is not within a region that requires consent - all cookies are accepted
59 $this->add_state( 'preferences' );
60 $this->add_state( 'statistics' );
61 $this->add_state( 'marketing' );
62 break;
63
64 default: //The user has accepted one or more type of cookies
65
66 //Read current user consent in encoded JavaScript format
67 $valid_php_json = preg_replace( '/\s*:\s*([a-zA-Z0-9_]+?)([}\[,])/', ':"$1"$2',
68 preg_replace( '/([{\[,])\s*([a-zA-Z0-9_]+?):/', '$1"$2":',
69 str_replace( "'", '"', stripslashes( $this->cookie ) ) ) );
70 $CookieConsent = json_decode( $valid_php_json );
71
72 if ( isset( $CookieConsent->preferences ) && filter_var( $CookieConsent->preferences, FILTER_VALIDATE_BOOLEAN ) ) {
73 //Current user accepts preference cookies
74 $this->add_state( 'preferences' );
75 } else {
76 //Current user does NOT accept preference cookies
77 }
78
79 if ( isset( $CookieConsent->statistics ) && filter_var( $CookieConsent->statistics, FILTER_VALIDATE_BOOLEAN ) ) {
80 //Current user accepts statistics cookies
81 $this->add_state( 'statistics' );
82 } else {
83 //Current user does NOT accept statistics cookies
84 }
85
86 if ( isset( $CookieConsent->marketing ) && filter_var( $CookieConsent->marketing, FILTER_VALIDATE_BOOLEAN ) ) {
87 //Current user accepts marketing cookies
88 $this->add_state( 'marketing' );
89 } else {
90 //Current user does NOT accept marketing cookies
91 }
92 }
93 } else {
94 //The user has not accepted cookies - set strictly necessary cookies only
95 }
96 }
97
98 /**
99 * Adds state to $states variable
100 *
101 * @param $state string new state
102 *
103 * @since 1.2.0
104 */
105 public function add_state( $state ) {
106 if ( ! in_array( $state, $this->states ) ) {
107 $this->states[] = $state;
108 }
109 }
110
111 /**
112 * Returns cookiebot cookie consent state
113 *
114 * @return array array List of accepted cookiebot consents
115 *
116 * @since 1.2.0
117 */
118 public function get_cookie_states() {
119 if ( count( $this->states ) == 0 ) {
120 $this->scan_cookie();
121 }
122
123 return $this->states;
124 }
125
126 /**
127 * Checks if the cookie states are accepted.
128 *
129 * @param $states array Cookie states to check if it is accepted.
130 *
131 * @return bool
132 *
133 * @since 1.3.0
134 */
135 public function are_cookie_states_accepted( $states ) {
136 if ( is_array( $states ) ) {
137 foreach ( $states as $state ) {
138 if ( ! in_array( $state, $this->states ) ) {
139 return false;
140 }
141 }
142 }
143
144 return true;
145 }
146
147 /**
148 * Checks if the cookie state is accepted
149 *
150 * @param $state string Cookie state to check if it is accepted
151 *
152 * @return bool
153 */
154 public function is_cookie_state_accepted( $state ) {
155 return in_array( $state, $this->states );
156 }
157 }
158