<?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
/// ---------------------------------------------------------------
/// FUNCAO PARA PROCESSAR A IMAGEM E RETORNAR UM LARGE OBJECT 
/// DA MESMA
/// ---------------------------------------------------------------
function addImage($conn,$filename)
{	
	include 'includes/begin.php';
	
	// Open and read the file that was uploaded
	$fp = fopen($filename, "r");
	
	if ($fp == false) {
		$erro = "Erro ao abrir a imagem. Por favor entre em contato com o suporte do sistema.";
	  	throw new Exception($erro);
	}
	 
	// 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) {
			$erro = "Erro na escrita da imagem. Por favor entre em contato com o suporte do sistema.";
	  		throw new Exception($erro); 	   		
	   	}

	}

	// 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;
	}
	
	return $lo_id;
}

/// SELECIONE O LADO DA IMAGEM
$img_document_side = 'img_documento_frente';
$img_document_side = $ladoDocumento === 'back' ? 'img_documento_verso' : 'img_documento_frente'; 

/// INSERCAO DA IMAGEM NA TABELA PESSOA_DOCUMENTO
$sql = "SELECT *
         FROM  cabcomum.pessoa_documento
         WHERE idpessoa = $idPessoa and
               idtipo_documento = $idTipoDocumento";

$result = pg_query($dbh, $sql);

$a=pg_num_rows($result);

if (pg_num_rows($result) != 0)
{  	
	$filetosave = $fileNameServer; // file to save in the database
	$loId = addImage($conn,$filetosave);

	$sql = "UPDATE cabcomum.pessoa_documento
              SET
                     idpessoa 			 =  $idPessoa,
                     idtipo_documento    =  $idTipoDocumento,
                     $img_document_side  =  '$loId',
                     apresentado         =  '1',
                     data_atualizacao    =  now()
              WHERE idpessoa = $idPessoa AND
                    idtipo_documento = $idTipoDocumento";
	
  	/*$sql = "UPDATE cabcomum.pessoa_documento
              SET
                     idpessoa =           $idPessoa,
                     idtipo_documento  =  $idTipoDocumento,
                     img_documento     =  lo_import('$fileNameServer'),
                     apresentado       =  '1',
                     data_atualizacao  =  now()
              WHERE idpessoa = $idPessoa and
                    idtipo_documento = $idTipoDocumento";*/
  	
   $result = pg_query($dbh,$sql);
    
   if (!$result)
   {   
      $erro = "Erro na Inser��o da imagem do documento no banco de dados.";
	  throw new Exception($erro);      
   }
   
}
else
{
 	$erro = "Informe os dados do documento antes de enviar a imagem.";
	throw new Exception($erro);     	
}
?>