query( "DROP TABLE IF EXISTS {$wpdb->prefix}aica_indexed_products" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.InterpolatedNotPrepared $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}aica_conversations" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.InterpolatedNotPrepared $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}aica_analytics" ); // Delete all plugin options delete_option( 'aica_settings' ); delete_option( 'aica_magic_prompts' ); delete_option( 'aica_activated' ); delete_option( 'aica_version' ); delete_option( 'aica_db_version' ); delete_option( 'aica_system_prompts' ); // Delete all transients delete_transient( 'aica_product_count' ); delete_transient( 'aica_last_index_time' ); // Delete transients with wildcards (rate limits) // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like( '_transient_aica_rate_limit_' ) . '%' ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like( '_transient_timeout_aica_rate_limit_' ) . '%' ) ); // Clear all scheduled events wp_clear_scheduled_hook( 'aica_reindex_products' ); wp_clear_scheduled_hook( 'aica_cleanup_old_data' ); wp_clear_scheduled_hook( 'aica_generate_embeddings' ); wp_clear_scheduled_hook( 'aica_optimize_database' ); // Delete user meta data (e.g., dismissed notices) delete_metadata( 'user', 0, 'aica_dismissed_notices', '', true ); delete_metadata( 'user', 0, 'aica_onboarding_complete', '', true ); // Clear any cached data wp_cache_flush(); } // Check if this is a multisite installation if ( is_multisite() ) { // Get all sites $sites = get_sites( array( 'number' => 0, // Get all sites 'fields' => 'ids', ) ); foreach ( $sites as $site_id ) { switch_to_blog( $site_id ); aica_delete_plugin_data(); restore_current_blog(); } } else { // Single site installation aica_delete_plugin_data(); }