public function BuscaSaltosConteudo($strChaveAtual) { $sql = "select "; $sql .= "\t concat(dest.Organizador, '_', dest.TipoConteudo, '_', dest.ContReferencia, '_', salt.ChaveDestino) as ChaveDestino "; $sql .= "\t,salt.ChaveCond "; $sql .= "\t,cond.TipoConteudo as TipoContCond "; $sql .= "\t,salt.CodPergunta "; $sql .= "\t,salt.RespostaCond "; $sql .= "from mescasomontagemsaltos salt "; $sql .= "inner join mescasomontagem mont "; $sql .= "\t\ton mont.CodCaso = salt.CodCaso "; $sql .= "\t and mont.CodMontagem = salt.CodMontagem "; $sql .= "\t and mont.Chave = salt.ChaveAtual "; $sql .= "inner join mescasomontagem dest "; $sql .= "\t\ton dest.CodCaso = salt.CodCaso "; $sql .= "\t and dest.CodMontagem = salt.CodMontagem "; $sql .= "\t and dest.Chave = salt.ChaveDestino "; $sql .= "left outer join mescasomontagem cond "; $sql .= "\t\t\t on cond.CodCaso = salt.CodCaso "; $sql .= "\t\t\tand cond.CodMontagem = salt.CodMontagem "; $sql .= "\t\t\tand cond.Chave = salt.ChaveCond "; $sql .= "where salt.CodCaso = :pCodCaso "; $sql .= " and salt.CodMontagem = 1 "; $sql .= " and salt.ChaveAtual = :pChaveAtual;"; $cnn = Conexao2::getInstance(); $cmd = $cnn->prepare($sql); $cmd->bindParam(":pCodCaso", $this->codcaso, PDO::PARAM_INT); $cmd->bindParam(":pChaveAtual", $strChaveAtual, PDO::PARAM_STR); $cmd->execute(); if ($cmd->errorCode() == Comuns::QUERY_OK) { if ($cmd->rowCount() > 0) { $strProximoItem = ""; $sair = false; while ($salto = $cmd->fetch(PDO::FETCH_OBJ)) { if (is_null($salto->ChaveCond)) { $strProximoItem = $salto->ChaveDestino; break; } else { if ($salto->TipoContCond != 'perg' && $salto->TipoContCond != 'grupo-perg') { $respostas = $this->BuscaRespostas($salto->ChaveCond); $itens = $this->BuscaConteudosAgrupador($salto->ChaveCond, $salto->RespostaCond); foreach ($itens as $opcao) { if ((intval($opcao->ValorOpt, 10) & intval($respostas, 10)) > 0) { $strProximoItem = $salto->ChaveDestino; $sair = true; break; } } } else { $respostas = $this->BuscaRespostas($salto->ChaveCond, $salto->CodPergunta); $p = new Pergunta(); $p->setCodigo($salto->CodPergunta); $itens = $p->BuscaAlternativasFiltradas($salto->RespostaCond); if (count($itens) > 0) { foreach ($itens as $opcao) { if ((intval($opcao->getCodBinario(), 10) & intval($respostas, 10)) > 0) { $strProximoItem = $salto->ChaveDestino; $sair = true; break; } } } else { return 0; } } if ($sair) { break; } } } if ($strProximoItem != "") { return $strProximoItem; } else { return 0; } } else { return 0; } } else { $msg = $cmd->errorInfo(); $this->msg_erro = $msg[2]; return false; } }