<?php
// premium/loader.php

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

// Marcar que estamos en modo premium
define('WP2FA_PREMIUM', true);

/**
 * Verifica la validez de la licencia usando la clase WP2FA_License_Manager.
 */
function wp2fa_is_license_valid() {
    $license_key = get_option('wp2fa_license_key');
    $domain = $_SERVER['HTTP_HOST'];

    // Comprobar si ya está en caché (24 horas)
    $cached_status = get_transient('wp2fa_license_status');
    if ($cached_status !== false) {
        return $cached_status === 'valid';
    }

    // Validación remota
    $response = wp_remote_post('https://eroqs.com/lic/v.php', [
        'body' => [
            'action' => 'validate',
            'license_key' => $license_key,
            'domain' => $domain,
        ],
    ]);

    // Log para depuración
    wp2fa_log_license_request($license_key, $domain, $response);

    if (is_wp_error($response)) {
        error_log('WP2FA - Error en la solicitud: ' . $response->get_error_message());
        return false;
    }

    $body = wp_remote_retrieve_body($response);
    $data = json_decode($body, true);

    if (isset($data['valid']) && $data['valid'] === true) {
        // Si la validación fue exitosa, guardamos el estado en caché
        set_transient('wp2fa_license_status', 'valid', 24 * HOUR_IN_SECONDS);
        return true;
    } else {
        set_transient('wp2fa_license_status', 'invalid', 6 * HOUR_IN_SECONDS);
        return false;
    }
}

// Log para la validación de licencia
function wp2fa_log_license_request($license_key, $domain, $response) {
    $log_file = plugin_dir_path(__FILE__) . 'log_licencia.txt';

    $log_data = "Fecha: " . date('Y-m-d H:i:s') . "\n";
    $log_data .= "Dominio detectado: " . $domain . "\n";
    $log_data .= "Clave enviada: " . $license_key . "\n";
    $log_data .= "Contenido enviado (POST):\n" . print_r([
        'action' => 'validate',
        'license_key' => $license_key,
        'domain' => $domain
    ], true) . "\n";

    if (is_wp_error($response)) {
        $log_data .= "ERROR en la solicitud: " . $response->get_error_message() . "\n";
    } else {
        $log_data .= "Respuesta del servidor:\n";
        $log_data .= print_r(wp_remote_retrieve_body($response), true) . "\n";
    }

    $log_data .= "----------------------\n";

    file_put_contents($log_file, $log_data, FILE_APPEND);
}

// Validar la licencia y cargar funciones premium si es válida
if (wp2fa_is_license_valid()) {
    require_once plugin_dir_path(__FILE__) . 'class-email.php';
    require_once plugin_dir_path(__FILE__) . 'class-backup-codes.php';
} else {
    // Mostrar aviso en el admin si la licencia no es válida
    add_action('admin_notices', function () {
        echo '<div class="notice notice-warning is-dismissible"><p>';
        _e('Tu licencia de WP 2FA Authenticator no es válida o no está autorizada para este dominio. Las funciones premium están desactivadas.', 'wp-2fa-authenticator');
        echo '</p></div>';
    });
}
