<?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

/*
 * Pontifical Catholic University of Rio de Janeiro
 *
 */

function cleanSql($s)
{
	if (!isset($s))
		return null;

	$s = str_replace ("\r"  ,  ""   , $s);
	$s = str_replace ("\n"  ,  ""   , $s);

	$pattern = '/,\s+/';
	$s = preg_replace($pattern,  ","  , $s);

	$pattern = '/\(\s+/';
	$s = preg_replace($pattern,  "("  , $s);

	$s = trim($s);

	return $s;
}

function userLogin($login, $senha) {
	// criptografa a senha
	$senha = md5($senha);
	$sql = "select codusuario, senha from usuario where login ='$login'";
	$res = $this->_query($sql);
	$x = $this->_fetch_array($res);
	if ($x["senha"] != $senha) {
		return false;

	}

	$cod = $x["codusuario"];
	return $cod;
}

function preparaNome($nomeArg) {
    $nomeArg =utf8_decode($nomeArg);
	$nome = "";
	$indiceNome = 0;
	$tamanhoNome = strlen($nomeArg);

	while ($indiceNome != $tamanhoNome) {
		if ($nomeArg[$indiceNome] == ' ') {
			$nome = $nome . " ";
		} else {
			$nomeArg[$indiceNome] = preg_replace("[^a-zA-Z0-9_.]", "", strtr($nomeArg[$indiceNome], "�������������������������� ", "aaaaeeiooouucAAAAEEIOOOUUC_"));
			$nome = $nome . $nomeArg[$indiceNome];
		}
		$indiceNome += 1;
	}
	$nome = strtoupper($nome);
	return $nome;
}

function geraTimeStamp() {

	$tempo = time();
	$tempo = date('YmdHis', $tempo);

	sleep(1);

	return $tempo;
}

function getValueGet($param, $upper = false)
{
	$val = $_GET[$param];
	return ajustaValor($val,$upper);	
}
function getValuePost($param, $upper = false)
{
	$val = $_POST[$param];
	return ajustaValor($val,$upper);	
}
/**
 * Fun��o recursiva que remove acentos e aplica fun��o do postgre para tirar caracteres
 * de escape de um valor escalar ou um array. Se for um array, remove de qq n�vel do array
 * @param valor a ter acentos e escapes retirados $valor
 * @return valor corrigido
 */
function ajustaValor( $valor, $upper = false )
{
	if( is_array($valor) )
	{
		// � um array, altera cada um dos elementos
		foreach($valor as $key => $val )
		{
			$valor[$key] = ajustaValor($val);
		}
	}
	else
	{
		$valor = removeAcentos(pg_escape_string( $valor ));
		if( $upper )
			$valor = strtoupper($valor);
	}
	return $valor;
}

function removeAcentos($str)
{

	$from = '����������������������������������';
    $to   = 'AAAAEEEIIOOOOUUUCaaaaeeeiioooouuuc';
    return strtr($str, $from, $to);
}


/* funcao para calcular a idade a partir da data de nascimento recebida por parametro
 * esta funcao pode estar errada por nao ter certeza do formato de data recebido
 * do banco de dados. esta sendo assumido que sera aaaa-mm-dd, conforme se encontra
 * no cadastro dos professores */
function calc_idade( $data_nasc )
{
	$data_nasc = explode("-", $data_nasc);
	
	$data = date("Y-m-d");
	$data = explode("-", $data);
	$anos = $data[0] - $data_nasc[0];
	
	if ( $data_nasc[1] >= $data[1] )
	{	
		if ( $data_nasc[2] <= $data[2] )
			return $anos;
		else
			return $anos-1;
	}
	else
		return $anos;
}

