<?php

if (!defined('ABSPATH')) {
    exit; // Pas d'accès direct !
}

add_action('wp_login', 'hpixl_securicheck_notifier_connexion_admin', 10, 2);

function hpixl_securicheck_notifier_connexion_admin($user_login, $user)
{

    //Si on a selectionner l'option d'envoi de notification dès qu'un admin se connecte
    $destinataire = get_option('admin_email'); // valeur par défaut
    $option_connexion_admin = get_option('hpixl_securicheck_toggle_notifications_compte_admin');
    $option_destinataire = get_option('hpixl_securicheck_destinataire_email_notifications');
    if (!empty($option_connexion_admin) && $option_connexion_admin) {
        if (!empty($option_destinataire) && $option_destinataire && hpixl_securicheck_is_valid_email($option_destinataire)) {
            $destinataire = $option_destinataire;
        }

        // Vérifie si l'utilisateur a les capacités admin
        if (!user_can($user, 'manage_options')) {
            return;
        }

        // Évite le spam (5 min entre deux emails pour le même user)
        $transient_key = 'securicheck_admin_login_' . $user->ID;

        if (get_transient($transient_key)) {
            return;
        }

        set_transient($transient_key, true, 30);

        // Récupération IP (gestion proxy simple)
        $ip = $_SERVER['REMOTE_ADDR'] ?? 'IP inconnue';

        if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $ip = trim(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0]);
        }

        hpixl_securicheck_envoi_mail_connexion_admin($destinataire, $ip, $user_login);
    }
}


/**
 * on envoie un e-mail au destinataire en paramètre
 */
function hpixl_securicheck_envoi_mail_connexion_admin($destinataire, $ip, $login)
{
    $site_name = get_bloginfo('name');
    $admin_email = get_option('admin_email');
    $user_email = $destinataire;

    //si email non valide on défini le destinataire comme l'administrateur
    if (!hpixl_securicheck_is_valid_email($user_email)) {
        $user_email = $admin_email;
    }

    $headers = array(
        'Content-Type: text/html; charset=UTF-8',
        __('From: WP Securicheck <', 'securicheck') . $admin_email . '>'
    );

    $subject = __('Connexion d\'un adminsitrateur pour le site ', 'securicheck') . $site_name . ' !';
    $body = hpixl_securicheck_create_email_body_connexion_admin($ip, $login);

    wp_mail($user_email, $subject, $body, $headers);
}

function hpixl_securicheck_create_email_body_connexion_admin($ip, $login)
{
    $recipient_user = get_user_by('email', get_option('admin_email'));
    $recipient_firstname = $recipient_user ? $recipient_user->user_firstname : '';

    ob_start();

    include(plugin_dir_path(dirname(__FILE__)) . 'utils/mail_connexion_admin.php');

    $body = ob_get_contents();

    ob_end_clean();
    return $body;
}
