<?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
/// ------------------------------------------------------------------------------
/// PARA O SISTEMA DA CULTURA SOMENTE
/// ------------------------------------------------------------------------------ 
SESSION_START();

if(!isset($_SESSION['f_retorno']))
	$_SESSION['f_retorno'] = '';

$_SESSION['f_retorno'] = 'Imagem enviada com sucesso!';
/// ------------------------------------------------------------------------------

/// ------------------------------------------------------------------------------	
/// VARIAVEIS IMPORTANTES PARA CADASTRAR A IMAGEM DO DOCUMENTO. 
/// ------------------------------------------------------------------------------
$idPessoa 		 = $_POST['form_idPessoa'];
$idTipoDocumento = $_POST['form_idTipoDocumento'];
$ladoDocumento 	 = $_POST['form_ladoDocumento'];

/// ------------------------------------------------------------------------------
/// TRATAMENTO DA IMAGEM ENVIADA PELO FORM.
/// ------------------------------------------------------------------------------
$ERROR = $CONFIG = array();

$uploaddir = '/tmp/';

$acceptedTypes = array("image/pjpeg", "image/jpeg", "image/jpg", "image/gif", "image/png", "image/bmp");

$CONFIG['MAX_SIZE'] = 1572864; // 1.5MB //1048576 -1MB

/// VALORES REFERENTES AO TAMANHO DE UMA FOLHA A4.
$CONFIG['WIDTH']  = 1224;    
$CONFIG['HEIGTH'] = 1584;

/// ------------------------------------------------------------------------------

try {
	/// TRATAMENTO DE ERROS TAMBEM NO LADO DO SERVIDOR. CASO O JAVASCRIPT FALHE.
	if (!isset($idPessoa)) {
		$erro = "Erro ao tentar relacionar o documento a pessoa.";
	   	throw new Exception($erro);
	}

	if (!isset($idTipoDocumento) || $idTipoDocumento=='') {
		$erro = "Selecione o tipo de documento.";
	   	throw new Exception($erro);
	}
	
	if (!isset($ladoDocumento) || $ladoDocumento=='') {
		$erro = "Selecione o lado do tipo de documento.";
	   	throw new Exception($erro);
	}

	if ($ladoDocumento != 'front' && $ladoDocumento != 'back') {
		$erro = "Selecione o lado do tipo de documento.";
	   	throw new Exception($erro);
	}
	
	/// SE NAO TEVE ERROA O SUBMETER A IMAGEM PARA O SERVIDOR
	if ($_FILES['form_arquivoDocumento']['error']==0) {
		
		/// NOME DE ARQUIVO A SER ENVIADO
		$file = $uploaddir . basename($_FILES['form_arquivoDocumento']['name']);
	
		/// TESTE DE EXTENSAO DO ARQUIVO
		if ( ! in_array($_FILES['form_arquivoDocumento']['type'], $acceptedTypes) ) {
			$erro = "Extens�o de arquivo inv�lida. Somente s�o aceitas as extens�es PJPEG, JPEG, JPG, PNG, GIF, BMP. - TYPE:" . $_FILES['form_arquivoDocumento']['type'];
			throw new Exception($erro);	
		}
		
		/// TESTE DE TAMANHO DO ARQUIVO.
		if ($_FILES['form_arquivoDocumento']['size'] < 0 || $_FILES['form_arquivoDocumento']['size'] > $CONFIG['MAX_SIZE']) {
	   		$erro = "Tamanho de arquivo inv�lido. Limite m�ximo do arquivo � ".$CONFIG['MAX_SIZE']/(1024*1024) ."MB.";
	   		throw new Exception($erro);	
		}	
		
		/// OBTEM TAMANHO DA IMAGEM 
		$sizes = getimagesize($_FILES['form_arquivoDocumento']['tmp_name']);
		
		/// VERIFICA LARGURA
		if ($sizes[0] > $CONFIG['WIDTH']) {
			$erro = "Largura da imagem n�o deve ultrapassar ". $CONFIG['WIDTH'] ." pixels.";
	   		throw new Exception($erro);				
		}
		
		/// VERIFICA ALTURA
		if ($sizes[1] > $CONFIG['HEIGTH']) {
			$erro = "Altura da imagem n�o deve ultrapassar ". $CONFIG['HEIGTH'] ." pixels.";
	   		throw new Exception($erro);				
		}

		/// TENTA MOVER ARQUIVO TEMPORARIO PARA ARQUIVO DE DESTINO
		if (!move_uploaded_file($_FILES['form_arquivoDocumento']['tmp_name'], $file)) {
			$erro = "Arquivo n�o movido. <br>Por favor entre em contato com o suporte do sistema.<br>";
			throw new Exception($erro);
		}
		
		/// ------------------------------------------------------------------------------
		/// ARQUIVO TEMPORARIO FOI MOVIDO PARA ARQUIVO DE DESTINO.
		/// ------------------------------------------------------------------------------
		
		/// INCLUE ARQUIV PARA INSERIR NA TABELA PESSOA_DOCUMENTO
		$fileNameServer = $file;
		
		/// TENTA SALVAR ARQUIVO DE DESTINO NO BANCO DE DADOS.
		include 'includes/begin.php';
		include 'insereDocumentoImagem.php';
		include 'includes/end.php';
		
		/// APAGA IMAGEM DE DESTINO
		unlink($fileNameServer);		
		
        header('location:cadastro.php?acao=atualizar&idpessoa=' . $idPessoa .  '&reacao=retorno');
	    exit;
	}
	else {
		
		/// TRATA A MENSAGEM DE ERRO AO ENVIAR A IMAGEM
		switch ($_FILES['form_arquivoDocumento']["error"]) 
		{
			case UPLOAD_ERR_INI_SIZE:
			case UPLOAD_ERR_FORM_SIZE:
				throw new Exception("Tamanho de arquivo inv�lido. Limite m�ximo do arquivo � ".$CONFIG['MAX_SIZE']/(1024*1024) ."MB.");
			case UPLOAD_ERR_PARTIAL:
				throw new Exception("Arquivo enviado parcialmente. <br>Por favor entre em contato com o suporte do sistema.<br>");
			case UPLOAD_ERR_NO_FILE:
			case UPLOAD_ERR_NO_TMP_DIR:
			case UPLOAD_ERR_CANT_WRITE:
			case UPLOAD_ERR_EXTENSION:						
				throw new Exception("Arquivo n�o enviado. <br>Por favor entre em contato com o suporte do sistema.<br>");
			break;
			default:
				throw new Exception("Arquivo ".$_FILES['form_arquivoDocumento']['name']." n�o enviado.<br>
				Por favor entre em contato com o suporte do sistema.");
		}// end switch tipo de erro
		
	}// end else
		
} // end if
catch (Exception $e) {
	
	$erro = $e->getMessage();
	
	/// APAGA IMAGEM DE DIRETORIO TEMPORARIO
	unlink($fileNameServer);
	
	$_SESSION["f_retorno"]=$erro;       	
	header('location:cadastro.php?acao=atualizar&idpessoa=' . $idPessoa .  '&reacao=retorno');
	exit;
}

/// NUNCA TEMOS INSERT POIS A TUPLA DE DOCUMENTO DEVE EXISTIR ANTERIORMENTE.
/// NESSE CASO, S� TEMOS O UPDATE.

?>