get_col($wpdb->prepare("SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s",$wpdb->esc_like('digibl_diag_').'%')) as $name){delete_option($name);} $settings=get_option('digibl_form_settings',[]); if(is_array($settings)&&!empty($settings['delete_on_uninstall'])){ do { $ids=$wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type='digibl_entry' LIMIT 100"); $removed=0; foreach($ids as $id){if(wp_delete_post((int)$id,true))$removed++;} // Never loop indefinitely when a database write fails. } while(count($ids)===100&&$removed===100); foreach(['counts','claims','limits'] as $suffix){ $wpdb->query($wpdb->prepare('DROP TABLE IF EXISTS %i', $wpdb->prefix.'digibl_interaction_'.$suffix)); } delete_option('digibl_interactions_schema_version'); delete_option('digibl_form_settings'); delete_option('digibl_form_issue'); } foreach($wpdb->get_col($wpdb->prepare("SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s",$wpdb->esc_like('digibl_form_limit_').'%')) as $name){delete_option($name);} wp_clear_scheduled_hook('digibl_interactions_cleanup'); }; if (is_multisite()) { foreach (get_sites(['fields' => 'ids', 'number' => 0]) as $digibl_blog_id) { switch_to_blog((int) $digibl_blog_id); $digibl_remove_interactions(); restore_current_blog(); } } else { $digibl_remove_interactions(); }