query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s OR option_name LIKE %s", $wpdb->esc_like( '_transient_vibrate_sms_' ) . '%', $wpdb->esc_like( '_transient_timeout_vibrate_sms_' ) . '%' ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange -- our own table. $wpdb->query( $wpdb->prepare( 'DROP TABLE IF EXISTS %i', $wpdb->prefix . 'vibrate_sms_log' ) ); // "Already texted" flags on orders, in both order storages. delete_post_meta_by_key( '_vibrate_sms_sent' ); $hpos_meta = $wpdb->prefix . 'wc_orders_meta'; // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $hpos_meta ) ) ) === $hpos_meta ) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.SlowDBQuery.slow_db_query_meta_key -- one-off cleanup on uninstall. $wpdb->delete( $hpos_meta, array( 'meta_key' => '_vibrate_sms_sent' ) ); } wp_clear_scheduled_hook( 'vibrate_sms_maintenance' ); wp_unschedule_hook( 'vibrate_sms_dispatch' ); if ( function_exists( 'as_unschedule_all_actions' ) ) { as_unschedule_all_actions( 'vibrate_sms_dispatch' ); } } delete_site_transient( 'vibrate_sms_update_manifest' ); if ( is_multisite() ) { foreach ( get_sites( array( 'fields' => 'ids', 'number' => 0, ) ) as $vibrate_sms_site_id ) { switch_to_blog( (int) $vibrate_sms_site_id ); vibrate_sms_uninstall_site(); restore_current_blog(); } } else { vibrate_sms_uninstall_site(); }