<?php
# <arima> $blah=substr($_SERVER['REQUEST_URI'], strlen($_SERVER['SCRIPT_NAME']));
# <arima> that'll include everything after the script name
# <arima> or $_SERVER['REQUEST_URI'] etc if the server doesn't register those globals

$text_plain 0;

function 
goterror($errno$errmsg$filename$linenum$vars)
{
    global 
$text_plain;
    
    if (!
$text_plain) {
        
header("Content-Type: text/plain");
        
$text_plain 1;
    }
#    echo "Error: $errmsg\n";
}
set_error_handler("goterror");
  
$txt $parts explode("/"substr($_SERVER['REQUEST_URI'], strlen($_SERVER['SCRIPT_NAME'])));
#print_r($txt);

if (!isset($txt[3])) {
    echo 
"Usage: image.php/fontname/fontsize/text";
    exit();
}

# recover /s in the text section
array_shift($parts);
array_shift($parts);
array_shift($parts);
$txt[3] = implode("/"$parts);

#define('FONTNAME', '/home/dukechansey/fonts/' . $txt[1] . '.ttf');
#define('CACHE_DIR', '/home/dukechansey/www/cache/');
#define('CACHE_URL', "http://theteamkillers.net/cache/");
define('FONTNAME''/home/staff/rain/fonts/' $txt[1] . '.ttf');
define('CACHE_DIR''/tmp/cache/');

# $txt[1] = font, default to some mono font atm
# $txt[2] = size of font
# $txt[3] = string to say
  
$hash sha1($txt[1] . $txt[2] . $txt[3]);
$cachename CACHE_DIR $hash '.png';

if (
file_exists($cachename)) {
    
header("Content-Type: image/png");
#    $fd = fopen("/tmp/log", "a");fputs($fd, "[" . $_SERVER['REMOTE_HOST'] . "] served cached file $cachename ($txt[3])\n");fclose($fd);
    
readfile($cachename);
    exit();
} else {
    
$txt[3] = urldecode($txt[3]);    
    if (!(
$bbox = @imagettfbbox($txt[2], 0FONTNAME$txt[3]))) {
        echo 
"Unable to determine image size - Your font is probably invalid.\n";
        exit();
    }
    list(
$llx$lly$lrx$lry$urx$ury$ulx$uly) = $bbox;

    
# $size = imagettfbbox($txt[2],0,FONTNAME,$txt[3]);
    # $dx = abs($size[2]-$size[0]);
    # $dy = abs($size[5]-$size[3]);

    
$img_w $lrx $llx// CTZ-CODE
    
$img_h $lly $uly// CTZ-CODE
    
$coords $bbox;
    
$imh imagecreate($img_w 4$img_h 2);
    
$white imagecolorallocate($imh255255255);
    
$black imagecolorallocate($imh000);

    
# imagettftext($im, $txt[2], 0, ($xpad/2)+1, $dy-(int)($ypad/2), $black, FONTNAME, $txt[3]);
    
if (!@imagettftext($imh$txt[2], 0, -$llx$img_h $lly$blackFONTNAME$txt[3])) { // CTZ-CODE
        
echo "Unable to render font\n";
        exit();
    }
    if (!@
imagepng($imh$cachename)) { // CTZ-CODE
        
echo "Unable to create cache file\n";
        exit();
    }
    if (!@
imagedestroy($imh)) {
        echo 
"Unable to destroy image\n";
        exit();
    }

#    $fd = fopen("/tmp/log", "a");fputs($fd, "[" . $_SERVER['REMOTE_HOST'] . "] served new file $cachename ($txt[3])\n");fclose($fd);

    
if (!headers_sent()) {
        
header("Content-Type: image/png");
        
readfile($cachename);
    } else
        
# just in case
        
@unlink($cachename);
}
?>