query( 'DROP TABLE IF EXISTS `' . esc_sql( $wpdb->prefix . 'bearius_ml_' . $bearius_ml_table ) . '`' ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.SchemaChange -- Own tables, fixed names. } // Options, transients and the classic widget. foreach ( array( 'bearius_ml_', '_transient_bearius_ml_', '_transient_timeout_bearius_ml_' ) as $bearius_ml_prefix ) { $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like( $bearius_ml_prefix ) . '%' ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Uninstall clean-up. } delete_option( 'widget_bearius_ml_switcher' ); // Fields of posts, terms and users. $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->postmeta} WHERE meta_key LIKE %s", $wpdb->esc_like( '_bearius_ml_' ) . '%' ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.SlowDBQuery.slow_db_query_meta_key -- Uninstall clean-up. $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->termmeta} WHERE meta_key LIKE %s", $wpdb->esc_like( '_bearius_ml_' ) . '%' ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.SlowDBQuery.slow_db_query_meta_key -- Uninstall clean-up. $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE %s", $wpdb->esc_like( 'bearius_ml_' ) . '%' ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.SlowDBQuery.slow_db_query_meta_key -- Uninstall clean-up. // Hidden language taxonomy. $bearius_ml_tt = $wpdb->get_col( $wpdb->prepare( "SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE taxonomy = %s", 'bearius_ml_language' ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Uninstall clean-up. if ( $bearius_ml_tt ) { $bearius_ml_ids = array_map( 'intval', $bearius_ml_tt ); $bearius_ml_terms = $wpdb->get_col( $wpdb->prepare( "SELECT term_id FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id IN (" . implode( ',', array_fill( 0, count( $bearius_ml_ids ), '%d' ) ) . ')', $bearius_ml_ids ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Uninstall clean-up. $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->term_relationships} WHERE term_taxonomy_id IN (" . implode( ',', array_fill( 0, count( $bearius_ml_ids ), '%d' ) ) . ')', $bearius_ml_ids ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Uninstall clean-up. $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id IN (" . implode( ',', array_fill( 0, count( $bearius_ml_ids ), '%d' ) ) . ')', $bearius_ml_ids ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Uninstall clean-up. if ( $bearius_ml_terms ) { $bearius_ml_term_ids = array_map( 'intval', $bearius_ml_terms ); $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->terms} WHERE term_id IN (" . implode( ',', array_fill( 0, count( $bearius_ml_term_ids ), '%d' ) ) . ')', $bearius_ml_term_ids ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Uninstall clean-up. } } foreach ( array( 'bearius_ml_run_queue', 'bearius_ml_daily', 'bearius_ml_import_tick', 'bearius_ml_fix_slugs', 'bearius_ml_sync_all' ) as $bearius_ml_hook ) { wp_clear_scheduled_hook( $bearius_ml_hook ); }