/* Funcao para validacao de matriz curricular na turma - por Julio Ribeiro - 28.08.2010 */
function validaMatriz ($codTurma, $codEscola, $dbh)
{
	/**** Pega os dados da tabela de Turmas ****/
	$sql = "SELECT td.iddisciplina as iddisciplina, count(td.horario) AS qtdaulas
			FROM \"mat_turmaDisciplina\" td
				INNER JOIN mat_professor pr ON(pr.codprofessor = td.codprofessor AND pr.excluido = false)
	  		WHERE td.codturma = $codTurma AND td.codescola = $codEscola
	  		GROUP BY td.iddisciplina
	  		ORDER BY td.iddisciplina";
	$resultTurma = executaQuery($dbh, $sql);
	$qtdDiscTurma = pg_num_rows($resultTurma);
	
	/* criacao do vetor de relacionamento de disciplinas com suas qtds de aulas na TURMA */
	while($rowTurma = pg_fetch_array($resultTurma))
	{
		$discTurma[$rowTurma['iddisciplina']] = $rowTurma['qtdaulas'];
	}
		
	/**** Pega os dados da tabela de Matrizes ****/
	$sql = "SELECT md.iddisciplina, sum(md.qtdhorassemana) AS qtdaulas
			FROM mat_matrizcurricular_disciplina md
	  		WHERE  md.iddisciplina <> 0 AND
	  			md.codmatrizcurricular = (SELECT codmatrizcurricular
				 								FROM mat_turma
				 								WHERE codturma = $codTurma AND 
				 										codescola = $codEscola)
	  		GROUP BY md.iddisciplina
	  		ORDER BY md.iddisciplina";
	$resultMatriz = executaQuery($dbh, $sql);
	$qtdDiscMatriz = pg_num_rows($resultMatriz);
	
	/* criacao do vetor de relacionamento de disciplinas com suas qtds de aulas na MATRIZ */
	$i = 0;
	while($rowMatriz = pg_fetch_array($resultMatriz))
	{
		$idxMatriz[$rowMatriz['iddisciplina']] = $i;
		$matriz[$i]['disc'] = $rowMatriz['iddisciplina'];
		$matriz[$i]['qtd'] = $rowMatriz['qtdaulas'];
		$i++;
	}
	
	$sql = "SELECT md1.iddisciplina, md2.iddisciplina as ou
				FROM educacao.mat_matrizcurricular_disciplina md1
				INNER JOIN educacao.mat_matrizcurricular_disciplina md2
					ON(md1.codmatrizcurricular = md2.codmatrizcurricular AND md1.codseqdisciplinaou = md2.codseqdisciplina)
				WHERE md1.codseqdisciplinaou is not null AND
					md1.codmatrizcurricular = (SELECT codmatrizcurricular
									FROM educacao.mat_turma
									WHERE codturma = $codTurma AND
										codescola = $codEscola)
				GROUP BY md1.iddisciplina, md2.iddisciplina
				ORDER BY md1.iddisciplina";
	$resultOu = executaQuery($dbh, $sql);
	$qtdDiscOu = pg_num_rows($resultOu);
	
	/* criacao do vetor de relacionamento de disciplinas com suas qtds de aulas na COLUNA OU */
	while($rowOu = pg_fetch_array($resultOu))
	{
		$discOu[$rowOu['iddisciplina']] = $rowOu['ou'];
	}
	
	/****************************************/
	
	//zera vetor de controle de disciplinas nas escolas
	for($i = 0; $i < $qtdDiscMatriz; $i++)
	{
		$ctrlMatriz[$i] = 0;
	}

	//verifica quais disciplinas as escolas tem
	for($i = 0; $i < $qtdDiscMatriz; $i++)
	{
		$discTmp = $matriz[$i]['disc'];
		if(isset($discTurma[$discTmp]) && !empty($discTurma[$discTmp]))
		{
			if((int)$discTurma[$discTmp] >= (int)$matriz[$i]['qtd'])
			{ 
				$ctrlMatriz[$i] = 1;
			}
		}
	}
	
	//termina o preenchimento do vetor de controle com as disciplinas OU
	for($i = 0; $i < $qtdDiscMatriz; $i++)
	{
		$discTmp = $matriz[$i]['disc'];
		if(isset($discOu[$discTmp]) && !empty($discOu[$discTmp]))
		{
			$idxTmp = $idxMatriz[$discOu[$discTmp]];
			if($ctrlMatriz[$i]) $ctrlMatriz[$idxTmp] = 1;
			if($ctrlMatriz[$idxTmp]) $ctrlMatriz[$i] = 1;
		}
	}

	//verifica se faltou alguma disciplina ser relacionada
	for($i = 0; $i < $qtdDiscMatriz; $i++)
	{
		if($ctrlMatriz[$i] == 0) return false;
	}
	
	return true;
}
/*
//Funcao antiga de validacao de matriz
function validaMatriz ($codTurma, $codEscola, $dbh)
{
	$sql1 = 'SELECT td.iddisciplina, count(td.horario) AS qtdaulas
			FROM "mat_turmaDisciplina" td
				INNER JOIN mat_professor pr ON(pr.codprofessor = td.codprofessor AND pr.excluido = false)
	  		WHERE td.codturma = '.$codTurma.' AND td.codescola = '.$codEscola.'
	  		GROUP BY td.iddisciplina
	  		ORDER BY td.iddisciplina';
	$result = pg_query($dbh, $sql1);
	$arrayTurma = pg_fetch_all($result);
	
	$sqlInutil = 'SELECT codmatrizcurricular
				 FROM mat_turma
				 WHERE codturma = '.$codTurma.' AND codescola = '.$codEscola;
	$resultInutil = pg_query($dbh, $sqlInutil);
	$matriz = pg_fetch_all($resultInutil);
	
	//echo $matriz[0]['codmatrizcurricular'];
	
	$sql2 = 'SELECT md.iddisciplina, count(md.qtdhorassemana) AS qtdaulas2
			FROM mat_matrizcurricular_disciplina md
	  		WHERE md.codmatrizcurricular = '.$matriz[0]['codmatrizcurricular'].'
	  		GROUP BY md.iddisciplina
	  		ORDER BY md.iddisciplina';
	$result2 = pg_query($dbh, $sql2);
	$arrayMatriz = pg_fetch_all($result2);
	
	$sql3 = 'SELECT md.iddisciplina, md.codseqdisciplinaou as ou
			FROM mat_matrizcurricular_disciplina md
	  		WHERE md.codmatrizcurricular = '.$matriz[0]['codmatrizcurricular'].'
	  		GROUP BY md.iddisciplina, md.codseqdisciplinaou
	  		ORDER BY md.iddisciplina';
	$result3 = pg_query($dbh, $sql3);
	$arrayOu = pg_fetch_all($result3);

	$i = 0;
	while($arrayTurma[$i] != null)
	{
		if($arrayTurma[$i]['qtdaulas'] < $arrayMatriz[$i]['qtdaulas2'])
		{
			if($arrayTurma[$arrayOu[$i]['ou']] < $arrayMatriz['ou']['qtdaulas'])
				return false;
		}
		$i++;
	}
	return true;
}
*/

