<?php
$gd = get_extension_funcs("gd");
if (!$gd){
	echo 'Sorry GD no installed!';
	exit();
} 
$def_font = ROOT.'/media/fonts/Comfortaa-Light.ttf';
$j = [
    'letters'	    =>	$VarIO->DefS('captcha_letters', '1234567890'),
    'count'	        =>	$VarIO->DefS('captcha_letters_count', 4),
    'path'	        =>	$VarIO->DefS('captcha_font_path', "default"),
    'size'	        =>	$VarIO->DefS('captcha_font_size', 14),
    'minAngle'	    =>	$VarIO->DefS('captcha_letters_min_angle', -25),
    'maxAngle'	    =>	$VarIO->DefS('captcha_letters_max_angle', 25),
    'minR'	        =>	$VarIO->DefS('captcha_color_min_r', 100),
    'maxR'	        =>	$VarIO->DefS('captcha_color_max_r', 255),
    'minG'	        =>	$VarIO->DefS('captcha_color_min_g', 100),
    'maxG'	        =>	$VarIO->DefS('captcha_color_max_g', 255),
    'minB'	        =>	$VarIO->DefS('captcha_color_min_b', 100),
    'maxB'	        =>	$VarIO->DefS('captcha_color_max_b', 255),
    'w'	            =>	$VarIO->DefS('captcha_width', 120),
    'h'	            =>	$VarIO->DefS('captcha_height', 40),
];
#$j      = json_decode($site->captcha,true);
$demo   = isset($_GET["example"])?true:false;
header('Content-type: image/png');                                                          // тип возвращаемого содержимого (картинка в формате PNG) 
$im     = imagecreatetruecolor($j["w"],$j["h"]);                                            // создаёт новое изображение
imagesavealpha($im, true);                                                                  // устанавливает прозрачность изображения
$bg     = imagecolorallocatealpha($im, 0, 0, 0, 127);                                       // идентификатор цвета для изображения
imagefill($im, 0, 0, $bg);                                                                  // выполняет заливку цветом
putenv( 'GDFONTPATH=' . realpath('.') );                                                    // проверяет путь до файла со шрифтами
$captcha = '';                                                                              // обнуляем текст
for ($i = 0; $i < $j["count"]; $i++){
    $captcha   .= $j["letters"][ rand(0, strlen($j["letters"])-1) ];                        // дописываем случайный символ из алфавила 
    $x          = ($j["w"] - 20) / $j["count"] * $i + 10;                                   // растояние между символами
    $x          = rand($x, $x+4);                                                           // случайное смещение
    $y          = $j["h"] - ( ($j["h"] - $j["size"]) / 2 );                                 // координата Y
    $curcolor   = imagecolorallocate( $im, 
                    rand($j["minR"], $j["maxR"]), 
                    rand($j["minG"], $j["maxG"]), 
                    rand($j["minB"], $j["maxB"])
    );                                                                                      // цвет для текущей буквы
    $angle      = rand($j["minAngle"], $j["maxAngle"]);                                     // случайный угол наклона 
    imagettftext($im, $j["size"], $angle, $x, $y, $curcolor, 
        ($j["path"] == "default"?$def_font:$core->rootPath(xldr_path_fix($j["path"]))), 
        $captcha[$i]
    );                                                                                      // вывод текста
}
if (!$demo){
	$_SESSION['captcha'] = $captcha;
}
imagepng($im); //выводим изображение
imagedestroy($im);//отчищаем память

?>