JezK
Edit File: uninstall.php
<?php /** * Uninstaller for Complianz plugin * * This script is executed when the plugin is uninstalled from WordPress. * It clears all plugin data and removes database tables. */ // If uninstall is not called from WordPress, exit if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) { exit(); } $cmplz_settings = get_option( 'cmplz_options', array() ); if ( isset( $cmplz_settings['clear_data_on_uninstall'] ) && $cmplz_settings['clear_data_on_uninstall'] ) { // cmplz options $options = array( 'cmplz_activation_time', 'cmplz_active_integrations', 'cmplz_ajax_fallback_active', 'cmplz_cbdb_version', 'cmplz_changed_cookies', 'cmplz_clear_tcf_purposes_after_upgrade', 'cmplz_cookie-statement_custom_page', 'cmplz_cookie_data_verified_date', 'cmplz_cookietable_version', 'cmplz_current_datarequest_export_offset', 'cmplz_current_datarequest_export_progress', 'cmplz_current_poc_export_offset', 'cmplz_current_poc_export_progress', 'cmplz-current-version', 'cmplz_curl_error', 'cmplz_datarequests_db_version', 'cmplz_datarequest_export_args', 'cmplz_datarequest_file_name', 'cmplz_deactivated', 'cmplz_deleted_cookies', 'cmplz_detected_console_errors', 'cmplz_detected_forms', 'cmplz_detected_social_media', 'cmplz_detected_stats', 'cmplz_detected_stats_data', 'cmplz_detected_stats_type', 'cmplz_detected_thirdparty_services', 'cmplz_disabled_placeholders', 'cmplz_dismissed_warnings', 'cmplz_dnsmpd_db_version', 'cmplz_documents_update_date', 'cmplz_double_stats', 'cmplz_dynamic_options', 'cmplz_elementor_banner_dropped', 'cmplz_elementor_hub_autogenerated', 'cmplz_enabled_best_performer', 'cmplz_excluded_posts_array', 'cmplz_first_sync_started', 'cmplz_first_version', 'cmplz_generate_new_cookiepolicy_snapshot', 'cmplz_geo_ip_file', 'cmplz_geoip_import_error', 'cmplz_import_geoip_on_activation', 'cmplz_integrations_changed', 'cmplz_last_cookie_scan', 'cmplz_last_cookie_sync', 'cmplz_last_update_geoip', 'cmplz_legal_version', 'cmplz_license_activation_limit', 'cmplz_license_activations_left ', 'cmplz_license_attempts ', 'cmplz_license_expires', 'cmplz_license_key', 'cmplz_license_notice_dismissed', 'cmplz_license_status', 'cmplz_options', 'cmplz_pdf_dir_token', 'cmplz_plugins_changed', 'cmplz_plugins_updated', 'cmplz_post_scribe_required', 'cmplz_preloaded_privacy_info', 'cmplz_privacy-statement_custom_page', 'cmplz_publish_date', 'cmplz_purposes_stored', 'cmplz_remote_homepage_scanned', 'cmplz_reported_cookies', 'cmplz_review_notice_shown', 'cmplz_roc_export_args', 'cmplz_roc_file_name', 'cmplz_run_activation', 'cmplz_run_premium_install', 'cmplz_run_premium_upgrade', 'cmplz_serviceTypes_stored', 'cmplz_show_cookiedatabase_optin', 'cmplz_statsdb_version', 'cmplz_sync_cookies_after_services_complete', 'cmplz_sync_cookies_complete', 'cmplz_synced_cookiedatabase_once', 'cmplz_sync_services_complete', 'cmplz_tcf_mail_sent', 'cmplz_tcf_license_active', 'cmplz_tracking_ab_started', 'cmplz_transients', 'cmplz_upgraded_to_five', 'cmplz_upgraded_tcf_settings', 'cmplz_update_legal_documents_mail_sent', 'cmplz_vendorlist_downloaded_once', 'cmplz_wizard_completed_once', 'complianz_active_policy_id', 'complianz_key', 'complianz_options_custom-scripts', 'complianz_options_dataleak', 'complianz_options_integrations', 'complianz_options_processing', 'complianz_options_settings', 'complianz_options_wizard', 'complianz_scan_token', 'cmplz_wsc_error_email_not_sent', 'cmplz_wsc_signup_status', 'cmplz_wsc_signup_date', 'cmplz_wsc_status', 'cmplz_wsc_error_email_mismatch', 'cmplz_wsc_error_missing_token', 'cmplz_wsc_error_email_auth_failed', 'cmplz_wsc_auth_completed', 'cmplz_wsc_connection_updated', 'cmplz_wsc_error_token_api', 'cmplz_wsc_onboarding_status', 'cmplz_wsc_onboarding_start', 'cmplz_wsc_onboarding_complete', 'cmplz_wsc_dismissed', 'cmplz_wsc_onboarding_dismissed', 'cmplz_wsc_websitescan_dismissed', 'cmplz_wsc_scan_id', 'cmplz_wsc_webhook_secret', 'cmplz_wsc_checks_webhook_secret', 'cmplz_wsc_scan_createdAt', 'cmplz_wsc_scan_status', 'cmplz_wsc_scan_iteration', 'cmplz_wsc_scan_progress', 'cmplz_wsc_scan_first_run', 'cmplz_wsc_reset_complete', 'cmplz_wsc_checks_scan_polling', 'cmplz_wsc_checks_scan_id', 'cmplz_wsc_checks_scan_createdAt', 'cmplz_wsc_checks_last_detections', 'cmplz_wsc_checks_last_mail_sent', 'cmplz_wsc_checks_last_mail_sent_error', 'cmplz_wsc_logs', 'cmplz_wsc_newsletter_dismissed', 'cmplz_translation_cron_interval', 'cmplz_translation_errors', 'cmplz_wsc_scan_registry', 'cmplz_wsc_batch_map', ); foreach ( $options as $option_name ) { delete_option( $option_name ); delete_site_option( $option_name ); } global $wpdb; // cmplz dynamic options $dynamic_options = array( 'cmplz_%_custom_page_url', 'cmplz_%_custom_page', 'cmplz_purposes_%', 'cmplz_serviceTypes_%', 'cmplz_consent_%', 'cmplz_wsc_user_deletion_%', 'cmplz_newsletter_signup_%', 'cmplz_%_consentdata', 'cmplz_consent_error_%', ); foreach ( $dynamic_options as $option_name ) { $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->options WHERE option_name LIKE %s", $option_name ) ); } // cmplz transients $transients = array( '_transient_cmplz_%', '_transient_timeout_cmplz_%', '_transient_complianz_%', '_transient_timeout_complianz_%', '_transient_cmplz_dn_notifications_%', '_transient_timeout_cmplz_dn_notifications_%', '_transient_cmplz_translation_fetched_%', '_transient_cmplz_plugin_update_check_%', '_transient_timeout_cmplz_plugin_update_check_%', '_transient_cmplz_rate_limit_auth_email_%', '_transient_timeout_cmplz_rate_limit_auth_email_%', ); foreach ( $transients as $transient ) { $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->options WHERE option_name LIKE %s", $transient ) ); } // cmplz post meta $post_meta_keys = array( '_cmplz_scanned_post', '_cmplz_wsc_scanned_post', ); foreach ( $post_meta_keys as $meta_key ) { $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_key = %s", $meta_key ) ); } // cmplz tables $table_names = array( $wpdb->prefix . 'cmplz_statistics', $wpdb->prefix . 'cmplz_cookies', $wpdb->prefix . 'cmplz_services', $wpdb->prefix . 'cmplz_cookiebanners', $wpdb->prefix . 'cmplz_dnsmpd', ); foreach ( $table_names as $table_name ) { $sql = "DROP TABLE IF EXISTS $table_name"; $wpdb->query( $sql ); } }