<?PHP
/*
 * DIREITOS AUTORAIS RESERVADOS (C) 2007 UFRJ
 * 
 * ESTE PROGRAMA É SOFTWARE LIVRE; VOCÊ PODE REDISTRIBUÍ-LO E/OU MODIFICÁ-LO SOB OS
 * TERMOS DA LICENÇA PÚBLICA GERAL GNU CONFORME PUBLICADA PELA FREE SOFTWARE FOUNDATION;
 * TANTO A VERSÃO 2 DA LICENÇA, COMO (A SEU CRITÉRIO) QUALQUER VERSÃO POSTERIOR.

 * ESTE PROGRAMA É DISTRIBUÍDO NA EXPECTATIVA DE QUE SEJA ÚTIL, PORÉM, SEM NENHUMA GARANTIA;
 * NEM MESMO A GARANTIA IMPLÍCITA DE COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
 * CONSULTE A LICENÇA PÚBLICA GERAL DO GNU PARA MAIS DETALHES.
 * 
 * VOCÊ DEVE TER RECEBIDO UMA CÓPIA DA LICENÇA PÚBLICA GERAL DO GNU JUNTO COM ESTE PROGRAMA; 
 * SE NÃO, ACESSE <<HTTP://WWW.GNU.ORG/LICENSES/LICENSES.PT-BR.HTML>>
 */

<?php
//include 'begin.php';

function addImage($conn,$filename)
{	
	include 'includes/begin.php';
	
	// Open and read the file that was uploaded
	$fp = fopen($filename, "r");
	
	if($fp == false)
		die("Error opening file");
	 
	// Begin a PostgreSQL transaction
	pg_exec($dbh, "begin");
	
	// create the large object and get the lo id
	$lo_id = pg_locreate($dbh);
	
	// have postgresql open the large object for writing
	$lo_fp = pg_loopen($dbh, $lo_id, "w");

	 // for ever 8192 bytes of the uploaded file
	while($nbytes = fread($fp, 8192)) {
	
		// write to the large object
	   	$tmp = pg_lowrite($lo_fp, $nbytes);
	
		// handle possible error
	   	if($tmp < $nbytes) {
	   		die("error while writing large object");
	   	}

	}

	// close the large object
	pg_loclose($lo_fp);
	
	// commit the postgresql transaction
	pg_exec($dbh, "commit");

	// close the uploaded file
	fclose($fp);
	
	if (!is_int($lo_id)) {
		   // return false
		return false;
	}
	
	if (is_int($lo_id)) {
		// return large object id
		return $lo_id;
	}

}

function ReadImage($lo_id,$filesize)
{
	pg_exec($dbh,"begin");

	$handle = pg_lo_open($dbh, $lo_id,"r");

   	$data = pg_lo_read($handle, $filesize);
   	//pg_lo_close($lo_fp);

   	//pg_exec($conn,"commit");

	return $data;
}

function WriteImageToFile($id,$filename,$filesize)
{
	$data = ReadImage($id,$filesize);
   	$f = fopen($filename,"w");
   	if(fwrite($f,$data) == FALSE)
   	{
		$message ="ERROR";//getTokenValue("CANT_WRITE_FILE",$lang)." dbresource.txt";
   	}
   	fclose($f);
}

?>