PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 2.4.1
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v2.4.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 7 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 7 years ago helper.php 7 years ago settings-service-interface.php 7 years ago settings-service.php 7 years ago
cookie-consent.php
145 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 * Scan cookiebot cookie
24 *
25 * @since 1.2.0
26 */
27 public function __construct() {
28 $this->scan_cookie();
29 }
30
31 /**
32 * Scans cookiebot consent cookie and fills in $states with accepted consents.
33 *
34 * @since 1.2.0
35 */
36 public function scan_cookie() {
37 //default - set strictly necessary cookies
38 $this->add_state( 'necessary' );
39
40 if ( isset( $_COOKIE["CookieConsent"] ) ) {
41 switch ( $_COOKIE["CookieConsent"] ) {
42 case "0":
43 //The user has not accepted cookies - set strictly necessary cookies only
44 break;
45
46 case "-1":
47 //The user is not within a region that requires consent - all cookies are accepted
48 $this->add_state( 'preferences' );
49 $this->add_state( 'statistics' );
50 $this->add_state( 'marketing' );
51 break;
52
53 default: //The user has accepted one or more type of cookies
54
55 //Read current user consent in encoded JavaScript format
56 $valid_php_json = preg_replace( '/\s*:\s*([a-zA-Z0-9_]+?)([}\[,])/', ':"$1"$2', preg_replace( '/([{\[,])\s*([a-zA-Z0-9_]+?):/', '$1"$2":', str_replace( "'", '"', stripslashes( $_COOKIE["CookieConsent"] ) ) ) );
57 $CookieConsent = json_decode( $valid_php_json );
58
59 if ( filter_var( $CookieConsent->preferences, FILTER_VALIDATE_BOOLEAN ) ) {
60 //Current user accepts preference cookies
61 $this->add_state( 'preferences' );
62 } else {
63 //Current user does NOT accept preference cookies
64 }
65
66 if ( filter_var( $CookieConsent->statistics, FILTER_VALIDATE_BOOLEAN ) ) {
67 //Current user accepts statistics cookies
68 $this->add_state( 'statistics' );
69 } else {
70 //Current user does NOT accept statistics cookies
71 }
72
73 if ( filter_var( $CookieConsent->marketing, FILTER_VALIDATE_BOOLEAN ) ) {
74 //Current user accepts marketing cookies
75 $this->add_state( 'marketing' );
76 } else {
77 //Current user does NOT accept marketing cookies
78 }
79 }
80 } else {
81 //The user has not accepted cookies - set strictly necessary cookies only
82 }
83 }
84
85 /**
86 * Adds state to $states variable
87 *
88 * @param $state string new state
89 *
90 * @since 1.2.0
91 */
92 public function add_state( $state ) {
93 if ( ! in_array( $state, $this->states ) ) {
94 $this->states[] = $state;
95 }
96 }
97
98 /**
99 * Returns cookiebot cookie consent state
100 *
101 * @return array array List of accepted cookiebot consents
102 *
103 * @since 1.2.0
104 */
105 public function get_cookie_states() {
106 if ( count( $this->states ) == 0 ) {
107 $this->scan_cookie();
108 }
109
110 return $this->states;
111 }
112
113 /**
114 * Checks if the cookie states are accepted.
115 *
116 * @param $states array Cookie states to check if it is accepted.
117 *
118 * @return bool
119 *
120 * @since 1.3.0
121 */
122 public function are_cookie_states_accepted( $states ) {
123 if ( is_array( $states ) ) {
124 foreach ( $states as $state ) {
125 if ( ! in_array( $state, $this->states ) ) {
126 return false;
127 }
128 }
129 }
130
131 return true;
132 }
133
134 /**
135 * Checks if the cookie state is accepted
136 *
137 * @param $state string Cookie state to check if it is accepted
138 *
139 * @return bool
140 */
141 public function is_cookie_state_accepted( $state ) {
142 return in_array( $state, $this->states );
143 }
144 }
145