<?php
// $Id: fimprova.php,v 1.15 2007/03/24 20:08:53 marcellobrandao Exp $
// ------------------------------------------------------------------------ //
// XOOPS - PHP Content Management System //
// Copyright (c) 2000 XOOPS.org //
// <http://www.xoops.org/> //
// ------------------------------------------------------------------------ //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
// ------------------------------------------------------------------------ //
/**
* fimprova.php, Responsável por gerar o formulário de encerramento da prova
*
* Este arquivo exibe um relatório da prova que o aluno está fazendo e o permite
* que encerre a prova
* @author Marcello Brandão <hide@address.com>
* @version 1.0
* @package nivelamento
*/
/**
* Definindo arquivo de template da página
*/
/**
* Arquivos de cabeçalho do Xoops para carregar ...
*/
include("../../mainfile.php");
$xoopsOption['template_main'] = 'nivelamento_fimprova.html';
include("../../header.php");
/**
* Inclusões das classes do módulo
*/
include("class/nivelamento_perguntas.php");
include("class/nivelamento_provas.php");
include("class/nivelamento_respostas.php");
include("class/nivelamento_resultados.php");
/**
* Definindo arquivo de template da página
*/
$xoopsOption['template_main'] = 'nivelamento_fimprova.html';
/**
* Pegando cod_resultado do formulário e uid do aluno da session
*/
$cod_resultado = $_GET['cod_resultado'];
$uid = $xoopsUser->getVar('uid');
/**
* Criação das Fábricas de objetos que vamos precisar
*/
$fabrica_de_provas= new Xoopsnivelamento_provasHandler($xoopsDB);
$fabrica_de_perguntas = new Xoopsnivelamento_perguntasHandler($xoopsDB);
$fabrica_resultados = new Xoopsnivelamento_resultadosHandler($xoopsDB);
/**
* Fabricando o objeto resultado
*/
$resultado = $fabrica_resultados->get($cod_resultado);
$cod_prova = $resultado->getVar('cod_prova');
/**
* Fabricando o objeto prova
*/
$prova = $fabrica_de_provas->get($cod_prova);
/**
* Verificando privilégios do aluno para esta prova
*/
if (!($prova->isAutorizado())){
redirect_header("index.php",5, _MD_NIV_PROIBIDO);
}
//Vamos agora pegar o numero de perguntas da prova e quantas o aluno respondeu
//e quantas ele deixou em branco para lembrá-lo e confirmar que ele quer encerrar a prova
/**
* Criação de objetos de critério para passar para as Fábricas
*/
$criteria_prova = new criteria ('cod_prova',$cod_prova);
$criteria_usuario = new criteria ('uid_aluno',$uid);
$criteria_compo = new criteriaCompo ($criteria_prova);
$criteria_compo->add($criteria_usuario);
/**
* Buscando o total de perguntas desta prova na Fábrica de Perguntas
*/
$qtd_perguntas = $fabrica_de_perguntas->getCount($criteria_prova);
/**
* Calculos de tempo restante, tempo gasto e horário do fim da prova
* obs: cabe passar isso para dentro da classe resultado ou prova
*/
$horaatual = time();
$data_inicio_segundos = $fabrica_de_provas->dataMysql2dataUnix($resultado->getVar('data_inicio'));
$tempo_prova = $prova->getVar('tempo');
$tempo_restante = $fabrica_de_provas->converte_segundos( (($data_inicio_segundos+$tempo_prova)-$horaatual) ,"H");
$tempo_gasto = $fabrica_de_provas->converte_segundos( ($horaatual-$data_inicio_segundos) ,"H");
$hora_fim_da_prova = $fabrica_de_provas->converte_segundos( ($data_inicio_segundos + $tempo_prova) ,"H");
/**
* Verificação de tempo da prova: se estourar o tempo salvar o resultado e
* avisar o aluno
*/
if ($tempo_restante['segundos'] < 0){
$resultado->setVar('terminou', 1);
$resultado->unsetNew();
$fabrica_resultados->insert($resultado,true);
redirect_header("index.php",15,_MD_NIV_ACABOU);
}
/**
* Se o tempo não tiver estourado ainda precisamos do
* cod_resultado para salvar o resultado se o aluno quiser
*/
$cod_resultado = $resultado->getVar('cod_resultado');
/**
* Buscando titulo da prova. descricao e quantidade de perguntas respondidas
*/
$qtd_respostas = $resultado->contarRespostas();
$titulo = $prova->getVar('titulo');
$descricao = $prova->getVar('descricao');
/**
* Buscando campo de segurança para o formulário
*/
$campo_token = $GLOBALS['xoopsSecurity']->getTokenHTML();
//nome do módulo
$nome_modulo = $xoopsModule->getVar('name');
/**
* Atribuindo variáveis ao template
* obs: poderia ter sido feito direto na étapa anterior
* mas por questões de leitura de código separei os dois
* depois podemos pensar em juntar numa seção só
*/
$xoopsTpl->assign('xoops_pagetitle', $xoopsModule->getVar("name"). " - ".$titulo);
$xoopsTpl->assign('nome_modulo', $nome_modulo); //Nome do módulo para o breadcrump
$xoopsTpl->assign('titulo', $titulo); //Título da prova
$xoopsTpl->assign('descricao', $descricao); //Descrição da prova
$xoopsTpl->assign('cod_prova', $cod_prova); //Codigo da prova(para voltar para a prova caso desista de terminar a prova agora
$xoopsTpl->assign('qtd_perguntas', $qtd_perguntas); // qtd de perguntas na prova
$xoopsTpl->assign('qtd_respostas', $qtd_respostas); //qtd de respostas na prova
$xoopsTpl->assign('cod_resultado', $cod_resultado); //Para terminar a prova o proximo script precisa deste dado
$xoopsTpl->assign('tempo_gasto', $tempo_gasto); //Quanto tempo desde o inicio da prova
$xoopsTpl->assign('lang_temporestante', sprintf(_MD_NIV_TEMPORESTANTECOMPOSTO, $tempo_restante['horas'], $tempo_restante['minutos']));
$xoopsTpl->assign('lang_andamento', sprintf(_MD_NIV_ANDAMENTO , $qtd_respostas , $qtd_perguntas ));
$xoopsTpl->assign('lang_terminou', sprintf(_MD_NIV_TERMINOU , $tempo_gasto['horas'], $tempo_gasto['minutos']));
$xoopsTpl->assign('lang_alerta',_MD_NIV_ALERTA );
$xoopsTpl->assign('lang_confirmasim',_MD_NIV_CONFIRMASIM );
$xoopsTpl->assign('lang_confirmanao',_MD_NIV_CONFIRMANAO );
$xoopsTpl->assign('lang_confirmacao',_MD_NIV_CONFIRMACAO );
$xoopsTpl->assign('lang_stats',_MD_NIV_STATS );
$xoopsTpl->assign('lang_prova',_MD_NIV_PROVA);
$xoopsTpl->assign('campo_token', $campo_token);
/**
* Inclusão de arquivo de fechamento da página
*/
include("../../footer.php");
?>