<?php
ob_start();
require_once __DIR__ . '/../src/config.php';
require_once __DIR__ . '/../src/security.php';
require_once __DIR__ . '/fnc.php';

start_secure_session();
// Connexion variables :
// $_SESSION['userId'], $_SESSION['email'], $_SESSION['preferredLanguage']

if(isset($_GET['logOut']) && $_GET['logOut'] === '1') {

    foreach ($_SESSION as $key => $value) {
        unset($_SESSION[$key]);
    }

    session_destroy();
}

require_once '../src/translation.php';
$lang = DEFAULT_LANGUAGE;
if(isset($_GET['l']) && key_exists(strtoupper($_GET['l']), ENABLED_LANGUAGES)) {
    $lang=$_GET['l'];
}

// Prepare data for the template
$data = [];
$data['lang'] = $lang;
$data['page_title'] = tr('T0001', $lang);
$data['site_name'] = tr('T0001', $lang);
$data['top_title'] = tr('T0004', $lang);
$data['sub_title'] = tr('T0005', $lang);
$data['sub_title_2'] = tr('T0006', $lang);
$data['start_record'] = tr('T0007', $lang);
$data['stop_record'] = tr('T0008', $lang);
$data['upload_button'] = tr('T0009', $lang);
$data['loading_title'] = tr('T0017', $lang);
$data['loading_subtitle'] = tr('T0018', $lang);
$data['contact_text'] = tr('T0036', $lang);
$data['h1_small'] = tr('T0013', $lang);
$data['p_small'] = tr('T0014', $lang);
$data['p_small_2'] = tr('T0015', $lang);
$data['p_small_3'] = tr('T0016', $lang);

// Alternate links generation HTML
ob_start();
foreach (ENABLED_LANGUAGES as $key => $value) {
    if (strtolower($key) !== strtolower($lang)) {
        echo '<link rel="alternate" hreflang="'.strtolower($key).'" href="'.WEB_SITE_PROTOCOL.'://'.WEB_SITE_DOMAIN_NAME.'/?l='.strtolower($key).'">';
    }
}
$data['alternate_links_html'] = ob_get_clean();

// JS translations
$data['js_translations_html'] = json_encode(TEXTS, JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR);

// Cookie consent src and privacy url
$data['cookie_consent_src'] = WEB_SITE_PROTOCOL . '://' . WEB_SITE_DOMAIN_NAME . '/js/cookie-consent.js';
$data['site_domain'] = WEB_SITE_DOMAIN_NAME;
$data['privacy_url'] = WEB_SITE_PROTOCOL . '://' . WEB_SITE_DOMAIN_NAME . '/cookies-and-personal-data.php';

// Google analytics and tag manager
$data['google_analytics_html'] = WEB_SITE_GOOGLE_ANALYTICS;
$data['google_tag_manager_head_html'] = WEB_SITE_GOOGLE_TAG_MANAGER_HEAD;
$data['google_tag_manager_body_html'] = WEB_SITE_GOOGLE_TAG_MANAGER_BODY;

// JS globals (raw HTML script)
$data['js_globals_html'] = '<script>const JS_LANG = "'. $lang . '"; const JS_DEFAULT_LANG = "'. DEFAULT_LANGUAGE . '"; const PROVIDER = "'. PROVIDER . '"; const USE_MICROPHONE = true;</script>';

// Languages links
ob_start();
$i = 0;
foreach (ENABLED_LANGUAGES as $key => $value) {
    echo '<a href="./?l='.strtolower($key).'" title="'.$value.'">'.$value.'</a>&nbsp;&nbsp;';

    $i++;
    if ($i % 3 === 0)
    {
        echo '<br />';
    }
}
$data['languages_links'] = ob_get_clean();

