/** * Método que retorna a imagem da página informada */ public function verPagina() { $sqlTopico = new SqlTopico(); try { //Inicializando so filtros usados na página $this->filtro->initGets(array("topico", "width", "height", "pagina")); $pagina = $this->filtro->get("pagina"); if (is_null($pagina)) { throw new Exception("A página informad é inválida"); } $topico = $sqlTopico->get($this->filtro->get("topico")); if ($pagina > $topico->getPaginaFinal() || $pagina < $topico->getPaginaInicial()) { throw new Exception("Este tópico não possue a página informada"); } if ($topico->getPaginaFinal() - $topico->getPaginaInicial() == 1) { $pagina = "0"; } else { $pagina = (int) ($pagina - $topico->getPaginaInicial()); } $pathPDF = $topico->getPdfTopico(); $path = substr($pathPDF, 0, strrpos($pathPDF, DIRECTORY_SEPARATOR)); $img = "{$path}/{$pagina}.jpg"; if (!file_exists($img)) { throw new Exception("A página não foi encontrada"); } $imagem = new Image($img); // $imagem->setNewDimesion($this->filtro->getInstance("dimension")); $imagem->setQuality(100); $imagem->setAntiAlias(TRUE); $imagem->setType(""); $getImage = new GetImage($imagem); $getImage->__toString(); die; } catch (SqlException $exc) { echo "Ocorreu um erro. Tente novamente mais tarde"; } catch (Exception $exc) { echo $exc->getMessage(); } }
/** * Método que salva as respostas do aluno no testes do capítulo * e retorna a sua nota. */ private function set_respostas() { $usrAux = new Usuarios(); $sqlTopico = new SqlTopico(); $nota = 0; $respostasAluno = array(); try { $this->filtro->initPost('topico'); $tipo = filter_input(INPUT_POST, "testePara"); $aluno = $usrAux->getAluno(false); $topico = $sqlTopico->get($this->filtro->post('topico')); if ($tipo == "capitulo") { $sqlTeste = new SqlTesteCapitulo(); } elseif ($tipo == "topico") { $sqlTeste = new SqlTesteTopico(); } else { throw new Exception("O alvo do teste não é permitido"); } $teste = $sqlTeste->porAlunoTopico($aluno, $topico); if (!$teste) { throw new Exception("O teste não foi encontrado"); } //Verificando se o aluno já realizou o teste e pode refaze-lo if (!$teste->podeRefazer()) { throw new Exception('Desculpe, mas sua nota não ' . 'permite que o teste seja refeito.'); } //Lendo as respostas $resposta = filter_input(INPUT_POST, 'resspostas', FILTER_SANITIZE_MAGIC_QUOTES); $respostasStr = substr($resposta, 0, -1); $respostas = explode(',', $respostasStr); $questoes = $teste->getQuestoes(); if (count($respostas) != count($questoes)) { throw new Exception('Ainda há questões sem resposta. ' . 'Volte e responda todas.'); } foreach ($respostas as $resp) { $par = explode('=', $resp); $respostasAluno[trim($par[0])] = trim($par[1]); foreach ($questoes as $quest) { if ($quest->getId() == $par[0]) { if ($quest->getGabarito() == $par[1]) { ++$nota; } } } } $teste->setNota((double) $nota); if (!$sqlTeste->salvaRespostas($teste, $respostasAluno)) { throw new Exception('Erro ao tentar salvar as suas respostas. ' . 'Tente novamente mais tarde.'); } if (!$sqlTeste->salvarNota($teste)) { throw new Exception('Erro ao tentar salvar a sua nota. ' . 'Tente novamente mais tarde.'); } //Gerando a resposta $tmp = new stdClass(); $tmp->nota = $teste->getNota(); $this->appendResposta($tmp); $this->statusTrue(); $this->setMensagem('Nota salva com sucesso'); } catch (SqlException $sql) { $this->setMensagem('Ocorreu um erro interno. ' . 'Tente novamente mais tarde.'); } catch (Exception $exc) { $this->setMensagem($exc->getMessage()); } $this->printResposta(); }