PABX da Simples IP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

435 lines
17 KiB

<?php
define("QUANTIDADE_QUESTOES", 10);
define("QUANTIDADE_OPCOES", 10);
$tpLayout = 1;
$ppId = $_FORMS["pp_id"];
$idOper = !$ppId ? session_id() : $ppId;
$valuesForm = array();
$mostraIncluiQuetoes = MostraInclusaoQuestoes($ppId);
$msgErro = "";
$fieldsTable = array("pp_nome", "pp_audio_saudacao", "pp_audio_encerramento", "pp_status");
$quantidadeQuestoes = !isset($_FORMS["quantidadeQuestoes"]) ? QUANTIDADE_QUESTOES : $_FORMS["quantidadeQuestoes"];
$quantidadeOpcoes = !isset($_FORMS["quantidadeOpcoes"]) ? QUANTIDADE_OPCOES : $_FORMS["quantidadeOpcoes"];
$upload = 1;
$org_id = GetOrganizacao();
if (!IsPostBack()) {
/*
* Quando $ppId é passado a opereção é de edição
*/
if ($ppId) {
$table = GetPesquisa($idOper);
} else {
$valuesForm["pp_status"] = 1;
$table = GetTable($quantidadeQuestoes, $quantidadeOpcoes);
}
} else {
$aform = $_FORMS["qst_descricao"];
$arTecla = $_FORMS["qst_tecla"];
$arAudio = $_FILES["pp_audio"]["tmp_name"];
$arAudioName = $_FILES["pp_audio"]["name"];
$arQuetoes = array();
$arOpcoes = array();
$arTipo = $_FORMS["pq_tipo"];
foreach ($aform as $key => $value) {
$opcForm = array();
foreach ($value as $kQuest => $vQuest) {
if (!$kQuest) {
$arQuetoes[$key] = $vQuest;
} else {
$opcForm[] = $vQuest;
}
}
$arOpcoes[$key] = $opcForm;
}
$table = GetTable($quantidadeQuestoes, $quantidadeOpcoes, 0, $arQuetoes, $arOpcoes, $arAudio, $arTipo, $arTecla);
if (!isset($_FORMS["pp_status"])) {
$_FORMS["pp_status"] = 1;
}
foreach ($fieldsTable as $key)
$valuesForm[$key] = $_FORMS[$key];
/*
* Validação do form pp_nome, pp_data_inicio, pp_data_fim, pp_audio_saudacao,
pp_audio_encerramento, pp_status
*/
$pp_nome = trim($_FORMS["pp_nome"]);
$pp_audio_saudacao = trim($_FILES["pp_audio_saudacao"]["name"]);
$pp_audio_encerramento = trim($_FILES["pp_audio_encerramento"]["name"]);
$pp_status = isset($_FORMS["pp_status"]);
if (empty($pp_nome)) {
$msgErro = "Informe um nome para pesquisa!";
} else if (!$pp_audio_saudacao || (GetFileExt($pp_audio_saudacao) <> "mp3")) {
$msgErro = "Informe um arquivo mp3 para o Áudio de Saudação!";
} else if (!$pp_audio_encerramento || (GetFileExt($pp_audio_encerramento) <> "mp3")) {
$msgErro = "Informe um arquivo mp3 para o Áudio de Encerramento!";
}
if (empty($msgErro)) {
$valuesForm["pp_audio_saudacao"] = trim($_FILES["pp_audio_saudacao"]["name"]);
$valuesForm["pp_audio_encerramento"] = trim($_FILES["pp_audio_encerramento"]["name"]);
$valuesForm["org_id"] = $org_id;
$where = " where pp_id = '$ppId'";
if ($ppId) {
$msgErro = "Recurso não implementado. Se necessário alterações deverá recria-la!";
} else {
$query = "begin";
$result = pg_query($dbcon, $query);
if ($result) {
$result = InsertDb($dbcon, 'pbx_pesquisa', $valuesForm, "pbx_pesquisa_pp_id_seq");
$pp_id = $result;
}
$tmpName = $_FILES['pp_audio_saudacao']['tmp_name'];
$nameFile = $_FILES['pp_audio_saudacao']['name'];
$nameFileNew = RemoveEspaco("pesquisa_audio_sauda_$pp_id.mp3");
if ($result) {
$result = MoveFile($tmpName, $nameFile, $nameFileNew, true, $msgErro);
}
$tmpName = $_FILES['pp_audio_encerramento']['tmp_name'];
$nameFile = $_FILES['pp_audio_encerramento']['name'];
$nameFileNew = RemoveEspaco("pesquisa_audio_encerra_$pp_id.mp3");
if ($result) {
MoveFile($tmpName, $nameFile, $nameFileNew, true, $msgErro);
$result = ($msgErro == '');
}
if ($result) {
$result = InsertQuestoes($dbcon, $pp_id, $arQuetoes, $arOpcoes, $arAudio, $arAudioName, $arTipo, $arTecla, $org_id);
}
if ($result) {
$mesRet = explode(":", $result);
$result = $mesRet[0] == "[OK]";
if (!$result) {
$msgErro = $mesRet[1];
}
}
if ($result) {
$query = "commit";
$result = pg_query($dbcon, $query);
$table = GetPesquisa($pp_id);
$jsStartup[] = "alert('Pesquisa inserida com sucesso!'); ";
} else {
$pp_id = 0;
$query = "rollback";
$result = pg_query($dbcon, $query);
}
}
if ($result == -1) {
$msgErro = "Não foi possível atualizar o banco de dados!";
}
}
}
if ($msgErro) {
$jsStartup[] = "alert('$msgErro'); ";
}
$jsJQuery[] = sprintf("\$('#insereQuestoes').css(\"visibility\", \"%s\");", $mostraIncluiQuetoes ? "visible" : "hidden");
$valuesForm['acaoUser'] = "Gravar";
$valuesForm['pp_id'] = $ppId;
if (!$numQuest) {
$table = "Não há questões incluidas!";
}
foreach ($valuesForm as $key => $value) {
$smarty->assign($key, $value);
}
$smarty->assign("msg", $msgErro);
$smarty->assign("questoes", $table);
GetTemplate($smarty, 'pesquisa/pesquisaCad.htm');
function MostraInclusaoQuestoes($ppId)
{
return !$ppId;
}
function GetTable($quantidadeQuestoes, $quantidadeOpcoes, $ppId = 0, $arQuetoes = [], $arOpcoes = [], $arAudio = [], $arTipo = [], $arTecla = [], $arQuetoesId = [])
{
$table = "<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\">
<tr>
<td colspan=\"2\">Informe em sequência Questões com seus respctivos Áudios e Opções!</td>
</tr> ";
$linhaQuest = "";
$linhaOpc = "";
$qst_descricao = "";
$criaQuestoes = 0;
$criaOpcoes = 0;
$pq_display = 0;
$po_display = 0;
$existeQuet = count($arQuetoes);
while ($criaQuestoes <= $quantidadeQuestoes) {
$qst_descricao = $existeQuet ? $arQuetoes[$criaQuestoes] : "";
$idQuestao = "ppQuestao_$criaQuestoes";
$idAudio = "ppAudio_$criaQuestoes";
$tipoQuestao = '';
$audio = $arAudio[$criaQuestoes];
$imgAudio = !$audio ? '' : "<img src=\"imgSite/sound22.png\" width=\"22\" height=\"22\" border=\"0\" title=\"$audio!\" align=\"absmiddle\">";
$pqId = !$arQuetoesId ? 0 : $arQuetoesId[$criaQuestoes];
$imgAudio = $imgAudio ? "<a href=\"javaScript:NovaJanela('index.php?idProg=184&pp_id=$ppId&pq_id=$pqId', '$audio', '300', '200', 'resizable=NO,scrollbars=YES');\">$imgAudio</a>" : "";
$imgDel = "";
$pq_display++;
$linhaQuest .= "<tr>
<td>$pq_display)</td>
<td><input name=\"qst_descricao[$criaQuestoes][0]\" type=\"text\" id=\"$idQuestao\" value=\"$qst_descricao\" title=\"Informe aqui a questão " . ($criaQuestoes + 1) . ".\" size=\"107\" maxlength=\"120\">$imgDel</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type=\"file\" name=\"pp_audio[$criaQuestoes]\" id=\"$idAudio\" title=\"Informe um audio para questão " . ($criaQuestoes + 1) . ".\" size=\"40\" style=\"width:415px\" />$imgAudio $tipoQuestao</td>
</tr>";
$linhaOpc = "<tr><td colspan=\"5\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"2\">";
$criaOpcoes = 0;
$po_display = 0;
$arOpc = $arOpcoes[$criaQuestoes];
while ($criaOpcoes <= $quantidadeOpcoes) {
$idx = $criaOpcoes + 1;
$idOpcao = "opcDescricao_" . $criaQuestoes . "_" . $criaOpcoes;
$idTecla = "opcTecla_" . $criaQuestoes . "_" . $criaOpcoes;
$opc_descricao = $existeQuet ? $arOpc[$criaOpcoes] : "";
$opc_tecla = $arTecla ? $arTecla[$criaQuestoes][$criaOpcoes] : "";
$po_display++;
$linhaOpc .= "<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>$po_display)</td>
<td>
<input name=\"qst_tecla[$criaQuestoes][$criaOpcoes]\" type=\"text\" id=\"$idTecla\" value=\"$opc_tecla\" title=\"Informe a opção a ser digitada!\" size=\"4\" maxlength=\"2\" style=\"width:40px\">
<input name=\"qst_descricao[$criaQuestoes][$idx]\" type=\"text\" id=\"$idOpcao\" value=\"$opc_descricao\" title=\"Descreva aqui a opção " . ($criaOpcoes + 1) . ".\" size=\"50\" style=\"width:360px\" maxlength=\"60\">
</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>";
$criaOpcoes++;
}
$linhaQuest .= $linhaOpc . "</table></td></tr>";
$criaQuestoes++;
}
$GLOBALS["numQuest"] = $criaQuestoes;
return $table . $linhaQuest . "</table>";
}
function InsertQuestoes($db, $pp_id, $arQuetoes, $arOpcoes, $arAudio, $arAudioName, $arTipo, $arTecla, $org_id)
{
/*
* Peqga o id da Pesquisa Inserida
*/
if (!$pp_id) {
return "[ERRO]: Não foi possível gerar o identificador da pesquisa!";
}
$numQuest = 0;
foreach ($arQuetoes as $kQuest => $vQuest) {
/*
* Questões em branco
*/
$vQuest = trim($vQuest);
if (empty($vQuest) && ($vQuest != '0')) {
break;
}
$audio = trim($arAudioName[$kQuest]);
if (empty($audio)) {
return "[ERRO]: É necessário informar um áudio para cada questão!";
}
if (strtoupper(GetFileExt($audio)) != 'MP3') {
return "[ERRO]: É necessário informar um áudio para cada questão!";
}
$queryQuest = "INSERT INTO pbx_pesquisa_questoes(pp_id, pq_display, pq_questao, pq_tipo, pq_audio, user_reg, org_id) VALUES(%s,%s,%s,%s,%s,%s,%s)";
$queryQuest = sprintf($queryQuest, NullDb($pp_id), NullDb(($kQuest + 1)), NullDb($vQuest), '1', NullDb($audio), NullDb(GetLogin()), $org_id);
$result = pg_query($db, $queryQuest);
if (!$result) {
"[ERRO]: Não foi possível inserir a questão!";
}
/*
* Id da Questão
*/
$pq_id = GetSequenciaDb($db, "pbx_pesquisa_questoes_pq_id_seq");
if (!$pq_id) {
return "[ERRO]: Não foi possível gerar o identificador da questão!";
}
/*
* Tenta Inserir o audio
*/
$audioTmp = trim($arAudio[$kQuest]);
$nameFileNew = Sprintf("pesquisa_questao_%s_%s.mp3", $pp_id, $pq_id);
$msgErro = '';
MoveFile($audioTmp, $audio, $nameFileNew, true, $msgErro);
if ($msgErro) {
return "[ERRO]: Não foi possível gravar o arquivo de áudio: $audio!";
}
$numOpc = 0;
$confTcl = array();
foreach ($arOpcoes[$kQuest] as $keyOpc => $valueOpc) {
$po_display = $keyOpc + 1;
$opc = trim($valueOpc);
$tcl = trim($arTecla[$kQuest][$keyOpc]);
if ($numOpc && (array_search($tcl, $confTcl) !== false)) {
return "[ERRO]: A opção a ser digitada não pode repetir por questão!";
}
$confTcl[] = $tcl;
if ($tcl && !is_numeric($tcl)) {
return "[ERRO]: A opção a ser digitada tem que ser um número!";
}
if (trim($opc) == '') {
break;
}
$queryOpc = "INSERT INTO pbx_pesquisa_opcoes(pp_id, pq_id, po_display, po_tecla, po_opcao, user_reg, org_id) VALUES(%s,%s,%s,%s,%s,%s,%s)";
$queryOpc = sprintf($queryOpc, $pp_id, $pq_id, $po_display, NullDb($tcl), NullDb($opc), NullDb(GetLogin()), $org_id);
$result = pg_query($db, $queryOpc);
if (!$result) {
return "[ERRO]: Não foi possível inserir a opção!";
}
$numOpc++;
}
if ($numOpc < 2) {
return "[ERRO]: É necessário informar pelo menos duas opções por questão!";
}
$numQuest++;
}
if (!$numQuest) {
return "[ERRO]: Para inserir uma pesquisa é necessário pelo menos uma questão!";
}
echo "<script>opener.location.reload();</script>";
return "[OK]: Pesquisa inserida com sucesso!";
}
function GetTipoQuestao($questId, $tipo = 0)
{
$db = $GLOBALS["dbcon"];
$select = !$tipo ? 'selected="selected"' : '';
$ret = sprintf('<select name="pq_tipo[%s]" id="pq_tipo_%s" style="width: 250px" title="Selecione o tipo da questao">\n', $questId, $questId);
$ret .= "<option value=\"0\" $select>----------------</option>\n";
$query = "SELECT pqt_id, pqt_descricao FROM pbx_pesquisa_questao_tipo WHERE pqt_status = 1";
$result = pg_query($db, $query);
while ($dados = pg_fetch_array($result)) {
$pqtId = $dados["pqt_id"];
$pqtDescricao = $dados["pqt_descricao"];
$select = $tipo == $pqtId ? 'selected="selected"' : '';
$ret .= "<option value=\"$pqtId\" $select>$pqtDescricao</option>\n";
}
$ret .= "</select>\n";
return $ret;
}
function GetPesquisa($idOper)
{
$valuesForm = &$GLOBALS["valuesForm"];
$fieldsTable = &$GLOBALS["fieldsTable"];
$quantidadeQuestoes = $GLOBALS["quantidadeQuestoes"];
$quantidadeOpcoes = $GLOBALS["quantidadeOpcoes"];
$dbcon = $GLOBALS["dbcon"];
$query = "SELECT pp_id, pp_nome, pp_audio_saudacao, pp_audio_encerramento, pp_status, pp_data
FROM pbx_pesquisa
WHERE pp_id = $idOper";
$result = pg_query($dbcon, $query);
while ($dados = pg_fetch_array($result)) {
foreach ($fieldsTable as $key) {
$valuesForm[$key] = $dados[$key];
}
$audio = $dados["pp_audio_saudacao"];
$imgAudio = "<img src=\"imgSite/sound22.png\" width=\"22\" height=\"22\" border=\"0\" title=\"$audio!\" align=\"absmiddle\">";
$imgAudio = "<a href=\"javaScript:NovaJanela('index.php?idProg=184&pp_id=$idOper&sauda=1', '$audio', '300', '200', 'resizable=NO,scrollbars=YES');\">$imgAudio</a>";
$valuesForm["audioSauda"] = $imgAudio;
$audio = $dados["pp_audio_encerramento"];
$imgAudio = "<img src=\"imgSite/sound22.png\" width=\"22\" height=\"22\" border=\"0\" title=\"$audio!\" align=\"absmiddle\">";
$imgAudio = "<a href=\"javaScript:NovaJanela('index.php?idProg=184&pp_id=$idOper', '$audio', '300', '200', 'resizable=NO,scrollbars=YES');\">$imgAudio</a>";
$valuesForm["audioEncerra"] = $imgAudio;
}
$arQuetoes = array();
$arQuetoesId = array();
$arOpcoes = array();
$arAudio = array();
$arTipo = array();
$arTecla = array();
GetQuestoesDb($dbcon, $idOper, $arQuetoes, $arOpcoes, $arAudio, $arTipo, $arTecla, $arQuetoesId);
return GetTable($quantidadeQuestoes, $quantidadeOpcoes, $idOper, $arQuetoes, $arOpcoes, $arAudio, $arTipo, $arTecla, $arQuetoesId);
}
function GetQuestoesDb($dbcon, $idOper, &$arQuetoes, &$arOpcoes, &$arAudio, &$arTipo, &$arTecla, &$arQuetoesId)
{
$queryQuest = "SELECT pp_id, pq_id, pq_display, pq_questao, pq_tipo, pq_audio, pq_status
FROM pbx_pesquisa_questoes
WHERE pp_id = '$idOper'
ORDER BY pq_id";
$resultQuest = pg_query($dbcon, $queryQuest);
while ($dadosQuest = pg_fetch_array($resultQuest)) {
$pqId = $dadosQuest["pq_id"];
$pqQuestao = $dadosQuest["pq_questao"];
$pqAudio = $dadosQuest["pq_audio"];
$pqTipo = $dadosQuest["pq_tipo"];
$arQuetoes[] = $pqQuestao;
$arAudio[] = $pqAudio;
$arTipo[] = $pqTipo;
$arQuetoesId[] = $pqId;
$queryOpcao = "SELECT pp_id, pq_id, po_id, po_display, po_tecla, po_opcao, po_status
FROM pbx_pesquisa_opcoes
WHERE pp_id = '$idOper'
AND pq_id = '$pqId'
ORDER BY po_id";
$resultOpcao = pg_query($dbcon, $queryOpcao);
$arOpc = array();
$arTcl = array();
while ($dadosOpc = pg_fetch_array($resultOpcao)) {
$poOpc = $dadosOpc["po_opcao"];
$arOpc[] = $poOpc;
$arTcl[] = $dadosOpc["po_tecla"];
}
$arOpcoes[] = $arOpc;
$arTecla[] = $arTcl;
}
}
$jsJQuery[] = "\$(document).ready(function(){
$('.animate').click(function(){
var \$box = \$('.box');
if(\$box.is(':visible')){
\$box.slideToggle('slow');
$('#animate').attr(\"src\", \"imgSite/expand.jpg\");
$('#labelRotas').text(\" Exibir Questões\");
}
else{
$('#animate').attr(\"src\", \"imgSite/collapse.jpg\");
$('#labelRotas').text(\" Ocultar Questões\");
\$box.slideToggle('slow');
}
});
});
";
$cssBlock = '<style type="text/css">
div.scrollableContainer {
position: relative;
padding-top: 1.4em;
}
div.scrollingArea {
height: 320px;
overflow: scroll;
border:0;
}
.tipFocus { color: #fff; font-style: italic; }
</style>';