<?php

use Linkavista\src\api\LinkavistaRest;
use Linkavista\src\LinkavistaActivate;
use Linkavista\src\LinkavistaUninstall;
use Linkavista\src\LinkavistaDeactivate;
use Linkavista\src\config\LinkavistaConfig;

/*
Plugin Name: LinkaVista
Plugin URI: https://linkavista.com/
Description: LinkaVista — monétise ton site en un clic 💰 Publie, vends, et profite d'un Netlinking simple et rentable 🚀
Author: Linkavista
Version: 1.12
Author URI: https://linkavista.com
*/

defined('WPINC') or die;

// Compatibilite avec l'ancien nom (linkmania) et le nouveau (linkavista)
define('LINKMANIA_PLUGIN_DIR', plugin_dir_path(__FILE__));
define('LINKMANIA_PLUGIN_NAME', plugin_basename(__FILE__));
define('LINKMANIA_PLUGIN_FILE', __FILE__);
define('LINKAVISTA_PLUGIN_DIR', LINKMANIA_PLUGIN_DIR);
define('LINKAVISTA_PLUGIN_NAME', LINKMANIA_PLUGIN_NAME);
define('LINKAVISTA_PLUGIN_FILE', LINKMANIA_PLUGIN_FILE);

require_once __DIR__ . '/vendor/autoload.php';

/*
 * Constantes de configuration (à définir dans wp-config.php) :
 *
 *   LINKAVISTA_DEBUG       (bool) : active la journalisation de debug. Défaut false.
 *   LINKAVISTA_LEGACY_AUTH (bool) : accepte l'ancienne signature HMAC non
 *                                   horodatée (rejouable). Défaut true pour la
 *                                   compatibilité ascendante. La passer à false
 *                                   une fois la plateforme migrée vers le HMAC
 *                                   horodaté + nonce :
 *                                       define('LINKAVISTA_LEGACY_AUTH', false);
 *   LINKAVISTA_SANITIZE_CONTENT (bool) : filtre le HTML des articles reçus via
 *                                   wp_kses_post (retire <script>, on*, ...).
 *                                   Défaut false (HTML d'article préservé). À
 *                                   activer pour une défense-en-profondeur :
 *                                       define('LINKAVISTA_SANITIZE_CONTENT', true);
 */

/*
 * Journalisation de debug (CWE-532).
 *
 * N'écrit dans les logs QUE si la constante LINKAVISTA_DEBUG est explicitement
 * définie à true (typiquement dans wp-config.php d'un environnement de dev).
 * En production, ces appels sont silencieux : on évite ainsi de déverser le
 * contenu des articles, des données utilisateur ou des paramètres de requête
 * dans /wp-content/debug.log, fichier parfois accessible publiquement.
 */
if (!function_exists('lm_debug_log')) {
    function lm_debug_log($message)
    {
        if (!defined('LINKAVISTA_DEBUG') || !LINKAVISTA_DEBUG) {
            return;
        }
        error_log(is_scalar($message) ? (string) $message : print_r($message, true));
    }
}

/*
 * Se lance lorsque l'on active le plugin
 */
function Linkavista_activate()
{
    Linkavista\src\LinkavistaActivate::activate();
}

/*
 * Se lance lorsque l'on desactive le plugin
 */
function Linkavista_deactivate()
{
    Linkavista\src\LinkavistaDeactivate::deactivate();
    flush_rewrite_rules();
}

/*
 * Se lance lorsque l'on desinstalle le plugin
 */
function Linkavista_uninstall()
{
    Linkavista\src\LinkavistaUninstall::uninstall();
}

LinkavistaConfig::init();

/*
 * Hooks
 */
register_activation_hook(__FILE__, 'Linkavista_activate');
register_deactivation_hook(__FILE__, 'Linkavista_deactivate');
register_uninstall_hook(__FILE__, 'Linkavista_uninstall');

require_once LINKAVISTA_PLUGIN_DIR . 'src/api/LinkavistaRest.php';
require_once LINKAVISTA_PLUGIN_DIR . 'src/utils/helpers.php';

// Initialisation
LinkavistaRest::init();