function podematricular($dbh,$codaluno)
{
	$sql = "
			SELECT * 
			FROM 
				mat_turma t INNER JOIN \"mat_turmaAluno\" a 
					ON(t.codescola = a.codescola AND t.codturma = a.codturma)	
			WHERE a.codaluno = $codaluno AND a.dtresultado is null";
	$result = pg_query($dbh,$sql);
	$rowAlunoTurma = pg_fetch_array($result);
	if(!$rowAlunoTurma)
	{
		return true;				
	}
	return false;	
}
/*************************************************************** 
 * Confere se o primeiro d�gito do celular � valido (7,8 ou 9) *
 * *************************************************************/
function validateCel($celular)
{
	$array = str_split($celular);
	if($array[5] == '7')
		return true;
	if($array[5] == '8')
		return true;
	if($array[5] == '9')
		return true;
	
	return false; //n�o � um celular
}
/* Verificar como est� o telefone na vari�vel php */
	
function limpaSession()
{
	session_start();
	
	// vou limpar as variaveis de sessao e para isso preciso guardar as informa��es de login
	$login['nome'] 			= $_SESSION['nome'];
	$login['escola'] 		= $_SESSION['escola'];
	$login['tipousuario'] 	= $_SESSION['tipousuario'];
	$login['coordenadoria'] = $_SESSION['coordenadoria'];
	
	// limpa a sessao
	session_unset();
	$_SESSION = array ();
	session_destroy();
	session_start();
	
	// repreenche com os dados de login
	$_SESSION['nome'] 			= $login['nome'];
	$_SESSION['escola'] 		= $login['escola'];
	$_SESSION['tipousuario'] 	= $login['tipousuario'];
	$_SESSION['coordenadoria'] 	= $login['coordenadoria'];
}