/** * Metodo que retorna um teste relacionado ao aluno e ao capítulo ou * tópico informado. O capítulo é obtido por meio do tópico informado. * * @param Aluno $aluno O aluno alvo da busca * @param Model $model O capítulo relacionado a questão * * @return TesteCapitulo|bool Um objeto contendo os dados do teste * ou FALSE caso não seja encontrado * * @throws TesteException */ protected function deAlunoTopCap(Aluno $aluno, ConteudoInterno $model) { if (!$aluno->getId() || !$model->getId()) { throw new TesteException('O aluno ou capítulo informado é inválido'); } if ($model instanceof Capitulo) { $fk = "pk_capitulo"; } else { $fk = "pk_conteudo"; } $resultset = $this->tg->selectObj($this->select()->distinct("pk_{$this->tabela}")->where(array("{$this->tabela}_pk_usuario" => $aluno->getId(), "{$this->tabela}_{$fk}" => $model->getId(), "{$this->tabela}_ano" => $this->anoLetivo))); if (!$resultset->rowCount()) { $return = false; } else { $teste = $resultset->fetch(); $sqlQuestao = new SqlQuestao(); $teste->setQuestoes($sqlQuestao->deTeste($teste)->fetchAll()); $return = $teste; } return $return; }
/** * Método que faz o tratamento da requisição POST feita a página de edição de questões * @param Questao $questao A questão a ser editada * @return string Retorna a resposta da tentativa de edição da questão */ private function editarPost(Questao $questao) { //Inicializando o objeto responsável pela interação com o banco $sqlQuestao = new SqlQuestao(); //Inicializando as variáveis de apoio $mq = FILTER_SANITIZE_MAGIC_QUOTES; $vi = FILTER_VALIDATE_INT; try { //Recebendo os novos dados $topicos = isset($_POST["topicos"]) ? $_POST["topicos"] : array(); $inclusaoArray = isset($_POST["inclusao"]) ? $_POST["inclusao"] : array(); $inclusao = isset($inclusaoArray[0]) ? $inclusaoArray[0] : 0; $questao->setTipoInsert($inclusao); if ($questao->getTipoInsert() == Questao::SALVA_ARQUIVO) { //Só edita o arquivo em caso de novo inserido if ($_FILES["arquivo_questao"]["size"]) { $questao->setQuestao($_FILES["arquivo_questao"]); } } else { $questao->setQuestao(filter_input(INPUT_POST, "texto_questao", $mq)); } $qtAlternativas = "qt_alternativas_{$questao->getTipo()}"; $gabarito = "gabarito_{$questao->getTipo()}"; $questao->setNumALternativas(filter_input(INPUT_POST, $qtAlternativas, $vi)); $questao->setGabarito(filter_input(INPUT_POST, $gabarito, $mq)); $questao->setDica(filter_input(INPUT_POST, "dica", $mq)); $questao->setExplicacao(filter_input(INPUT_POST, "explicacao", $mq)); $sqlQuestao->update($questao, $topicos); $this->session->set_flashdata('msg', "<div class=\"alert informacao\">" . "Questão editada com sucesso com sucesso" . "</div>"); redirect(base_url("banco_de_questoes")); } catch (SqlException $exc) { return "<div class=\"alert erro\">Ocorreu um erro interno. " . "Tente novamente mais tarde</div>"; } catch (Exception $exc) { return "<div class=\"alert erro\">{$exc->getMessage()}</div>"; } }