<?php
/**
 * @intranet-file common/captcha.php
 * @intranet-file-version 2026.03.13.1
 * @intranet-file-date 2026-03-13
 * @intranet-file-owner CSIF Intranet
 */
// captcha.php

function generateCaptchaString() {
    // Excluimos caracteres confusos (I, l, 1, O, 0)
    $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
    $_SESSION['captcha_text'] = substr(str_shuffle($chars), 0, 5);
}

function generateCaptchaImage($text) {
    $width = 200;
    $height = 70;

    $image = imagecreate($width, $height);
    
    // Colores
    $bg = imagecolorallocate($image, 255, 255, 255); 
    $textColor = imagecolorallocate($image, 40, 40, 40);
    $lineColor = imagecolorallocate($image, 64, 186, 213); // Azul cian del estilo

    // Ruido: Puntos
    for ($i = 0; $i < 800; $i++) {
        imagesetpixel($image, rand(0, $width), rand(0, $height), $lineColor);
    }
    
    // Ruido: Líneas
    for ($i = 0; $i < 6; $i++) {
        imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $lineColor);
    }

    $fontPath = __DIR__ . '/Inkfree.ttf';
    
    // Verificar fuente
    if (!file_exists($fontPath)) {
        // Fallback si no hay fuente TTF: usar fuente del sistema
        $fontW = imagefontwidth(5);
        $fontH = imagefontheight(5);
        $x = ($width - (strlen($text) * $fontW)) / 2;
        $y = ($height - $fontH) / 2;
        imagestring($image, 5, $x, $y, $text, $textColor);
    } else {
        // Escribir con TTF rotado
        $x = 30;
        for ($i = 0; $i < strlen($text); $i++) {
            $angle = rand(-15, 15);
            $y = rand(45, 55);
            imagettftext($image, 24, $angle, $x, $y, $textColor, $fontPath, $text[$i]);
            $x += 30;
        }
    }

    ob_start();
    imagepng($image);
    $data = ob_get_clean();
    imagedestroy($image);
    return base64_encode($data);
}
?>