<?php

if (!defined('WP_UNINSTALL_PLUGIN')) {
    exit;
}

// llms_db_version must go with them, or a reinstall skips the schema ladder; see docs/internals-bootstrap-and-admin.md.
delete_option('llms_db_version');
delete_option('llms_db_condition');
delete_option('llms_rebuild_pending');
delete_option('llms_artifact_stamp');
delete_option('llms_artifact_undeletable_at');
delete_option('llms_artifact_cycles');
delete_option('llms_generation_lock');
delete_option('llms_artifact_lock');
delete_option('llms_generator_settings');
delete_option('llms_last_generated');
delete_option('llms_last_excluded');
delete_option('llms_local_log');
delete_option('llms_bot_hits_today');
delete_option('llms_site_log_enabled_status');
delete_option('vk_embed_token');
delete_option('vk_client_id');
delete_option('vk_connected_email');
delete_option('vk_summary_data');
delete_transient('vk_summary_fresh');

// This pattern tracks LLMS_DB::option_name() . '_step_' . N and has to change if that does.
global $wpdb;
$wpdb->query($wpdb->prepare(
    "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s",
    $wpdb->esc_like('llms_db_version_step_') . '%'
));

// Current site only; the network loop is deliberately not here; see docs/internals-bootstrap-and-admin.md.
$wpdb->query("DROP TABLE IF EXISTS `{$wpdb->prefix}llms_txt_cache`");

global $wp_filesystem;
require_once(ABSPATH . 'wp-admin/includes/file.php');
WP_Filesystem();

if (defined('FLYWHEEL_PLUGIN_DIR')) {
    $root_file = trailingslashit(dirname(ABSPATH)) . 'www/llms.txt';
} else {
    $root_file = ABSPATH . 'llms.txt';
}
if (file_exists($root_file)) {
    if ($wp_filesystem && $wp_filesystem->exists($root_file)) {
        $wp_filesystem->delete($root_file);
    } else {
        wp_delete_file($root_file);
    }
}

$siteurl = get_option('siteurl');
if ($siteurl) {
    $domain = wp_parse_url($siteurl, PHP_URL_HOST);
    if ($domain) {
        $upload_dir = wp_upload_dir();
        $basedir = $upload_dir['basedir'];
        $files_to_delete = array(
            $basedir . '/' . $domain . '.llms.txt',
            $basedir . '/' . $domain . '.temp.llms.txt',
            $basedir . '/llms.txt', // legacy path
        );
        foreach ($files_to_delete as $file) {
            if (file_exists($file)) {
                if ($wp_filesystem && $wp_filesystem->exists($file)) {
                    $wp_filesystem->delete($file);
                } else {
                    wp_delete_file($file);
                }
            }
        }
    }
}

$posts = get_posts([
    'post_type' => 'llms_txt',
    'posts_per_page' => -1,
    'post_status' => 'any'
]);

foreach ($posts as $post) {
    wp_delete_post($post->ID, true);
}

flush_rewrite_rules();