<?php

function make_img_file_name( $uid, $seq )
{
    $seq4 = $seq % 256;
    $seq = ($seq - $seq4) / 256;
    $seq3 = $seq % 256;
    $seq = ($seq - $seq3) / 256;
    $seq2 = $seq % 256;
    $seq = ($seq - $seq2) / 256;
    $seq1 = $seq;
    $name = sprintf( "u%03d/%03x/%02x/%02x/u%03d-%03x-%02x-%02x-%02x",
            $uid, $seq1, $seq2, $seq3,  $uid, $seq1, $seq2, $seq3, $seq4 );
    return $name;
}

function imagecmd( $conn, $cmd, $authenticated, $authlevel )
{
	global $G_CFG_DIR_LIB;

	$id = null;
	if( !var_int( "R", "id", $id, 1, 999999 ) )
	{
		$cmd = "img_none";
	}
	if( !var_string( "R", "sz", $size, 2, 2 ) )
	{
		$cmd = "img_none";
	}
	$imgfile = "blorg.jpg";

	$sql =	"select " .
				"fu_id, " .
				"ff_seq_nr, " .
				"ff_filename " .
			"from " .
				"fotolib_foto " .
			"where " .
				"ff_id = \$1";
	$values = array( 1 => $id );

	$allow_big = false;
	switch( $cmd )
	{
		case "img":
            if( $authlevel < 2 )
            {
                $sql .= " and ff_state = \$2 and ff_public = 1";
                $values[2] = FFS_ACTIVE;
            }
			if( $authlevel > 0 )
			{
				$allow_big = true;
			}
			break;
		case "img_in":
			$sql .= " and ff_state = \$2";
			$values[2] = FFS_INCOMING;
			$allow_big = true;
			if( $authlevel <= 0 )
			{
				$size = "";
			}
			break;
		case "img_any":
			$allow_big = true;
			if( $authlevel <= 0 )
			{
				$size = "";
			}
			break;
		default:
			$size = "";
			break;
	}

	switch( $size )
	{
		case "bg":
			if( !$allow_big )
			{
				$size = "";
			}
			break;
		case "sm":
		case "ti":
		case "TH":
		case "th":
			break;
		default:
			$size = "";
			break;
	}

	$scale = 0;
	// echo "<p>size = $size</p>\n";
	$imgfile = "blorg.png";
	if( $size != "" )
	{
		$ress = pg_query_params( $conn, $sql, $values );
		if( $ress )
		{
			$row = pg_fetch_array( $ress, NULL, PGSQL_ASSOC );
			if( $row )
			{
				$uid = $row["fu_id"];
				$seq = $row["ff_seq_nr"];
				$nam = $row["ff_filename"];
				$pfx = substr( $nam, 0, strlen( $nam ) - 4 );
				// $pfx = make_img_file_name( $uid, $seq );
				$sfx = ".jpg";
				// echo "<p>uid = $uid</p>\n";
				// echo "<p>seq = $seq</p>\n";
				// echo "<p>nam = $nam</p>\n";
				// echo "<p>pfx = $pfx</p>\n";
				// echo "<p>sfx = $sfx</p>\n";
				switch( $size )
				{
					case "th":
						$imgfile = $pfx . ".64" . $sfx;
						break;
					case "TH":
						$imgfile = $pfx . ".128" . $sfx;
						break;
					case "ti":
						$imgfile = $pfx . ".1024" . $sfx;
						$scale = 512;
						break;
					case "sm":
						$imgfile = $pfx . ".1024" . $sfx;
						break;
					case "bg":
						$imgfile = $pfx . $sfx;
						break;
					default:
						break;
				}
			}
		}
	}

	$filename = $G_CFG_DIR_LIB . "/" . $imgfile;
	// echo "<p>imgfile = $imgfile</p>\n";
	if( $scale == 0 )
	{
		$fd = fopen( $filename, "r" );
		if( !$fd )
		{
			return;
		}
		// header( "Cache-Control: no-cache, must-revalidate" );
		// header( "Expires: Sat, 16 Jan 2038 05:30:00 GMT" );
		set_caching();
		header( "Content-type: image/jpeg" );
		fpassthru( $fd );
		fclose( $fd );
	}
	else
	{
		gfx_send_scaled( $filename, $scale );
	}
}


?>