forked from SimplesIP/pabx-app
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.
357 lines
16 KiB
357 lines
16 KiB
<?php |
|
|
|
$modelos = array( |
|
'FIXO' => 'ZZ[2-5]XXXXXXX||[2-5]XXXXXXX', |
|
'MOVEL' => 'ZZ9XXXXXXXX||9XXXXXXXX' |
|
); |
|
|
|
$ipexterno = isset($_POST['ip_lg']) ? $_POST['ip_lg'] : ''; |
|
$asteriskTipo = array('ANUNCIOS', 'HORARIOS', 'ROTAS_SAIDA'); |
|
$tipos = array('FIXO', 'MOVEL'); |
|
$message = ''; |
|
$color = ''; |
|
|
|
try { |
|
|
|
if (isset($_POST['btnCadastrar'])) { |
|
/* |
|
* VERIFICACAO DO CAMPO IP |
|
*/ |
|
___VerificaDados($ipexterno, 'IP Externo/Dominio'); |
|
|
|
/* |
|
* INICIA TRANSACAO |
|
* DEVE SER FORA DO (FOR) PARA QUE TODAS AS INFORMACOES SEJAM CADASTRADAS |
|
*/ |
|
pg_query('BEGIN;'); |
|
|
|
/* |
|
* ------------- CADASTRO DE ROTAS [INICIO] ------------- |
|
*/ |
|
foreach ($tipos as $tipo) { |
|
|
|
$res = ___GetRotaSaida($tipo); |
|
|
|
/* |
|
* VALIDACAO DOS DADOS FORNECIDOS PELO USUARIO |
|
*/ |
|
___VerificaDados($_SESSION["SSchannel{$tipo}"], 'Canais de Saída ' . $tipo); |
|
|
|
if (!$res) { |
|
/* |
|
* CADASTRO DE ROTA DE SAIDA FIXO/MOVEL |
|
*/ |
|
$sql = "INSERT INTO pbx_rotas_saida (nome,musica_espera,musica,anuncio,operadora,recorte,acrescenta,tipo,portabilidade) VALUES ('LIGUE_GRATIS_$tipo','N', NULL, NULL, NULL,0,NULL,'E',0);"; |
|
pg_query($sql); |
|
___GetPGError('inserir', 'a rota de saida'); |
|
|
|
/* |
|
* BUSCA A ROTA CRIADA PARA INSERCAO DO SEU ID NOS MODELOS E CANAIS |
|
*/ |
|
$resp = ___GetRotaSaida($tipo); |
|
|
|
/* |
|
* CADASTRO DE MODELOS |
|
*/ |
|
$modelosSaida = explode('||', $modelos[$tipo]); |
|
foreach ($modelosSaida as $modelo) { |
|
$sqlModelo = "INSERT INTO pbx_rotas_saida_modelos(id_rota,modelo) VALUES({$resp['id']},'$modelo');"; |
|
pg_query($sqlModelo); |
|
___GetPGError('inserir', 'os modelos'); |
|
} |
|
} else { |
|
$channel = $_SESSION["SSchannel{$tipo}"]; |
|
foreach ($channel as $canal) { |
|
$sqlCanal = "DELETE FROM pbx_rotas_saida_canais WHERE id_rota = {$res['id']};"; |
|
pg_query($sqlCanal); |
|
___GetPGError('deletar', 'os canais ' . $tipo); |
|
} |
|
} |
|
|
|
/* |
|
* CADASTRO DE CANAIS |
|
*/ |
|
$resp = ___GetRotaSaida($tipo); |
|
$channel = $_SESSION["SSchannel{$tipo}"]; |
|
foreach ($channel as $canal) { |
|
$sqlCanal = "INSERT INTO pbx_rotas_saida_canais (id_rota,canal,recorta,acrescenta) VALUES({$resp['id']},'$canal',0,null);"; |
|
pg_query($sqlCanal); |
|
___GetPGError('inserir', 'os canais'); |
|
} |
|
} |
|
/* |
|
* ---------- CADASTRO ROTA [FIM] --------------- |
|
*/ |
|
|
|
/* |
|
* ---------- CADASTRO DE HORARIO [INICIO] ---------- |
|
*/ |
|
|
|
___VerificaDados($_SESSION['SSmInicio'], 'horário matutino'); |
|
___VerificaDados($_SESSION['SSmFim'], 'horário matutino'); |
|
|
|
if (!___GetHorarioLG()) { |
|
$sql = "INSERT INTO pbx_arquivo_som (arq_data,arq_nome,arq_nome_sistema,arq_descricao,arq_path_origem,arq_path_destino,arq_orig_tamanho,arq_dest_tamanho,arq_md5,userreg) VALUES('1995-11-21','fora_de_horario_lg','fora_de_horario_lg','fora_de_horario_lg','/var/lib/asterisk/sounds/customizados/fora_de_horario_lg.mp3','/var/lib/asterisk/sounds/customizados/fora_de_horario_lg.ulaw',133808,66655,'81c016e775ced0bb6815f81161e8e9de','admin');"; |
|
pg_query($sql); |
|
|
|
$sql1 = "INSERT INTO pbx_anuncios (nome,musica,teste,opcao,acao) VALUES('LIGUE_GRATIS_MENSAGEM','fora_de_horario_lg.ulaw', NULL,NULL, NULL);"; |
|
pg_query($sql1); |
|
|
|
$sql2 = "SELECT id FROM pbx_anuncios WHERE nome = 'LIGUE_GRATIS_MENSAGEM'"; |
|
$resp = pg_fetch_assoc(pg_query($sql2)); |
|
|
|
$sql3 = "INSERT INTO pbx_horarios (nome, discar, opcao_nao, acao_nao, status) values('LIGUE_GRATIS_VERIFICA', null, 'anuncios', '{$resp['id']}',1);"; |
|
pg_query($sql3); |
|
|
|
$sql4 = "SELECT id FROM pbx_horarios WHERE nome = 'LIGUE_GRATIS_VERIFICA'"; |
|
$resp1 = pg_fetch_assoc(pg_query($sql4)); |
|
|
|
$sql5 = "INSERT INTO pbx_anuncios (nome,musica,teste,opcao,acao) VALUES('LIGUE_GRATIS_RECEBE','silencio.ulaw', NULL,'horarios', '{$resp1['id']}');"; |
|
pg_query($sql5); |
|
|
|
$sql6 = "INSERT INTO pbx_anuncios (nome,musica,teste,opcao,acao) VALUES('LIGUE_GRATIS_RETORNA','silencio.ulaw', NULL , NULL, NULL);"; |
|
pg_query($sql6); |
|
|
|
$sql7 = "SELECT id FROM pbx_anuncios WHERE nome = 'LIGUE_GRATIS_RETORNA'"; |
|
$resp2 = pg_fetch_assoc(pg_query($sql7)); |
|
|
|
___SetHorarioItens($resp1['id'], $_SESSION['SSmInicio'], $_SESSION['SSmFim'], $_SESSION['SSinterval'], $_SESSION['SSintInicio'], $_SESSION['SSintFim'], $resp2['id']); |
|
|
|
if ($_SESSION['SSvInicio'] && $_SESSION['SSvFim']) { |
|
|
|
___SetHorarioItens($resp1['id'], $_SESSION['SSvInicio'], $_SESSION['SSvFim'], $_SESSION['SSinterval'], $_SESSION['SSintInicio'], $_SESSION['SSintFim'], $resp2['id']); |
|
} |
|
|
|
if ($_SESSION['SSsInicio'] && $_SESSION['SSsFim']) { |
|
|
|
___SetHorarioItens($resp1['id'], $_SESSION['SSsInicio'], $_SESSION['SSsFim'], '0', 'sat', 'sat', $resp2['id']); |
|
} |
|
} else { |
|
$x = 0; |
|
$horariosItens = ___GetHorarioItens(); |
|
foreach ($horariosItens as $horas) { |
|
$SSvars = array('SSmInicio', 'SSmFim', 'SSvInicio', 'SSvFim', 'SSsInicio', 'SSsFim'); |
|
|
|
$compl = ", semana = '{$_SESSION['SSintInicio']}', semana_fim = '{$_SESSION['SSintFim']}'"; |
|
|
|
if ($horas['semana'] == 'sat' && empty(trim($_SESSION['SSsInicio']))) { |
|
$query2 = "DELETE FROM pbx_horarios_itens WHERE id = {$horas['id']};"; |
|
pg_query($query2); |
|
___GetPGError('deletar', 'os horarios de sábado'); |
|
break; |
|
} |
|
|
|
if ($horas['semana'] == 'sat' && $horas['semana_fim'] == 'sat') { |
|
$compl = ''; |
|
} else if (count($horariosItens) <= 2 && $_SESSION['SSsInicio'] && $_SESSION['SSsFim']) { |
|
___SetHorarioItens($horariosItens[0]['id_horarios'], $_SESSION['SSsInicio'], $_SESSION['SSsFim'], 0, 'sat', 'sat', $horariosItens[0]['acao']); |
|
break; |
|
} |
|
|
|
$query2 = "UPDATE pbx_horarios_itens SET horario_inicio = '{$_SESSION[$SSvars[$x]]}', horario_fim = '{$_SESSION[$SSvars[$x + 1]]}' $compl WHERE id = {$horas['id']};"; |
|
pg_query($query2); |
|
___GetPGError('atualizar', 'os horarios'); |
|
|
|
$x += 2; |
|
} |
|
} |
|
/* |
|
* ------------ CADASTRO DE HORARIO [FIM] ------------ |
|
*/ |
|
|
|
/* |
|
* ------------ CADASTRO DE ANUNCIO [INICIO] ------------ |
|
*/ |
|
___VerificaDados($_SESSION['SSopcao'], 'opção de Destino'); |
|
___VerificaDados($_SESSION['SSopcaoDestino'], 'opção de Destino'); |
|
|
|
$sql = "UPDATE pbx_anuncios SET opcao = '{$_SESSION['SSopcao']}' , acao = '{$_SESSION['SSopcaoDestino']}' WHERE nome = 'LIGUE_GRATIS_RETORNA';"; |
|
pg_query($sql); |
|
___GetPGError('atualizar', 'o destino'); |
|
|
|
$sql1 = "UPDATE pbx_anuncios SET musica = '{$_SESSION['SSmusica']}' WHERE nome = 'LIGUE_GRATIS_MENSAGEM';"; |
|
pg_query($sql1); |
|
___GetPGError('atualizar', 'o audio'); |
|
/* |
|
* ------------ CADASTRO DE ANUNCIO [FIM] ------------ |
|
*/ |
|
|
|
/* |
|
* FINALIZA A TRANSACAO |
|
*/ |
|
pg_query('COMMIT;'); |
|
|
|
/* |
|
* ATUALIZAÇÃO DOS ARQUIVOS DO ASTERISK |
|
*/ |
|
foreach ($asteriskTipo as $astTipo) { |
|
gera_arquivos($dbcon, $astTipo, $reload = 1, $reloadUra = 1); |
|
} |
|
|
|
/* |
|
* MENSAGEM PARA O USUARIO |
|
*/ |
|
$color = '#33be40'; |
|
$message = "OK;As configurações foram salvas com sucesso!"; |
|
} |
|
} catch (Exception $ex) { |
|
$color = 'red'; |
|
$message = $ex->getMessage(); |
|
} |
|
|
|
function ___GetPGError($type, $table) { |
|
global $dbcon; |
|
|
|
/* |
|
* VERIFICA SE HOUVE ALGUM ERRO NA INSERCAO E EXECUTA UM ROLLBACK! |
|
*/ |
|
$pgError = pg_last_error(); |
|
if ($pgError) { |
|
pg_query($dbcon, 'ROLLBACK;'); |
|
throw new Exception("ERROR;Não foi possível $type $table informados!"); |
|
} |
|
} |
|
|
|
function ___GetRotaSaida($tipo) { |
|
global $dbcon; |
|
|
|
$sql1 = "SELECT id FROM pbx_rotas_saida WHERE nome = 'LIGUE_GRATIS_$tipo';"; |
|
$result = pg_query($dbcon, $sql1); |
|
return pg_fetch_assoc($result); |
|
} |
|
|
|
function ___VerificaDados($dados, $campo) { |
|
if (!$dados) { |
|
throw new Exception("ERROR;Por favor complete os campos de $campo!"); |
|
} |
|
} |
|
|
|
function ___GetHorarioLG() { |
|
$query = "SELECT * FROM pbx_horarios WHERE nome = 'LIGUE_GRATIS_VERIFICA'"; |
|
$resp = pg_query($query); |
|
$resp = pg_fetch_assoc($resp); |
|
|
|
if ($resp['nome']) { |
|
return true; |
|
} else { |
|
return false; |
|
} |
|
} |
|
|
|
function ___GetHorarioItens() { |
|
$query = "SELECT a.id as id_horarios, b.id, todos_dias_semana, horario_inicio, horario_fim, semana, semana_fim,acao FROM pbx_horarios a |
|
INNER JOIN pbx_horarios_itens b ON a.id = b.id_horario |
|
WHERE a.nome = 'LIGUE_GRATIS_VERIFICA' ORDER BY b.id"; |
|
$resp = pg_query($query); |
|
$resp = pg_fetch_all($resp); |
|
|
|
return $resp; |
|
} |
|
|
|
function ___SetHorarioItens($idHorario, $ssInicio, $ssFim, $inter, $ini, $fim, $acao) { |
|
$query = "INSERT INTO pbx_horarios_itens(id_horario,horario_inicio, horario_fim, todos_dias_semana, semana, |
|
semana_fim, todos_dias_mes, dias_mes, dias_mes_fim, todos_mes, mes, |
|
mes_fim, opcao, acao, feriado) |
|
VALUES({$idHorario},'{$ssInicio}','{$ssFim}',$inter,'$ini','$fim',1,0,0,1,'0','0','anuncios','{$acao}','I');"; |
|
pg_query($query); |
|
___GetPGError('inserir', 'os horarios'); |
|
} |
|
|
|
function ___GetCodigo($ipexterno) { |
|
if ($ipexterno) { |
|
$ipexterno = RemoveDominio($ipexterno); |
|
return '<link rel="stylesheet" href="https://simplesip.com.br/liguemegratis/lggratis.css"/> |
|
<div class="m-simples"> |
|
<div class="m-simples"> |
|
<a href="#modal-2" id="myBtn" style="padding: 10px 10px" title="Realize uma ligação gratuita para nossa central de atendimento!"> |
|
<img class="m-img" src="https://simplesip.com.br/liguemegratis/ligue_gratis.png"/> |
|
</a> |
|
</div> |
|
</div> |
|
<div id="myModal" class="modal"> |
|
<div class="modal-content"> |
|
<div class="modal-header"> |
|
<span class="close">×</span> |
|
<h4>Informe seu contato</h4> |
|
</div> |
|
<div class="modal-body"> |
|
<form id="formCall" name="formGeral" method="POST"> |
|
<input type="text" id="url-lg" value="http://' . $ipexterno . '" hidden/> |
|
<input type="text" name="lg_nome" class="input-simples" id="lg-nome" placeholder="Informe seu nome" maxlength="50" required/> |
|
<input type="text" name="lg_ddd" style="width: 25%" class="input-simples" id="lg-ddd" placeholder="DDD" maxlength="2" required/> |
|
<input type="text" name="lg_telefone" style="width: 70%" class="input-simples" id="lg-telefone" placeholder="Telefone" maxlength="9" required/> |
|
<br><span id="msgFrame" style="font-size:14px;"> </span><br> |
|
<button type="submit" id="lg-button" class="button-lg" name="lg_callback">Ligar GRÁTIS</button><br><br> |
|
</form> |
|
</div> |
|
</div> |
|
</div> |
|
<script src="https://simplesip.com.br/liguemegratis/ligueme.js"></script> |
|
<script src="https://simplesip.com.br/js/vendor/jquery-1.9.1.min.js"></script> |
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>'; |
|
} |
|
} |
|
|
|
function RemoveDominio($dominio){ |
|
$domains = array("https://", "http://"); |
|
|
|
foreach ($domains as $dom) { |
|
$found = strpos($dominio, $dom); |
|
if ($found !== false) { |
|
$dominio = str_replace($dom, "", $dominio); |
|
} |
|
} |
|
|
|
return $dominio; |
|
} |
|
?> |
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
|
<html> |
|
<head> |
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> |
|
<link rel="stylesheet" href="admin/css/formliguemegratis.css" type="text/css" media="screen" title="no title" charset="ISO-8859-1"/> |
|
<script src="admin/js/jquery_3.3.1.js"></script> |
|
</head> |
|
<body> |
|
<form action="index.php?idProg=310&pbxRequest=1" method="post" name="form1" target="_self" id="form1"> |
|
<div class = "container"> |
|
<h3>CONFIGURAÇÃO DE IP EXTERNO</h3> |
|
<hr/> |
|
|
|
<div class="row"> |
|
<h3>IP Externo/Dominio</h3> |
|
<div class="col-25"> |
|
<input type="text" id="ip_lg" name="ip_lg" value=""/> |
|
</div> |
|
</div> |
|
|
|
<p style="color: <?php echo $color; ?>; font-size: 14px"><strong><?php |
|
$message = explode(';', $message); |
|
echo $message[1]; |
|
?></strong></p> |
|
<div class="row"> |
|
<input type="submit" style="float: left" name="btnCadastrar" value="Finalizar"/> |
|
</div> |
|
<br/> |
|
<div class="row" style="display: <?php |
|
if ($ipexterno && $message[0] == "OK") { |
|
echo "block"; |
|
} else { |
|
echo 'none'; |
|
} |
|
?>"> |
|
<h3>COPIE O CÓDIGO</h3> |
|
<div class="col-75"> |
|
<textarea rows="25" cols="103" id="codLg"> |
|
<?php |
|
if ($ipexterno) { |
|
echo ___GetCodigo($ipexterno); |
|
} |
|
?> |
|
</textarea> |
|
</div> |
|
</div> |
|
</div> |
|
</form> |
|
</body> |
|
</html>
|
|
|