query( $wpdb->prepare( 'DROP TABLE IF EXISTS %i', $wpdb->prefix . $linktender_table ) ); } foreach ( array( 'linktender_settings', 'linktender_db_version', 'linktender_scan_state', 'linktender_lock', 'linktender_last_run', 'linktender_last_full_scan_request', 'linktender_imported_blc', 'linktender_review', 'linktender_checking_started', 'linktender_pending_changes' ) as $linktender_option ) { delete_option( $linktender_option ); } delete_transient( 'linktender_broken_count' ); delete_transient( 'linktender_upgrading' ); delete_transient( 'linktender_net_ok' ); // Short-lived per-user notices ("linktender_notice_"). // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching -- Removing the plugin's own transients on uninstall. $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s OR option_name LIKE %s", $wpdb->esc_like( '_transient_linktender_notice_' ) . '%', $wpdb->esc_like( '_transient_timeout_linktender_notice_' ) . '%' ) ); wp_clear_scheduled_hook( 'linktender_run' ); wp_clear_scheduled_hook( 'linktender_run_more' ); wp_clear_scheduled_hook( 'linktender_network_install' ); if ( function_exists( 'as_unschedule_all_actions' ) ) { as_unschedule_all_actions( 'linktender_run', array(), 'linktender' ); as_unschedule_all_actions( 'linktender_run_more', array(), 'linktender' ); } } if ( is_multisite() ) { // Every site of every network, 100 at a time (get_sites() returns at most 100 per call by default). $linktender_offset = 0; do { $linktender_sites = get_sites( array( 'fields' => 'ids', 'number' => 100, 'offset' => $linktender_offset, 'orderby' => 'id', 'order' => 'ASC', 'update_site_meta_cache' => false, ) ); foreach ( $linktender_sites as $linktender_site_id ) { switch_to_blog( $linktender_site_id ); linktender_uninstall_site(); restore_current_blog(); } $linktender_found = count( $linktender_sites ); $linktender_offset += $linktender_found; } while ( 100 === $linktender_found ); foreach ( get_networks( array( 'fields' => 'ids' ) ) as $linktender_network_id ) { delete_network_option( $linktender_network_id, 'linktender_network_install' ); } wp_clear_scheduled_hook( 'linktender_network_install' ); } else { linktender_uninstall_site(); }