File: /home/frigodor/public_html/wp-content/plugins/complianz-gdpr-premium/config/class-config.php
<?php
defined( 'ABSPATH' ) or die( "you do not have access to this page!" );
if ( ! class_exists( "cmplz_config" ) ) {
class cmplz_config {
private static $_this;
public $fields = array();
public $formal_languages = array();
public $generic_documents_list;
public $supported_states;
public $cookie_consent_converter;
public $language_codes;
public $supported_regions;
public $thirdparty_services
= array(
'activecampaign' => 'Active Campaign',
"adobe-fonts" => 'Adobe Fonts',
'google-fonts' => 'Google Fonts',
'google-recaptcha' => 'Google reCAPTCHA',
"google-maps" => 'Google Maps',
"openstreetmaps" => 'OpenStreetMaps',
"vimeo" => 'Vimeo',
"youtube" => 'YouTube',
"videopress" => 'VideoPress',
"dailymotion" => 'Dailymotion',
"soundcloud" => 'SoundCloud',
"twitch" => 'Twitch',
"paypal" => 'PayPal',
"spotify" => 'Spotify',
"hotjar" => 'Hotjar',
"addthis" => 'AddThis',
"addtoany" => 'AddToAny',
"sharethis" => 'ShareThis',
"livechat" => 'LiveChat',
"hubspot" => 'HubSpot',
"calendly" => 'Calendly',
"microsoftads" => 'Microsoft Ads'
);
public $thirdparty_socialmedia
= array(
'facebook' => 'Facebook',
'twitter' => 'Twitter',
'linkedin' => 'LinkedIn',
'whatsapp' => 'WhatsApp',
'instagram' => 'Instagram',
'tiktok' => 'TikTok',
'disqus' => 'Disqus',
'pinterest' => 'Pinterest',
);
/**
* The services for which a placeholder exists in the assets/images/placeholders folder.
* @var array
*/
public $placeholders;
/**
* This is used in the scan function to tell the user he/she uses social media
* Also in the function to determine a media type for the placeholders
* Based on this the cookie warning is enabled.
*
* */
public $social_media_markers
= array(
"linkedin" => array(
"platform.linkedin.com",
'addthis_widget.js',
'linkedin.com/embed/feed'
),
"twitter" => array(
'super-socializer',
'sumoSiteId',
'addthis_widget.js',
"platform.twitter.com",
'twitter-widgets.js'
),
"facebook" => array(
'fbq',
'super-socializer',
'sumoSiteId',
'addthis_widget.js',
"fb-root",
"<!-- Facebook Pixel Code -->",
'connect.facebook.net',
'www.facebook.com/plugins',
'pixel-caffeine',
'facebook.com/plugins',
),
"pinterest" => array(
'super-socializer',
'assets.pinterest.com'
),
"disqus" => array( 'disqus.com' ),
"tiktok" => array( 'tiktok.com' ),
"instagram" => array(
'instawidget.net/js/instawidget.js',
'instagram.com',
),
);
/**
* Scripts with this string in the content get listed in the third party list.
* Also used in cmplz_placeholder()
* */
public $thirdparty_service_markers
= array(
"google-maps" => array(
'apis.google.com/js/platform.js',
'new google.maps.',
'google.com/maps',
'maps.google.com',
'wp-google-maps',
'new google.maps.InfoWindow',
'new google.maps.Marker',
'new google.maps.Map',
'var mapOptions',
'var map',
'var Latlng',
),
"soundcloud" => array( 'w.soundcloud.com/player' ),
"openstreetmaps" => array(
'openstreetmap.org',
'osm/js/osm'
),
"vimeo" => array(
'player.vimeo.com',
'i.vimeocdn.com',
),
"google-recaptcha" => array(
'google.com/recaptcha',
'grecaptcha',
'recaptcha.js',
'recaptcha/api'
),
"youtube" => array(
'youtube.com',
'youtube-nocookie.com',
'youtu.be',
'yotuwp',
),
"videopress" => array(
'videopress.com/embed',
'videopress.com/videopress-iframe.js'
),
"dailymotion" => array( 'dailymotion.com/embed/video/' ),
"hotjar" => array( 'static.hotjar.com' ),
"spotify" => array( 'open.spotify.com/embed' ),
"google-fonts" => array( 'fonts.googleapis.com' ),
"paypal" => array(
'www.paypal.com/tagmanager/pptm.js',
'www.paypalobjects.com/api/checkout.js'
),
"disqus" => array( 'disqus.com' ),
"addthis" => array( 'addthis.com' ),
"addtoany" => array( 'static.addtoany.com/menu/page.js' ),
"sharethis" => array( 'sharethis.com' ),
"microsoftads" => array('bat.bing.com'),
"livechat" => array( 'cdn.livechatinc.com/tracking.js' ),
"hubspot" => array( 'js.hs-scripts.com/', 'hbspt.forms.create', 'js.hsforms.net','track.hubspot.com','js.hs-analytics.net'),
"calendly" => array( 'assets.calendly.com' ),
"twitch" => array( 'twitch.tv', 'player.twitch.tv'),
"adobe-fonts" => array( 'p.typekit.net', 'use.typekit.net'),
);
public $stats
= array(
'google-analytics' => 'Google Analytics',
'google-tag-manager' => 'Tag Manager',
'matomo' => 'Matomo',
'clicky' => 'Clicky',
'yandex' => 'Yandex',
'clarity' => 'Clarity',
);
public $stats_markers = array(
'google-analytics' => array(
'google-analytics.com/ga.js',
'www.google-analytics.com/analytics.js',
'_getTracker',
"gtag('js'",
),
'google-tag-manager' => array(
'gtm.start',
'gtm.js',
),
'matomo' => array( 'piwik.js', 'matomo.js' ),
'clicky' => array( 'static.getclicky.com/js', 'clicky_site_ids' ),
'yandex' => array( 'mc.yandex.ru/metrika/watch.js' ),
'clarity' => array( 'clarity.ms' ),
);
public $amp_tags
= array(
'amp-ad-exit',
'amp-ad',
'amp-analytics',
'amp-auto-ads',
'amp-call-tracking',
'amp-experiment',
'amp-pixel',
'amp-sticky-ad',
// Dynamic content.
'amp-google-document-embed',
'amp-gist',
// Media.
'amp-brightcove',
'amp-dailymotion',
'amp-hulu',
'amp-soundcloud',
'amp-vimeo',
'amp-youtube',
'amp-iframe',
// Social.
'amp-addthis',
'amp-beopinion',
'amp-facebook-comments',
'amp-facebook-like',
'amp-facebook-page',
'amp-facebook',
'amp-gfycat',
'amp-instagram',
'amp-pinterest',
'amp-reddit',
'amp-riddle-quiz',
'amp-social-share',
'amp-twitter',
'amp-vine',
'amp-vk',
);
public $lawful_bases;
public $sections;
public $pages = array();
public $warning_types;
public $yes_no;
public $countries;
public $purposes;
public $details_per_purpose_us;
public $regions;
public $eu_countries;
public $collected_info_children;
function __construct() {
if ( isset( self::$_this ) ) {
wp_die( sprintf( '%s is a singleton class and you cannot create a second instance.',
get_class( $this ) ) );
}
self::$_this = $this;
/**
* The legal version is only updated when document contents or the questions leading to it are changed
* 1: start version
* 2: introduction of US privacy questions
* 3: new questions
* 4: new questions
* 5: UK as separate region
* 6: CA as separate region
* 7: Impressum in germany
* */
define( 'CMPLZ_LEGAL_VERSION', '8' );
require_once( cmplz_path . '/config/countries.php' );
//common options type
$this->yes_no = array(
'yes' => __( 'Yes', 'complianz-gdpr' ),
'no' => __( 'No', 'complianz-gdpr' ),
);
$this->lawful_bases = [
'1' => __('I obtain permission from the person concerned', 'complianz-gdpr'),
'2' => __('It is necessary for the execution of an agreement with the person concerned', 'complianz-gdpr'),
'3' => __('I am obligated by law', 'complianz-gdpr'),
'4' => __('It is necessary to fulfilll a task concerning public law', 'complianz-gdpr'),
'5' => __('It is necessary for my own legitimate interest, and that interest outweighs the interest of the person concerned', 'complianz-gdpr'),
'6' => __('It is necessary to protect the life or physical safety of a person', 'complianz-gdpr'),
];
$this->placeholders = array(
'default' => __('Default','complianz-gdpr'),
'calendly' => 'Calendly',
'facebook' => 'Facebook',
'google-maps' => 'Google Maps',
'google-recaptcha' => 'Google Recaptcha',
'instagram' => 'Instagram',
'openstreetmaps' => 'Open Street Maps',
'soundcloud' => 'SoundCloud',
'spotify' => 'Spotify',
'ted' => 'Ted',
'twitter' => 'Twitter',
'tiktok' => 'Tik Tok'
);
require_once( cmplz_path . '/config/purpose.php' );
require_once( cmplz_path . '/config/documents/documents.php' );
//always load the fields, for translation purposes etc.
require_once( cmplz_path . 'settings/config/config.php' );
if ( file_exists(cmplz_path . 'pro/settings/config.php') ) {
require_once( cmplz_path . 'pro/settings/config.php');
require_once( cmplz_path . 'pro/config/dynamic-document-elements.php');
}
require_once( cmplz_path . '/cookiebanner/settings.php' );
/**
* Preload fields with a filter, to allow for overriding types
*/
add_action( 'plugins_loaded', array( $this, 'init' ), 10 );
add_action( 'plugins_loaded', array( $this, 'load_pages' ), 10 );
}
static function this() {
return self::$_this;
}
/**
* Get full array of regions, but only active ones
* @return array
*/
public function active_regions(){
return array_intersect_key( COMPLIANZ::$config->regions, cmplz_get_regions(false, 'short') );
}
public function init(){
/**
* For the Brazil privacy law there are some additional options. These should only be enabled when the only chosen region is Brazil.
*/
if ( cmplz_has_region('br') && cmplz_multiple_regions() == false) {
$this->lawful_bases['7'] = __('It is necessary to carry out studies by a research body, ensuring, whenever possible, the anonymization of personal data', 'complianz-gdpr');
$this->lawful_bases['8'] = __('It is necessary for the regular exercise of rights in judicial, administrative or arbitration proceedings', 'complianz-gdpr');
$this->lawful_bases['9'] = __('It is necessary for the protection of health, exclusively, in a procedure performed by health professionals, health services or health authority', 'complianz-gdpr');
$this->lawful_bases['10'] = __('It is necessary for credit protection', 'complianz-gdpr');
}
$files = [];
$regions = cmplz_get_regions();
$privacy_statement = cmplz_get_option( 'privacy-statement' ) === 'generated';
$files[] = '/pro/config/documents/documents.php';
foreach ($regions as $region) {
$files[] = "/config/documents/cookie-policy-$region.php";
if ($privacy_statement) $files[] = "/pro/config/documents/$region/privacy-policy.php";
$files[] = "/pro/config/documents/$region/privacy-policy-children.php";
}
if (cmplz_get_option( 'disclaimer' ) === 'generated') $files[] = '/pro/config/documents/disclaimer.php';
if (cmplz_get_option( 'impressum' ) === 'generated') $files[] = '/pro/config/documents/impressum.php';
foreach ($files as $file) {
if ( file_exists( cmplz_path . $file ) ) {
require_once( cmplz_path . $file );
}
}
$this->stats_markers = apply_filters( 'cmplz_stats_markers', $this->stats_markers );
//ensure that indexes are sequential with array_values
$this->fields = array_values(apply_filters( 'cmplz_fields', [] ));
}
public function load_pages(){
$this->pages = apply_filters( 'cmplz_pages_load_types', $this->pages );
$regions = cmplz_get_regions();
foreach ($regions as $region) {
if ( !isset( $this->pages[ $region ] ) ) {
continue;
}
foreach ( $this->pages[ $region ] as $type => $data ) {
if ( !isset( $this->pages[ $region ][ $type ]['document_elements'] ) ) {
continue;
}
$this->pages[ $region ][ $type ]['document_elements'] = apply_filters( 'cmplz_document_elements', $this->pages[ $region ][ $type ]['document_elements'], $region, $type, $this->fields );
}
}
}
} //class closure
}