1044 lines
35 KiB
PHP
1044 lines
35 KiB
PHP
<?php
|
|
defined( 'ABSPATH' ) or die();
|
|
add_action( 'init', 'cmplz_check_upgrade', 10, 2 );
|
|
|
|
/**
|
|
* Run an upgrade procedure if the version has changed
|
|
*/
|
|
function cmplz_check_upgrade() {
|
|
#only run upgrade check if cron, or if admin.
|
|
if ( !is_admin() && !wp_doing_cron() ) {
|
|
return;
|
|
}
|
|
|
|
$prev_version = get_option( 'cmplz-current-version', false );
|
|
$force = isset( $_GET['cmplz_upgrade'] ) && cmplz_user_can_manage();
|
|
$new_version = cmplz_version;
|
|
//strip off everything after '#'
|
|
if ( strpos( $new_version, '#' ) !== false ) {
|
|
$new_version = substr( $new_version, 0, strpos( $new_version, '#' ) );
|
|
}
|
|
|
|
if ( !$force && $prev_version === $new_version ) {
|
|
return;
|
|
}
|
|
|
|
//trigger table upgrades
|
|
do_action("cmplz_install_tables");
|
|
|
|
/**
|
|
* Set a "first version" variable, so we can check if some notices need to be shown
|
|
*/
|
|
if ( ! $prev_version ) {
|
|
update_option( 'cmplz_first_version', $new_version, false );
|
|
}
|
|
|
|
/*
|
|
* change googlemaps into google-maps
|
|
* */
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '4.0.0', '<' )
|
|
) {
|
|
$wizard_settings = get_option( 'complianz_options_wizard' );
|
|
if ( isset( $wizard_settings['thirdparty_services_on_site']['googlemaps'] )
|
|
&& $wizard_settings['thirdparty_services_on_site']['googlemaps']
|
|
== 1
|
|
) {
|
|
unset( $wizard_settings['thirdparty_services_on_site']['googlemaps'] );
|
|
$wizard_settings['thirdparty_services_on_site']['google-maps'] = 1;
|
|
update_option( 'complianz_options_wizard', $wizard_settings );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* upgrade existing eu and uk settings to separate uk optinstats
|
|
*/
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '4.0.0', '<' )
|
|
) {
|
|
if ( cmplz_has_region( 'eu' ) && cmplz_has_region( 'uk' ) ) {
|
|
$banners = cmplz_get_cookiebanners();
|
|
foreach ( $banners as $banner ) {
|
|
$banner = cmplz_get_cookiebanner( $banner->ID );
|
|
$banner->use_categories_optinstats
|
|
= $banner->use_categories;
|
|
$banner->save();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* migrate to anonymous if anonymous settings are selected
|
|
*/
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '4.0.4', '<' )
|
|
) {
|
|
$selected_stat_service = cmplz_get_option( 'compile_statistics' );
|
|
if ( $selected_stat_service === 'google-analytics'
|
|
|| $selected_stat_service === 'matomo'
|
|
|| $selected_stat_service === 'google-tag-manager'
|
|
) {
|
|
$service_name
|
|
= COMPLIANZ::$banner_loader->convert_slug_to_name( $selected_stat_service );
|
|
|
|
//check if we have ohter types of this service, to prevent double services here.
|
|
$service_anonymized = new CMPLZ_SERVICE( $service_name . ' (anonymized)' );
|
|
$service = new CMPLZ_SERVICE( $service_name );
|
|
|
|
//check if we have two service types. If so, just delete the anonymized one
|
|
if ( $service_anonymized->ID && $service->ID ) {
|
|
$service_anonymized->delete();
|
|
} else if ( $service_anonymized->ID && ! $service->ID ) {
|
|
//just one. If it's the anonymous service, rename, and save it.
|
|
$service_anonymized->name = $service_name;
|
|
$service_anonymized->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* upgrade publish date to more generic unix
|
|
*/
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '4.2', '<' )
|
|
) {
|
|
$publish_date = strtotime( get_option( 'cmplz_publish_date' ) );
|
|
if ( intval( $publish_date ) > 0 ) {
|
|
update_option( 'cmplz_publish_date',
|
|
intval( $publish_date ) );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* upgrade to new custom and generated document settings
|
|
*/
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '4.4.0', '<' )
|
|
) {
|
|
//upgrade cookie policy setting to new field
|
|
$wizard_settings = get_option( 'complianz_options_wizard' );
|
|
if ( isset( $wizard_settings["cookie-policy-type"] ) ) {
|
|
$value = $wizard_settings["cookie-policy-type"];
|
|
unset( $wizard_settings["cookie-policy-type"] );
|
|
//upgrade cookie policy custom url
|
|
if ( $value === 'custom' ) {
|
|
$url = cmplz_get_option( 'custom-cookie-policy-url' );
|
|
update_option( "cmplz_cookie-statement_custom_page", $url );
|
|
unset( $wizard_settings["custom-cookie-policy-url"] );
|
|
} else {
|
|
$value = 'generated';
|
|
}
|
|
} else {
|
|
$value = 'generated';
|
|
}
|
|
|
|
$wizard_settings['cookie-statement'] = $value;
|
|
$wizard_settings['impressum'] = 'none';
|
|
|
|
//upgrade privacy statement settings
|
|
$value = $wizard_settings["privacy-statement"];
|
|
|
|
if ( $value === 'yes' ) {
|
|
$value = 'generated';
|
|
} else {
|
|
$wp_privacy_policy = get_option( 'wp_page_for_privacy_policy' );
|
|
if ( $wp_privacy_policy ) {
|
|
$value = 'custom';
|
|
update_option( "cmplz_privacy-statement_custom_page", $wp_privacy_policy );
|
|
} else {
|
|
$value = 'none';
|
|
}
|
|
}
|
|
$wizard_settings['privacy-statement'] = $value;
|
|
|
|
//upgrade disclaimer settings
|
|
$value = $wizard_settings["disclaimer"];
|
|
if ( $value === 'yes' ) {
|
|
$value = 'generated';
|
|
} else {
|
|
$value = 'none';
|
|
}
|
|
$wizard_settings['disclaimer'] = $value;
|
|
|
|
//save the data
|
|
update_option( 'complianz_options_wizard', $wizard_settings );
|
|
}
|
|
|
|
/**
|
|
* upgrade to new category field
|
|
*/
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '4.6.0', '<' )
|
|
) {
|
|
|
|
$banners = cmplz_get_cookiebanners();
|
|
if ( $banners ) {
|
|
foreach ( $banners as $banner_item ) {
|
|
$banner = new CMPLZ_COOKIEBANNER( $banner_item->ID, false );
|
|
$banner->banner_version ++;
|
|
if ( $banner->use_categories ) {
|
|
$banner->use_categories = 'legacy';
|
|
} else {
|
|
$banner->use_categories = 'no';
|
|
}
|
|
if ( $banner->use_categories_optinstats ) {
|
|
$banner->use_categories_optinstats = 'legacy';
|
|
} else {
|
|
$banner->use_categories_optinstats = 'no';
|
|
}
|
|
//also set the deny button to banner color, to make sure users start with correct colors
|
|
$banner->functional_background_color = $banner->colorpalette_background['color'];
|
|
$banner->functional_border_color = $banner->colorpalette_background['border'];
|
|
$banner->functional_text_color = $banner->colorpalette_text['color'];
|
|
$banner->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* migrate policy id to network option for multisites
|
|
*/
|
|
|
|
if ( $prev_version && version_compare( $prev_version, '4.6.7', '<' )
|
|
) {
|
|
if ( is_multisite() ) {
|
|
update_site_option( 'complianz_active_policy_id', get_option( 'complianz_active_policy_id', 1 ) );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* migrate odd numbers
|
|
*/
|
|
if ( $prev_version && version_compare( $prev_version, '4.6.8', '<' )
|
|
) {
|
|
$banners = cmplz_get_cookiebanners();
|
|
if ( $banners ) {
|
|
foreach ( $banners as $banner_item ) {
|
|
$banner = cmplz_get_cookiebanner( $banner_item->ID );
|
|
if ( $banner->banner_width % 2 == 1 ) {
|
|
$banner->banner_width ++;
|
|
}
|
|
$banner->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '4.7.1', '<' )
|
|
) {
|
|
//upgrade cookie policy setting to new field
|
|
$wizard_settings = get_option( 'complianz_options_wizard' );
|
|
$wizard_settings['block_recaptcha_service'] = 'yes';
|
|
update_option( 'complianz_options_wizard', $wizard_settings );
|
|
}
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '4.9.6', '<' )
|
|
) {
|
|
//this branch aims to revoke consent and clear all cookies. We increase the policy id to do this.
|
|
COMPLIANZ::$banner_loader->upgrade_active_policy_id();
|
|
}
|
|
|
|
/**
|
|
* upgrade to new cookie banner, and 5.0 message option
|
|
*/
|
|
|
|
if ( $prev_version && version_compare( $prev_version, '5.0.0', '<' ) ) {
|
|
update_option( 'cmplz_upgraded_to_five', true, false );
|
|
|
|
//clear notices cache, as the array structure has changed
|
|
delete_transient( 'complianz_warnings' );
|
|
global $wpdb;
|
|
|
|
$banners = cmplz_get_cookiebanners();
|
|
if ( $banners ) {
|
|
foreach ( $banners as $banner_item ) {
|
|
$banner = new CMPLZ_COOKIEBANNER( $banner_item->ID, false );
|
|
$sql = $wpdb->prepare("select * from {$wpdb->prefix}cmplz_cookiebanners where ID = %s", $banner_item->ID);
|
|
$result = $wpdb->get_row( $sql );
|
|
|
|
if ( $result ) {
|
|
//reset to arrays
|
|
if (!is_array($banner->colorpalette_background)) {
|
|
$banner->colorpalette_background = array();
|
|
}
|
|
if (!is_array($banner->colorpalette_text)) {
|
|
$banner->colorpalette_text = array();
|
|
}
|
|
if (!is_array($banner->colorpalette_toggles)) {
|
|
$banner->colorpalette_toggles = array();
|
|
}
|
|
if (!is_array($banner->colorpalette_button_accept)) {
|
|
$banner->colorpalette_button_accept = array();
|
|
}
|
|
if (!is_array($banner->colorpalette_button_deny)) {
|
|
$banner->colorpalette_button_deny = array();
|
|
}
|
|
if (!is_array($banner->colorpalette_button_settings)) {
|
|
$banner->colorpalette_button_settings = array();
|
|
}
|
|
$banner->colorpalette_background['color'] = empty( $result->popup_background_color ) ? '#f1f1f1' : $result->popup_background_color;
|
|
$banner->colorpalette_background['border'] = empty( $result->popup_background_color ) ? '#f1f1f1' : $result->popup_background_color;
|
|
$banner->colorpalette_text['color'] = empty( $result->popup_text_color ) ? '#191e23' : $result->popup_text_color;
|
|
$banner->colorpalette_text['hyperlink'] = empty( $result->popup_text_color ) ? '#191e23' : $result->popup_text_color;
|
|
$banner->colorpalette_toggles['background'] = empty( $result->slider_background_color ) ? '#21759b' : $result->slider_background_color;
|
|
$banner->colorpalette_toggles['bullet'] = empty( $result->slider_bullet_color ) ? '#ffffff' : $result->slider_bullet_color;
|
|
$banner->colorpalette_toggles['inactive'] = empty( $result->slider_background_color_inactive ) ? '#F56E28' : $result->slider_background_color_inactive;
|
|
|
|
$consenttypes = cmplz_get_used_consenttypes();
|
|
$optout_only = false;
|
|
if ( in_array( 'optout', $consenttypes ) && count( $consenttypes ) === 1 ) {
|
|
$optout_only = true;
|
|
}
|
|
|
|
if ( $banner->use_categories === 'no' || $optout_only ) {
|
|
$banner->colorpalette_button_accept['background'] = empty( $result->button_background_color ) ? '#21759b' : $result->button_background_color;
|
|
$banner->colorpalette_button_accept['border'] = empty( $result->border_color ) ? '#21759b' : $result->border_color;
|
|
$banner->colorpalette_button_accept['text'] = empty( $result->button_text_color ) ? '#ffffff' : $result->button_text_color;
|
|
} else {
|
|
$banner->colorpalette_button_accept['background'] = empty( $result->accept_all_background_color ) ? '#21759b' : $result->accept_all_background_color;
|
|
$banner->colorpalette_button_accept['border'] = empty( $result->accept_all_border_color ) ? '#21759b' : $result->accept_all_border_color;
|
|
$banner->colorpalette_button_accept['text'] = empty( $result->accept_all_text_color ) ? '#ffffff' : $result->accept_all_text_color;
|
|
}
|
|
$banner->colorpalette_button_deny['background'] = empty( $result->functional_background_color ) ? '#f1f1f1' : $result->functional_background_color;
|
|
$banner->colorpalette_button_deny['border'] = empty( $result->functional_border_color ) ? '#f1f1f1' : $result->functional_border_color;
|
|
$banner->colorpalette_button_deny['text'] = empty( $result->functional_text_color ) ? '#21759b' : $result->functional_text_color;
|
|
|
|
$banner->colorpalette_button_settings['background'] = empty( $result->button_background_color ) ? '#f1f1f1' : $result->button_background_color;
|
|
$banner->colorpalette_button_settings['border'] = empty( $result->border_color ) ? '#21759b' : $result->border_color;
|
|
$banner->colorpalette_button_settings['text'] = empty( $result->button_text_color ) ? '#21759b' : $result->button_text_color;
|
|
if ( $banner->theme === 'edgeless' ) {
|
|
$banner->buttons_border_radius = array(
|
|
'top' => '0',
|
|
'right' => '0',
|
|
'bottom' => '0',
|
|
'left' => '0',
|
|
'type' => 'px',
|
|
);
|
|
}
|
|
|
|
$banner->save();
|
|
}
|
|
|
|
}
|
|
}
|
|
/**
|
|
* Move custom scripts from 'wizard' to 'custom-scripts'
|
|
*/
|
|
//upgrade cookie policy setting to new field
|
|
$wizard_settings = get_option( 'complianz_options_wizard' );
|
|
$custom_scripts = array();
|
|
if ( isset( $wizard_settings['statistics_script'] ) ) {
|
|
$custom_scripts['statistics_script'] = $wizard_settings['statistics_script'];
|
|
}
|
|
if ( isset( $wizard_settings['cookie_scripts'] ) ) {
|
|
$custom_scripts['cookie_scripts'] = $wizard_settings['cookie_scripts'];
|
|
}
|
|
if ( isset( $wizard_settings['cookie_scripts_async'] ) ) {
|
|
$custom_scripts['cookie_scripts_async'] = $wizard_settings['cookie_scripts_async'];
|
|
}
|
|
if ( isset( $wizard_settings['thirdparty_scripts'] ) ) {
|
|
$custom_scripts['thirdparty_scripts'] = $wizard_settings['thirdparty_scripts'];
|
|
}
|
|
if ( isset( $wizard_settings['thirdparty_iframes'] ) ) {
|
|
$custom_scripts['thirdparty_iframes'] = $wizard_settings['thirdparty_iframes'];
|
|
}
|
|
unset( $wizard_settings['statistics_script'] );
|
|
unset( $wizard_settings['cookie_scripts'] );
|
|
unset( $wizard_settings['cookie_scripts_async'] );
|
|
unset( $wizard_settings['thirdparty_scripts'] );
|
|
unset( $wizard_settings['thirdparty_iframes'] );
|
|
update_option( 'complianz_options_custom-scripts', $custom_scripts );
|
|
update_option( 'complianz_options_wizard', $wizard_settings );
|
|
}
|
|
|
|
if ( $prev_version && version_compare( $prev_version, '5.1.0', '<' ) ) {
|
|
update_option( 'cmplz_first_version', '5.0.0', false );
|
|
}
|
|
|
|
/**
|
|
* restore dropshadow in TCF banner.
|
|
*/
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '5.1.2', '<' )
|
|
) {
|
|
if ( cmplz_tcf_active() ) {
|
|
$banners = cmplz_get_cookiebanners();
|
|
if ( $banners ) {
|
|
foreach ( $banners as $banner_item ) {
|
|
$banner = new CMPLZ_COOKIEBANNER( $banner_item->ID, false );
|
|
$banner->use_box_shadow = true;
|
|
$banner->save();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '5.2.0', '<' )
|
|
) {
|
|
if ( cmplz_tcf_active() ) {
|
|
$banners = cmplz_get_cookiebanners();
|
|
if ( $banners ) {
|
|
foreach ( $banners as $banner_item ) {
|
|
$banner = new CMPLZ_COOKIEBANNER( $banner_item->ID, false );
|
|
$banner->colorpalette_button_accept = array(
|
|
'background' => '#333',
|
|
'border' => '#333',
|
|
'text' => '#fff',
|
|
);
|
|
$banner->colorpalette_button_settings = array(
|
|
'background' => '#fff',
|
|
'border' => '#333',
|
|
'text' => '#333',
|
|
);
|
|
$banner->save();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Change metakeys for eu dataleaks from '{metakey}' to '{metakey}-eu' for consistency between dataleaks .
|
|
*/
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '5.4.0', '<' )
|
|
) {
|
|
$args = array(
|
|
'numberposts' => - 1,
|
|
'post_type' => 'cmplz-dataleak',
|
|
'tax_query' => array(
|
|
array(
|
|
'taxonomy' => 'cmplz-region',
|
|
'field' => 'slug',
|
|
'terms' => 'eu',
|
|
),
|
|
),
|
|
);
|
|
|
|
$posts = get_posts( $args );
|
|
$meta_keys = array(
|
|
'security-incident-occurred',
|
|
'type-of-dataloss',
|
|
'reach-of-dataloss',
|
|
'risk-of-data-loss',
|
|
'what-occurred',
|
|
'consequences',
|
|
'measures',
|
|
'measures_by_person_involved',
|
|
'conclusion',
|
|
);
|
|
foreach ( $posts as $post ) {
|
|
foreach ( $meta_keys as $meta_key ) {
|
|
$value = get_post_meta( $post->ID, $meta_key, true );
|
|
if ( $value ) {
|
|
update_post_meta( $post->ID, $meta_key . '-eu', $value );
|
|
}
|
|
}
|
|
}
|
|
|
|
$wizard_settings = get_option( 'complianz_options_wizard' );
|
|
//upgrade to checkboxes structure.
|
|
$value_eu = $value_uk = false;
|
|
if ( isset( $wizard_settings['dpo_or_gdpr'] ) ) {
|
|
$value_eu = $wizard_settings['dpo_or_gdpr'];
|
|
}
|
|
|
|
if ( isset( $wizard_settings['dpo_or_uk_gdpr'] ) ) {
|
|
$value_uk = $wizard_settings['dpo_or_uk_gdpr'];
|
|
}
|
|
if ( ! is_array( $value_eu ) ) {
|
|
$new_value = array(
|
|
'dpo' => 0,
|
|
'dpo_uk' => 0,
|
|
'gdpr_rep' => 0,
|
|
'uk_gdpr_rep' => 0,
|
|
);
|
|
if ( $value_eu ) {
|
|
$new_value[ $value_eu ] = 1;
|
|
}
|
|
if ( $value_uk ) {
|
|
if ( $value_uk === 'dpo' ) {
|
|
$value_uk = 'dpo_uk';
|
|
}
|
|
$new_value[ $value_uk ] = 1;
|
|
}
|
|
//none is not applicable anymore, as it's multischeckbox
|
|
unset( $new_value['none'] );
|
|
|
|
$wizard_settings['dpo_or_gdpr'] = $new_value;
|
|
unset( $wizard_settings['dpo_or_uk_gdpr'] );
|
|
|
|
if ( isset( $wizard_settings['ca_name_address_accountable_person'] ) ) {
|
|
$address = preg_split( '#\n(?!s)#', $wizard_settings['ca_name_address_accountable_person'] );
|
|
$name = isset( $address[0] ) ? $address[0] : '';
|
|
unset( $address[0] );
|
|
$address = implode( "\n", $address );
|
|
$wizard_settings['ca_name_accountable_person'] = $name;
|
|
$wizard_settings['ca_address_accountable_person'] = $address;
|
|
}
|
|
|
|
update_option( 'complianz_options_wizard', $wizard_settings );
|
|
}
|
|
}
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '5.5.0', '<' )
|
|
) {
|
|
$wizard_settings = get_option( 'complianz_options_wizard' );
|
|
$settings_settings = get_option( 'complianz_options_settings' );
|
|
if ( isset( $wizard_settings['use_cdb_api'] ) ) {
|
|
$settings_settings['use_cdb_api'] = $wizard_settings['use_cdb_api'];
|
|
$settings_settings['use_cdb_links'] = $wizard_settings['use_cdb_links'];
|
|
}
|
|
unset( $wizard_settings['use_cdb_api'] );
|
|
unset( $wizard_settings['use_cdb_links'] );
|
|
update_option( 'complianz_options_wizard', $wizard_settings );
|
|
update_option( 'complianz_options_settings', $settings_settings );
|
|
}
|
|
|
|
if ( $prev_version
|
|
&& version_compare( $prev_version, '5.5.0', '<' )
|
|
) {
|
|
$wizard_settings = get_option( 'complianz_options_wizard' );
|
|
|
|
$share_data_us = $share_data_eu = 2;
|
|
if ( isset($wizard_settings['share_data_other_us']) ) {
|
|
$share_data_us = intval($wizard_settings['share_data_other_us']);
|
|
}
|
|
if ( isset($wizard_settings['share_data_other']) ) {
|
|
$share_data_eu = intval($wizard_settings['share_data_other']);
|
|
}
|
|
//share data other parties: indien een van beide "yes", nieuwe yes. Indien een van beide limited, nieuwe "limited". anders no.
|
|
if ($share_data_us===1 || $share_data_eu ===1) {
|
|
$share_data = 1;
|
|
} else if ($share_data_us===3 || $share_data_eu ===3){
|
|
$share_data = 3;
|
|
} else {
|
|
$share_data = 2;
|
|
}
|
|
$wizard_settings['share_data_other'] = $share_data;
|
|
$us_processors = isset($wizard_settings['processor_us'] ) ? $wizard_settings['processor_us'] : array();
|
|
$eu_processors = isset($wizard_settings['processor']) ? $wizard_settings['processor'] : array();
|
|
foreach ( $us_processors as $us_processor ) {
|
|
//check if it's already in the list
|
|
$key = array_search($us_processor['name'], array_column($eu_processors, 'name'));
|
|
if ( $key !== false ) unset($us_processors[ $key ]);
|
|
}
|
|
|
|
//now add the remaining values to the EU list
|
|
$eu_processors = array_merge($eu_processors, $us_processors);
|
|
$wizard_settings['processor'] = $eu_processors;
|
|
|
|
$us_thirdparties = isset($wizard_settings['thirdparty_us'] ) ? $wizard_settings['thirdparty_us'] : array();
|
|
$eu_thirdparties = isset($wizard_settings['thirdparty']) ? $wizard_settings['thirdparty'] : array();
|
|
foreach ( $us_thirdparties as $us_thirdparty ) {
|
|
//check if it's already in the list
|
|
$key = array_search($us_thirdparty['name'], array_column($eu_thirdparties, 'name'));
|
|
if ( $key !== false ) unset($us_thirdparties[ $key ]);
|
|
}
|
|
//now add the remaining values to the EU list
|
|
$eu_thirdparties = array_merge($eu_thirdparties, $us_thirdparties);
|
|
$wizard_settings['thirdparty'] = $eu_thirdparties;
|
|
unset($wizard_settings['thirdparty_us']);
|
|
unset($wizard_settings['processor_us']);
|
|
|
|
update_option( 'complianz_options_wizard', $wizard_settings );
|
|
}
|
|
|
|
if ( $prev_version && version_compare( $prev_version, '6.0.0', '<' ) ) {
|
|
$custom_scripts = get_option( 'complianz_options_custom-scripts' );
|
|
|
|
$scripts['add_script'] = [];
|
|
$scripts['block_script'] = [];
|
|
$scripts['whitelist_script'] = [];
|
|
|
|
if ( ! empty( $custom_scripts['cookie_scripts'] ) ) {
|
|
$scripts['add_script'][] = [
|
|
'name' => 'Scripts',
|
|
'editor' => $custom_scripts['cookie_scripts'],
|
|
'async' => '0',
|
|
'category' => 'marketing',
|
|
'enable_placeholder' => '0',
|
|
'placeholder_class' => '',
|
|
'placeholder' => '',
|
|
'enable_dependency' => '0',
|
|
'dependency' => '',
|
|
'enable' => '1',
|
|
];
|
|
}
|
|
|
|
if ( ! empty( $custom_scripts['cookie_scripts_async'] ) ) {
|
|
$scripts['add_script'][] = [
|
|
'name' => 'Async scripts',
|
|
'editor' => $custom_scripts['cookie_scripts_async'],
|
|
'async' => '1',
|
|
'category' => 'marketing',
|
|
'enable_placeholder' => '0',
|
|
'placeholder_class' => '',
|
|
'placeholder' => '',
|
|
'enable_dependency' => '0',
|
|
'dependency' => '',
|
|
'enable' => '1',
|
|
];
|
|
}
|
|
|
|
if ( ! empty( $custom_scripts['statistics_script'] ) ) {
|
|
$scripts['add_script'][] = [
|
|
'name' => 'Statistics scripts',
|
|
'editor' => $custom_scripts['statistics_script'],
|
|
'async' => '0',
|
|
'category' => 'statistics',
|
|
'enable_placeholder' => '0',
|
|
'placeholder_class' => '',
|
|
'placeholder' => '',
|
|
'enable_dependency' => '0',
|
|
'dependency' => '',
|
|
'enable' => '1',
|
|
];
|
|
}
|
|
|
|
if ( ! empty( $custom_scripts['thirdparty_scripts'] ) ) {
|
|
$scripts['block_script'][] = [
|
|
'name' => 'Third party scripts',
|
|
'urls' => explode( ',', $custom_scripts['thirdparty_scripts'] ),
|
|
'category' => 'marketing',
|
|
'enable_placeholder' => '0',
|
|
'placeholder_class' => '',
|
|
'placeholder' => '',
|
|
'enable' => '1',
|
|
];
|
|
}
|
|
|
|
if ( ! empty( $custom_scripts['thirdparty_iframes'] ) ) {
|
|
$scripts['block_script'][] = [
|
|
'name' => 'Third party iframes',
|
|
'urls' => explode( ',', $custom_scripts['thirdparty_iframes'] ),
|
|
'category' => 'marketing',
|
|
'enable_placeholder' => '0',
|
|
'placeholder_class' => '',
|
|
'placeholder' => '',
|
|
'enable' => '1',
|
|
];
|
|
}
|
|
update_option( 'complianz_options_custom-scripts', $scripts );
|
|
|
|
$banners = cmplz_get_cookiebanners();
|
|
if ( $banners ) {
|
|
foreach ( $banners as $banner_item ) {
|
|
$banner = new CMPLZ_COOKIEBANNER( $banner_item->ID );
|
|
switch ( $banner->use_categories ) {
|
|
case 'no':
|
|
$banner->use_categories = 'no';
|
|
break;
|
|
case 'legacy':
|
|
case 'visible':
|
|
$banner->use_categories = 'save-preferences';
|
|
break;
|
|
default:
|
|
$banner->use_categories = 'view-preferences';
|
|
}
|
|
|
|
switch ( $banner->position ) {
|
|
case 'top':
|
|
$banner->position = 'bottom';
|
|
break;
|
|
case 'bottom':
|
|
case 'bottom-left':
|
|
case 'bottom-right':
|
|
break;
|
|
default:
|
|
$banner->position = 'center';
|
|
}
|
|
|
|
switch ( $banner->checkbox_style ) {
|
|
case 'classic':
|
|
$banner->checkbox_style = 'classic';
|
|
break;
|
|
default:
|
|
$banner->checkbox_style = 'slider';
|
|
}
|
|
|
|
if ( !is_serialized($banner->border_width) ) {
|
|
$banner->border_width = array(
|
|
'top' => 0,
|
|
'right' => 0,
|
|
'bottom' => 0,
|
|
'left' => 0,
|
|
);
|
|
}
|
|
|
|
if ( !isset($banner->border_width['top']) ) $banner->border_width['top'] = 0;
|
|
if ( !isset($banner->border_width['right']) ) $banner->border_width['right'] = 0;
|
|
if ( !isset($banner->border_width['bottom']) ) $banner->border_width['bottom'] = 0;
|
|
if ( !isset($banner->border_width['left']) ) $banner->border_width['left'] = 0;
|
|
|
|
if (!is_serialized($banner_item->dismiss)) {
|
|
$banner->revoke = array(
|
|
'text' => $banner_item->revoke,
|
|
'show' => ! $banner_item->hide_revoke,
|
|
);
|
|
}
|
|
|
|
if (!is_serialized($banner_item->header) ) {
|
|
if ( strlen($banner_item->header)<4 ) {
|
|
$banner->header = array(
|
|
'text' => '',
|
|
'show' => false,
|
|
);
|
|
} else {
|
|
$banner->header = array(
|
|
'text' => $banner_item->header,
|
|
'show' => true,
|
|
);
|
|
}
|
|
}
|
|
|
|
if (!is_serialized($banner_item->accept_informational)) {
|
|
$banner->accept_informational = array(
|
|
'text' => $banner_item->accept_informational,
|
|
'show' => true,
|
|
);
|
|
}
|
|
|
|
if (!is_serialized($banner_item->category_prefs)) {
|
|
$banner->category_prefs = array(
|
|
'text' => $banner_item->category_prefs,
|
|
'show' => true,
|
|
);
|
|
}
|
|
|
|
if (!is_serialized($banner_item->category_stats)) {
|
|
$banner->category_stats = array(
|
|
'text' => $banner_item->category_stats,
|
|
'show' => true,
|
|
);
|
|
}
|
|
|
|
if (!is_serialized($banner_item->category_all)) {
|
|
$banner->category_all = array(
|
|
'text' => $banner_item->category_all,
|
|
'show' => true,
|
|
);
|
|
}
|
|
|
|
$banner->use_box_shadow = true;
|
|
$banner->use_logo = 'hide';
|
|
$banner->close_button = false;
|
|
$banner->save();
|
|
}
|
|
}
|
|
|
|
$wizard_settings = get_option( 'complianz_options_wizard' );
|
|
if ( isset( $wizard_settings['compile_statistics'] ) && $wizard_settings['compile_statistics'] === 'yes-anonymous' ) {
|
|
$wizard_settings['compile_statistics'] = 'yes';
|
|
update_option( 'complianz_options_wizard', $wizard_settings );
|
|
}
|
|
}
|
|
|
|
if ( $prev_version && version_compare( $prev_version, '6.0.0', '>=' ) ) {
|
|
$warning_id = 'upgraded_to_6';
|
|
$dismissed_warnings = get_option( 'cmplz_dismissed_warnings', array() );
|
|
if ( !in_array($warning_id, $dismissed_warnings) ) {
|
|
$dismissed_warnings[] = $warning_id;
|
|
update_option('cmplz_dismissed_warnings', $dismissed_warnings );
|
|
delete_transient('complianz_warnings');
|
|
delete_transient('complianz_warnings_admin_notices');
|
|
}
|
|
}
|
|
|
|
if ( $prev_version && version_compare( $prev_version, '6.0.2', '<' ) ) {
|
|
$banners = cmplz_get_cookiebanners();
|
|
if ( $banners ) {
|
|
foreach ( $banners as $banner_item ) {
|
|
$banner = new CMPLZ_COOKIEBANNER( $banner_item->ID );
|
|
if ( $banner->banner_width == 476 ) {
|
|
$banner->banner_width = 526;
|
|
$banner->save();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $prev_version && version_compare( $prev_version, '6.0.8', '<' ) ) {
|
|
$banners = cmplz_get_cookiebanners();
|
|
if ( $banners ) {
|
|
foreach ( $banners as $banner_item ) {
|
|
$banner = new CMPLZ_COOKIEBANNER( $banner_item->ID );
|
|
if ( $banner->use_categories === 'hidden' ) {
|
|
$banner->use_categories = 'view-preferences';
|
|
$banner->save();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $prev_version && version_compare( $prev_version, '6.1.0', '<' ) ) {
|
|
$banners = cmplz_get_cookiebanners();
|
|
if ( $banners ) {
|
|
foreach ( $banners as $banner_item ) {
|
|
$banner = new CMPLZ_COOKIEBANNER( $banner_item->ID );
|
|
$banner->legal_documents = true;
|
|
$banner->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $prev_version && version_compare( $prev_version, '6.1.4.1', '<' ) ) {
|
|
$wizard_settings = get_option( 'complianz_options_wizard' );
|
|
if ( isset( $wizard_settings['create_banner_elementor'] ) ) {
|
|
if ($wizard_settings['create_banner_elementor']==='yes' ) {
|
|
update_option('cmplz_elementor_banner_dropped', true);
|
|
}
|
|
$wizard_settings['create_banner_elementor'] = 'no';
|
|
update_option( 'complianz_options_wizard', $wizard_settings );
|
|
$post_id = get_option('cmplz_elementor_autogenerated' );
|
|
$args = array(
|
|
'post_status' => 'draft',
|
|
'ID' => $post_id,
|
|
);
|
|
wp_update_post($args);
|
|
}
|
|
}
|
|
|
|
if ( $prev_version && version_compare( $prev_version, '6.2.2', '<' ) ) {
|
|
$wizard_settings = get_option( 'complianz_options_wizard' );
|
|
if ( isset( $wizard_settings['data_request_forms'] ) ) {
|
|
$wizard_settings['datarequest'] = $wizard_settings['data_request_forms'];
|
|
unset($wizard_settings['data_request_forms']);
|
|
update_option( 'complianz_options_wizard', $wizard_settings );
|
|
}
|
|
}
|
|
|
|
// 6.3 United States Upgrade
|
|
if ( $prev_version && version_compare( $prev_version, '6.3.0', '<' ) ) {
|
|
$wizard_settings = get_option( 'complianz_options_wizard' );
|
|
if ( isset( $wizard_settings['california'] ) && $wizard_settings['california'] === 'yes' ) {
|
|
unset( $wizard_settings['california'] );
|
|
$wizard_settings['us_states']['cal'] = 1;
|
|
}
|
|
|
|
$mapping_array = [
|
|
'1' => [ 'first-lastname', 'address' ],
|
|
'2' => [ 'marital-status' ],
|
|
'5' => [ 'date-of-birth' ],
|
|
'6' => [ 'accountname-alias' ],
|
|
'7' => [ 'sex' ],
|
|
'3' => [ 'email' ],
|
|
'15' => [ 'phone' ],
|
|
'8' => [ 'ip' ],
|
|
'4' => [ 'financial-information' ],
|
|
'10' => [ 'medical' ],
|
|
'11' => [ 'internet' ],
|
|
'9' => [ 'geo' ],
|
|
'12' => [ 'photos' ],
|
|
'13' => [ 'social-media' ],
|
|
'14' => [ 'criminal' ],
|
|
];
|
|
foreach ( COMPLIANZ::$config->purposes as $key => $label ) {
|
|
if ( !isset($wizard_settings[$key . '_retain_data']) ) {
|
|
$wizard_settings[$key . '_retain_data'] = '1';
|
|
}
|
|
|
|
if (isset($wizard_settings[$key . '_data_purpose']) ) {
|
|
$values = $wizard_settings[$key . '_data_purpose'];
|
|
foreach ($values as $value => $enabled) {
|
|
$enabled = $enabled==='1';
|
|
if ( $enabled && isset($mapping_array[ $value ])) {
|
|
$new_values = $mapping_array[ $value ];
|
|
foreach ($new_values as $new_value ) {
|
|
$wizard_settings[$key . '_data_purpose_us'][$new_value] = 1;
|
|
}
|
|
}
|
|
}
|
|
unset($wizard_settings[$key . '_data_purpose']);
|
|
}
|
|
if ( isset($wizard_settings[$key . '_data_purpose_us'] ) ) {
|
|
$values = $wizard_settings[$key . '_data_purpose_us'];
|
|
foreach ($values as $value => $enabled) {
|
|
$enabled = $enabled==='1';
|
|
if ($enabled && $value === 'any-other') {
|
|
unset($wizard_settings[$key . '_data_purpose_us'][$value]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
update_option( 'complianz_options_wizard', $wizard_settings );
|
|
|
|
$banners = cmplz_get_cookiebanners();
|
|
if ( $banners ) {
|
|
foreach ( $banners as $banner_item ) {
|
|
$banner = new CMPLZ_COOKIEBANNER( $banner_item->ID );
|
|
$revoke = $banner_item->revoke;
|
|
if ( is_serialized( $revoke ) ) {
|
|
$revoke = unserialize( $revoke );
|
|
}
|
|
if ( isset( $revoke['text'] ) ) {
|
|
$banner->revoke = $revoke['text'];
|
|
}
|
|
if ( isset( $revoke['show'] ) ) {
|
|
if ( $revoke['show'] == '1' ) {
|
|
$banner->manage_consent_options = 'hover-hide-mobile';
|
|
} else {
|
|
$banner->manage_consent_options = 'hide-everywhere';
|
|
}
|
|
}
|
|
$banner->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $prev_version && version_compare( $prev_version, '6.3.2', '<' ) ) {
|
|
//upgrade statistics a/b testing
|
|
$general_settings = get_option( 'complianz_options_settings' );
|
|
if ( isset( $general_settings['a_b_testing'] ) && $general_settings['a_b_testing'] ) {
|
|
$general_settings['a_b_testing_buttons'] = true;
|
|
}
|
|
update_option( 'complianz_options_settings', $general_settings );
|
|
}
|
|
|
|
if ( $prev_version && version_compare( $prev_version, '6.3.7', '<' ) ) {
|
|
$wizard_settings = get_option( 'complianz_options_wizard', [] );
|
|
$wizard_settings['enable_cookie_banner']='yes';
|
|
$wizard_settings['enable_cookie_blocker']='yes';
|
|
update_option( 'complianz_options_wizard', $wizard_settings );
|
|
|
|
$settings = get_option( 'complianz_options_settings', [] );
|
|
$settings['safe_mode'] = $settings['disable_cookie_block'] ?? false;
|
|
if ( isset($settings['disable_cookie_block']) ) {
|
|
unset($settings['disable_cookie_block']);
|
|
}
|
|
update_option( 'complianz_options_settings', $settings );
|
|
}
|
|
|
|
// regenerate css
|
|
// $banners = cmplz_get_cookiebanners();
|
|
// if ( $banners ) {
|
|
// foreach ( $banners as $banner_item ) {
|
|
// $banner = new CMPLZ_COOKIEBANNER( $banner_item->ID );
|
|
// $banner->save();
|
|
// }
|
|
// }
|
|
|
|
//ensure new capability
|
|
if ( $prev_version && version_compare( $prev_version, '6.4.1', '<' ) ) {
|
|
cmplz_add_manage_privacy_capability();
|
|
}
|
|
|
|
if ( $force || ( $prev_version && version_compare( $prev_version, '7.0.0', '<' ) ) ) {
|
|
set_transient('cmplz_redirect_to_settings_page', true, HOUR_IN_SECONDS );
|
|
//create new options array
|
|
$options = get_option( 'cmplz_options', [] );
|
|
if ( ! is_array( $options ) ) {
|
|
$options = [];
|
|
}
|
|
|
|
$default_id = cmplz_get_default_banner_id();
|
|
$banner = new CMPLZ_COOKIEBANNER( $default_id );
|
|
if ( $banner->disable_cookiebanner ) {
|
|
cmplz_update_option_no_hooks( 'enable_cookie_banner', 'no' );
|
|
}
|
|
|
|
$license = get_site_option( 'cmplz_license_key' );
|
|
if ( $license && !is_multisite() ) {
|
|
$options[ 'license' ] = $license;
|
|
}
|
|
|
|
$migrate_js_enabled = false;
|
|
$old_settings_array = [ 'complianz_options_settings', 'complianz_options_wizard' ];
|
|
$wiz = get_option('complianz_options_settings');
|
|
$use_country = $wiz['use_country'] ?? false;
|
|
foreach ( $old_settings_array as $old_setting ) {
|
|
$settings = get_option( $old_setting, [] );
|
|
foreach ( $settings as $id => $value ) {
|
|
//if type is multicheckbox, change [key1 = 1, key2=1] structure to [key1, key2]
|
|
$id = strtolower($id);
|
|
$field = cmplz_get_field( $id );
|
|
//tcf fields are not loaded yet, because the upgrade is not completed, so iab_enabled will always return false.
|
|
//as a workaround we check if the id starts with tcf_
|
|
if ( strpos($id, 'tcf_') !== false ){
|
|
$field = $id==='tcf_lspact' ? ['type'=>'radio'] : ['type'=>'multicheckbox'];
|
|
}
|
|
if ( $field ) {
|
|
$type = $field['type'];
|
|
//regions is default radio, but multicheckbox when use_country is enabled
|
|
if ($id === 'regions' && $use_country) {
|
|
$type = 'multicheckbox';
|
|
}
|
|
if ($type === 'multicheckbox' && is_array( $value )) {
|
|
|
|
$value = array_filter( $value, static function ( $item ) {return $item == 1;} );
|
|
$value = array_keys( $value );
|
|
}
|
|
if ($id === 'which_personal_data_secure') {
|
|
$new = [];
|
|
if ( isset($value['1']) || isset($value['16']) ) {
|
|
$new[] = '1';
|
|
}
|
|
if ( isset($value['2']) || isset($value['4'])) {
|
|
$new[] = '2';
|
|
}
|
|
if ( isset($value['3']) || isset($value['15']) ) {
|
|
$new[] = '3';
|
|
}
|
|
if ( isset($value['6']) ) {
|
|
$new[] = '5';
|
|
}
|
|
if ( isset($value['5']) ) {
|
|
$new[] = '7';
|
|
}
|
|
if ( isset($value['7']) ) {
|
|
$new[] = '8';
|
|
}
|
|
if ( isset($value['8']) || isset($value['9']) || isset($value['10']) || isset($value['11']) || isset($value['14']) || isset($value['17']) ) {
|
|
$new[] = '4';
|
|
}
|
|
$value = $new;
|
|
}
|
|
$options[ $id ] = $value;
|
|
}
|
|
if ($id === 'enable_migrate_js' && $value) {
|
|
$migrate_js_enabled = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( !empty($options) ){
|
|
update_option( 'cmplz_options', $options );
|
|
}
|
|
|
|
if ( $migrate_js_enabled ) {
|
|
$dismissed_warnings = get_option( 'cmplz_dismissed_warnings', array() );
|
|
if ( ! in_array( 'migrate_js', $dismissed_warnings ) ) {
|
|
$dismissed_warnings[] = 'migrate_js';
|
|
update_option('cmplz_dismissed_warnings', $dismissed_warnings, false );
|
|
}
|
|
}
|
|
//set an activated time, which is used in the cookie scan and geo ip downloads
|
|
update_option('cmplz_activation_time', strtotime('-1 week'), false);
|
|
}
|
|
|
|
//disable tcf for free users
|
|
if ( $prev_version && version_compare( $prev_version, '7.0.3', '<' ) ) {
|
|
$options = get_option( 'cmplz_options', [] );
|
|
if ( !defined('cmplz_premium') ) {
|
|
$options['uses_ad_cookies_personalized'] = 'no';
|
|
update_option( 'cmplz_options', $options );
|
|
}
|
|
}
|
|
|
|
#regenerate cookie policy snapshot.
|
|
update_option('cmplz_generate_new_cookiepolicy_snapshot', true, false);
|
|
|
|
//always clear warnings cache on update
|
|
delete_transient('complianz_warnings');
|
|
delete_transient('complianz_warnings_admin_notices');
|
|
do_action( 'cmplz_upgrade', $prev_version );
|
|
update_option( 'cmplz-current-version', $new_version );
|
|
}
|