// Languages select (for header) - generate a <select> with options and current language selected
ob_start();
echo '<select id="languageSelect" name="languageSelect" aria-label="Select language" class="form-control" style="display:inline-block;width:auto;margin-left:10px;">';
foreach (ENABLED_LANGUAGES as $key => $value) {
    $optValue = strtolower($key);
    $selected = (strtolower($key) === strtolower($lang)) ? ' selected' : '';
    echo '<option value="'. $optValue .'"'. $selected .'>'. htmlspecialchars($value, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') .'</option>';
}
echo '</select>';
$data['languages_select_html'] = ob_get_clean();

 // Main description HTML (unescaped)
 $data['main_description_html'] = tr('T0022', $lang);

 echo '<a href="./index-input-text.php?l='.$lang.'">Use text mod</a>';

 // Auth buttons HTML
 ob_start();
if (!isset($_SESSION['userId'])) {
    echo '<br><a href="/subscribe.php?l='.$lang.'" class="btn btn-lg btn-success btn-block" ><i class="fa fa-user-secret" aria-hidden="true"></i> &nbsp;'.tr('T0010', $lang).'</a>';
    echo '<a href="/login.php?l='.$lang.'" class="btn btn-lg btn-warning btn-block" ><i class="fa fa-sign-in" aria-hidden="true"></i> &nbsp;'.tr('T0011', $lang).'</a>';
}
else {
    $fullPaymentURL = PROVIDER_PAYMENT_URL.$_SESSION['email'].'/'.WEB_SITE_PROTOCOL.'/'.WEB_SITE_DOMAIN_NAME;
    echo '<br><br><a href="'.$fullPaymentURL.'" class="btn btn-lg btn-success btn-block" ><i class="fa fa-credit-card" aria-hidden="true"></i> &nbsp;'.tr('T0037', $lang).'</a>';
    echo '<br><a href="'.$fullPaymentURL.'" class="btn btn-lg btn-success btn-block" ><i class="fa fa-money" aria-hidden="true"></i> &nbsp;'.tr('T0038', $lang).'</a>';

    // Fetch token balance from DB and display above logout button
    try {
        $pdo = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=utf8", DB_USER, DB_PASSWORD, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
        $stmt = $pdo->prepare("SELECT tokens_balance FROM `".DB_USER_TABLE_NAME."` WHERE id = :id LIMIT 1");
        $stmt->bindValue(':id', $_SESSION['userId'], PDO::PARAM_INT);
        $stmt->execute();
        $row = $stmt->fetch(PDO::FETCH_ASSOC);
        $balance = ($row && isset($row['tokens_balance'])) ? (int)$row['tokens_balance'] : 0;
        echo '<div style="margin-top:10px;margin-bottom:10px; text-align:center;">';
        echo '<span class="badge badge-primary" style="font-size:1.25rem;padding:0.6em 1em;">' . htmlspecialchars('Tokens : ' . $balance, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') . '</span>';
        echo '</div>';
    } catch (Exception $e) {
        // Log error and continue without showing balance
        error_log('Could not fetch tokens balance for user '.$_SESSION['userId'].': '.$e->getMessage());
    }

    echo '<br><br><a href="/index.php?logOut=1&l='.$lang.'" class="btn btn-lg btn-danger btn-block" ><i class="fa fa-sign-out" aria-hidden="true"></i> &nbsp;'.tr('T0012', $lang).'</a>';
}
$data['auth_buttons_html'] = ob_get_clean();

// Provide languages_links_html (raw)
$data['languages_links_html'] = $data['languages_links'];
unset($data['languages_links']);

// CSRF hidden input
$data['csrf_input_html'] = csrf_input_html();

// Render view
require_once __DIR__ . '/../src/view_render.php';

// Ensure HTML content-type is sent (some helper functions may set JSON earlier)
if (!headers_sent()) {
    header('Content-Type: text/html; charset=UTF-8');
}

$html = render_view(__DIR__ . '/../views/index.html', $data);

// Flush output buffer and emit final HTML
echo $html;
ob_end_flush();

?>
