query( $wpdb->prepare( 'DROP TABLE IF EXISTS %i', $wpdb->prefix . 'ajsec_log' ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.DirectDatabaseQuery.SchemaChange -- Own table, removed on opted-in uninstall. // Counters stored as transients (ajsec_ll_*, ajsec_rl_*, ajsec_ll_mail). $wpdb->query( // phpcs:ignore WordPress.DB.DirectDatabaseQuery -- Bulk removal of this plugin's transients. $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s OR option_name LIKE %s", $wpdb->esc_like( '_transient_ajsec_' ) . '%', $wpdb->esc_like( '_transient_timeout_ajsec_' ) . '%' ) ); } if ( is_multisite() ) { $ajsec_site_ids = get_sites( array( 'fields' => 'ids', 'number' => 0, ) ); foreach ( $ajsec_site_ids as $ajsec_site_id ) { switch_to_blog( (int) $ajsec_site_id ); ajsec_uninstall_site(); restore_current_blog(); } unset( $ajsec_site_ids, $ajsec_site_id ); } else { ajsec_uninstall_site(); }