PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 4.2.9
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v4.2.9
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 / src / lib / Cookiebot_WP.php
cookiebot / src / lib Last commit date
buffer 3 years ago script_loader_tag 3 years ago traits 3 years ago Consent_API_Helper.php 3 years ago Cookie_Consent.php 3 years ago Cookie_Consent_Interface.php 4 years ago Cookiebot_Activated.php 3 years ago Cookiebot_Automatic_Updates.php 3 years ago Cookiebot_Deactivated.php 4 years ago Cookiebot_Javascript_Helper.php 3 years ago Cookiebot_WP.php 3 years ago Dependency_Container.php 3 years ago Settings_Page_Tab.php 3 years ago Settings_Service.php 3 years ago Settings_Service_Interface.php 3 years ago Supported_Languages.php 4 years ago Supported_Regions.php 3 years ago WP_Rocket_Helper.php 3 years ago Widgets.php 3 years ago global-deprecations.php 3 years ago helper.php 3 years ago
Cookiebot_WP.php
233 lines
1 <?php
2
3 namespace cybot\cookiebot\lib;
4
5 use cybot\cookiebot\addons\Cookiebot_Addons;
6 use cybot\cookiebot\admin_notices\Cookiebot_Recommendation_Notice;
7 use cybot\cookiebot\gutenberg\Cookiebot_Gutenberg_Declaration_Block;
8 use cybot\cookiebot\settings\Menu_Settings;
9 use cybot\cookiebot\settings\Network_Menu_Settings;
10 use cybot\cookiebot\widgets\Dashboard_Widget_Cookiebot_Status;
11 use DomainException;
12 use RuntimeException;
13
14 class Cookiebot_WP {
15 const COOKIEBOT_PLUGIN_VERSION = '4.2.9';
16 const COOKIEBOT_MIN_PHP_VERSION = '5.6.0';
17
18 /**
19 * @var Cookiebot_WP The single instance of the class
20 * @since 1.0.0
21 */
22 private static $instance = null;
23
24 /**
25 * Main Cookiebot_WP Instance
26 *
27 * Ensures only one instance of Cookiebot_WP is loaded or can be loaded.
28 *
29 * @return Cookiebot_WP - Main instance
30 * @throws RuntimeException
31 * @version 1.0.0
32 * @since 1.0.0
33 * @static
34 */
35 public static function instance() {
36 if ( is_null( self::$instance ) ) {
37 self::$instance = new self();
38 }
39
40 return self::$instance;
41 }
42
43 /**
44 * Cookiebot_WP Constructor.
45 *
46 * @throws RuntimeException
47 * @since 1.0.0
48 * @access public
49 * @version 2.1.4
50 */
51 public function __construct() {
52 $this->throw_exception_if_php_version_is_incompatible();
53
54 add_action( 'after_setup_theme', array( $this, 'cookiebot_init' ), 5 );
55 register_activation_hook( __FILE__, array( new Cookiebot_Activated(), 'run' ) );
56 register_deactivation_hook( __FILE__, array( new Cookiebot_Deactivated(), 'run' ) );
57 }
58
59 /**
60 * @throws RuntimeException
61 */
62 private function throw_exception_if_php_version_is_incompatible() {
63 if ( version_compare( PHP_VERSION, self::COOKIEBOT_MIN_PHP_VERSION, '<' ) ) {
64 $message = sprintf(
65 // translators: The placeholder is for the COOKIEBOT_MIN_PHP_VERSION constant
66 __( 'The Cookiebot plugin requires PHP version %s or greater.', 'cookiebot' ),
67 self::COOKIEBOT_MIN_PHP_VERSION
68 );
69 throw new DomainException( $message );
70 }
71 }
72
73 public function cookiebot_init() {
74 Cookiebot_Addons::instance();
75 load_textdomain(
76 'cookiebot',
77 CYBOT_COOKIEBOT_PLUGIN_DIR . 'langs/cookiebot-' . get_locale() . '.mo'
78 );
79 load_plugin_textdomain( 'cookiebot', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
80
81 if ( is_admin() ) {
82 ( new Menu_Settings() )->add_menu();
83 if ( is_multisite() && is_plugin_active_for_network( 'cookiebot/cookiebot.php' ) ) {
84 ( new Network_Menu_Settings() )->add_menu();
85 }
86 ( new Dashboard_Widget_Cookiebot_Status() )->register_hooks();
87 ( new Cookiebot_Recommendation_Notice() )->register_hooks();
88 }
89
90 ( new Consent_API_Helper() )->register_hooks();
91 ( new Cookiebot_Javascript_Helper() )->register_hooks();
92 ( new Cookiebot_Automatic_Updates() )->register_hooks();
93 ( new Widgets() )->register_hooks();
94 ( new Cookiebot_Gutenberg_Declaration_Block() )->register_hooks();
95 ( new WP_Rocket_Helper() )->register_hooks();
96
97 $this->set_default_options();
98 $this->delay_notice_recommendation_on_first_activation();
99 add_filter( 'plugin_action_links_cookiebot/cookiebot.php', array( $this, 'set_settings_action_link' ) );
100 }
101
102 /**
103 * Returns true if an user is logged in and has an edit_themes capability
104 *
105 * @return bool
106 *
107 * @since 3.3.1
108 * @version 3.4.1
109 */
110 public static function can_current_user_edit_theme() {
111 if ( is_user_logged_in() &&
112 (
113 current_user_can( 'edit_themes' ) ||
114 current_user_can( 'edit_pages' ) ||
115 current_user_can( 'edit_posts' )
116 )
117 ) {
118 return true;
119 }
120
121 return false;
122 }
123
124 /**
125 * @return string
126 */
127 public static function get_cbid() {
128 $network_setting = (string) get_site_option( 'cookiebot-cbid', '' );
129 $setting = (string) get_option( 'cookiebot-cbid', $network_setting );
130
131 return empty( $setting ) ? $network_setting : $setting;
132 }
133
134 /**
135 * @return string
136 */
137 public static function get_cookie_blocking_mode() {
138 $allowed_modes = array( 'auto', 'manual' );
139 $network_setting = (string) get_site_option( 'cookiebot-cookie-blocking-mode', 'manual' );
140 $setting = (string) get_option( 'cookiebot-cookie-blocking-mode', $network_setting );
141
142 return in_array( $setting, $allowed_modes, true ) ? $setting : 'manual';
143 }
144
145 /**
146 * @return bool
147 */
148 public static function check_network_auto_blocking_mode() {
149 $network_setting = (string) get_site_option( 'cookiebot-cookie-blocking-mode' );
150
151 return $network_setting === 'auto' ? true : false;
152 }
153
154 /**
155 * Cookiebot_WP Check if Cookiebot is active in admin
156 *
157 * @version 4.2.8
158 * @since 3.1.0
159 */
160 public static function cookiebot_disabled_in_admin() {
161 if ( ( is_network_admin() && get_site_option( 'cookiebot-nooutput-admin', false ) ) ||
162 ( ! is_network_admin() && get_site_option( 'cookiebot-nooutput-admin', false ) ) ||
163 ( ! is_network_admin() && get_option( 'cookiebot-nooutput-admin', false ) ) ) {
164 return true;
165 }
166
167 return false;
168 }
169
170 /**
171 * Cookiebot_WP Set default options
172 *
173 * @version 4.2.5
174 * @since 4.2.5
175 */
176 private function set_default_options() {
177 $options = array(
178 'cookiebot-nooutput-admin' => '1',
179 'cookiebot-gcm' => '1',
180 );
181
182 foreach ( $options as $option => $default ) {
183 if ( get_option( $option ) === false && ! get_option( $option . self::OPTION_FIRST_RUN_SUFFIX ) ) {
184 update_option( $option, $default );
185 }
186
187 if ( ( get_option( $option ) || get_option( $option ) !== false ) && ! get_option( $option . self::OPTION_FIRST_RUN_SUFFIX ) ) {
188 update_option( $option . self::OPTION_FIRST_RUN_SUFFIX, '1' );
189 }
190 }
191 }
192
193 /**
194 * Cookiebot_WP Delay recommendation notice 1 day after first activation
195 *
196 * @version 4.2.5
197 * @since 4.2.5
198 */
199 private function delay_notice_recommendation_on_first_activation() {
200 // Check if recommendation notice delay option exists
201 if ( get_option( Cookiebot_Recommendation_Notice::COOKIEBOT_RECOMMENDATION_OPTION_KEY, false ) === false ) {
202 // Delay in 1 day
203 add_option( Cookiebot_Recommendation_Notice::COOKIEBOT_RECOMMENDATION_OPTION_KEY, strtotime( '+1 day' ) );
204 }
205 }
206
207 public function set_settings_action_link( $actions ) {
208 $cblinks = array(
209 '<a href="' . admin_url( 'admin.php?page=cookiebot' ) . '">' . esc_html__( 'Dashboard', 'cookiebot' ) . '</a>',
210 );
211 $actions = array_merge( $actions, $cblinks );
212 return $actions;
213 }
214
215 /**
216 * @return string
217 */
218 public static function get_manager_language() {
219 $locale = get_locale();
220 $supported_langs = array(
221 'de_DE' => 'de',
222 'da_DK' => 'da',
223 'fr_FR' => 'fr',
224 'it_IT' => 'it',
225 'es_ES' => 'es',
226 );
227
228 return array_key_exists( $locale, $supported_langs ) ? $supported_langs[ $locale ] : esc_html( 'en' );
229 }
230
231 const OPTION_FIRST_RUN_SUFFIX = '-first-run';
232 }
233