cookiebot_fix_plugin_conflicts(); } /** * Cookiebot_WP Installation actions * * @version 2.1.4 * @since 2.1.4 * @accces public */ public function activation() { //Delay display of recommendation notice in 3 days if not activated ealier if ( get_option( 'cookiebot_notice_recommend', false ) === false ) { //Not set yet - this must be first activation - delay in 3 days update_option( 'cookiebot_notice_recommend', strtotime( '+3 days' ) ); } if ( $this->get_cbid() === '' ) { if ( is_multisite() ) { update_site_option( 'cookiebot-cookie-blocking-mode', 'auto' ); update_site_option( 'cookiebot-nooutput-admin', true ); } else { update_option( 'cookiebot-cookie-blocking-mode', 'auto' ); update_option( 'cookiebot-nooutput-admin', true ); } } /** * Run through the addons and enable the default ones */ if ( ( ! defined( 'COOKIEBOT_ADDONS_STANDALONE' ) || COOKIEBOT_ADDONS_STANDALONE !== true || ! defined( 'COOKIE_ADDONS_LOADED' ) ) ) { //Make sure we got a PHP version that works if ( version_compare( PHP_VERSION, '5.4.0', '>=' ) ) { define( 'COOKIEBOT_URL', plugin_dir_url( __FILE__ ) ); // activation hook doesn't have the addons loaded - so load it extra when the plugin is activated include_once dirname( __FILE__ ) . '/addons/cookiebot-addons-init.php'; // run activated hook on the addons cookiebot_addons_plugin_activated(); } } } /** * Cookiebot_WP Init Cookiebot. * * @version 3.8.1 * @since 1.6.2 * @access public */ public function cookiebot_init() { /* Load Cookiebot Addons Framework */ $dismiss_addons = false; if ( defined( 'CAF_DIR' ) ) { $dismiss_addons = true; /*add_action('admin_notices', function() { ?>



get_cookie_blocking_mode() !== 'auto' ) { else { if ( ( ! defined( 'COOKIEBOT_ADDONS_STANDALONE' ) || COOKIEBOT_ADDONS_STANDALONE !== true || ! defined( 'COOKIE_ADDONS_LOADED' ) ) && $dismiss_addons !== true ) { //Make sure we got a PHP version that works if ( version_compare( PHP_VERSION, '5.4.0', '>=' ) ) { define( 'COOKIEBOT_URL', plugin_dir_url( __FILE__ ) ); include_once dirname( __FILE__ ) . '/addons/cookiebot-addons-init.php'; } else { define( 'COOKIEBOT_ADDONS_UNSUPPORTED_PHPVERSION', true ); } } else { add_action( 'admin_notices', function () { ?>

cookiebot_disabled_in_admin() ) { //adding cookie banner in admin area too add_action( 'admin_head', array( $this, 'add_js' ), - 9999 ); } } //Include integration to WP Consent Level API if available if ( $this->is_wp_consent_api_active() ) { add_action( 'wp_enqueue_scripts', array( $this, 'cookiebot_enqueue_consent_api_scripts' ) ); } // Set up localisation load_plugin_textdomain( 'cookiebot', false, dirname( plugin_basename( __FILE__ ) ) . '/langs/' ); //add JS add_action( 'wp_head', array( $this, 'add_js' ), - 9997 ); add_action( 'wp_head', array( $this, 'add_GTM' ), - 9998 ); add_action( 'wp_head', array( $this, 'add_GCM' ), - 9999 ); add_shortcode( 'cookie_declaration', array( $this, 'show_declaration' ) ); //Add filter if WP rocket is enabled if ( defined( 'WP_ROCKET_VERSION' ) ) { add_filter( 'rocket_minify_excluded_external_js', array( $this, 'wp_rocket_exclude_external_js' ) ); } //Add filter add_filter( 'sgo_javascript_combine_excluded_external_paths', array( $this, 'sgo_exclude_external_js' ) ); //Automatic update plugin if ( is_admin() || ( defined( 'DOING_CRON' ) && DOING_CRON ) ) { add_filter( 'auto_update_plugin', array( $this, 'automatic_updates' ), 10, 2 ); } //Loading widgets include_once dirname( __FILE__ ) . '/widgets/cookiebot-declaration-widget.php'; add_action( 'widgets_init', array( $this, 'register_widgets' ) ); //Add Gutenberg block add_action( 'init', array( $this, 'gutenberg_block_setup' ) ); add_action( 'enqueue_block_editor_assets', array( $this, 'gutenberg_block_admin_assets' ) ); } /** * Cookiebot_WP Setup Gutenberg block * * @version 3.7.0 * @since 3.7.0 */ public function gutenberg_block_setup() { if ( ! function_exists( 'register_block_type' ) ) { return; //gutenberg not active } register_block_type( 'cookiebot/cookie-declaration', array( 'render_callback' => array( $this, 'block_cookie_declaration' ), ) ); } /** * Cookiebot_WP Add block JS * * @version 3.7.1 * @since 3.7.1 */ public function gutenberg_block_admin_assets() { //Add Gutenberg Widget wp_enqueue_script( 'cookiebot-declaration', plugin_dir_url( __FILE__ ) . 'js/block.js', array( 'wp-blocks', 'wp-i18n', 'wp-element' ), // Required scripts for the block $this->version ); } /** * Cookiebot_WP Render Cookiebot Declaration as Gutenberg block * * @version 3.7.0 * @since 3.7.0 */ public function block_cookie_declaration() { return $this->show_declaration(); } /** * Cookiebot_WP Load text domain * * @version 2.0.0 * @since 2.0.0 */ public function load_textdomain() { load_plugin_textdomain( 'cookiebot', false, basename( dirname( __FILE__ ) ) . '/langs' ); } /** * Cookiebot_WP Register widgets * * @version 2.5.0 * @since 2.5.0 */ public function register_widgets() { register_widget( 'Cookiebot_Declaration_Widget' ); } /** * Cookiebot_WP Add dashboard widgets to admin * * @version 1.0.0 * @since 1.0.0 */ public function add_dashboard_widgets() { wp_add_dashboard_widget( 'cookiebot_status', esc_html__( 'Cookiebot Status', 'cookiebot' ), array( $this, 'dashboard_widget_status' ) ); } /** * Cookiebot_WP Output Dashboard Status Widget * * @version 1.0.0 * @since 1.0.0 */ public function dashboard_widget_status() { $cbid = $this->get_cbid(); if ( empty( $cbid ) ) { echo '

' . esc_html__( 'You need to enter your Cookiebot ID.', 'cookiebot' ) . '

'; echo '

'; echo esc_html__( 'Update your Cookiebot ID', 'cookiebot' ); echo '

'; } else { echo '

' . esc_html_e( 'Your Cookiebot is working!', 'cookiebot' ) . '

'; } } /** * Cookiebot_WP Add option menu page for Cookiebot * * @version 2.2.0 * @since 1.0.0 */ public function add_menu() { //Cookiebot Icon SVG base64 encoded $icon = 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNzIgNTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNDYuODcyNTkwMyA4Ljc3MzU4MzM0QzQxLjk0MzkwMzkgMy4zODI5NTAxMSAzNC44NDI0OTQ2IDAgMjYuOTQ4MjgxOSAwIDEyLjA2NTE1NjggMCAwIDEyLjAyNDQ3NzQgMCAyNi44NTc0MjE5YzAgMTQuODMyOTQ0NSAxMi4wNjUxNTY4IDI2Ljg1NzQyMTkgMjYuOTQ4MjgxOSAyNi44NTc0MjE5IDcuODk0MjEyNyAwIDE0Ljk5NTYyMi0zLjM4Mjk1MDIgMTkuOTI0MzA4NC04Ljc3MzU4MzQtMi44ODk2OTY3LTEuMzY4ODY2My01LjM5OTMxMS0zLjQwNTQzOS03LjMyODA4MzgtNS45MDk2MzU4LTMuMTIxNDMwNiAzLjIwOTQxMDQtNy40OTI5OTQ0IDUuMjA0MTI5MS0xMi4zMzIwMjU4IDUuMjA0MTI5MS05LjQ4NDM0NDQgMC0xNy4xNzI5MjQ3LTcuNjYyNjU3Mi0xNy4xNzI5MjQ3LTE3LjExNTAyMzhzNy42ODg1ODAzLTE3LjExNTAyMzcgMTcuMTcyOTI0Ny0xNy4xMTUwMjM3YzQuNzIzNDgyMiAwIDkuMDAxNTU1MiAxLjkwMDU5MzkgMTIuMTA2MjkyIDQuOTc2MzA5IDEuOTU2OTIzNy0yLjY0MTEzMSA0LjU1MDAyNjMtNC43ODU1MTgzIDcuNTUzODE3Ni02LjIwODQzMTg2eiIvPjxwYXRoIGQ9Ik01NS4zODAzMjgyIDQyLjY1MDE5OTFDNDYuMzMzNzIyNyA0Mi42NTAxOTkxIDM5IDM1LjM0MTIwMzEgMzkgMjYuMzI1MDk5NiAzOSAxNy4zMDg5OTYgNDYuMzMzNzIyNyAxMCA1NS4zODAzMjgyIDEwYzkuMDQ2NjA1NSAwIDE2LjM4MDMyODIgNy4zMDg5OTYgMTYuMzgwMzI4MiAxNi4zMjUwOTk2IDAgOS4wMTYxMDM1LTcuMzMzNzIyNyAxNi4zMjUwOTk1LTE2LjM4MDMyODIgMTYuMzI1MDk5NXptLjAyMTMwOTItNy43NTU2MzQyYzQuNzM3MDI3NiAwIDguNTc3MTQ3MS0zLjgyNzE3MiA4LjU3NzE0NzEtOC41NDgyMjc5IDAtNC43MjEwNTYtMy44NDAxMTk1LTguNTQ4MjI4LTguNTc3MTQ3MS04LjU0ODIyOC00LjczNzAyNzUgMC04LjU3NzE0NyAzLjgyNzE3Mi04LjU3NzE0NyA4LjU0ODIyOCAwIDQuNzIxMDU1OSAzLjg0MDExOTUgOC41NDgyMjc5IDguNTc3MTQ3IDguNTQ4MjI3OXoiLz48L2c+PC9zdmc+'; add_menu_page( 'Cookiebot', __( 'Cookiebot', 'cookiebot' ), 'manage_options', 'cookiebot', array( $this, 'settings_page' ), $icon ); add_submenu_page( 'cookiebot', __( 'Cookiebot Settings', 'cookiebot' ), __( 'Settings', 'cookiebot' ), 'manage_options', 'cookiebot', array( $this, 'settings_page' ), 10 ); add_submenu_page( 'cookiebot', __( 'Cookiebot Support', 'cookiebot' ), __( 'Support', 'cookiebot' ), 'manage_options', 'cookiebot_support', array( $this, 'support_page' ), 20 ); add_submenu_page( 'cookiebot', __( 'Google Tag Manager', 'cookiebot' ), __( 'Google Tag Manager', 'cookiebot' ), 'manage_options', 'cookiebot_GTM', array( $this, 'GTM_page' ) ); add_submenu_page( 'cookiebot', __( 'IAB', 'cookiebot' ), __( 'IAB', 'cookiebot' ), 'manage_options', 'cookiebot_iab', array( $this, 'iab_page' ), 30 ); if ( defined( 'COOKIEBOT_ADDONS_UNSUPPORTED_PHPVERSION' ) ) { //Load prior consent page anyway - but from Cookiebot WP Core plugin. add_submenu_page( 'cookiebot', __( 'Prior Consent', 'cookiebot' ), __( 'Prior Consent', 'cookiebot' ), 'manage_options', 'cookiebot-addons', array( $this, 'setting_page_placeholder' ), 40 ); } } public function add_menu_legislations() { add_submenu_page( 'cookiebot', __( 'Legislations', 'cookiebot' ), __( 'Legislations', 'cookiebot' ), 'manage_options', 'cookiebot-legislations', array( $this, 'legislations_page' ), 50 ); } /** * Cookiebot_WP Add debug menu - we need to add this seperate to ensure it is placed last (after menu items from Addons). * * @version 3.6.0 * @since 3.6.0 */ public function add_menu_debug() { add_submenu_page( 'cookiebot', __( 'Debug info', 'cookiebot' ), __( 'Debug info', 'cookiebot' ), 'manage_options', 'cookiebot_debug', array( $this, 'debug_page' ) ); } /** * Cookiebot_WP Add menu for network sites * * @version 2.2.0 * @since 2.2.0 */ public function add_network_menu() { $icon = 'data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNzIgNTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI0ZGRkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNDYuODcyNTkwMyA4Ljc3MzU4MzM0QzQxLjk0MzkwMzkgMy4zODI5NTAxMSAzNC44NDI0OTQ2IDAgMjYuOTQ4MjgxOSAwIDEyLjA2NTE1NjggMCAwIDEyLjAyNDQ3NzQgMCAyNi44NTc0MjE5YzAgMTQuODMyOTQ0NSAxMi4wNjUxNTY4IDI2Ljg1NzQyMTkgMjYuOTQ4MjgxOSAyNi44NTc0MjE5IDcuODk0MjEyNyAwIDE0Ljk5NTYyMi0zLjM4Mjk1MDIgMTkuOTI0MzA4NC04Ljc3MzU4MzQtMi44ODk2OTY3LTEuMzY4ODY2My01LjM5OTMxMS0zLjQwNTQzOS03LjMyODA4MzgtNS45MDk2MzU4LTMuMTIxNDMwNiAzLjIwOTQxMDQtNy40OTI5OTQ0IDUuMjA0MTI5MS0xMi4zMzIwMjU4IDUuMjA0MTI5MS05LjQ4NDM0NDQgMC0xNy4xNzI5MjQ3LTcuNjYyNjU3Mi0xNy4xNzI5MjQ3LTE3LjExNTAyMzhzNy42ODg1ODAzLTE3LjExNTAyMzcgMTcuMTcyOTI0Ny0xNy4xMTUwMjM3YzQuNzIzNDgyMiAwIDkuMDAxNTU1MiAxLjkwMDU5MzkgMTIuMTA2MjkyIDQuOTc2MzA5IDEuOTU2OTIzNy0yLjY0MTEzMSA0LjU1MDAyNjMtNC43ODU1MTgzIDcuNTUzODE3Ni02LjIwODQzMTg2eiIvPjxwYXRoIGQ9Ik01NS4zODAzMjgyIDQyLjY1MDE5OTFDNDYuMzMzNzIyNyA0Mi42NTAxOTkxIDM5IDM1LjM0MTIwMzEgMzkgMjYuMzI1MDk5NiAzOSAxNy4zMDg5OTYgNDYuMzMzNzIyNyAxMCA1NS4zODAzMjgyIDEwYzkuMDQ2NjA1NSAwIDE2LjM4MDMyODIgNy4zMDg5OTYgMTYuMzgwMzI4MiAxNi4zMjUwOTk2IDAgOS4wMTYxMDM1LTcuMzMzNzIyNyAxNi4zMjUwOTk1LTE2LjM4MDMyODIgMTYuMzI1MDk5NXptLjAyMTMwOTItNy43NTU2MzQyYzQuNzM3MDI3NiAwIDguNTc3MTQ3MS0zLjgyNzE3MiA4LjU3NzE0NzEtOC41NDgyMjc5IDAtNC43MjEwNTYtMy44NDAxMTk1LTguNTQ4MjI4LTguNTc3MTQ3MS04LjU0ODIyOC00LjczNzAyNzUgMC04LjU3NzE0NyAzLjgyNzE3Mi04LjU3NzE0NyA4LjU0ODIyOCAwIDQuNzIxMDU1OSAzLjg0MDExOTUgOC41NDgyMjc5IDguNTc3MTQ3IDguNTQ4MjI3OXoiLz48L2c+PC9zdmc+'; add_menu_page( 'Cookiebot', __( 'Cookiebot', 'cookiebot' ), 'manage_network_options', 'cookiebot_network', array( $this, 'network_settings_page' ), $icon ); add_submenu_page( 'cookiebot_network', __( 'Cookiebot Settings', 'cookiebot' ), __( 'Settings', 'cookiebot' ), 'network_settings_page', 'cookiebot_network', array( $this, 'network_settings_page' ) ); add_submenu_page( 'cookiebot_network', __( 'Cookiebot Support', 'cookiebot' ), __( 'Support', 'cookiebot' ), 'network_settings_page', 'cookiebot_support', array( $this, 'support_page' ) ); } /** * Cookiebot_WP Cookiebot prior consent placeholder page * * @version 1.4.0 * @since 1.0.0 */ public function setting_page_placeholder() { include __DIR__ . DIRECTORY_SEPARATOR . 'addons' . DIRECTORY_SEPARATOR . 'view/admin/settings/setting-page.php'; } /** * Cookiebot_WP Register Cookiebot settings * * @version 3.9.0 * @since 1.0.0 */ public function register_cookiebot_settings() { register_setting( 'cookiebot', 'cookiebot-cbid' ); register_setting( 'cookiebot', 'cookiebot-language' ); register_setting( 'cookiebot', 'cookiebot-nooutput' ); register_setting( 'cookiebot', 'cookiebot-nooutput-admin' ); register_setting( 'cookiebot', 'cookiebot-output-logged-in' ); register_setting( 'cookiebot', 'cookiebot-autoupdate' ); register_setting( 'cookiebot', 'cookiebot-script-tag-uc-attribute' ); register_setting( 'cookiebot', 'cookiebot-script-tag-cd-attribute' ); register_setting( 'cookiebot', 'cookiebot-cookie-blocking-mode' ); register_setting( 'cookiebot', 'cookiebot-consent-mapping' ); register_setting( 'cookiebot-iab', 'cookiebot-iab' ); register_setting( 'cookiebot-legislations', 'cookiebot-ccpa' ); register_setting( 'cookiebot-legislations', 'cookiebot-ccpa-domain-group-id' ); register_setting( 'cookiebot-gtm', 'cookiebot-gtm' ); register_setting( 'cookiebot-gtm', 'cookiebot-gtm-id' ); register_setting( 'cookiebot-gtm', 'cookiebot-data-layer' ); register_setting( 'cookiebot-gtm', 'cookiebot-gcm' ); } /** * Cookiebot_WP Automatic update plugin if activated * * @version 2.2.0 * @since 1.5.0 */ public function automatic_updates( $update, $item ) { //Do not update from subsite on a multisite installation if ( is_multisite() && ! is_main_site() ) { return $update; } //Check if we have everything we need $item = (array) $item; if ( ! isset( $item['new_version'] ) || ! isset( $item['slug'] ) ) { return $update; } //It is not Cookiebot if ( $item['slug'] !== 'cookiebot' ) { return $update; } // Check if cookiebot autoupdate is disabled if ( ! get_option( 'cookiebot-autoupdate', false ) ) { return $update; } // Check if multisite autoupdate is disabled if ( is_multisite() && ! get_site_option( 'cookiebot-autoupdate', false ) ) { return $update; } return true; } /** * Cookiebot_WP Get list of supported languages * * @version 1.4.0 * @since 1.4.0 */ public static function get_supported_languages() { $supported_languages = array(); $supported_languages['nb'] = __( 'Norwegian Bokmål', 'cookiebot' ); $supported_languages['tr'] = __( 'Turkish', 'cookiebot' ); $supported_languages['de'] = __( 'German', 'cookiebot' ); $supported_languages['cs'] = __( 'Czech', 'cookiebot' ); $supported_languages['da'] = __( 'Danish', 'cookiebot' ); $supported_languages['sq'] = __( 'Albanian', 'cookiebot' ); $supported_languages['he'] = __( 'Hebrew', 'cookiebot' ); $supported_languages['ko'] = __( 'Korean', 'cookiebot' ); $supported_languages['it'] = __( 'Italian', 'cookiebot' ); $supported_languages['nl'] = __( 'Dutch', 'cookiebot' ); $supported_languages['vi'] = __( 'Vietnamese', 'cookiebot' ); $supported_languages['ta'] = __( 'Tamil', 'cookiebot' ); $supported_languages['is'] = __( 'Icelandic', 'cookiebot' ); $supported_languages['ro'] = __( 'Romanian', 'cookiebot' ); $supported_languages['si'] = __( 'Sinhala', 'cookiebot' ); $supported_languages['ca'] = __( 'Catalan', 'cookiebot' ); $supported_languages['bg'] = __( 'Bulgarian', 'cookiebot' ); $supported_languages['uk'] = __( 'Ukrainian', 'cookiebot' ); $supported_languages['zh'] = __( 'Chinese', 'cookiebot' ); $supported_languages['en'] = __( 'English', 'cookiebot' ); $supported_languages['ar'] = __( 'Arabic', 'cookiebot' ); $supported_languages['hr'] = __( 'Croatian', 'cookiebot' ); $supported_languages['th'] = __( 'Thai', 'cookiebot' ); $supported_languages['el'] = __( 'Greek', 'cookiebot' ); $supported_languages['lt'] = __( 'Lithuanian', 'cookiebot' ); $supported_languages['pl'] = __( 'Polish', 'cookiebot' ); $supported_languages['lv'] = __( 'Latvian', 'cookiebot' ); $supported_languages['fr'] = __( 'French', 'cookiebot' ); $supported_languages['id'] = __( 'Indonesian', 'cookiebot' ); $supported_languages['mk'] = __( 'Macedonian', 'cookiebot' ); $supported_languages['et'] = __( 'Estonian', 'cookiebot' ); $supported_languages['pt'] = __( 'Portuguese', 'cookiebot' ); $supported_languages['ga'] = __( 'Irish', 'cookiebot' ); $supported_languages['ms'] = __( 'Malay', 'cookiebot' ); $supported_languages['sl'] = __( 'Slovenian', 'cookiebot' ); $supported_languages['ru'] = __( 'Russian', 'cookiebot' ); $supported_languages['ja'] = __( 'Japanese', 'cookiebot' ); $supported_languages['hi'] = __( 'Hindi', 'cookiebot' ); $supported_languages['sk'] = __( 'Slovak', 'cookiebot' ); $supported_languages['es'] = __( 'Spanish', 'cookiebot' ); $supported_languages['sv'] = __( 'Swedish', 'cookiebot' ); $supported_languages['sr'] = __( 'Serbian', 'cookiebot' ); $supported_languages['fi'] = __( 'Finnish', 'cookiebot' ); $supported_languages['eu'] = __( 'Basque', 'cookiebot' ); $supported_languages['hu'] = __( 'Hungarian', 'cookiebot' ); asort( $supported_languages, SORT_LOCALE_STRING ); return $supported_languages; } /** * Cookiebot_WP Output settings page * * @version 3.9.0 * @since 1.0.0 */ public function settings_page() { wp_enqueue_style( 'cookiebot-consent-mapping-table', plugins_url( 'css/consent_mapping_table.css', __FILE__ ), array(), '3.5.0' ); /* Check if multisite */ if ( $is_ms = is_multisite() ) { //Receive settings from multisite - this might change the way we render the form $network_cbid = get_site_option( 'cookiebot-cbid', '' ); $network_scrip_tag_uc_attr = get_site_option( 'cookiebot-script-tag-uc-attribute', 'custom' ); $network_scrip_tag_cd_attr = get_site_option( 'cookiebot-script-tag-cd-attribute', 'custom' ); $network_cookie_blocking_mode = get_site_option( 'cookiebot-cookie-blocking-mode', 'manual' ); } ?>

%s', esc_url( $cookiebot_gdpr_url ), esc_html__( 'General Data Protection Regulation (GDPR)', 'cookiebot' ) ), esc_html__( ' requires you to document each consent. At the same time you must be able to account for what user data you share with embedded third-party services on your website and where in the world the user data is sent.', 'cookiebot' ) ); ?>

placeholder="" style="width:300px" />

   




 
is_wp_consent_api_active() ) { ?>

%s', esc_url( $cookiebot_gdpr_url ), esc_html__( 'General Data Protection Regulation (GDPR)', 'cookiebot' ) ), esc_html__( ' requires you to document each consent. At the same time you must be able to account for what user data you share with embedded third-party services on your website and where in the world the user data is sent.', 'cookiebot' ) ); ?>


   


           



           


/>

/>

[cookie_declaration] shortcode will still be available.', 'cookiebot' ); ?>

See a detailed guide here', 'cookiebot' ); ?>

/>

'cookiebot_network', 'updated' => true, ), network_admin_url( 'admin.php' ) ) ); exit; } /** * Cookiebot_WP Cookiebot support page * * @version 2.2.0 * @since 2.0.0 */ public function support_page() { ?>

  1. ', '' ); ?>
  2. , , and HTML tags esc_html__( 'Go to %1$sManage%2$s > %3$sSettings%4$s and add setup your Cookiebot', 'cookiebot' ), '', '', '', '' ); ?>
  3. and HTML tags esc_html__( 'Go to the %1$s"Your scripts"%2$s tab', 'cookiebot' ), '', '' ); ?>
  4. and HTML tags esc_html__( 'Add %1$s[cookie_declaration]%2$s shortcode to a page to show the declation', 'cookiebot' ), '', '' ); ?>

