<?php
/**
 * Plugin Name: Maintenance GENIUS
 * Plugin URI: https://maintenancegenius.ca
 * Description: The most complete maintenance plugin — 14+ HD presets, AI assistant, bcrypt security, GDPR mode, countdown, remote control. Made in Québec.
 * Version: 2.9.131
 * Author: 1001Web.ca
 * Author URI: https://www.1001web.ca
 * Text Domain: maintenance-genius
 * Domain Path: /languages
 * Requires at least: 6.4
 * Requires PHP: 7.4
 * License: GPL v2 or later
 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
 * 
 * ============================================
 * ARCHITECTURE
 * ============================================
 * Une classe = une responsabilité, chargement via bootstrap unique.
 *
 * Structure:
 * - maintenance-genius.php : Bootstrap (ce fichier)
 * - includes/class-settings.php : Defaults centralisés
 * - includes/class-main.php : Logique maintenance
 * - includes/class-admin.php : Interface admin
 * - includes/class-ajax.php : Handlers AJAX
 * - includes/class-frontend.php : Page maintenance
 * - templates/admin-page.php : Template HTML admin
 * - assets/js/admin.js : JavaScript admin
 * - assets/css/admin.css : Styles admin
 * - languages/ : Fichiers de traduction
 * ============================================
 */

// Sécurité: empêcher l'accès direct
if (!defined('ABSPATH')) {
    exit;
}

// ============================================
// CONSTANTES
// ============================================
define('MG_VERSION', '2.9.131');
define('MG_PLUGIN_DIR', plugin_dir_path(__FILE__));
define('MG_PLUGIN_URL', plugin_dir_url(__FILE__));
define('MG_PLUGIN_FILE', __FILE__);

// L'UI monitoring est cachée dans MG Core. Le moteur reste actif pour rétro-compatibilité
// (sites qui avaient déjà activé monitoring — pas de perte de données).
// Override possible : define('MG_DISABLE_MONITORING_UI', false); dans wp-config.php pour réafficher.
if ( ! defined( 'MG_DISABLE_MONITORING_UI' ) ) {
    define( 'MG_DISABLE_MONITORING_UI', true );
}

// ============================================
// CHARGEMENT DES TRADUCTIONS
// ============================================
// WP 6.7+ charge les traductions JIT automatiquement via Text Domain header.
// On garde load_plugin_textdomain pour compatibilité WP < 6.7.
function mg_load_textdomain() {
    // phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound -- Kept for WP < 6.7 compatibility
    load_plugin_textdomain(
        'maintenance-genius',
        false,
        dirname(plugin_basename(__FILE__)) . '/languages'
    );
}
add_action('init', 'mg_load_textdomain', 0);

// ============================================
// AUTOLOAD DES CLASSES
// ============================================
function mg_load_classes() {
    $classes = [
        'class-settings.php',
        'class-license.php',  // Gestion des licences WHMCS (v2.6.4)
        'class-chat.php',     // Chat IA Assistant (v2.6.5)
        'class-remote.php',   // Contrôle à distance mobile (v2.7.0)
        'class-monitoring.php', // Monitoring uptime (v2.8.0)
        'class-updates.php',  // Notification de MAJ 3 niveaux (v2.9.131)
        'class-main.php',
        'class-admin.php',
        'class-ajax.php',
        // class-frontend.php est chargé à la demande
    ];

    foreach ($classes as $class) {
        $file = MG_PLUGIN_DIR . 'includes/' . $class;
        if (file_exists($file)) {
            require_once $file;
        }
    }
}

// ============================================
// INITIALISATION
// ============================================
function mg_init() {
    // Charger les classes
    mg_load_classes();

    // Initialiser les modules
    MG_Main::init();
    MG_Remote::init(); // Contrôle à distance mobile (v2.7.0)
    MG_Monitoring::init(); // Monitoring uptime (v2.8.0)

    // Admin seulement
    if (is_admin()) {
        $diag_file = MG_PLUGIN_DIR . 'includes/class-diagnostic.php';
        if (file_exists($diag_file)) {
            require_once $diag_file;
            MG_Diagnostic::init();
        }
        MG_Admin::init();
        MG_Updates::init();
    } else {
        // Admin bar toggle sur le frontend (v2.6.64)
        MG_Admin::init_admin_bar();
    }
}

// Initialiser AJAX séparément (doit être fait tôt)
function mg_init_ajax() {
    mg_load_classes();
    MG_Ajax::init();
}

// Démarrer le plugin (init pour WP 6.7+ compatibilité textdomain)
// Priorité 1 : après mg_load_textdomain (priorité 0)
add_action('init', 'mg_init', 1);
add_action('init', 'mg_init_ajax', 1);

// ============================================
// HOOK D'ACTIVATION (doit être au top level)
// ============================================
register_activation_hook(__FILE__, 'mg_on_activation');
function mg_on_activation() {
    mg_load_classes();
    MG_Main::on_activation();
}

// ============================================
// HOOKS DE DÉSINSTALLATION
// ============================================
// Le fichier uninstall.php gère le nettoyage
