request_account_deletion(); } $consiva_consent_client->delete_installation(); } foreach ( array( 'consiva_consent_heartbeat', 'consiva_consent_refresh_runtime', 'consiva_consent_flush_events' ) as $consiva_consent_hook ) { wp_clear_scheduled_hook( $consiva_consent_hook ); } foreach ( array( 'consiva_consent_connection', 'consiva_consent_disclosure', 'consiva_consent_state', 'consiva_consent_reconnect_required', 'consiva_consent_refresh_lock', 'consiva_consent_runtime', 'consiva_consent_server_consent', 'consiva_consent_form_activity', 'consiva_consent_forms_seen', 'consiva_consent_event_stats', 'consiva_consent_flush_lock', 'consiva_consent_recent_requests', 'consiva_consent_uninstall_choice', 'consiva_consent_buffer_conflict', 'consiva_consent_log', ) as $consiva_consent_option ) { delete_option( $consiva_consent_option ); } // By name too, so sites with a persistent object cache (where transients are not in wp_options) are // cleaned. Per-user and per-attempt transients (notices, connect state) expire within minutes. foreach ( array( 'consiva_consent_verify_token', 'consiva_consent_access_token', 'consiva_consent_installation_cache', 'consiva_consent_dashboard_summary', 'consiva_consent_recommendations', 'consiva_consent_verification_view', 'consiva_consent_scan_view', 'consiva_consent_activation_redirect', ) as $consiva_consent_transient ) { delete_transient( $consiva_consent_transient ); } \Consiva\Consent\Support\Capabilities::remove_from_roles(); // Unsent consent events, and short-lived per-attempt and per-user transients (names with a random suffix). $consiva_consent_like = array( $wpdb->esc_like( 'consiva_consent_evt_' ) . '%', $wpdb->esc_like( '_transient_consiva_consent_' ) . '%', $wpdb->esc_like( '_transient_timeout_consiva_consent_' ) . '%', ); foreach ( $consiva_consent_like as $consiva_consent_pattern ) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- one-off cleanup on uninstall. $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", $consiva_consent_pattern ) ); } } if ( is_multisite() ) { // Per-site tenancy (Plugin §8.5): every site in the network has its own connection and data. foreach ( get_sites( array( 'fields' => 'ids', 'number' => 0, ) ) as $consiva_consent_site_id ) { switch_to_blog( $consiva_consent_site_id ); consiva_consent_uninstall_site(); restore_current_blog(); } } else { consiva_consent_uninstall_site(); } // User meta is shared by every site in a network: once. delete_metadata( 'user', 0, 'consiva_consent_conflict_dismissed', '', true );