=> 'gdpr', '_rootDomain' => $this->get_cookie_domain(), '_block' => true, '_showBanner' => true, '_bannerConfig' => $this->prepare_config(), '_version' => $this->version, '_logConsent' => isset( $settings['consent_logs']['status'] ) && true === $settings['consent_logs']['status'] ? true : false, '_tags' => $this->prepare_tags(), '_shortCodes' => $this->prepare_shortcodes( $banner->get_settings() ), '_rtl' => $this->is_rtl(), '_language' => cky_current_language(), ); foreach ( $this->providers as $key => $value ) { $providers[] = array( 're' => $key, 'categories' => $value, ); } $store['_providersToBlock'] = $providers; return $store; } /** * Return cookie domain * * @return string */ public function get_cookie_domain() { return apply_filters( 'cky_cookie_domain', '' ); } /** * Get cookie groups * * @return array */ public function get_cookie_groups() { $cookie_groups = array(); $categories = \CookieYes\Lite\Admin\Modules\Cookies\Includes\Category_Controller::get_instance()->get_items(); foreach ( $categories as $category ) { $category = new \CookieYes\Lite\Admin\Modules\Cookies\Includes\Cookie_Categories( $category ); $cookie_groups[] = array( 'name' => $category->get_name( cky_current_language() ), 'slug' => $category->get_slug(), 'isNecessary' => 'necessary' === $category->get_slug() ? true : false, 'ccpaDoNotSell' => $category->get_sell_personal_data(), 'cookies' => $this->get_cookies( $category ), 'active' => true, 'defaultConsent' => array( 'gdpr' => $category->get_prior_consent(), 'ccpa' => 'necessary' === $category->get_slug() || $category->get_sell_personal_data() === false ? true : false, ), ); } return $cookie_groups; } /** * Get cookies by category * * @param object $category Category object. * @return array */ public function get_cookies( $category = '' ) { $cookies = array(); $cat_slug = $category->get_slug(); $items = \CookieYes\Lite\Admin\Modules\Cookies\Includes\Cookie_Controller::get_instance()->get_items_by_category( $category->get_id() ); foreach ( $items as $item ) { $cookie = new \CookieYes\Lite\Admin\Modules\Cookies\Includes\Cookie( $item->cookie_id ); $cookies[] = array( 'cookieID' => $cookie->get_name(), 'domain' => $cookie->get_domain(), 'provider' => $cookie->get_url_pattern(), ); $provider = $cookie->get_url_pattern(); if ( '' !== $provider && 'necessary' !== $cat_slug ) { if ( ! isset( $this->providers[ $provider ] ) ) { $this->providers[ $provider ] = array(); } if ( isset( $this->providers[ $provider ] ) && ! in_array( $cat_slug, $this->providers[ $provider ], true ) ) { $this->providers[ $provider ][] = $cat_slug; } } } return $cookies; } /** * Prepare the HTML elements tags for front-end script. * * @return array */ public function prepare_tags() { $data = array(); if ( ! $this->banner ) { return; } $settings = $this->banner->get_settings(); $configs = isset( $settings['config'] ) ? $settings['config'] : array(); $supported = array( 'accept-button', 'reject-button', 'settings-button', 'readmore-button', 'donotsell-button', 'show-desc-button', 'hide-desc-button', 'cky-always-active', 'cky-link', 'accept-button', 'revisit-consent', ); foreach ( $supported as $tag ) { $config = cky_array_search( $configs, 'tag', $tag ); $data[] = array( 'tag' => $tag, 'styles' => isset( $config['styles'] ) ? $config['styles'] : array(), ); } return $data; } /** * Prepare config for the front-end processing * * @return array */ public function prepare_config() { $data = array(); $banner = $this->banner; if ( ! $banner ) { return $data; } $properties = $banner->get_settings(); $data['settings']['type'] = $properties['settings']['type']; $data['settings']['preferenceCenterType'] = $properties['settings']['type'] === "classic" ? "pushdown" : $properties['settings']['preferenceCenterType']; $data['settings']['position'] = $properties['settings']['position']; $data['settings']['applicableLaw'] = $properties['settings']['applicableLaw']; $data['behaviours']['reloadBannerOnAccept'] = $properties['behaviours']['reloadBannerOnAccept']['status']; $data['behaviours']['loadAnalyticsByDefault'] = $properties['behaviours']['loadAnalyticsByDefault']['status']; $data['behaviours']['animations'] = $properties['behaviours']['animations']; $data['config']['revisitConsent'] = $properties['config']['revisitConsent']; $data['config']['preferenceCenter']['toggle'] = $properties['config']['preferenceCenter']['elements']['categories']['elements']['toggle']; $data['config']['categoryPreview']['status'] = $properties['config']['categoryPreview']['status']; $data['config']['categoryPreview']['toggle'] = $properties['config']['categoryPreview']['elements']['toggle']; $data['config']['videoPlaceholder']['status'] = $properties['config']['videoPlaceholder']['status']; $data['config']['videoPlaceholder']['styles'] = array_merge( $properties['config']['videoPlaceholder']['styles'], $properties['config']['videoPlaceholder']['elements']['title']['styles'] ); $data['config']['readMore'] = $properties['config']['notice']['elements']['buttons']['elements']['readMore']; $data['config']['showMore'] = $properties['config']['accessibilityOverrides']['elements']['preferenceCenter']['elements']['showMore'] ?? array(); $data['config']['showLess'] = $properties['config']['accessibilityOverrides']['elements']['preferenceCenter']['elements']['showLess'] ?? array(); $data['config']['alwaysActive'] = $properties['config']['accessibilityOverrides']['elements']['preferenceCenter']['elements']['alwaysActive'] ?? array(); $data['config']['manualLinks'] = $properties['config']['accessibilityOverrides']['elements']['manualLinks'] ?? array(); $data['config']['auditTable']['status'] = $properties['config']['auditTable']['status']; $data['config']['optOption']['status'] = $properties['config']['optoutPopup']['elements']['optOption']['status']; $data['config']['optOption']['toggle'] = $properties['config']['optoutPopup']['elements']['optOption']['elements']['toggle']; return $data; } /** * Prepare shortcodes to be used on visitor side. * * @param array $properties Banner properties. * @return array */ public function prepare_shortcodes( $properties = array() ) { $settings = isset( $properties['settings'] ) ? $properties['settings'] : array(); $version_id = isset( $settings['versionID'] ) ? $settings['versionID'] : 'default'; $shortcodes = new \CookieYes\Lite\Frontend\Modules\Shortcodes\Shortcodes( $this->banner, $version_id ); $data = array(); $configs = ( isset( $properties['config'] ) && is_array( $properties['config'] ) ) ? $properties['config'] : array(); $config = cky_array_search( $configs, 'tag', 'readmore-button' ); $attributes = array(); if ( isset( $config['meta']['noFollow'] ) && true === $config['meta']['noFollow'] ) { $attributes['rel'] = 'nofollow'; } if ( isset( $config['meta']['newTab'] ) && true === $config['meta']['newTab'] ) { $attributes['target'] = '_blank'; } $data[] = array( 'key' => 'cky_readmore', 'content' => do_shortcode( '[cky_readmore]' ), 'tag' => 'readmore-button', 'status' => isset( $config['status'] ) && true === $config['status'] ? true : false, 'attributes' => $attributes, ); $data[] = array( 'key' => 'cky_show_desc', 'content' => do_shortcode( '[cky_show_desc]' ), 'tag' => 'show-desc-button', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_hide_desc', 'content' => do_shortcode( '[cky_hide_desc]' ), 'tag' => 'hide-desc-button', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_optout_show_desc', 'content' => do_shortcode( '[cky_optout_show_desc]' ), 'tag' => 'optout-show-desc-button', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_optout_hide_desc', 'content' => do_shortcode( '[cky_optout_hide_desc]' ), 'tag' => 'optout-hide-desc-button', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_category_toggle_label', 'content' => do_shortcode( '[cky_category_toggle_label]' ), 'tag' => '', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_enable_category_label', 'content' => do_shortcode( '[cky_enable_category_label]' ), 'tag' => '', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_disable_category_label', 'content' => do_shortcode( '[cky_disable_category_label]' ), 'tag' => '', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_video_placeholder', 'content' => do_shortcode( '[cky_video_placeholder]' ), 'tag' => '', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_enable_optout_label', 'content' => do_shortcode( '[cky_enable_optout_label]' ), 'tag' => '', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_disable_optout_label', 'content' => do_shortcode( '[cky_disable_optout_label]' ), 'tag' => '', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_optout_toggle_label', 'content' => do_shortcode( '[cky_optout_toggle_label]' ), 'tag' => '', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_optout_option_title', 'content' => do_shortcode( '[cky_optout_option_title]' ), 'tag' => '', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_optout_close_label', 'content' => do_shortcode( '[cky_optout_close_label]' ), 'tag' => '', 'status' => true, 'attributes' => array(), ); $data[] = array( 'key' => 'cky_preference_close_label', 'content' => do_shortcode( '[cky_preference_close_label]' ), 'tag' => '', 'status' => true, 'attributes' => array(), ); return $data; } /** * Determines whether the current/given language code is right-to-left (RTL) * * @param string $language Current language. * @return boolean */ public function is_rtl( $language = '' ) { if ( ! $language ) { $language = cky_current_language(); } return in_array( $language, array( 'ar', 'az', 'dv', 'he', 'ku', 'fa', 'ur' ), true ); } /** * Check whether the WP Consent API plugin is enabled * * @return boolean */ public function is_wpconsentapi_enabled() { return class_exists( 'WP_CONSENT_API' ); } /** * Check whether the Google Site Kit plugin is enabled * * @return boolean */ public function is_gsk_enabled() { if ( ! function_exists( 'is_plugin_active' ) ) { include_once ABSPATH . 'wp-admin/includes/plugin.php'; } return is_plugin_active( 'google-site-kit/google-site-kit.php' ); } }