function Main() { header('Content-Type: text/html; charset=iso-8859-1'); if (isset($_SESSION['caso']) && $_SESSION['caso'] > 0) { if ($_POST['tip'] == "tree") { $mon = new Montagem(); $mon->setCodCaso($_SESSION['caso']); $html = $mon->RetornaArvoreLista(); if ($html) { $html = str_replace('<div id="tree">', '<div id="' . $_POST['id'] . '">', $html); } else { $html = "ERRO: " . $mon->getErro(); } echo $html; } else { if ($_POST['tip'] == "opts") { if (!$_POST['perg']) { $res = new Resolucao(); $res->setCodcaso($_SESSION['caso']); $hash = $res->BuscaConteudoPelaChave($_POST['nodo'], true); if ($hash != false) { echo $hash->ToXML(); } else { echo "ERRO. Hash voltou false"; } } else { $pergunta = new Pergunta(); $pergunta->Carregar($_POST['perg']); if ($pergunta->getTipo()->getCodigo() == 1) { $cont = 1; foreach ($pergunta->getAlternativas() as $alternativa) { $html .= '<div class="alt-img">'; $html .= '<input type="checkbox" name="rdoAlternativa_' . $pergunta->getCodigo() . '[]" id="rdoAlt_' . $pergunta->getCodigo() . '_' . $cont . '" value="' . $alternativa->getCodBinario() . '" class="opcao-resposta" />' . $alternativa->getTexto(); $html .= '<div id="img"><img src="' . $alt->getImagem() . '" alt="' . $alt->getTexto() . '" title="' . $alt->getTexto() . '" class="img-preview" /></div>'; $html .= '</div>'; $cont++; } } else { $cont = 1; foreach ($pergunta->getAlternativas() as $alternativa) { $html .= '<div class="alt-txt">'; $html .= '<input type="checkbox" name="rdoAlternativa_' . $pergunta->getCodigo() . '[]" id="rdoAlt_' . $pergunta->getCodigo() . '_' . $cont . '" value="' . $alternativa->getCodBinario() . '" class="opcao-resposta" />' . $alternativa->getTexto(); $html .= '</div>'; $cont++; } } echo '<conteudo>' . $html . '</conteudo>'; } } else { if ($_POST['tip'] == 'pergs') { //$arrNodo = split("_", $_POST['nodo']); Log::RegistraLog("Vai consultas as perguntas vinculadas ao nodo: " . $arrNodo[3]); $mon = new Montagem(); $mon->setCodCaso($_SESSION['caso']); $lista = $mon->ListaPerguntasNodo($_POST['nodo']); if ($lista) { $html .= '<option value="-1">@lng[Selecione]</option>'; foreach ($lista as $perg) { $html .= '<option value="' . $perg->Codigo . '">' . substr($perg->Texto, 0, 100) . '</option>'; } } else { $html .= '<option>' . $mon->getErro() . '</option>'; } echo $html; } else { if ($_POST['tip'] == 'salvacond') { $arrNodoAtual = split("_", $_POST['nodoatual']); $arrNodoDestino = split("_", $_POST['nododes']); if ($_POST['nodocond']) { $arrNodoCond = split("_", $_POST['nodocond']); $strChaveCond = $arrNodoCond[3]; if ($_POST['perg']) { $intPerg = $_POST['perg']; } else { $intPerg = null; } $intResp = $_POST['resp']; } else { $strChaveCond = null; $intResp = null; $intPerg = null; } $strChaveAtual = $arrNodoAtual[3]; $strChaveDestino = $arrNodoDestino[3]; $mon = new Montagem(); $mon->setCodCaso($_SESSION['caso']); $desvio = $mon->InsereSalto($strChaveAtual, $strChaveDestino, $strChaveCond, $intPerg, $intResp); if ($desvio) { $html = $mon->RetornaListaConfSaltos($strChaveAtual); if ($html) { echo $html; } else { echo "ERRO: " . $mon->getErro(); } } else { echo "ERRO: " . $mon->getErro(); } } else { if ($_POST['tip'] == 'mudaprior') { $mon = new Montagem(); $mon->setCodCaso($_SESSION['caso']); if ($mon->AlteraPrioridadeSalto($_POST['mm'], base64_decode($_POST['chaveOri']), base64_decode($_POST['chaveDest']))) { echo $mon->RetornaListaConfSaltos(base64_decode($_POST['chaveOri'])); } else { echo "ERRO: " . $mon->getErro(); } } else { if ($_POST['tip'] == 'delsalto') { $mon = new Montagem(); $mon->setCodCaso($_SESSION['caso']); if ($mon->DeletaSalto(base64_decode($_POST['chaveOri']), base64_decode($_POST['chaveDest']))) { echo $mon->RetornaListaConfSaltos(base64_decode($_POST['chaveOri'])); } else { echo "ERRO: " . $mon->getErro(); } } else { if ($_POST['tip'] == 'vincanexo') { $mon = new Montagem(); $mon->setCodCaso($_SESSION['caso']); $nodo = $_POST['item']; $cont = $_POST['cont']; $strTipoCont = substr($cont, 0, 1); $arr = split("_", $nodo); $u = unserialize($_SESSION['usu']); if ($mon->InsereAnexo($arr[3], base64_decode(substr($cont, 1)), $strTipoCont, $u->getCodigo())) { echo $mon->RetornaListaConfAnexos($arr[3]); } else { echo 'ERRO: ' . $mon->getErro(); } } else { if ($_POST['tip'] == 'delanexo') { $mon = new Montagem(); $mon->setCodCaso($_SESSION['caso']); $nodo = base64_decode($_POST['item']); $cont = $_POST['cont']; $strTipoCont = substr($cont, 0, 1); //$arr = split("_", $nodo); //die("ERRO: " . $nodo . ' ' . base64_decode(substr($cont, 1))); if ($mon->DeletaAnexo($nodo, base64_decode(substr($cont, 1)), $strTipoCont)) { $listagem = $mon->RetornaListaConfAnexos($nodo); if ($listagem !== false) { echo $listagem; } else { echo "ERRO: " . $mon->getErro(); } } else { echo 'ERRO: ' . $mon->getErro(); } } } } } } } } } } else { echo "ERRO: @lng[Caso não informado]"; } }
private function RenderPergunta($chaveagrupador, $codpergunta, $confs, $bolListagemSimples = false) { //Log::RegistraLog("Chamou o renderPergunta passando o pergunta " . $codpergunta); $pergunta = new Pergunta(); if ($pergunta->Carregar($codpergunta)) { $respostas = $this->BuscaRespostas($chaveagrupador, $codpergunta); $html .= '<div class="pergunta">'; $html .= ' <div id="pergunta-texto">'; $html .= ' <img id="img_perg_' . $codpergunta . '" src="img/question.png" alt="@lng[Pergunta]" title="@lng[Pergunta]" class="img-pergunta atualizar-resp">' . $pergunta->getTexto(); $html .= ' </div>'; $alternativas = $pergunta->getAlternativas(); $cont = 1; $letra = 65; $agrupar = true; foreach ($alternativas as $alt) { switch ($pergunta->getTipo()->getCodigo()) { case 1: $html .= '<div class="alt-img">'; $html .= ' <div class="alt-img-radio">'; $html .= ' ' . chr($letra) . ') <input type="' . ($bolListagemSimples ? 'checkbox' : 'radio') . '" name="rdoAlternativa_' . $pergunta->getCodigo() . '[]" id="rdoAlt_' . $pergunta->getCodigo() . '_' . $cont . '" value="' . $alt->getCodBinario() . '" ' . ((intval($alt->getCodBinario()) & intval($respostas)) > 0 ? 'checked="checked"' : '') . ' class="opcao-resposta" />'; $html .= ' </div>'; $html .= ' <div id="img"><img src="' . $alt->getImagem() . '" alt="' . $alt->getTexto() . '" title="' . $alt->getTexto() . '" /></div>'; $html .= '</div>'; break; case 2: $html .= '<div class="alt-txt">'; $html .= ' ' . chr($letra) . ') <input type="checkbox" name="rdoAlternativa_' . $pergunta->getCodigo() . '[]" id="rdoAlt_' . $pergunta->getCodigo() . '_' . $cont . '" value="' . $alt->getCodBinario() . '" ' . ((intval($alt->getCodBinario()) & intval($respostas)) > 0 ? 'checked="checked"' : '') . ' class="opcao-resposta" />' . $alt->getTexto(); $html .= '</div>'; break; case 3: $html .= '<div class="alt-txt">'; $html .= ' ' . chr($letra) . ') <input type="' . ($bolListagemSimples ? 'checkbox' : 'radio') . '" name="rdoAlternativa' . ($agrupar ? '_' . $pergunta->getCodigo() : '') . '[]" id="rdoAlt_' . $pergunta->getCodigo() . '_' . $cont . '" value="' . $alt->getCodBinario() . '" ' . ((intval($alt->getCodBinario()) & intval($respostas)) > 0 ? 'checked="checked"' : '') . ' class="opcao-resposta" />' . $alt->getTexto(); $html .= '</div>'; break; } $cont++; $letra++; } $html .= '</div>'; } else { $html = "Erro: " . $pergunta->msg_erro; } return $html; }
private function MontaConteudoPerguntas($codpergunta, $dica = true, $agrupar = false) { $perg = new Pergunta(); $perg->Carregar($codpergunta); $conteudo .= '<div class="pergunta">'; $conteudo .= ' <div id="pergunta-texto">'; $conteudo .= ' <img id="img_perg_' . $codpergunta . '" src="img/question.png" alt="@lng[Pergunta]" title="@lng[Pergunta]" class="img-pergunta atualizar-resp">' . $perg->getTexto(); $conteudo .= ' </div>'; if ($dica) { switch ($perg->getTipo()->getCodigo()) { case 1: case 3: $conteudo .= '<div id="pergunta-instr">@lng[Escolha uma das alternativas]</div>'; break; case 2: $conteudo .= '<div id="pergunta-instr">@lng[Você pode escolher mais de uma alternativa se achar necessário]</div>'; break; } } $alternativas = $perg->getAlternativas(); $cont = 1; $letra = 65; foreach ($alternativas as $alt) { switch ($perg->getTipo()->getCodigo()) { case 1: $conteudo .= '<div class="alt-img">'; $conteudo .= ' <div class="alt-img-radio">'; $conteudo .= ' ' . chr($letra) . ') <input type="radio" name="rdoAlternativa' . ($agrupar ? '_' . $perg->getCodigo() : '') . '[]" id="rdoAlt_' . $cont . '" value="' . $alt->getCodUnico() . '" class="opcao-resposta" />'; $conteudo .= ' </div>'; $conteudo .= ' <div id="img"><img src="' . $alt->getImagem() . '" alt="' . $alt->getTexto() . '" title="' . $alt->getTexto() . '" /></div>'; $conteudo .= '</div>'; break; case 2: $conteudo .= '<div class="alt-txt">'; $conteudo .= ' ' . chr($letra) . ') <input type="checkbox" name="rdoAlternativa' . ($agrupar ? '_' . $perg->getCodigo() : '') . '[]" id="rdoAlt_' . $cont . '" value="' . $alt->getCodUnico() . '" class="opcao-resposta" />' . $alt->getTexto(); $conteudo .= '</div>'; break; case 3: $conteudo .= '<div class="alt-txt">'; $conteudo .= ' ' . chr($letra) . ') <input type="radio" name="rdoAlternativa' . ($agrupar ? '_' . $perg->getCodigo() : '') . '[]" id="rdoAlt_' . $cont . '" value="' . $alt->getCodUnico() . '" class="opcao-resposta" />' . $alt->getTexto(); $conteudo .= '</div>'; break; } $cont++; $letra++; } $conteudo .= '</div>'; return $conteudo; }
function Main() { $u = unserialize($_SESSION['usu']); if (isset($_SESSION['perg']) && !is_null($_SESSION['perg']) && $_SESSION['perg'] != "") { // Verifica se já tem uma sessão iniciada para uma pergunta. Se tiver... if (isset($_GET['p'])) { // Se tiver mas vier via GET algum código, limpa a sessão e recarrega os dados unset($_SESSION['perg']); $cod = base64_decode($_GET['p']); $p = new Pergunta(); $p->Carregar($cod); } else { $p = new Pergunta(); $p->Carregar($_SESSION['perg']); } } else { // Se não tiver sessão iniciada... if (isset($_GET['p'])) { // Deve vir obrigatoriamente um código informado via GET. Caso veio, instancia a pergunta $cod = base64_decode($_GET['p']); $p = new Pergunta(); $p->Carregar($cod); } else { // Se não veio código é porque alguma coisa saiu errado ou o usuário não deveria estar acessando a página $msg = base64_encode("Algo saiu errado."); header("Location:listagem.php?t=8&m=" . $msg); } } $tpl = file_get_contents('tpl/alternativas.html'); $tpl = str_replace("<!--telatopo-->", Comuns::GeraTopoPagina($u), $tpl); $botoes = Botao::BotaoSalvar("fntGravaAlternativa();", "@lng[Salvar a alternativa]"); $botoes .= Botao::BotaoCancelar("fntNavega('listagem.php?t=8');", "@lng[Cancelar edição]"); $botoes .= Botao::BotaoVoltar("fntNavega('vwpergunta.php?r=" . base64_encode($p->getCodigo()) . "');"); $tpl = str_replace("<!--itens-toolbar-->", $botoes, $tpl); $tpl = str_replace("<!--Mensagem-->", isset($mensagem) && $mensagem != "" ? base64_decode($mensagem) : "", $tpl); $tipconsatual = 1; $valconsatual = -1; if (count($p->getAlternativas()) > 0) { $arquivotpl = 'tpl/alternativas-comp' . $p->getTipo()->getCodigo() . '.html'; //$item_padrao = file_get_contents('tpl/alternativas-comp1.html'); $item_padrao = file_get_contents($arquivotpl); $itens = ''; foreach ($p->getAlternativas() as $alt) { $copia = $item_padrao; $copia = str_replace("<!--perg-->", base64_encode($p->getCodigo()), $copia); $copia = str_replace("<!--seq-->", base64_encode($alt->getSequencia()), $copia); $copia = str_replace("<!--correta-->", $alt->getCorreto() == 1 ? "SIM" : "NÃO", $copia); $copia = str_replace("<!--ordem-->", $alt->getSequencia(), $copia); $copia = str_replace("<!--ordem-ex-->", base64_encode($alt->getSequencia()), $copia); $copia = str_replace("<!--codunico-->", base64_encode($alt->getCodUnico()), $copia); $copia = str_replace("<!--excluir-->", "", $copia); if ($p->getTipo()->getCodigo() == 1) { $copia = str_replace("<!--img-preview-->", $alt->getImagem(), $copia); } else { $copia = str_replace("<!--textoalternativa-->", strlen($alt->getTexto()) > 100 ? substr($alt->getTexto(), 0, 97) . "..." : $alt->getTexto(), $copia); } $itens .= $copia; if (isset($_GET['s']) && $_GET['s'] != "") { // Se foi informado um segundo parâmetro, contendo a sequência da alternativa, // quer dizer que deve ser carregada a alternativa para edição. if (base64_decode($_GET['s']) == $alt->getCodUnico()) { if ($p->getTipo()->getCodigo() == 1) { $tpl = str_replace("<!--hidSeq-->", $alt->getSequencia(), $tpl); //$tpl = str_replace("<!--nomeimg-->", $alt->getImagem(), $tpl); $tpl = str_replace("<!--nomeimg-->", "", $tpl); $tpl = str_replace("<!--txtTextoAdicional-->", $alt->getTexto(), $tpl); $tpl = str_replace("<!--opcoescorreto-->", SimNao::SelectSimNao($alt->getCorreto()), $tpl); $tpl = str_replace("<!--txtExplicacao-->", $alt->getExplicacao(), $tpl); $tpl = str_replace("<!--hidocultar-->", "N", $tpl); } else { if ($p->getTipo()->getCodigo() == 2 || $p->getTipo()->getCodigo() == 3) { $tpl = str_replace("<!--hidSeq-->", $alt->getSequencia(), $tpl); $tpl = str_replace("<!--txtAlternativa-->", $alt->getTexto(), $tpl); $tpl = str_replace("<!--selcorretotxt-->", SimNao::SelectSimNao($alt->getCorreto()), $tpl); $tpl = str_replace("<!--txtJustTxt-->", $alt->getExplicacao(), $tpl); $tpl = str_replace("<!--hidocultar-->", "N", $tpl); } } } else { $tpl = str_replace("<!--hidocultar-->", "S", $tpl); } } else { $tpl = str_replace("<!--hidocultar-->", "S", $tpl); } } $itens .= '<div id="addAlt" class="box-alternativa box-zero-alternativa">'; $itens .= ' <span style="line-height:43px;">@lng[Adiciona alternativa]</span>'; $itens .= '</div>'; } else { $itens = '<div id="addAlt" class="box-alternativa box-zero-alternativa">'; $itens .= ' @lng[Nenhuma alternativa cadastrada]<br />'; $itens .= ' @lng[Adiciona alternativa]'; $itens .= '</div>'; } // Se não foi informado nenhum registro, limpa o que ficou pra traz $tpl = str_replace("<!--hidSeq-->", "", $tpl); $tpl = str_replace("<!--nomeimg-->", "", $tpl); $tpl = str_replace("<!--txtTextoAdicional-->", "", $tpl); $tpl = str_replace("<!--txtExplicacao-->", "", $tpl); $tpl = str_replace("<!--opcoescorreto-->", SimNao::SelectSimNao(), $tpl); $tpl = str_replace("<!--txtAlternativa-->", "", $tpl); $tpl = str_replace("<!--selcorretotxt-->", SimNao::SelectSimNao(), $tpl); $tips = '<option value="0">@lng[Todos]</option>'; foreach ($p->tipos->ListaRecordSet() as $tipo) { $tips .= '<option value="' . $tipo->Codigo . '">' . $tipo->Descricao . '</option>'; } $cls = '<option value="0">@lng[Todos]</option>'; foreach ($p->classes->ListaRecordSet() as $classe) { $cls .= '<option value="' . $classe->Codigo . '">' . $classe->Descricao . '</option>'; } $tpl = str_replace('<!--descricao-->', $p->getTexto(), $tpl); $tpl = str_replace('<!--alternativas-->', $itens, $tpl); $tpl = str_replace('<!--tipo-->', $p->getTipo()->getDescricao(), $tpl); $tpl = str_replace('<!--hidtipo-->', $p->getTipo()->getCodigo(), $tpl); $tpl = str_replace("<!--classespergunta-->", $cls, $tpl); $tpl = str_replace("<!--tipospergunta-->", $tips, $tpl); $_SESSION['perg'] = $p->getCodigo(); echo Comuns::Idioma($tpl); }
function BuscaRespostaAgrupadores($codcaso, $chave) { $hash = new HashTable(); $explicacoes = ""; foreach ($_POST as $campo => $valor) { if (substr($campo, 0, 3) == "rdo") { $detalhes = split("_", $campo); $pergunta = $detalhes[1]; $p = new Pergunta(); $acertou = VerificaAcerto($pergunta, $_POST[$campo]); $hash->AddItem($pergunta, $acertou === true ? 's' : 'n'); $p->Carregar($pergunta); $alternativas = $p->getAlternativas(); foreach ($alternativas as $alt) { if (!is_null($alt->getExplicacao()) && strip_tags($alt->getExplicacao()) != "") { $explicacoes .= '<div class="explicacao">' . $alt->getExplicacao() . '</div>'; } } if (!is_null($p->getTextoExplicacaoGeral())) { $explicacoes = '<div class="explicacao">' . $p->getTextoExplicacaoGeral() . '</div>' . $explicacoes; } } } $retornos = $hash->ToArray(); $certas = 0; $erradas = 0; foreach ($retornos as $chave => $item) { if ($item == 's') { $certas++; } else { $erradas++; } $imgs .= ($imgs != "" ? "," : "") . $chave . '_' . $item; } $conteudo = "<p>@lng[Você] "; if ($certas > 0 && $erradas > 0) { $conteudo .= "@lng[acertou] " . $certas; } else { if ($certas > 0 && $erradas == 0) { $conteudo .= "@lng[acertou todas as questões]"; } } if ($certas > 0 && $erradas > 0) { $conteudo .= " @lng[e errou] " . $erradas; } else { if ($certas == 0 && $erradas > 0) { $conteudo .= " @lng[errou as] " . $erradas . " @lng[questões.]"; } } return '<texto>' . $conteudo . '</p><p>' . $explicacoes . '</p></texto><imgs>' . $imgs . '</imgs>'; }