and HTML tags esc_html__( 'Use the shortcode %1$s[cookie_declaration]%2$s to add the cookie declaration a page or post. The cookie declaration will always show the latest version from Cookiebot.', 'cookiebot' ), '', '' ); ?>
, , and HTML tags esc_html__( 'If you need to force language of the cookie declaration, you can add the %1$slang%2$s attribute. Eg. %3$s[cookie_declaration lang="de"]%4$s.', 'cookiebot' ), '', '', '', '' ); ?>

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-00000000-0', 'auto'); ga('send', 'pageview'); HTML; echo nl2br( esc_html( $output ) ); ?>


' . esc_html( '
* * @version 3.9.0 * @since 1.0.0 */ public function add_js( $print_tag = true ) { $cbid = $this->get_cbid(); if ( ! empty( $cbid ) && ! defined( 'COOKIEBOT_DISABLE_ON_PAGE' ) ) { if ( is_multisite() && get_site_option( 'cookiebot-nooutput', false ) ) { return; //Is multisite - and disabled output is checked as network setting } if ( get_option( 'cookiebot-nooutput', false ) ) { return; //Do not show JS - output disabled } if ( $this->get_cookie_blocking_mode() == 'auto' && $this->can_current_user_edit_theme() && $print_tag !== false && get_site_option( 'cookiebot-output-logged-in' ) == false ) { return; } $lang = $this->get_language(); if ( ! is_multisite() || get_site_option( 'cookiebot-script-tag-uc-attribute', 'custom' ) == 'custom' ) { $tagAttr = get_option( 'cookiebot-script-tag-uc-attribute', 'async' ); } else { $tagAttr = get_site_option( 'cookiebot-script-tag-uc-attribute' ); } if ( $print_tag === false ) { ob_start(); } ?> * * @version 3.8.1 * @since 3.8.1 */ public function add_GTM( $print_tag = true ) { if ( (bool) get_option( 'cookiebot-gtm' ) !== false ) { if ( empty( get_option( 'cookiebot-data-layer' ) ) ) { $data_layer = 'dataLayer'; } else { $data_layer = get_option( 'cookiebot-data-layer' ); } if ( $print_tag === false ) { ob_start(); } ?> * * @version 3.8.1 * @since 3.8.1 */ public function add_GCM( $print_tag = true ) { if ( (bool) get_option( 'cookiebot-gcm' ) !== false ) { if ( empty( get_option( 'cookiebot-data-layer' ) ) ) { $data_layer = 'dataLayer'; } else { $data_layer = get_option( 'cookiebot-data-layer' ); } if ( $print_tag === false ) { ob_start(); } ?> get_cbid(); $lang = ''; if ( ! empty( $cbid ) ) { $atts = shortcode_atts( array( 'lang' => $this->get_language(), ), $atts, 'cookie_declaration' ); if ( ! empty( $atts['lang'] ) ) { $lang = ' data-culture="' . strtoupper( $atts['lang'] ) . '"'; //Use data-culture to define language } if ( ! is_multisite() || get_site_option( 'cookiebot-script-tag-cd-attribute', 'custom' ) == 'custom' ) { $tagAttr = get_option( 'cookiebot-script-tag-cd-attribute', 'async' ); } else { $tagAttr = get_site_option( 'cookiebot-script-tag-cd-attribute' ); } return ''; } else { return esc_html__( 'Please add your Cookiebot ID to show Cookie Declarations', 'cookiebot' ); } } /** * Cookiebot_WP Get cookiebot cbid * * @version 2.2.0 * @since 1.0.0 */ public static function get_cbid() { $cbid = get_option( 'cookiebot-cbid' ); if ( is_multisite() && ( $network_cbid = get_site_option( 'cookiebot-cbid' ) ) ) { if ( empty( $cbid ) ) { return $network_cbid; } } return $cbid; } /** * Cookiebot_WP Get cookie blocking mode (auto | manual) * * @version 2.2.0 * @since 1.0.0 */ public static function get_cookie_blocking_mode() { $cbm = get_option( 'cookiebot-cookie-blocking-mode' ); if ( is_multisite() && ( $network_cbm = get_site_option( 'cookiebot-cookie-blocking-mode' ) ) ) { if ( empty( $cbm ) ) { return $network_cbm; } } if ( empty( $cbm ) ) { $cbm = 'manual'; } return $cbm; } /** * Cookiebot_WP Check if Cookiebot is active in admin * * @version 3.1.0 * @since 3.1.0 */ public static function cookiebot_disabled_in_admin() { if ( is_multisite() && get_site_option( 'cookiebot-nooutput-admin', false ) ) { return true; } elseif ( get_option( 'cookiebot-nooutput-admin', false ) ) { return true; } return false; } /** * Cookiebot_WP Get the language code for Cookiebot * * @version 1.4.0 * @since 1.4.0 */ public function get_language( $onlyFromSetting = false ) { // Get language set in setting page - if empty use WP language info $lang = get_option( 'cookiebot-language' ); if ( ! empty( $lang ) ) { if ( $lang != '_wp' ) { return $lang; } } if ( $onlyFromSetting ) { return $lang; //We want only to get if already set } //Language not set - use WP language if ( $lang == '_wp' ) { $lang = get_bloginfo( 'language' ); //Gets language in en-US format if ( ! empty( $lang ) ) { list( $lang ) = explode( '-', $lang ); //Changes format from eg. en-US to en. } } return $lang; } /** * Cookiebot_WP Adding Cookiebot domain(s) to exclude list for WP Rocket minification. * * @version 1.6.1 * @since 1.6.1 */ public function wp_rocket_exclude_external_js( $external_js_hosts ) { $external_js_hosts[] = 'consent.cookiebot.com'; // Add cookiebot domains $external_js_hosts[] = 'consentcdn.cookiebot.com'; return $external_js_hosts; } /** * Cookiebot_WP Adding Cookiebot domain(s) to exclude list for SGO minification. * * @version 3.6.5 * @since 3.6.5 */ public function sgo_exclude_external_js( $exclude_list ) { //Uses same format as WP Rocket - for now we just use WP Rocket function return wp_rocket_exclude_external_js( $exclude_list ); } /** * Cookiebot_WP Check if WP Cookie Consent API is active * * @version 3.5.0 * @since 3.5.0 */ public function is_wp_consent_api_active() { if ( class_exists( 'WP_CONSENT_API' ) ) { return true; } return false; } /** * Cookiebot_WP Default consent level mappings * * @version 3.5.0 * @since 3.5.0 */ public function get_default_wp_consent_api_mapping() { return array( 'n=1;p=1;s=1;m=1' => array( 'preferences' => 1, 'statistics' => 1, 'statistics-anonymous' => 0, 'marketing' => 1, ), 'n=1;p=1;s=1;m=0' => array( 'preferences' => 1, 'statistics' => 1, 'statistics-anonymous' => 1, 'marketing' => 0, ), 'n=1;p=1;s=0;m=1' => array( 'preferences' => 1, 'statistics' => 0, 'statistics-anonymous' => 0, 'marketing' => 1, ), 'n=1;p=1;s=0;m=0' => array( 'preferences' => 1, 'statistics' => 0, 'statistics-anonymous' => 0, 'marketing' => 0, ), 'n=1;p=0;s=1;m=1' => array( 'preferences' => 0, 'statistics' => 1, 'statistics-anonymous' => 0, 'marketing' => 1, ), 'n=1;p=0;s=1;m=0' => array( 'preferences' => 0, 'statistics' => 1, 'statistics-anonymous' => 0, 'marketing' => 0, ), 'n=1;p=0;s=0;m=1' => array( 'preferences' => 0, 'statistics' => 0, 'statistics-anonymous' => 0, 'marketing' => 1, ), 'n=1;p=0;s=0;m=0' => array( 'preferences' => 0, 'statistics' => 0, 'statistics-anonymous' => 0, 'marketing' => 0, ), ); } /** * Cookiebot_WP Get the mapping between Consent Level API and Cookiebot * Returns array where key is the consent level api category and value * is the mapped Cookiebot category. * * @version 3.5.0 * @since 3.5.0 */ public function get_wp_consent_api_mapping() { $mDefault = $this->get_default_wp_consent_api_mapping(); $mapping = get_option( 'cookiebot-consent-mapping', $mDefault ); $mapping = ( '' === $mapping ) ? $mDefault : $mapping; foreach ( $mDefault as $k => $v ) { if ( ! isset( $mapping[ $k ] ) ) { $mapping[ $k ] = $v; } else { foreach ( $v as $vck => $vcv ) { if ( ! isset( $mapping[ $k ][ $vck ] ) ) { $mapping[ $k ][ $vck ] = $vcv; } } } } return $mapping; } /** * Cookiebot_WP Enqueue JS for integration with WP Consent Level API * * @version 3.5.0 * @since 3.5.0 */ public function cookiebot_enqueue_consent_api_scripts() { wp_register_script( 'cookiebot-wp-consent-level-api-integration', plugins_url( 'cookiebot/js/cookiebot-wp-consent-level-api-integration.js', 'cookiebot' ) ); wp_enqueue_script( 'cookiebot-wp-consent-level-api-integration' ); wp_localize_script( 'cookiebot-wp-consent-level-api-integration', 'cookiebot_category_mapping', $this->get_wp_consent_api_mapping() ); } /** * Display admin notice for recommending cookiebot * * @version 2.0.5 * @since 2.0.5 */ public function cookiebot_admin_notices() { if ( ! $this->cookiebot_valid_admin_recommendation() ) { return false; } $two_week_review_ignore = add_query_arg( array( 'cookiebot_admin_notice' => 'hide' ) ); $two_week_review_temp = add_query_arg( array( 'cookiebot_admin_notice' => 'two_week' ) ); ?>

cookiebot_disabled_in_admin() && $this->get_cookie_blocking_mode() == 'auto' ) { define( 'COOKIEBOT_DISABLE_ON_PAGE', true ); //Disable Cookiebot on the current page } } } /** * Cookiebot_WP Fix plugin conflicts with page builders - whitelist JS files in automode * * @version 3.2.0 * @since 3.3.0 */ public function _cookiebot_plugin_conflict_scripttags( $tag, $handle ) { //Check if Elementor Page Builder active if ( defined( 'ELEMENTOR_VERSION' ) ) { if ( in_array( $handle, array( 'jquery-core', 'elementor-frontend-modules', 'elementor-frontend', 'wp-tinymce', 'underscore', 'backbone', 'backbone-marionette', 'backbone-radio', 'elementor-common-modules', 'elementor-dialog', 'elementor-common', ) ) ) { $tag = str_replace( '